Add models, data source
This commit is contained in:
196
decort/data_source_sep_des.go
Normal file
196
decort/data_source_sep_des.go
Normal file
@@ -0,0 +1,196 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
|
||||||
|
Author: Stanislav Solovev, <spsolovev@digitalenergy.online>, <svs1370@gmail.com>
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
|
||||||
|
Technology platfom.
|
||||||
|
|
||||||
|
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package decort
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/google/uuid"
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
func flattenSepList(sl SepList) []map[string]interface{} {
|
||||||
|
res := make([]map[string]interface{}, 0)
|
||||||
|
for _, item := range sl {
|
||||||
|
temp := map[string]interface{}{
|
||||||
|
"ckey": item.Ckey,
|
||||||
|
"meta": flattenMeta(item.Meta),
|
||||||
|
"consumed_by": item.ConsumedBy,
|
||||||
|
"desc": item.Desc,
|
||||||
|
"gid": item.Gid,
|
||||||
|
"guid": item.Guid,
|
||||||
|
"sep_id": item.Id,
|
||||||
|
"milestones": item.Milestones,
|
||||||
|
"name": item.Name,
|
||||||
|
"obj_status": item.ObjStatus,
|
||||||
|
"provided_by": item.ProvidedBy,
|
||||||
|
"tech_status": item.TechStatus,
|
||||||
|
"type": item.Type,
|
||||||
|
}
|
||||||
|
|
||||||
|
res = append(res, temp)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepListRead(d *schema.ResourceData, m interface{}) error {
|
||||||
|
sepList, err := utilitySepListCheckPresence(d, m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
id := uuid.New()
|
||||||
|
d.SetId(id.String())
|
||||||
|
d.Set("items", flattenSepList(sepList))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepDesSchemaMake(sh map[string]*schema.Schema) map[string]*schema.Schema {
|
||||||
|
sh["config"] = &schema.Schema{
|
||||||
|
Type: schema.TypeMap,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Resource{
|
||||||
|
Schema: map[string]*schema.Schema{
|
||||||
|
"api_ips": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"protocol": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"decs3o_app_secret": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"format": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"edgeuser_password": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"edgeuser_name": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"decs3o_app_id": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"transport": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return sh
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepCommonSchemaMake() map[string]*schema.Schema {
|
||||||
|
return map[string]*schema.Schema{
|
||||||
|
"sep_id": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Required: true,
|
||||||
|
Description: "sep type des id",
|
||||||
|
},
|
||||||
|
"ckey": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"consumed_by": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"desc": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"gid": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"guid": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"milestones": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"obj_status": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"provided_by": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"tech_status": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepDes() *schema.Resource {
|
||||||
|
return &schema.Resource{
|
||||||
|
SchemaVersion: 1,
|
||||||
|
|
||||||
|
Read: dataSourceSepDesRead,
|
||||||
|
|
||||||
|
Timeouts: &schema.ResourceTimeout{
|
||||||
|
Read: &Timeout30s,
|
||||||
|
Default: &Timeout60s,
|
||||||
|
},
|
||||||
|
|
||||||
|
Schema: dataSourceSepDesSchemaMake(),
|
||||||
|
}
|
||||||
|
}
|
||||||
172
decort/data_source_sep_list.go
Normal file
172
decort/data_source_sep_list.go
Normal file
@@ -0,0 +1,172 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
|
||||||
|
Author: Stanislav Solovev, <spsolovev@digitalenergy.online>, <svs1370@gmail.com>
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
|
||||||
|
Technology platfom.
|
||||||
|
|
||||||
|
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package decort
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/google/uuid"
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
func flattenSepList(sl SepList) []map[string]interface{} {
|
||||||
|
res := make([]map[string]interface{}, 0)
|
||||||
|
for _, item := range sl {
|
||||||
|
temp := map[string]interface{}{
|
||||||
|
"ckey": item.Ckey,
|
||||||
|
"meta": flattenMeta(item.Meta),
|
||||||
|
"consumed_by": item.ConsumedBy,
|
||||||
|
"desc": item.Desc,
|
||||||
|
"gid": item.Gid,
|
||||||
|
"guid": item.Guid,
|
||||||
|
"sep_id": item.Id,
|
||||||
|
"milestones": item.Milestones,
|
||||||
|
"name": item.Name,
|
||||||
|
"obj_status": item.ObjStatus,
|
||||||
|
"provided_by": item.ProvidedBy,
|
||||||
|
"tech_status": item.TechStatus,
|
||||||
|
"type": item.Type,
|
||||||
|
}
|
||||||
|
|
||||||
|
res = append(res, temp)
|
||||||
|
}
|
||||||
|
return res
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepListRead(d *schema.ResourceData, m interface{}) error {
|
||||||
|
sepList, err := utilitySepListCheckPresence(d, m)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
id := uuid.New()
|
||||||
|
d.SetId(id.String())
|
||||||
|
d.Set("items", flattenSepList(sepList))
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepListSchemaMake() map[string]*schema.Schema {
|
||||||
|
rets := map[string]*schema.Schema{
|
||||||
|
"page": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Optional: true,
|
||||||
|
Description: "page number",
|
||||||
|
},
|
||||||
|
"size": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Optional: true,
|
||||||
|
Description: "page size",
|
||||||
|
},
|
||||||
|
"items": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Description: "sep list",
|
||||||
|
Elem: &schema.Resource{
|
||||||
|
Schema: dataSourceSepShortSchemaMake(),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return rets
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepShortSchemaMake() map[string]*schema.Schema {
|
||||||
|
return map[string]*schema.Schema{
|
||||||
|
"ckey": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"meta": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeString,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"consumed_by": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"desc": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"gid": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"guid": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"sep_id": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"milestones": {
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"name": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"obj_status": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"provided_by": {
|
||||||
|
Type: schema.TypeList,
|
||||||
|
Computed: true,
|
||||||
|
Elem: &schema.Schema{
|
||||||
|
Type: schema.TypeInt,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"tech_status": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
Type: schema.TypeString,
|
||||||
|
Computed: true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataSourceSepList() *schema.Resource {
|
||||||
|
return &schema.Resource{
|
||||||
|
SchemaVersion: 1,
|
||||||
|
|
||||||
|
Read: dataSourceSepListRead,
|
||||||
|
|
||||||
|
Timeouts: &schema.ResourceTimeout{
|
||||||
|
Read: &Timeout30s,
|
||||||
|
Default: &Timeout60s,
|
||||||
|
},
|
||||||
|
|
||||||
|
Schema: dataSourceSepListSchemaMake(),
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -835,3 +835,220 @@ type Snapshot struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type SnapshotList []Snapshot
|
type SnapshotList []Snapshot
|
||||||
|
|
||||||
|
///////////////////
|
||||||
|
///// SEP API /////
|
||||||
|
///////////////////
|
||||||
|
const sepAddConsumerNodesAPI = "/restmachine/cloudbroker/sep/addConsumerNodes"
|
||||||
|
const sepDelConsumerNodesAPI = "/restmachine/cloudbroker/sep/delConsumerNodes"
|
||||||
|
const sepAddProviderNodesAPI = "/restmachine/cloudbroker/sep/addProviderNodes"
|
||||||
|
|
||||||
|
const sepConfigFieldEditAPI = "/restmachine/cloudbroker/sep/configFieldEdit"
|
||||||
|
const sepConfigInsertAPI = "/restmachine/cloudbroker/sep/configInsert"
|
||||||
|
const sepConfigValidateAPI = "/restmachine/cloudbroker/sep/configValidate"
|
||||||
|
|
||||||
|
const sepConsumptionAPI = "/restmachine/cloudbroker/sep/consumption"
|
||||||
|
|
||||||
|
const sepDecommissionAPI = "/restmachine/cloudbroker/sep/decommission"
|
||||||
|
|
||||||
|
const sepEnableAPI = "/restmachine/cloudbroker/sep/enable"
|
||||||
|
const sepDisableAPI = "/restmachine/cloudbroker/sep/disable"
|
||||||
|
|
||||||
|
const sepDislListAPI = "/restmachine/cloudbroker/sep/diskList"
|
||||||
|
|
||||||
|
const sepGetAPI = "/restmachine/cloudbroker/sep/get"
|
||||||
|
const sepGetConfigAPI = "/restmachine/cloudbroker/sep/getConfig"
|
||||||
|
const sepGetPoolAPI = "/restmachine/cloudbroker/sep/getPool"
|
||||||
|
|
||||||
|
const sepCreateAPI = "/restmachine/cloudbroker/sep/create"
|
||||||
|
const sepDeleteAPI = "/restmachine/cloudbroker/sep/delete"
|
||||||
|
const sepListAPI = "/restmachine/cloudbroker/sep/list"
|
||||||
|
|
||||||
|
const sepUpdateCapacityLimitAPI = "/restmachine/cloudbroker/sep/updateCapacityLimit"
|
||||||
|
|
||||||
|
///Sep Configs
|
||||||
|
///////DES config
|
||||||
|
type DesDiskDelQueue struct {
|
||||||
|
PurgatoryId int `json:"purgatory_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DesHousekeepingSettings struct {
|
||||||
|
DiskDelQueue DesDiskDelQueue `json:"disk_del_queue"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type URI struct {
|
||||||
|
IP string `json:"ip"`
|
||||||
|
Port int `json:"port"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DesConfigPool struct {
|
||||||
|
Types []string `json:"types"`
|
||||||
|
ReferenceId string `json:"referenceId"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
PagecacheRatio int `json:"pagecache_ratio"`
|
||||||
|
URIS []URI `json:"uris"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DesConfigSep struct {
|
||||||
|
ApiIps []string `json:"API_IPs"`
|
||||||
|
Protocol string `json:"protocol"`
|
||||||
|
Desc3oAppSecret string `json:"decs3o_app_secret"`
|
||||||
|
Desc3oAppId string `json:"decs3o_app_id"`
|
||||||
|
Format string `json:"format"`
|
||||||
|
EdgeuserName string `json:"edgeuser_name"`
|
||||||
|
EdgeuserPassword string `json:"edgeuser_password"`
|
||||||
|
HousekeepingSettings DesHousekeepingSettings `json:"housekeeping_settings"`
|
||||||
|
Pools []DesConfigPool `json:"pools"`
|
||||||
|
Transport string `json:"transport"`
|
||||||
|
}
|
||||||
|
|
||||||
|
///////Hitachi config
|
||||||
|
|
||||||
|
type HitachiConfigPool struct {
|
||||||
|
CloneTechnology string `json:"clone_technology"`
|
||||||
|
Id int `json:"id"`
|
||||||
|
MaxLdevId int `json:"maxLdevId"`
|
||||||
|
MinLdevId int `json:"minLdevId"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
SnapshotPoolId int `json:"snapshot_pool_id"`
|
||||||
|
Snapshotable bool `json:"snapshotable"`
|
||||||
|
Types []string `json:"types"`
|
||||||
|
UsageLimit int `json:"usage_limit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HitachiConfigSep struct {
|
||||||
|
ApiUrls []string `json:"API_URLs"`
|
||||||
|
SN int `json:"SN"`
|
||||||
|
DiskMaxSize int `json:"disk_max_size"`
|
||||||
|
Format string `json:"format"`
|
||||||
|
HostGroupNumMax int `json:"hostGroupNumMax"`
|
||||||
|
HostGroupNumMin int `json:"hostGroupNumMin"`
|
||||||
|
HostGroupNumber int `json:"hostGroupNumber"`
|
||||||
|
HousekeepingSettings HousekeepingSettings `json:"housekeeping_settings"`
|
||||||
|
MGMTPassword string `json:"mgmt_password"`
|
||||||
|
MGMTUser string `json:"mgmt_user"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
NamePrefix string `json:"name_prefix"`
|
||||||
|
Pools []HitachiConfigPool `json:"pools"`
|
||||||
|
Ports []string `json:"ports"`
|
||||||
|
Protocol string `json:"protocol"`
|
||||||
|
SSLVerify bool `json:"ssl_verify"`
|
||||||
|
}
|
||||||
|
|
||||||
|
///////Tatlin Config
|
||||||
|
|
||||||
|
type TatlinPort struct {
|
||||||
|
IPS []string `json:"ips"`
|
||||||
|
IQN string `json:"iqn"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Pool struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Types []string `json:"types"`
|
||||||
|
UsageLimit int `json:"usage_limit"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TatlinTechDisk struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
Size int `json:"size"`
|
||||||
|
Pool string `json:"pool"`
|
||||||
|
WWID string `json:"wwid"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type DiskDelQueue struct {
|
||||||
|
PurgeAttemptsThreshold int `json:"purge_attempts_threshold"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HousekeepingSettings struct {
|
||||||
|
DiskDelQueue DiskDelQueue `json:"disk_del_queue"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TatlinConfigSep struct {
|
||||||
|
ApiUrls []string `json:"API_URLs"`
|
||||||
|
DiskMaxSize int `json:"disk_max_size"`
|
||||||
|
Format string `json:"format"`
|
||||||
|
EdgeuserName string `json:"edgeuser_name"`
|
||||||
|
EdgeuserPassword string `json:"edgeuser_password"`
|
||||||
|
MGMTPassword string `json:"mgmt_password"`
|
||||||
|
MGMTUser string `json:"mgmt_user"`
|
||||||
|
HostGroupName string `json:"hostGroupName"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
NamePrefix string `json:"name_prefix"`
|
||||||
|
Ports []TatlinPort `json:"ports"`
|
||||||
|
Pools []Pool `json:"pools"`
|
||||||
|
Protocol string `json:"protocol"`
|
||||||
|
TechDisk TatlinTechDisk `json:"techDisk"`
|
||||||
|
HousekeepingSettings HousekeepingSettings `json:"housekeeping_settings"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//////Huawei Dorado
|
||||||
|
|
||||||
|
type HuaweiDoradoPort struct {
|
||||||
|
IP string `json:"ip"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HuaweiDoradoGroup struct {
|
||||||
|
HostGroup []string `json:"hostgroup"`
|
||||||
|
LungGroup []string `json:"lungroup"`
|
||||||
|
PortGroup []string `json:"portgroup"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HuaweiDoradoConfigSep struct {
|
||||||
|
ApiUrls []string `json:"API_URLs"`
|
||||||
|
DiskMaxSize int `json:"disk_max_size"`
|
||||||
|
Format string `json:"format"`
|
||||||
|
EdgeuserName string `json:"edgeuser_name"`
|
||||||
|
EdgeuserPassword string `json:"edgeuser_password"`
|
||||||
|
MGMTPassword string `json:"mgmt_password"`
|
||||||
|
MGMTUser string `json:"mgmt_user"`
|
||||||
|
HostGroupName string `json:"hostGroupName"`
|
||||||
|
Model string `json:"model"`
|
||||||
|
NamePrefix string `json:"name_prefix"`
|
||||||
|
Pools []Pool `json:"pools"`
|
||||||
|
Protocol string `json:"protocol"`
|
||||||
|
Ports []HuaweiDoradoPort `json:"ports"`
|
||||||
|
Groups []HuaweiDoradoGroup `json:"groups"`
|
||||||
|
HousekeepingSettings HousekeepingSettings `json:"housekeeping_settings"`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////SEP
|
||||||
|
|
||||||
|
type SepCommon struct {
|
||||||
|
Ckey string `json:"_ckey"`
|
||||||
|
Meta []interface{} `json:"_meta"`
|
||||||
|
ConsumedBy []int `json:"consumedBy"`
|
||||||
|
Desc string `json:"desc"`
|
||||||
|
Gid int `json:"gid"`
|
||||||
|
Guid int `json:"guid"`
|
||||||
|
Id int `json:"id"`
|
||||||
|
Milestones int `json:"milestones"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
ObjStatus string `json:"objStatus"`
|
||||||
|
ProvidedBy []int `json:"providedBy"`
|
||||||
|
TechStatus string `json:"techStatus"`
|
||||||
|
Type string `json:"type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type SepList []SepCommon
|
||||||
|
|
||||||
|
type DesSep struct {
|
||||||
|
SepCommon
|
||||||
|
Config DesConfigSep `json:"config"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HitachiSep struct {
|
||||||
|
SepCommon
|
||||||
|
Config HitachiConfigSep `json:"config"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type TatlinSep struct {
|
||||||
|
SepCommon
|
||||||
|
Config TatlinConfigSep `json:"config"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type HuaweiDoradoSep struct {
|
||||||
|
SepCommon
|
||||||
|
Config HuaweiDoradoConfigSep `json:"config"`
|
||||||
|
}
|
||||||
|
|||||||
61
decort/utility_sep_list.go
Normal file
61
decort/utility_sep_list.go
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/*
|
||||||
|
Copyright (c) 2019-2022 Digital Energy Cloud Solutions LLC. All Rights Reserved.
|
||||||
|
Author: Stanislav Solovev, <spsolovev@digitalenergy.online>, <svs1370@gmail.com>
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
This file is part of Terraform (by Hashicorp) provider for Digital Energy Cloud Orchestration
|
||||||
|
Technology platfom.
|
||||||
|
|
||||||
|
Visit https://github.com/rudecs/terraform-provider-decort for full source code package and updates.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package decort
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"net/url"
|
||||||
|
"strconv"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
|
||||||
|
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
|
||||||
|
)
|
||||||
|
|
||||||
|
func utilitySepListCheckPresence(d *schema.ResourceData, m interface{}) (SepList, error) {
|
||||||
|
sepList := SepList{}
|
||||||
|
controller := m.(*ControllerCfg)
|
||||||
|
urlValues := &url.Values{}
|
||||||
|
|
||||||
|
if page, ok := d.GetOk("page"); ok {
|
||||||
|
urlValues.Add("page", strconv.Itoa(page.(int)))
|
||||||
|
}
|
||||||
|
if size, ok := d.GetOk("size"); ok {
|
||||||
|
urlValues.Add("size", strconv.Itoa(size.(int)))
|
||||||
|
}
|
||||||
|
|
||||||
|
log.Debugf("utilitySepListCheckPresence: load image list")
|
||||||
|
sepListRaw, err := controller.decortAPICall("POST", sepListAPI, urlValues)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
err = json.Unmarshal([]byte(sepListRaw), &sepList)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
return sepList, nil
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user