github.com/sacloud/iaas-api-go@v1.12.0/internal/define/packet_filter.go (about) 1 // Copyright 2022-2023 The sacloud/iaas-api-go Authors 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 // See the License for the specific language governing permissions and 13 // limitations under the License. 14 15 package define 16 17 import ( 18 "net/http" 19 20 "github.com/sacloud/iaas-api-go/internal/define/names" 21 "github.com/sacloud/iaas-api-go/internal/define/ops" 22 "github.com/sacloud/iaas-api-go/internal/dsl" 23 "github.com/sacloud/iaas-api-go/internal/dsl/meta" 24 "github.com/sacloud/iaas-api-go/naked" 25 ) 26 27 const ( 28 packetFilterAPIName = "PacketFilter" 29 packetFilterAPIPathName = "packetfilter" 30 ) 31 32 var packetFilterAPI = &dsl.Resource{ 33 Name: packetFilterAPIName, 34 PathName: packetFilterAPIPathName, 35 PathSuffix: dsl.CloudAPISuffix, 36 Operations: dsl.Operations{ 37 // find 38 ops.Find(packetFilterAPIName, packetFilterNakedType, findParameter, packetFilterView), 39 40 // create 41 ops.Create(packetFilterAPIName, packetFilterNakedType, packetFilterCreateParam, packetFilterView), 42 43 // read 44 ops.Read(packetFilterAPIName, packetFilterNakedType, packetFilterView), 45 46 // update 47 { 48 ResourceName: packetFilterAPIName, 49 Name: "Update", 50 PathFormat: dsl.DefaultPathFormatWithID, 51 Method: http.MethodPut, 52 RequestEnvelope: dsl.RequestEnvelope( 53 &dsl.EnvelopePayloadDesc{ 54 Type: packetFilterNakedType, 55 Name: "PacketFilter", 56 }, 57 &dsl.EnvelopePayloadDesc{ 58 Type: meta.TypeString, 59 Name: "OriginalExpressionHash", 60 Tags: &dsl.FieldTags{JSON: ",omitempty"}, 61 }, 62 ), 63 Arguments: dsl.Arguments{ 64 dsl.ArgumentID, 65 { 66 Name: "updateParam", 67 MapConvTag: "PacketFilter,recursive", 68 Type: packetFilterUpdateParam, 69 }, 70 { 71 Name: "originalExpressionHash", 72 MapConvTag: "OriginalExpressionHash", 73 Type: meta.TypeString, 74 }, 75 }, 76 ResponseEnvelope: dsl.ResponseEnvelope(&dsl.EnvelopePayloadDesc{ 77 Type: packetFilterNakedType, 78 Name: "PacketFilter", 79 }), 80 Results: dsl.Results{ 81 { 82 SourceField: "PacketFilter", 83 DestField: packetFilterView.Name, 84 IsPlural: false, 85 Model: packetFilterView, 86 }, 87 }, 88 }, 89 90 // delete 91 ops.Delete(packetFilterAPIName), 92 }, 93 } 94 95 var ( 96 packetFilterNakedType = meta.Static(naked.PacketFilter{}) 97 98 packetFilterView = &dsl.Model{ 99 Name: packetFilterAPIName, 100 NakedType: packetFilterNakedType, 101 Fields: []*dsl.FieldDesc{ 102 fields.ID(), 103 fields.Name(), 104 fields.Description(), 105 fields.RequiredHostVersion(), 106 fields.PacketFilterExpressions(), 107 fields.ExpressionHash(), 108 fields.CreatedAt(), 109 }, 110 } 111 112 packetFilterCreateParam = &dsl.Model{ 113 Name: names.CreateParameterName(packetFilterAPIName), 114 NakedType: packetFilterNakedType, 115 Fields: []*dsl.FieldDesc{ 116 fields.Name(), 117 fields.Description(), 118 fields.PacketFilterExpressions(), 119 }, 120 } 121 122 packetFilterUpdateParam = &dsl.Model{ 123 Name: names.UpdateParameterName(packetFilterAPIName), 124 NakedType: packetFilterNakedType, 125 Fields: []*dsl.FieldDesc{ 126 fields.Name(), 127 fields.Description(), 128 fields.PacketFilterExpressions(), 129 }, 130 } 131 )