github.com/sacloud/libsacloud/v2@v2.32.3/internal/define/enhanced_database.go (about) 1 // Copyright 2016-2022 The Libsacloud 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/libsacloud/v2/internal/define/names" 21 "github.com/sacloud/libsacloud/v2/internal/define/ops" 22 "github.com/sacloud/libsacloud/v2/internal/dsl" 23 "github.com/sacloud/libsacloud/v2/internal/dsl/meta" 24 "github.com/sacloud/libsacloud/v2/sacloud/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 } 70 71 var ( 72 enhancedDatabaseNakedType = meta.Static(naked.EnhancedDB{}) 73 enhancedDatabaseUserNakedType = meta.Static(naked.EnhancedDBPasswordSettings{}) 74 75 enhancedDatabaseView = &dsl.Model{ 76 Name: enhancedDatabaseAPIName, 77 NakedType: enhancedDatabaseNakedType, 78 Fields: []*dsl.FieldDesc{ 79 fields.ID(), 80 fields.Name(), 81 fields.Description(), 82 fields.Tags(), 83 fields.Availability(), 84 fields.IconID(), 85 fields.CreatedAt(), 86 fields.ModifiedAt(), 87 88 // settings 89 fields.SettingsHash(), 90 fields.EnhancedDBMaxConnections(), 91 92 // status 93 fields.EnhancedDBDatabaseName(), 94 fields.EnhancedDBDatabaseType(), 95 fields.EnhancedDBDatabaseRegion(), 96 fields.EnhancedDBDatabaseHostName(), 97 fields.EnhancedDBDatabasePort(), 98 }, 99 } 100 101 enhancedDatabaseCreateParam = &dsl.Model{ 102 Name: names.CreateParameterName(enhancedDatabaseAPIName), 103 NakedType: enhancedDatabaseNakedType, 104 ConstFields: []*dsl.ConstFieldDesc{ 105 { 106 Name: "Class", 107 Type: meta.TypeString, 108 Tags: &dsl.FieldTags{ 109 MapConv: "Provider.Class", 110 }, 111 Value: `"enhanceddb"`, 112 }, 113 { 114 Name: "Region", 115 Type: meta.TypeString, 116 Tags: &dsl.FieldTags{ 117 MapConv: "Status.Region", 118 }, 119 Value: `"is1"`, 120 }, 121 { 122 Name: "DatabaseType", 123 Type: meta.TypeString, 124 Tags: &dsl.FieldTags{ 125 MapConv: "Status.DatabaseType", 126 }, 127 Value: `"tidb"`, 128 }, 129 { 130 Name: "MaxConnections", 131 Type: meta.TypeInt, 132 Tags: &dsl.FieldTags{ 133 MapConv: "Settings.EnhancedDB.MaxConnections", 134 }, 135 Value: `50`, 136 }, 137 }, 138 Fields: []*dsl.FieldDesc{ 139 // common fields 140 fields.Name(), 141 fields.Description(), 142 fields.Tags(), 143 fields.IconID(), 144 145 // settings 146 fields.EnhancedDBDatabaseName(), 147 }, 148 } 149 150 enhancedDatabaseUpdateParam = &dsl.Model{ 151 Name: names.UpdateParameterName(enhancedDatabaseAPIName), 152 NakedType: enhancedDatabaseNakedType, 153 ConstFields: []*dsl.ConstFieldDesc{ 154 { 155 Name: "MaxConnections", 156 Type: meta.TypeInt, 157 Tags: &dsl.FieldTags{ 158 MapConv: "Settings.EnhancedDB.MaxConnections", 159 }, 160 Value: `50`, 161 }, 162 }, 163 Fields: []*dsl.FieldDesc{ 164 // common fields 165 fields.Name(), 166 fields.Description(), 167 fields.Tags(), 168 fields.IconID(), 169 170 // settings hash 171 fields.SettingsHash(), 172 }, 173 } 174 175 enhancedDatabaseSetPasswordParam = &dsl.Model{ 176 Name: enhancedDatabaseAPIName + "SetPasswordRequest", 177 NakedType: meta.Static(naked.EnhancedDBPasswordSetting{}), 178 Fields: []*dsl.FieldDesc{ 179 { 180 Name: "Password", 181 Type: meta.TypeString, 182 Tags: &dsl.FieldTags{ 183 MapConv: "EnhancedDB.Password", 184 }, 185 }, 186 }, 187 } 188 )