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 }