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  }