-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimport.go
109 lines (93 loc) · 3.36 KB
/
import.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package terraform
import (
"encoding/json"
"github.com/pkg/errors"
"gopkg.in/yaml.v2"
)
// ImportEntity structure
type ImportEntity struct {
Azure AzureRmImportEntity `json:"azure" yaml:"azure"`
}
// AzureRmImportEntity structure
type AzureRmImportEntity struct {
SubscriptionID string `json:"subscriptionId" yaml:"subscriptionId"`
ResourceGroup string `json:"resourceGroup" yaml:"resourceGroup"`
TestNumber int64 `json:"testNumber" yaml:"testNumber"`
TestBoolean bool `json:"testBoolean" yaml:"testBoolean"`
ServiceBus ServiceBusEntity `json:"serviceBus" yaml:"serviceBus"`
}
// ServiceBusEntity structure
type ServiceBusEntity struct {
Namespace string `json:"namespace" yaml:"namespace"`
Topics []TopicEntity `json:"topics" yaml:"topics"`
Queues []QueueEntity `json:"queues" yaml:"queues"`
}
// TopicEntity structure
type TopicEntity struct {
TerraformResourceName string `json:"terraformResourceName" yaml:"terraformResourceName"`
TerraformModule string `json:"terraformModule" yaml:"terraformModule"`
Name string `json:"name" yaml:"name"`
Subscriptions []SubscriptionEntity `json:"subscriptions" yaml:"subscriptions"`
}
// SubscriptionEntity structure
type SubscriptionEntity struct {
TerraformResourceName string `json:"terraformResourceName" yaml:"terraformResourceName"`
TerraformModule string `json:"terraformModule" yaml:"terraformModule"`
Name string `json:"name" yaml:"name"`
SubscriptionRules []SubscriptionRuleEntity `json:"subscriptionRules" yaml:"subscriptionRules"`
}
// SubscriptionRuleEntity structure
type SubscriptionRuleEntity struct {
TerraformResourceName string `json:"terraformResourceName" yaml:"terraformResourceName"`
TerraformModule string `json:"terraformModule" yaml:"terraformModule"`
Name string `json:"name" yaml:"name"`
}
// QueueEntity structure
type QueueEntity struct {
TerraformResourceName string `json:"terraformResourceName" yaml:"terraformResourceName"`
TerraformModule string `json:"terraformModule" yaml:"terraformModule"`
Name string `json:"name" yaml:"name"`
}
// ImportFormat Enum
type ImportFormat int
// ImportOperationEntity Terraform Import Operation entity
type ImportOperationEntity struct {
Name string
Module string
ModuleName string
ResourceID string
}
// Terraform Import Enum Definition
const (
JSON ImportFormat = iota
Yaml
)
// ReadImportContent imports a terraform import instruction
func (m *Module) ReadImportContent(content []byte, importFormat ImportFormat) (*ImportEntity, error) {
var imp ImportEntity
if len(content) > 0 {
switch importFormat {
case JSON:
logger.Debug("Converting from JSON...")
err := json.Unmarshal(content, &imp)
if err != nil {
return nil, err
}
logger.Success("Imported successfully")
return &imp, nil
case Yaml:
logger.Debug("Converting from Yaml...")
err := yaml.Unmarshal(content, &imp)
if err != nil {
return nil, err
}
logger.Success("Imported successfully")
return &imp, nil
}
}
return nil, errors.New("There was an error importing file")
}
// RunImport Starts a terraform import
func (m *Module) RunImport(operation ImportOperationEntity) error {
return nil
}