github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/management/v1alpha1/APIServiceInstance.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 APIServiceInstanceCtx log.ContextField = "apiServiceInstance" 17 18 _APIServiceInstanceGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "management", 21 Kind: "APIServiceInstance", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 APIServiceInstanceScopes = []string{"Environment"} 27 ) 28 29 const ( 30 APIServiceInstanceResourceName = "apiserviceinstances" 31 ApiServiceInstanceComplianceSubResourceName = "compliance" 32 ApiServiceInstanceLifecycleSubResourceName = "lifecycle" 33 ApiServiceInstanceReferencesSubResourceName = "references" 34 ApiServiceInstanceSourceSubResourceName = "source" 35 ) 36 37 func APIServiceInstanceGVK() apiv1.GroupVersionKind { 38 return _APIServiceInstanceGVK 39 } 40 41 func init() { 42 apiv1.RegisterGVK(_APIServiceInstanceGVK, APIServiceInstanceScopes[0], APIServiceInstanceResourceName) 43 log.RegisterContextField(APIServiceInstanceCtx) 44 } 45 46 // APIServiceInstance Resource 47 type APIServiceInstance struct { 48 apiv1.ResourceMeta 49 // GENERATE: The following code has been modified after code generation 50 // 51 // Compliance ApiServiceInstanceCompliance `json:"compliance"` 52 Compliance *ApiServiceInstanceCompliance `json:"compliance,omitempty"` 53 Lifecycle ApiServiceInstanceLifecycle `json:"lifecycle"` 54 Owner *apiv1.Owner `json:"owner"` 55 References ApiServiceInstanceReferences `json:"references"` 56 // GENERATE: The following code has been modified after code generation 57 // 58 // Source ApiServiceInstanceSource `json:"source"` 59 Source *ApiServiceInstanceSource `json:"source,omitempty"` 60 Spec ApiServiceInstanceSpec `json:"spec"` 61 } 62 63 // NewAPIServiceInstance creates an empty *APIServiceInstance 64 func NewAPIServiceInstance(name, scopeName string) *APIServiceInstance { 65 return &APIServiceInstance{ 66 ResourceMeta: apiv1.ResourceMeta{ 67 Name: name, 68 GroupVersionKind: _APIServiceInstanceGVK, 69 Metadata: apiv1.Metadata{ 70 Scope: apiv1.MetadataScope{ 71 Name: scopeName, 72 Kind: APIServiceInstanceScopes[0], 73 }, 74 }, 75 }, 76 } 77 } 78 79 // APIServiceInstanceFromInstanceArray converts a []*ResourceInstance to a []*APIServiceInstance 80 func APIServiceInstanceFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*APIServiceInstance, error) { 81 newArray := make([]*APIServiceInstance, 0) 82 for _, item := range fromArray { 83 res := &APIServiceInstance{} 84 err := res.FromInstance(item) 85 if err != nil { 86 return make([]*APIServiceInstance, 0), err 87 } 88 newArray = append(newArray, res) 89 } 90 91 return newArray, nil 92 } 93 94 // AsInstance converts a APIServiceInstance to a ResourceInstance 95 func (res *APIServiceInstance) AsInstance() (*apiv1.ResourceInstance, error) { 96 meta := res.ResourceMeta 97 meta.GroupVersionKind = APIServiceInstanceGVK() 98 res.ResourceMeta = meta 99 100 m, err := json.Marshal(res) 101 if err != nil { 102 return nil, err 103 } 104 105 instance := apiv1.ResourceInstance{} 106 err = json.Unmarshal(m, &instance) 107 if err != nil { 108 return nil, err 109 } 110 111 return &instance, nil 112 } 113 114 // FromInstance converts a ResourceInstance to a APIServiceInstance 115 func (res *APIServiceInstance) FromInstance(ri *apiv1.ResourceInstance) error { 116 if ri == nil { 117 res = nil 118 return nil 119 } 120 var err error 121 rawResource := ri.GetRawResource() 122 if rawResource == nil { 123 rawResource, err = json.Marshal(ri) 124 if err != nil { 125 return err 126 } 127 } 128 err = json.Unmarshal(rawResource, res) 129 return err 130 } 131 132 // MarshalJSON custom marshaller to handle sub resources 133 func (res *APIServiceInstance) MarshalJSON() ([]byte, error) { 134 m, err := json.Marshal(&res.ResourceMeta) 135 if err != nil { 136 return nil, err 137 } 138 139 var out map[string]interface{} 140 err = json.Unmarshal(m, &out) 141 if err != nil { 142 return nil, err 143 } 144 145 out["compliance"] = res.Compliance 146 out["lifecycle"] = res.Lifecycle 147 out["owner"] = res.Owner 148 out["references"] = res.References 149 out["source"] = res.Source 150 out["spec"] = res.Spec 151 152 return json.Marshal(out) 153 } 154 155 // UnmarshalJSON custom unmarshaller to handle sub resources 156 func (res *APIServiceInstance) UnmarshalJSON(data []byte) error { 157 var err error 158 159 aux := &apiv1.ResourceInstance{} 160 err = json.Unmarshal(data, aux) 161 if err != nil { 162 return err 163 } 164 165 res.ResourceMeta = aux.ResourceMeta 166 res.Owner = aux.Owner 167 168 // ResourceInstance holds the spec as a map[string]interface{}. 169 // Convert it to bytes, then convert to the spec type for the resource. 170 sr, err := json.Marshal(aux.Spec) 171 if err != nil { 172 return err 173 } 174 175 err = json.Unmarshal(sr, &res.Spec) 176 if err != nil { 177 return err 178 } 179 180 // marshalling subresource Compliance 181 if v, ok := aux.SubResources["compliance"]; ok { 182 sr, err = json.Marshal(v) 183 if err != nil { 184 return err 185 } 186 187 delete(aux.SubResources, "compliance") 188 err = json.Unmarshal(sr, &res.Compliance) 189 if err != nil { 190 return err 191 } 192 } 193 194 // marshalling subresource Lifecycle 195 if v, ok := aux.SubResources["lifecycle"]; ok { 196 sr, err = json.Marshal(v) 197 if err != nil { 198 return err 199 } 200 201 delete(aux.SubResources, "lifecycle") 202 err = json.Unmarshal(sr, &res.Lifecycle) 203 if err != nil { 204 return err 205 } 206 } 207 208 // marshalling subresource References 209 if v, ok := aux.SubResources["references"]; ok { 210 sr, err = json.Marshal(v) 211 if err != nil { 212 return err 213 } 214 215 delete(aux.SubResources, "references") 216 err = json.Unmarshal(sr, &res.References) 217 if err != nil { 218 return err 219 } 220 } 221 222 // marshalling subresource Source 223 if v, ok := aux.SubResources["source"]; ok { 224 sr, err = json.Marshal(v) 225 if err != nil { 226 return err 227 } 228 229 delete(aux.SubResources, "source") 230 err = json.Unmarshal(sr, &res.Source) 231 if err != nil { 232 return err 233 } 234 } 235 236 return nil 237 } 238 239 // PluralName returns the plural name of the resource 240 func (res *APIServiceInstance) PluralName() string { 241 return APIServiceInstanceResourceName 242 }