github.com/verrazzano/verrazzano@v1.7.1/cluster-operator/controllers/quickcreate/oke/properties.go (about)

     1  // Copyright (c) 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package oke
     5  
     6  import (
     7  	"context"
     8  	vmcv1alpha1 "github.com/verrazzano/verrazzano/cluster-operator/apis/clusters/v1alpha1"
     9  	"github.com/verrazzano/verrazzano/cluster-operator/controllers/quickcreate/controller/oci"
    10  	ocicommon "github.com/verrazzano/verrazzano/cluster-operator/controllers/quickcreate/controller/oci/common"
    11  	ocinetwork "github.com/verrazzano/verrazzano/cluster-operator/controllers/quickcreate/controller/oci/network"
    12  	clipkg "sigs.k8s.io/controller-runtime/pkg/client"
    13  )
    14  
    15  type (
    16  	Properties struct {
    17  		ocicommon.Values
    18  		vmcv1alpha1.OKEQuickCreateSpec
    19  		WorkerNodeSubnetName string
    20  		AvailabilityDomains  []oci.AvailabilityDomain
    21  	}
    22  )
    23  
    24  func NewProperties(ctx context.Context, cli clipkg.Client, loader oci.CredentialsLoader, ociClientGetter func(creds *oci.Credentials) (oci.Client, error), q *vmcv1alpha1.OKEQuickCreate) (*Properties, error) {
    25  	creds, err := loader.GetCredentialsIfAllowed(ctx, cli, q.Spec.IdentityRef.AsNamespacedName(), q.Namespace)
    26  	if err != nil {
    27  		return nil, err
    28  	}
    29  	props := &Properties{
    30  		Values: ocicommon.Values{
    31  			Name:            q.Name,
    32  			Namespace:       q.Namespace,
    33  			Credentials:     creds,
    34  			Network:         q.Spec.Network.Config,
    35  			OCIClientGetter: ociClientGetter,
    36  		},
    37  		OKEQuickCreateSpec: q.Spec,
    38  	}
    39  	ociClient, err := props.OCIClientGetter(creds)
    40  	if err != nil {
    41  		return nil, err
    42  	}
    43  	ads, err := ociClient.GetAvailabilityAndFaultDomains(ctx)
    44  	if err != nil {
    45  		return nil, err
    46  	}
    47  	props.AvailabilityDomains = ads
    48  
    49  	if err := props.SetCommonValues(ctx, cli, q, ocinetwork.GVKOCIManagedCluster); err != nil {
    50  		return nil, err
    51  	}
    52  	props.WorkerNodeSubnetName = props.GetSubnetNameForRole(vmcv1alpha1.SubnetRoleWorker)
    53  	return props, nil
    54  }