package projectinit import ( "fmt" compute "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/compute/v1beta1" "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/k8s/v1alpha1" resourcemgr "github.com/GoogleCloudPlatform/k8s-config-connector/pkg/clients/generated/apis/resourcemanager/v1beta1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "edge-infra.dev/pkg/k8s/konfigkonnector/apis/meta" "edge-infra.dev/pkg/lib/gcp/resource" ) func NetworkRef(projectID string) v1alpha1.ResourceRef { return v1alpha1.ResourceRef{ External: resource.Ref(projectID, resource.Global, "networks", "default"), } } func objMeta(name, namespace string, project resourcemgr.Project) metav1.ObjectMeta { return metav1.ObjectMeta{ Name: NameWithProjectPrefix(name, project.Name), Namespace: namespace, Annotations: map[string]string{meta.ProjectAnnotation: *project.Spec.ResourceID}, OwnerReferences: []metav1.OwnerReference{ *metav1.NewControllerRef(&project, resourcemgr.ProjectGVK), }, } } func computeFirewall(meta metav1.ObjectMeta, spec compute.ComputeFirewallSpec) *compute.ComputeFirewall { return &compute.ComputeFirewall{ TypeMeta: metav1.TypeMeta{ APIVersion: compute.SchemeGroupVersion.String(), Kind: compute.ComputeFirewallGVK.Kind, }, ObjectMeta: meta, Spec: spec, } } func computeSSLPolicy(meta metav1.ObjectMeta, spec compute.ComputeSSLPolicySpec) *compute.ComputeSSLPolicy { return &compute.ComputeSSLPolicy{ TypeMeta: metav1.TypeMeta{ APIVersion: compute.SchemeGroupVersion.String(), Kind: compute.ComputeSSLPolicyGVK.Kind, }, ObjectMeta: meta, Spec: spec, } } // NameWithProjectPrefix ensure names are project specific to avoid conflicts when // multiple gcpprojects are in the same folder namespace. parameter project can arbirarily be a // project name or project id, it simply provides a uniform way to form a valid resource // name. trims to 63 to fit in a k8s resource name. can not guarantee uniqueness if // len(name) + len(project) > 63 func NameWithProjectPrefix(name, project string) string { newName := fmt.Sprintf("%s-%s", project, name) if len(newName) <= 63 { return newName } return newName[:63] }