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