github.com/sacloud/iaas-api-go@v1.12.0/internal/define/enhanced_database.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 enhancedDatabaseAPIName = "EnhancedDB" 29 enhancedDatabaseAPIPathName = "commonserviceitem" 30 ) 31 32 var enhancedDatabaseAPI = &dsl.Resource{ 33 Name: enhancedDatabaseAPIName, 34 PathName: enhancedDatabaseAPIPathName, 35 PathSuffix: dsl.CloudAPISuffix, 36 IsGlobal: true, 37 Operations: dsl.Operations{ 38 // find 39 ops.FindCommonServiceItem(enhancedDatabaseAPIName, enhancedDatabaseNakedType, findParameter, enhancedDatabaseView), 40 41 // create 42 ops.CreateCommonServiceItem(enhancedDatabaseAPIName, enhancedDatabaseNakedType, enhancedDatabaseCreateParam, enhancedDatabaseView), 43 44 // read 45 ops.ReadCommonServiceItem(enhancedDatabaseAPIName, enhancedDatabaseNakedType, enhancedDatabaseView), 46 47 // update 48 ops.UpdateCommonServiceItem(enhancedDatabaseAPIName, enhancedDatabaseNakedType, enhancedDatabaseUpdateParam, enhancedDatabaseView), 49 50 // delete 51 ops.Delete(enhancedDatabaseAPIName), 52 53 // Set Password 54 { 55 ResourceName: enhancedDatabaseAPIName, 56 Name: "SetPassword", 57 PathFormat: dsl.IDAndSuffixPathFormat("enhanceddb/set-password"), 58 Method: http.MethodPut, 59 RequestEnvelope: dsl.RequestEnvelope(&dsl.EnvelopePayloadDesc{ 60 Type: enhancedDatabaseUserNakedType, 61 Name: "CommonServiceItem", 62 }), 63 Arguments: dsl.Arguments{ 64 dsl.ArgumentID, 65 dsl.MappableArgument("param", enhancedDatabaseSetPasswordParam, "CommonServiceItem"), 66 }, 67 }, 68 69 // Get Config 70 { 71 ResourceName: enhancedDatabaseAPIName, 72 Name: "GetConfig", 73 PathFormat: dsl.IDAndSuffixPathFormat("enhanceddb/config"), 74 Method: http.MethodGet, 75 Arguments: dsl.Arguments{ 76 dsl.ArgumentID, 77 }, 78 ResponseEnvelope: dsl.ResponseEnvelope(&dsl.EnvelopePayloadDesc{ 79 Type: meta.Static(naked.EnhancedDBConfig{}), 80 Name: "EnhancedDB", 81 }), 82 Results: dsl.Results{ 83 { 84 SourceField: "EnhancedDB", 85 DestField: enhancedDatabaseConfig.Name, 86 IsPlural: false, 87 Model: enhancedDatabaseConfig, 88 }, 89 }, 90 }, 91 92 // Set Config 93 { 94 ResourceName: enhancedDatabaseAPIName, 95 Name: "SetConfig", 96 PathFormat: dsl.IDAndSuffixPathFormat("enhanceddb/config"), 97 Method: http.MethodPut, 98 RequestEnvelope: dsl.RequestEnvelope(&dsl.EnvelopePayloadDesc{ 99 Type: enhancedDatabaseConfigNakedType, 100 Name: "CommonServiceItem", 101 }), 102 Arguments: dsl.Arguments{ 103 dsl.ArgumentID, 104 dsl.MappableArgument("param", enhancedDatabaseSetConfigParam, "CommonServiceItem"), 105 }, 106 }, 107 }, 108 } 109 110 var ( 111 enhancedDatabaseNakedType = meta.Static(naked.EnhancedDB{}) 112 enhancedDatabaseUserNakedType = meta.Static(naked.EnhancedDBPasswordSettings{}) 113 enhancedDatabaseConfigNakedType = meta.Static(naked.EnhancedDBConfigSettings{}) 114 115 enhancedDatabaseView = &dsl.Model{ 116 Name: enhancedDatabaseAPIName, 117 NakedType: enhancedDatabaseNakedType, 118 Fields: []*dsl.FieldDesc{ 119 fields.ID(), 120 fields.Name(), 121 fields.Description(), 122 fields.Tags(), 123 fields.Availability(), 124 fields.IconID(), 125 fields.CreatedAt(), 126 fields.ModifiedAt(), 127 128 // settings 129 fields.SettingsHash(), 130 131 // status 132 fields.EnhancedDBDatabaseName(), 133 fields.EnhancedDBDatabaseType(), 134 fields.EnhancedDBDatabaseRegion(), 135 fields.EnhancedDBDatabaseHostName(), 136 fields.EnhancedDBDatabasePort(), 137 }, 138 } 139 140 enhancedDatabaseCreateParam = &dsl.Model{ 141 Name: names.CreateParameterName(enhancedDatabaseAPIName), 142 NakedType: enhancedDatabaseNakedType, 143 ConstFields: []*dsl.ConstFieldDesc{ 144 { 145 Name: "Class", 146 Type: meta.TypeString, 147 Tags: &dsl.FieldTags{ 148 MapConv: "Provider.Class", 149 }, 150 Value: `"enhanceddb"`, 151 }, 152 { 153 Name: "MaxConnections", 154 Type: meta.TypeInt, 155 Tags: &dsl.FieldTags{ 156 MapConv: "Config.MaxConnections", 157 }, 158 Value: `50`, 159 }, 160 { 161 Name: "AllowedNetworks", 162 Type: meta.TypeStringSlice, 163 Tags: &dsl.FieldTags{ 164 MapConv: "Config.AllowedNetworks", 165 }, 166 Value: `[]string{}`, 167 }, 168 }, 169 Fields: []*dsl.FieldDesc{ 170 // common fields 171 fields.Name(), 172 fields.Description(), 173 fields.Tags(), 174 fields.IconID(), 175 176 // settings 177 fields.EnhancedDBDatabaseName(), 178 fields.EnhancedDBDatabaseType(), 179 fields.EnhancedDBDatabaseRegion(), 180 }, 181 } 182 183 enhancedDatabaseUpdateParam = &dsl.Model{ 184 Name: names.UpdateParameterName(enhancedDatabaseAPIName), 185 NakedType: enhancedDatabaseNakedType, 186 Fields: []*dsl.FieldDesc{ 187 // common fields 188 fields.Name(), 189 fields.Description(), 190 fields.Tags(), 191 fields.IconID(), 192 193 // settings hash 194 fields.SettingsHash(), 195 }, 196 } 197 198 enhancedDatabaseSetPasswordParam = &dsl.Model{ 199 Name: enhancedDatabaseAPIName + "SetPasswordRequest", 200 NakedType: meta.Static(naked.EnhancedDBPasswordSetting{}), 201 Fields: []*dsl.FieldDesc{ 202 { 203 Name: "Password", 204 Type: meta.TypeString, 205 Tags: &dsl.FieldTags{ 206 MapConv: "EnhancedDB.Password", 207 }, 208 }, 209 }, 210 } 211 212 enhancedDatabaseConfig = &dsl.Model{ 213 Name: enhancedDatabaseAPIName + "Config", 214 NakedType: meta.Static(naked.EnhancedDBConfig{}), 215 Fields: []*dsl.FieldDesc{ 216 { 217 Name: "MaxConnections", 218 Type: meta.TypeInt, 219 }, 220 { 221 Name: "AllowedNetworks", 222 Type: meta.TypeStringSlice, 223 }, 224 }, 225 } 226 227 enhancedDatabaseSetConfigParam = &dsl.Model{ 228 Name: enhancedDatabaseAPIName + "SetConfigRequest", 229 NakedType: meta.Static(naked.EnhancedDBConfigSettings{}), 230 Fields: []*dsl.FieldDesc{ 231 { 232 Name: "AllowedNetworks", 233 Type: meta.TypeStringSlice, 234 Tags: &dsl.FieldTags{ 235 MapConv: "EnhancedDB.AllowedNetworks", 236 }, 237 }, 238 }, 239 ConstFields: []*dsl.ConstFieldDesc{ 240 { 241 Name: "MaxConnections", 242 Type: meta.TypeInt, 243 Tags: &dsl.FieldTags{ 244 MapConv: "EnhancedDB.MaxConnections", 245 }, 246 Value: `50`, 247 }, 248 }, 249 } 250 )