github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/management/v1alpha1/Dataplane.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 DataplaneCtx log.ContextField = "dataplane" 17 18 _DataplaneGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "management", 21 Kind: "Dataplane", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 DataplaneScopes = []string{"Environment"} 27 ) 28 29 const ( 30 DataplaneResourceName = "dataplanes" 31 DataplaneSecretschemaSubResourceName = "secretschema" 32 DataplaneSecuritySubResourceName = "security" 33 ) 34 35 func DataplaneGVK() apiv1.GroupVersionKind { 36 return _DataplaneGVK 37 } 38 39 func init() { 40 apiv1.RegisterGVK(_DataplaneGVK, DataplaneScopes[0], DataplaneResourceName) 41 log.RegisterContextField(DataplaneCtx) 42 } 43 44 // Dataplane Resource 45 type Dataplane struct { 46 apiv1.ResourceMeta 47 Owner *apiv1.Owner `json:"owner"` 48 Secretschema interface{} `json:"secretschema"` 49 Security DataplaneSecurity `json:"security"` 50 Spec DataplaneSpec `json:"spec"` 51 } 52 53 // NewDataplane creates an empty *Dataplane 54 func NewDataplane(name, scopeName string) *Dataplane { 55 return &Dataplane{ 56 ResourceMeta: apiv1.ResourceMeta{ 57 Name: name, 58 GroupVersionKind: _DataplaneGVK, 59 Metadata: apiv1.Metadata{ 60 Scope: apiv1.MetadataScope{ 61 Name: scopeName, 62 Kind: DataplaneScopes[0], 63 }, 64 }, 65 }, 66 } 67 } 68 69 // DataplaneFromInstanceArray converts a []*ResourceInstance to a []*Dataplane 70 func DataplaneFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*Dataplane, error) { 71 newArray := make([]*Dataplane, 0) 72 for _, item := range fromArray { 73 res := &Dataplane{} 74 err := res.FromInstance(item) 75 if err != nil { 76 return make([]*Dataplane, 0), err 77 } 78 newArray = append(newArray, res) 79 } 80 81 return newArray, nil 82 } 83 84 // AsInstance converts a Dataplane to a ResourceInstance 85 func (res *Dataplane) AsInstance() (*apiv1.ResourceInstance, error) { 86 meta := res.ResourceMeta 87 meta.GroupVersionKind = DataplaneGVK() 88 res.ResourceMeta = meta 89 90 m, err := json.Marshal(res) 91 if err != nil { 92 return nil, err 93 } 94 95 instance := apiv1.ResourceInstance{} 96 err = json.Unmarshal(m, &instance) 97 if err != nil { 98 return nil, err 99 } 100 101 return &instance, nil 102 } 103 104 // FromInstance converts a ResourceInstance to a Dataplane 105 func (res *Dataplane) FromInstance(ri *apiv1.ResourceInstance) error { 106 if ri == nil { 107 res = nil 108 return nil 109 } 110 var err error 111 rawResource := ri.GetRawResource() 112 if rawResource == nil { 113 rawResource, err = json.Marshal(ri) 114 if err != nil { 115 return err 116 } 117 } 118 err = json.Unmarshal(rawResource, res) 119 return err 120 } 121 122 // MarshalJSON custom marshaller to handle sub resources 123 func (res *Dataplane) MarshalJSON() ([]byte, error) { 124 m, err := json.Marshal(&res.ResourceMeta) 125 if err != nil { 126 return nil, err 127 } 128 129 var out map[string]interface{} 130 err = json.Unmarshal(m, &out) 131 if err != nil { 132 return nil, err 133 } 134 135 out["owner"] = res.Owner 136 out["secretschema"] = res.Secretschema 137 out["security"] = res.Security 138 out["spec"] = res.Spec 139 140 return json.Marshal(out) 141 } 142 143 // UnmarshalJSON custom unmarshaller to handle sub resources 144 func (res *Dataplane) UnmarshalJSON(data []byte) error { 145 var err error 146 147 aux := &apiv1.ResourceInstance{} 148 err = json.Unmarshal(data, aux) 149 if err != nil { 150 return err 151 } 152 153 res.ResourceMeta = aux.ResourceMeta 154 res.Owner = aux.Owner 155 156 // ResourceInstance holds the spec as a map[string]interface{}. 157 // Convert it to bytes, then convert to the spec type for the resource. 158 sr, err := json.Marshal(aux.Spec) 159 if err != nil { 160 return err 161 } 162 163 err = json.Unmarshal(sr, &res.Spec) 164 if err != nil { 165 return err 166 } 167 168 // marshalling subresource Secretschema 169 if v, ok := aux.SubResources["secretschema"]; ok { 170 sr, err = json.Marshal(v) 171 if err != nil { 172 return err 173 } 174 175 delete(aux.SubResources, "secretschema") 176 err = json.Unmarshal(sr, &res.Secretschema) 177 if err != nil { 178 return err 179 } 180 } 181 182 // marshalling subresource Security 183 if v, ok := aux.SubResources["security"]; ok { 184 sr, err = json.Marshal(v) 185 if err != nil { 186 return err 187 } 188 189 delete(aux.SubResources, "security") 190 err = json.Unmarshal(sr, &res.Security) 191 if err != nil { 192 return err 193 } 194 } 195 196 return nil 197 } 198 199 // PluralName returns the plural name of the resource 200 func (res *Dataplane) PluralName() string { 201 return DataplaneResourceName 202 }