-
Notifications
You must be signed in to change notification settings - Fork 0
/
generic.go
114 lines (88 loc) · 3.19 KB
/
generic.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
110
111
112
113
114
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package graph
import "github.com/r3labs/diff"
// GenericComponent is a representation of a component backed by a map[string]interface{}
type GenericComponent map[string]interface{}
// GetID : returns the component's ID
func (gc *GenericComponent) GetID() string {
return (*gc)["_component_id"].(string)
}
// GetName returns a components name
func (gc *GenericComponent) GetName() string {
return ""
}
// GetProvider : returns the provider type
func (gc *GenericComponent) GetProvider() string {
return (*gc)["_provider"].(string)
}
// GetProviderID returns a components provider id
func (gc *GenericComponent) GetProviderID() string {
return ""
}
// GetType : returns the type of the component
func (gc *GenericComponent) GetType() string {
return (*gc)["_component"].(string)
}
// GetState : returns the state of the component
func (gc *GenericComponent) GetState() string {
return (*gc)["_state"].(string)
}
// SetState : sets the state of the component
func (gc *GenericComponent) SetState(state string) {
(*gc)["_state"] = state
}
// GetAction : returns the action of the component
func (gc *GenericComponent) GetAction() string {
return (*gc)["_action"].(string)
}
// SetAction : Sets the action of the component
func (gc *GenericComponent) SetAction(action string) {
(*gc)["_action"] = action
}
// GetGroup : returns the components group
func (gc *GenericComponent) GetGroup() string {
return ""
}
// GetTags returns a components tags
func (gc *GenericComponent) GetTags() map[string]string {
return map[string]string{}
}
// GetTag returns a components tag
func (gc *GenericComponent) GetTag(string) string {
return ""
}
// Dependencies : returns a list of component id's upon which the component depends
func (gc *GenericComponent) Dependencies() []string {
return []string{}
}
// SequentialDependencies : returns a list of origin components that restrict the execution of its dependents, allowing only one dependent component to be provisioned at a time (sequentially)
func (gc *GenericComponent) SequentialDependencies() []string {
return []string{}
}
// Validate : validates the components values
func (gc *GenericComponent) Validate() error {
return nil
}
// Diff : diff's the component against another component of the same type
func (gc *GenericComponent) Diff(v Component) (diff.Changelog, error) {
return diff.Changelog{}, nil
}
// SetDefaultVariables : sets up the default template variables for a component
func (gc *GenericComponent) SetDefaultVariables() {}
// Rebuild : rebuilds the component's internal state, such as templated values
func (gc *GenericComponent) Rebuild(g *Graph) {}
// Update : updates the provider returned values of a component
func (gc *GenericComponent) Update(v Component) {}
// IsStateful : returns true if the component needs to be actioned to be removed.
func (gc *GenericComponent) IsStateful() bool {
return true
}
func MapGenericComponent(m map[string]interface{}) *GenericComponent {
c := make(GenericComponent)
for k, v := range m {
c[k] = v
}
return &c
}