diff --git a/charts/compute/crds/compute.unikorn-cloud.org_computeclusters.yaml b/charts/compute/crds/compute.unikorn-cloud.org_computeclusters.yaml index 1e6a3f9..cc3c8ca 100644 --- a/charts/compute/crds/compute.unikorn-cloud.org_computeclusters.yaml +++ b/charts/compute/crds/compute.unikorn-cloud.org_computeclusters.yaml @@ -251,6 +251,9 @@ spec: namespace: description: Namespace defines the namespace a cluster resides in. type: string + sshPrivateKey: + description: SSHPrivateKey is the key used to access the cluster. + type: string workloadpools: description: WorkloadPools is the status of all pools. items: diff --git a/go.mod b/go.mod index 230096a..ec31ce7 100644 --- a/go.mod +++ b/go.mod @@ -10,7 +10,7 @@ require ( github.com/spjmurray/go-util v0.1.3 github.com/unikorn-cloud/core v0.1.85 github.com/unikorn-cloud/identity v0.2.45 - github.com/unikorn-cloud/region v0.1.47-rc4 + github.com/unikorn-cloud/region v0.1.47-rc5 go.opentelemetry.io/otel/sdk v1.31.0 k8s.io/api v0.31.1 k8s.io/apimachinery v0.31.1 diff --git a/go.sum b/go.sum index a59abe7..46745e4 100644 --- a/go.sum +++ b/go.sum @@ -139,8 +139,10 @@ github.com/unikorn-cloud/core v0.1.85 h1:S4B0nr0jhxF8SCsKyCRVwcx8+kJsI8fQVONLJDf github.com/unikorn-cloud/core v0.1.85/go.mod h1:wEKzCwAnIyTbo27l++Wl+gK95TAxMsFS3y3jbFB03aw= github.com/unikorn-cloud/identity v0.2.45 h1:YFmw3uunwdZMuYiimv4lfU6s7iTtYoc22xJqLTrlOVg= github.com/unikorn-cloud/identity v0.2.45/go.mod h1:WzNNv05ReDMLfWsOtq53uzhX2GU2nXDw76Bdsf3BPnM= -github.com/unikorn-cloud/region v0.1.47-rc4 h1:rS5vyND9vqMCib5Vd+IktHB4+erRp/+oWzHO20quqsI= -github.com/unikorn-cloud/region v0.1.47-rc4/go.mod h1:cofPuJjseRKE95xAqNa23nSL7/+LDXOBxNIHwwODpys= +github.com/unikorn-cloud/region v0.1.47-rc4.0.20241211093153-bbb745ffcf71 h1:SRRXWXZwrjPq8UEPP5m4R4LDWyLnsb+mkwU1zj4hriA= +github.com/unikorn-cloud/region v0.1.47-rc4.0.20241211093153-bbb745ffcf71/go.mod h1:cofPuJjseRKE95xAqNa23nSL7/+LDXOBxNIHwwODpys= +github.com/unikorn-cloud/region v0.1.47-rc5 h1:rdQYyGGSC3xGtkR2PMW43IPAhbN79Th9241+mhXfGG0= +github.com/unikorn-cloud/region v0.1.47-rc5/go.mod h1:cofPuJjseRKE95xAqNa23nSL7/+LDXOBxNIHwwODpys= github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM= github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= diff --git a/pkg/apis/unikorn/v1alpha1/types.go b/pkg/apis/unikorn/v1alpha1/types.go index a15ac58..2935e82 100644 --- a/pkg/apis/unikorn/v1alpha1/types.go +++ b/pkg/apis/unikorn/v1alpha1/types.go @@ -125,6 +125,8 @@ type ComputeClusterWorkloadPoolsSpec struct { type ComputeClusterStatus struct { // Namespace defines the namespace a cluster resides in. Namespace string `json:"namespace,omitempty"` + // SSHPrivateKey is the key used to access the cluster. + SSHPrivateKey *string `json:"sshPrivateKey,omitempty"` // WorkloadPools is the status of all pools. WorkloadPools []WorkloadPoolStatus `json:"workloadpools,omitempty"` // Current service state of a Compute cluster. diff --git a/pkg/apis/unikorn/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/unikorn/v1alpha1/zz_generated.deepcopy.go index 2ea811d..dba8818 100644 --- a/pkg/apis/unikorn/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/unikorn/v1alpha1/zz_generated.deepcopy.go @@ -121,6 +121,11 @@ func (in *ComputeClusterSpec) DeepCopy() *ComputeClusterSpec { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ComputeClusterStatus) DeepCopyInto(out *ComputeClusterStatus) { *out = *in + if in.SSHPrivateKey != nil { + in, out := &in.SSHPrivateKey, &out.SSHPrivateKey + *out = new(string) + **out = **in + } if in.WorkloadPools != nil { in, out := &in.WorkloadPools, &out.WorkloadPools *out = make([]WorkloadPoolStatus, len(*in)) diff --git a/pkg/openapi/schema.go b/pkg/openapi/schema.go index 1a04f31..bd3fe81 100644 --- a/pkg/openapi/schema.go +++ b/pkg/openapi/schema.go @@ -20,97 +20,97 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "AA==", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/openapi/server.spec.yaml b/pkg/openapi/server.spec.yaml index fb6005f..f07aefc 100644 --- a/pkg/openapi/server.spec.yaml +++ b/pkg/openapi/server.spec.yaml @@ -325,6 +325,9 @@ components: description: Compute cluster status. type: object properties: + sshPrivateKey: + description: SSH private key that allows access to the cluster. + type: string workloadPools: $ref: '#/components/schemas/computeClusterWorkloadPoolsStatus' computeClusterWorkloadPoolsStatus: diff --git a/pkg/openapi/types.go b/pkg/openapi/types.go index c107cbc..ffa88fb 100644 --- a/pkg/openapi/types.go +++ b/pkg/openapi/types.go @@ -64,6 +64,9 @@ type ComputeClusterSpec struct { // ComputeClusterStatus Compute cluster status. type ComputeClusterStatus struct { + // SshPrivateKey SSH private key that allows access to the cluster. + SshPrivateKey *string `json:"sshPrivateKey,omitempty"` + // WorkloadPools A list of Compute cluster workload pools status. WorkloadPools *ComputeClusterWorkloadPoolsStatus `json:"workloadPools,omitempty"` } diff --git a/pkg/provisioners/managers/cluster/provisioner.go b/pkg/provisioners/managers/cluster/provisioner.go index df80daf..fbe6293 100644 --- a/pkg/provisioners/managers/cluster/provisioner.go +++ b/pkg/provisioners/managers/cluster/provisioner.go @@ -224,6 +224,7 @@ func (p *Provisioner) identityOptions(ctx context.Context, client regionapi.Clie options := &computeprovisioners.ClusterOpenstackOptions{ CloudConfig: *identity.Spec.Openstack.CloudConfig, Cloud: *identity.Spec.Openstack.Cloud, + SSHPrivateKey: identity.Spec.Openstack.SshPrivateKey, ServerGroupID: identity.Spec.Openstack.ServerGroupId, ProviderNetwork: &computeprovisioners.ClusterOpenstackProviderOptions{ NetworkID: &network.Metadata.Id, @@ -260,7 +261,9 @@ func (p *Provisioner) Provision(ctx context.Context) error { } // Reset the status it'll get updated as we go along... - p.cluster.Status = unikornv1.ComputeClusterStatus{} + p.cluster.Status = unikornv1.ComputeClusterStatus{ + SSHPrivateKey: options.SSHPrivateKey, + } for _, pool := range p.cluster.Spec.WorkloadPools.Pools { // reconcile security groups diff --git a/pkg/provisioners/managers/cluster/server.go b/pkg/provisioners/managers/cluster/server.go index d6dda70..e50a47f 100644 --- a/pkg/provisioners/managers/cluster/server.go +++ b/pkg/provisioners/managers/cluster/server.go @@ -145,7 +145,7 @@ func (p *Provisioner) createServer(ctx context.Context, client regionapi.ClientW Spec: regionapi.ServerWriteSpec{ FlavorId: *pool.FlavorID, Image: regionapi.ServerImage{ - Id: pool.ImageID, + Id: *pool.ImageID, }, Networks: regionapi.ServerNetworkList{ regionapi.ServerNetwork{ diff --git a/pkg/provisioners/types.go b/pkg/provisioners/types.go index 8151fdb..26d346d 100644 --- a/pkg/provisioners/types.go +++ b/pkg/provisioners/types.go @@ -36,6 +36,8 @@ type ClusterOpenstackOptions struct { ProviderNetwork *ClusterOpenstackProviderOptions // ServerGroupID is the server group used for HA control planes. ServerGroupID *string + // SSHPrivateKey that has been provisioned for the cluster. + SSHPrivateKey *string } type ClusterOpenstackProviderOptions struct { diff --git a/pkg/server/handler/cluster/conversion.go b/pkg/server/handler/cluster/conversion.go index dc93f7d..dd6485d 100644 --- a/pkg/server/handler/cluster/conversion.go +++ b/pkg/server/handler/cluster/conversion.go @@ -296,6 +296,7 @@ func convertClusterStatus(in *unikornv1.ComputeClusterStatus) *openapi.ComputeCl } out := &openapi.ComputeClusterStatus{ + SshPrivateKey: in.SSHPrivateKey, WorkloadPools: convertWorkloadPoolsStatus(in.WorkloadPools), }