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