parent
							
								
									8a716edac3
								
							
						
					
					
						commit
						c110239225
					
				| @ -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(), | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -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(), | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -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 | ||||||
|  | } | ||||||
					Loading…
					
					
				
		Reference in new issue