mirror of
https://github.com/edgelesssys/constellation.git
synced 2025-01-01 10:56:25 -05:00
60fc73e0e7
* terraform: move module to legacy-directory * constellation-lib: refactor service account marshalling * terraform-provider: normalize Azure image URIs * constellation-lib: refactor Kubeconfig endpoint rewriting * terraform-provider: add conversion functions for AWS and GCP * terraform-provider: implement `constellation_cluster` resource * terraform-provider: refactor conversion * terraform-provider: implement image and k8s upgrades * terraform-provider: fix linter checks * terraform-provider: refactor to bundle init & upgrade method * constellation-lib: rewrite Kubeconfig endpoint in init * terraform-provider: bind logger and dialer constructors to struct * terraform-provider: move applier to function pointer * terraform-provider: gcp conversion fixes Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com> * terraform-provider: fix Azure UAMI input * terraform-provider: rename Kubeconfig variable * terraform-provider: tidy * terraform-provider: regenerate docs * constellation-lib: provide Kubeconfig in testing initserver --------- Signed-off-by: Moritz Sanft <58110325+msanft@users.noreply.github.com>
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
/*
|
|
Copyright (c) Edgeless Systems GmbH
|
|
|
|
SPDX-License-Identifier: AGPL-3.0-only
|
|
*/
|
|
|
|
package constellation
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/edgelesssys/constellation/v2/internal/cloud/azureshared"
|
|
"github.com/edgelesssys/constellation/v2/internal/cloud/cloudprovider"
|
|
"github.com/edgelesssys/constellation/v2/internal/cloud/gcpshared"
|
|
"github.com/edgelesssys/constellation/v2/internal/cloud/openstack"
|
|
)
|
|
|
|
// MarshalServiceAccountURI returns the service account URI for the given cloud provider.
|
|
func MarshalServiceAccountURI(provider cloudprovider.Provider, payload ServiceAccountPayload) (string, error) {
|
|
switch provider {
|
|
case cloudprovider.GCP:
|
|
return payload.GCP.ToCloudServiceAccountURI(), nil
|
|
|
|
case cloudprovider.AWS:
|
|
return "", nil // AWS does not need a service account URI
|
|
|
|
case cloudprovider.Azure:
|
|
return payload.Azure.ToCloudServiceAccountURI(), nil
|
|
|
|
case cloudprovider.OpenStack:
|
|
return payload.OpenStack.ToCloudServiceAccountURI(), nil
|
|
|
|
case cloudprovider.QEMU:
|
|
return "", nil // QEMU does not use service account keys
|
|
|
|
default:
|
|
return "", fmt.Errorf("unsupported cloud provider %q", provider)
|
|
}
|
|
}
|
|
|
|
// ServiceAccountPayload is data a service account URI can be built
|
|
// from for a given cloud provider.
|
|
type ServiceAccountPayload struct {
|
|
GCP gcpshared.ServiceAccountKey
|
|
Azure azureshared.ApplicationCredentials
|
|
OpenStack openstack.AccountKey
|
|
}
|