github.com/Axway/agent-sdk@v1.1.101/pkg/apic/apiserver/models/catalog/v1alpha1/AssetRequestDefinition.go (about) 1 /* 2 * This file is automatically generated 3 */ 4 5 package catalog 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 AssetRequestDefinitionCtx log.ContextField = "assetRequestDefinition" 17 18 _AssetRequestDefinitionGVK = apiv1.GroupVersionKind{ 19 GroupKind: apiv1.GroupKind{ 20 Group: "catalog", 21 Kind: "AssetRequestDefinition", 22 }, 23 APIVersion: "v1alpha1", 24 } 25 26 AssetRequestDefinitionScopes = []string{"AuthorizationProfile"} 27 ) 28 29 const ( 30 AssetRequestDefinitionResourceName = "assetrequestdefinitions" 31 AssetRequestDefinitionAuthorizationSubResourceName = "authorization" 32 AssetRequestDefinitionReferencesSubResourceName = "references" 33 AssetRequestDefinitionWebhooksSubResourceName = "webhooks" 34 ) 35 36 func AssetRequestDefinitionGVK() apiv1.GroupVersionKind { 37 return _AssetRequestDefinitionGVK 38 } 39 40 func init() { 41 apiv1.RegisterGVK(_AssetRequestDefinitionGVK, AssetRequestDefinitionScopes[0], AssetRequestDefinitionResourceName) 42 log.RegisterContextField(AssetRequestDefinitionCtx) 43 } 44 45 // AssetRequestDefinition Resource 46 type AssetRequestDefinition struct { 47 apiv1.ResourceMeta 48 Authorization AssetRequestDefinitionAuthorization `json:"authorization"` 49 Owner *apiv1.Owner `json:"owner"` 50 References interface{} `json:"references"` 51 Spec AssetRequestDefinitionSpec `json:"spec"` 52 Webhooks interface{} `json:"webhooks"` 53 } 54 55 // NewAssetRequestDefinition creates an empty *AssetRequestDefinition 56 func NewAssetRequestDefinition(name, scopeName string) *AssetRequestDefinition { 57 return &AssetRequestDefinition{ 58 ResourceMeta: apiv1.ResourceMeta{ 59 Name: name, 60 GroupVersionKind: _AssetRequestDefinitionGVK, 61 Metadata: apiv1.Metadata{ 62 Scope: apiv1.MetadataScope{ 63 Name: scopeName, 64 Kind: AssetRequestDefinitionScopes[0], 65 }, 66 }, 67 }, 68 } 69 } 70 71 // AssetRequestDefinitionFromInstanceArray converts a []*ResourceInstance to a []*AssetRequestDefinition 72 func AssetRequestDefinitionFromInstanceArray(fromArray []*apiv1.ResourceInstance) ([]*AssetRequestDefinition, error) { 73 newArray := make([]*AssetRequestDefinition, 0) 74 for _, item := range fromArray { 75 res := &AssetRequestDefinition{} 76 err := res.FromInstance(item) 77 if err != nil { 78 return make([]*AssetRequestDefinition, 0), err 79 } 80 newArray = append(newArray, res) 81 } 82 83 return newArray, nil 84 } 85 86 // AsInstance converts a AssetRequestDefinition to a ResourceInstance 87 func (res *AssetRequestDefinition) AsInstance() (*apiv1.ResourceInstance, error) { 88 meta := res.ResourceMeta 89 meta.GroupVersionKind = AssetRequestDefinitionGVK() 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 AssetRequestDefinition 107 func (res *AssetRequestDefinition) 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 *AssetRequestDefinition) 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["authorization"] = res.Authorization 138 out["owner"] = res.Owner 139 out["references"] = res.References 140 out["spec"] = res.Spec 141 out["webhooks"] = res.Webhooks 142 143 return json.Marshal(out) 144 } 145 146 // UnmarshalJSON custom unmarshaller to handle sub resources 147 func (res *AssetRequestDefinition) 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 Authorization 172 if v, ok := aux.SubResources["authorization"]; ok { 173 sr, err = json.Marshal(v) 174 if err != nil { 175 return err 176 } 177 178 delete(aux.SubResources, "authorization") 179 err = json.Unmarshal(sr, &res.Authorization) 180 if err != nil { 181 return err 182 } 183 } 184 185 // marshalling subresource References 186 if v, ok := aux.SubResources["references"]; ok { 187 sr, err = json.Marshal(v) 188 if err != nil { 189 return err 190 } 191 192 delete(aux.SubResources, "references") 193 err = json.Unmarshal(sr, &res.References) 194 if err != nil { 195 return err 196 } 197 } 198 199 // marshalling subresource Webhooks 200 if v, ok := aux.SubResources["webhooks"]; ok { 201 sr, err = json.Marshal(v) 202 if err != nil { 203 return err 204 } 205 206 delete(aux.SubResources, "webhooks") 207 err = json.Unmarshal(sr, &res.Webhooks) 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 *AssetRequestDefinition) PluralName() string { 218 return AssetRequestDefinitionResourceName 219 }