From d25a7a97703dc75f158d1f6dd60ff0c6f174e490 Mon Sep 17 00:00:00 2001 From: Simon Murray Date: Mon, 1 Jul 2024 14:41:34 +0100 Subject: [PATCH] Use New Region API Switches to a more metadata/spec type affair. --- charts/kubernetes/Chart.yaml | 4 ++-- go.mod | 4 ++-- go.sum | 10 ++++------ pkg/constants/constants.go | 7 ------- pkg/server/handler/cluster/client.go | 16 +++++++++++++++- pkg/server/handler/cluster/conversion.go | 5 +---- pkg/server/handler/clustermanager/client.go | 5 +---- 7 files changed, 25 insertions(+), 26 deletions(-) diff --git a/charts/kubernetes/Chart.yaml b/charts/kubernetes/Chart.yaml index 9a94efec..e9d82138 100644 --- a/charts/kubernetes/Chart.yaml +++ b/charts/kubernetes/Chart.yaml @@ -4,8 +4,8 @@ description: A Helm chart for deploying Unikorn Kubernetes Service type: application -version: v0.2.24 -appVersion: v0.2.24 +version: v0.2.25 +appVersion: v0.2.25 icon: https://raw.githubusercontent.com/unikorn-cloud/assets/main/images/logos/dark-on-light/icon.png diff --git a/go.mod b/go.mod index f15f592a..1a66bff5 100644 --- a/go.mod +++ b/go.mod @@ -12,10 +12,10 @@ require ( github.com/prometheus/client_golang v1.19.0 github.com/spdx/tools-golang v0.5.3 github.com/spf13/pflag v1.0.5 - github.com/unikorn-cloud/core v0.1.54 + github.com/unikorn-cloud/core v0.1.55 github.com/unikorn-cloud/identity v0.2.11 github.com/unikorn-cloud/rbac v0.1.1 - github.com/unikorn-cloud/region v0.1.9 + github.com/unikorn-cloud/region v0.1.18 go.opentelemetry.io/otel v1.27.0 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.27.0 go.opentelemetry.io/otel/sdk v1.27.0 diff --git a/go.sum b/go.sum index ca43f9b4..5e6c78f3 100644 --- a/go.sum +++ b/go.sum @@ -175,16 +175,14 @@ github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsT github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= -github.com/unikorn-cloud/core v0.1.53 h1:TqhG0WRG0/eE+jR1N+tIlbvX2gqmrYB5VkPUMS5STN0= -github.com/unikorn-cloud/core v0.1.53/go.mod h1:cP39UQN7aSmsfjQuSMsworI4oBIwx4oA4u20CbPpfZw= -github.com/unikorn-cloud/core v0.1.54 h1:e9LYpESifNsQUibem6zqyZP0SIn0zSFaSUwghYx3PeY= -github.com/unikorn-cloud/core v0.1.54/go.mod h1:cP39UQN7aSmsfjQuSMsworI4oBIwx4oA4u20CbPpfZw= +github.com/unikorn-cloud/core v0.1.55 h1:Oy5r3UBTNWb0qFDcmehLrgBwMx9xCo9x2nOEzNZoYUU= +github.com/unikorn-cloud/core v0.1.55/go.mod h1:cP39UQN7aSmsfjQuSMsworI4oBIwx4oA4u20CbPpfZw= github.com/unikorn-cloud/identity v0.2.11 h1:q6mkJ3qTRjwhlvLS9Jv0I4wlJhnsbJZHu2rbNdnXBYk= github.com/unikorn-cloud/identity v0.2.11/go.mod h1:4KHNdHiIKpKERD0slunDDXhdC59M7eiN+Y1wSfHbQwQ= github.com/unikorn-cloud/rbac v0.1.1 h1:5QB3YzwG0FaH80FirdwZLm8hwsxLN0iPCY9i1VVZjXY= github.com/unikorn-cloud/rbac v0.1.1/go.mod h1:+5x6sLtPYdfvM1PmiRHM5GZ2uHWOY3uQ+jdNR9iI42Q= -github.com/unikorn-cloud/region v0.1.9 h1:yAJ4jlvrav1lwMFuiNY8E1ShXlXmSXhD1qMovjqfC3I= -github.com/unikorn-cloud/region v0.1.9/go.mod h1:73+MWmFReHe7EN9i00RmAL4GuMFc1Dq+c9c0aDxhnlU= +github.com/unikorn-cloud/region v0.1.18 h1:6UPCSeK8poPZnvIXHhi+9Hw7gQlj1m7QXXF8h0rZYnc= +github.com/unikorn-cloud/region v0.1.18/go.mod h1:vwZX38BzuHELy5uNyzHyB2ZfY+8WY4UEHC1ALWYT/AE= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/pkg/constants/constants.go b/pkg/constants/constants.go index 0592946e..a5c57656 100644 --- a/pkg/constants/constants.go +++ b/pkg/constants/constants.go @@ -43,10 +43,3 @@ var ( func VersionString() string { return fmt.Sprintf("%s/%s (revision/%s)", Application, Version, Revision) } - -const ( - // CloudIdentityAnnotation is used to remember a cluster's identity created - // by the region service. - // TODO: most likely this should be shared in core. - CloudIdentityAnnotation = "unikorn-cloud.org/identity-id" -) diff --git a/pkg/server/handler/cluster/client.go b/pkg/server/handler/cluster/client.go index 8e171bad..ef643f76 100644 --- a/pkg/server/handler/cluster/client.go +++ b/pkg/server/handler/cluster/client.go @@ -29,6 +29,7 @@ import ( coreclient "github.com/unikorn-cloud/core/pkg/client" "github.com/unikorn-cloud/core/pkg/constants" + coreapi "github.com/unikorn-cloud/core/pkg/openapi" "github.com/unikorn-cloud/core/pkg/server/errors" "github.com/unikorn-cloud/core/pkg/util" unikornv1 "github.com/unikorn-cloud/kubernetes/pkg/apis/unikorn/v1alpha1" @@ -207,8 +208,21 @@ func (c *Client) createServerGroup(ctx context.Context, provider *openstack.Open */ func (c *Client) createIdentity(ctx context.Context, organizationID, projectID, regionID, clusterID string) (*regionapi.IdentityRead, error) { + tags := regionapi.TagList{ + { + Name: constants.KubernetesClusterLabel, + Value: clusterID, + }, + } + request := regionapi.PostApiV1OrganizationsOrganizationIDProjectsProjectIDRegionsRegionIDIdentitiesJSONRequestBody{ - ClusterId: clusterID, + Metadata: coreapi.ResourceWriteMetadata{ + Name: "kubernetes-cluster-" + clusterID, + Description: util.ToPointer("Identity for Kubernetes cluster " + clusterID), + }, + Spec: regionapi.IdentityWriteSpec{ + Tags: &tags, + }, } resp, err := c.region.PostApiV1OrganizationsOrganizationIDProjectsProjectIDRegionsRegionIDIdentitiesWithResponse(ctx, organizationID, projectID, regionID, request) diff --git a/pkg/server/handler/cluster/conversion.go b/pkg/server/handler/cluster/conversion.go index ec26701c..20e070ab 100644 --- a/pkg/server/handler/cluster/conversion.go +++ b/pkg/server/handler/cluster/conversion.go @@ -24,7 +24,6 @@ import ( "slices" unikornv1core "github.com/unikorn-cloud/core/pkg/apis/unikorn/v1alpha1" - "github.com/unikorn-cloud/core/pkg/authorization/userinfo" coreopenapi "github.com/unikorn-cloud/core/pkg/openapi" "github.com/unikorn-cloud/core/pkg/server/conversion" "github.com/unikorn-cloud/core/pkg/server/errors" @@ -384,8 +383,6 @@ func installClusterAutoscaler(cluster *unikornv1.KubernetesCluster) { // TODO: there are a lot of parameters being passed about, we should make this // a struct and pass them as a single blob. func (c *Client) generate(ctx context.Context, namespace *corev1.Namespace, organizationID, projectID string, request *openapi.KubernetesClusterWrite) (*unikornv1.KubernetesCluster, error) { - userinfo := userinfo.FromContext(ctx) - kubernetesControlPlane, err := c.generateControlPlane(ctx, organizationID, projectID, &request.Spec) if err != nil { return nil, err @@ -402,7 +399,7 @@ func (c *Client) generate(ctx context.Context, namespace *corev1.Namespace, orga } cluster := &unikornv1.KubernetesCluster{ - ObjectMeta: conversion.NewObjectMetadata(&request.Metadata, namespace.Name).WithOrganization(organizationID).WithProject(projectID).WithUser(userinfo.Subject).Get(), + ObjectMeta: conversion.NewObjectMetadata(&request.Metadata, namespace.Name).WithOrganization(organizationID).WithProject(projectID).Get(ctx), Spec: unikornv1.KubernetesClusterSpec{ RegionID: request.Spec.RegionId, ClusterManagerID: *request.Spec.ClusterManagerId, diff --git a/pkg/server/handler/clustermanager/client.go b/pkg/server/handler/clustermanager/client.go index 09baffae..89a293c1 100644 --- a/pkg/server/handler/clustermanager/client.go +++ b/pkg/server/handler/clustermanager/client.go @@ -23,7 +23,6 @@ import ( "slices" unikornv1core "github.com/unikorn-cloud/core/pkg/apis/unikorn/v1alpha1" - "github.com/unikorn-cloud/core/pkg/authorization/userinfo" "github.com/unikorn-cloud/core/pkg/constants" coreopenapi "github.com/unikorn-cloud/core/pkg/openapi" "github.com/unikorn-cloud/core/pkg/server/conversion" @@ -195,15 +194,13 @@ func (c *Client) defaultApplicationBundle(ctx context.Context) (*unikornv1.Clust // generate is a common function to create a Kubernetes type from an API one. func (c *Client) generate(ctx context.Context, namespace *corev1.Namespace, organizationID, projectID string, request *openapi.ClusterManagerWrite) (*unikornv1.ClusterManager, error) { - userinfo := userinfo.FromContext(ctx) - applicationBundle, err := c.defaultApplicationBundle(ctx) if err != nil { return nil, err } out := &unikornv1.ClusterManager{ - ObjectMeta: conversion.NewObjectMetadata(&request.Metadata, namespace.Name).WithOrganization(organizationID).WithProject(projectID).WithUser(userinfo.Subject).Get(), + ObjectMeta: conversion.NewObjectMetadata(&request.Metadata, namespace.Name).WithOrganization(organizationID).WithProject(projectID).Get(ctx), Spec: unikornv1.ClusterManagerSpec{ ApplicationBundle: &applicationBundle.Name, ApplicationBundleAutoUpgrade: &unikornv1.ApplicationBundleAutoUpgradeSpec{},