github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/management/v1alpha1/DiscoveryAgent.go (about) 1 /* 2 * This file is automatically generated 3 */ 4 5 package management 6 7 import ( 8 "encoding/json" 9 10 apiv1 "github.com/Axway/agent-sdk/pkg/apic/apiserver/models/api/v1" 11 12 "github.com/Axway/agent-sdk/pkg/util/log" 13 ) 14 15 var ( 16 DiscoveryAgentCtx log.ContextField = "discoveryAgent" 17 18 _DiscoveryAgentGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "management", 21 Kind: "DiscoveryAgent", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 DiscoveryAgentScopes = []string{"Environment"} 27 ) 28 29 const ( 30 DiscoveryAgentResourceName = "discoveryagents" 31 DiscoveryAgentAgentstateSubResourceName = "agentstate" 32 DiscoveryAgentDataplaneSubResourceName = "dataplane" 33 DiscoveryAgentStatusSubResourceName = "status" 34 ) 35 36 func DiscoveryAgentGVK() apiv1.GroupVersionKind { 37 return _DiscoveryAgentGVK 38 } 39 40 func init() { 41 apiv1.RegisterGVK(_DiscoveryAgentGVK, DiscoveryAgentScopes[0], DiscoveryAgentResourceName) 42 log.RegisterContextField(DiscoveryAgentCtx) 43 } 44 45 // DiscoveryAgent Resource 46 type DiscoveryAgent struct { 47 apiv1.ResourceMeta 48 Agentstate DiscoveryAgentAgentstate `json:"agentstate"` 49 Dataplane DiscoveryAgentDataplane `json:"dataplane"` 50 Owner *apiv1.Owner `json:"owner"` 51 Spec DiscoveryAgentSpec `json:"spec"` 52 Status DiscoveryAgentStatus `json:"status"` 53 } 54 55 // NewDiscoveryAgent creates an empty *DiscoveryAgent 56 func NewDiscoveryAgent(name, scopeName string) *DiscoveryAgent { 57 return &DiscoveryAgent{ 58 ResourceMeta: apiv1.ResourceMeta{ 59 Name: name, 60 GroupVersionKind: _DiscoveryAgentGVK, 61 Metadata: apiv1.Metadata{ 62 Scope: apiv1.MetadataScope{ 63 Name: scopeName, 64 Kind: DiscoveryAgentScopes[0], 65 }, 66 }, 67 }, 68 } 69 } 70 71 // DiscoveryAgentFromInstanceArray converts a []*ResourceInstance to a []*DiscoveryAgent 72 func DiscoveryAgentFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*DiscoveryAgent, error) { 73 newArray := make([]*DiscoveryAgent, 0) 74 for _, item := range fromArray { 75 res := &DiscoveryAgent{} 76 err := res.FromInstance(item) 77 if err != nil { 78 return make([]*DiscoveryAgent, 0), err 79 } 80 newArray = append(newArray, res) 81 } 82 83 return newArray, nil 84 } 85 86 // AsInstance converts a DiscoveryAgent to a ResourceInstance 87 func (res *DiscoveryAgent) AsInstance() (*apiv1.ResourceInstance, error) { 88 meta := res.ResourceMeta 89 meta.GroupVersionKind = DiscoveryAgentGVK() 90 res.ResourceMeta = meta 91 92 m, err := json.Marshal(res) 93 if err != nil { 94 return nil, err 95 } 96 97 instance := apiv1.ResourceInstance{} 98 err = json.Unmarshal(m, &instance) 99 if err != nil { 100 return nil, err 101 } 102 103 return &instance, nil 104 } 105 106 // FromInstance converts a ResourceInstance to a DiscoveryAgent 107 func (res *DiscoveryAgent) FromInstance(ri *apiv1.ResourceInstance) error { 108 if ri == nil { 109 res = nil 110 return nil 111 } 112 var err error 113 rawResource := ri.GetRawResource() 114 if rawResource == nil { 115 rawResource, err = json.Marshal(ri) 116 if err != nil { 117 return err 118 } 119 } 120 err = json.Unmarshal(rawResource, res) 121 return err 122 } 123 124 // MarshalJSON custom marshaller to handle sub resources 125 func (res *DiscoveryAgent) MarshalJSON() ([]byte, error) { 126 m, err := json.Marshal(&res.ResourceMeta) 127 if err != nil { 128 return nil, err 129 } 130 131 var out map[string]interface{} 132 err = json.Unmarshal(m, &out) 133 if err != nil { 134 return nil, err 135 } 136 137 out["agentstate"] = res.Agentstate 138 out["dataplane"] = res.Dataplane 139 out["owner"] = res.Owner 140 out["spec"] = res.Spec 141 out["status"] = res.Status 142 143 return json.Marshal(out) 144 } 145 146 // UnmarshalJSON custom unmarshaller to handle sub resources 147 func (res *DiscoveryAgent) UnmarshalJSON(data []byte) error { 148 var err error 149 150 aux := &apiv1.ResourceInstance{} 151 err = json.Unmarshal(data, aux) 152 if err != nil { 153 return err 154 } 155 156 res.ResourceMeta = aux.ResourceMeta 157 res.Owner = aux.Owner 158 159 // ResourceInstance holds the spec as a map[string]interface{}. 160 // Convert it to bytes, then convert to the spec type for the resource. 161 sr, err := json.Marshal(aux.Spec) 162 if err != nil { 163 return err 164 } 165 166 err = json.Unmarshal(sr, &res.Spec) 167 if err != nil { 168 return err 169 } 170 171 // marshalling subresource Agentstate 172 if v, ok := aux.SubResources["agentstate"]; ok { 173 sr, err = json.Marshal(v) 174 if err != nil { 175 return err 176 } 177 178 delete(aux.SubResources, "agentstate") 179 err = json.Unmarshal(sr, &res.Agentstate) 180 if err != nil { 181 return err 182 } 183 } 184 185 // marshalling subresource Dataplane 186 if v, ok := aux.SubResources["dataplane"]; ok { 187 sr, err = json.Marshal(v) 188 if err != nil { 189 return err 190 } 191 192 delete(aux.SubResources, "dataplane") 193 err = json.Unmarshal(sr, &res.Dataplane) 194 if err != nil { 195 return err 196 } 197 } 198 199 // marshalling subresource Status 200 if v, ok := aux.SubResources["status"]; ok { 201 sr, err = json.Marshal(v) 202 if err != nil { 203 return err 204 } 205 206 delete(aux.SubResources, "status") 207 err = json.Unmarshal(sr, &res.Status) 208 if err != nil { 209 return err 210 } 211 } 212 213 return nil 214 } 215 216 // PluralName returns the plural name of the resource 217 func (res *DiscoveryAgent) PluralName() string { 218 return DiscoveryAgentResourceName 219 }