/*
Copyright (c) Edgeless Systems GmbH
SPDX-License-Identifier: AGPL-3.0-only
*/

package iamid

import (
	"github.com/edgelesssys/constellation/v2/internal/cloud/cloudprovider"
)

// File contains output information of an IAM configuration.
type File struct {
	// CloudProvider is the cloud provider of the cluster.
	CloudProvider cloudprovider.Provider `json:"cloudprovider,omitempty"`

	GCPOutput GCPFile `json:"gcpOutput,omitempty"`

	AzureOutput AzureFile `json:"azureOutput,omitempty"`

	AWSOutput AWSFile `json:"awsOutput,omitempty"`
}

// GCPFile contains the output information of a GCP IAM configuration.
type GCPFile struct {
	ServiceAccountKey string `json:"serviceAccountID,omitempty"`
}

// AzureFile contains the output information of a Microsoft Azure IAM configuration.
type AzureFile struct {
	SubscriptionID               string `json:"subscriptionID,omitempty"`
	TenantID                     string `json:"tenantID,omitempty"`
	ApplicationID                string `json:"applicationID,omitempty"`
	UAMIID                       string `json:"uamiID,omitempty"`
	ApplicationClientSecretValue string `json:"applicationClientSecretValue,omitempty"`
}

// AWSFile contains the output information of an AWS IAM configuration.
type AWSFile struct {
	ControlPlaneInstanceProfile string `json:"controlPlaneInstanceProfile,omitempty"`
	WorkerNodeInstanceProfile   string `json:"workerNodeInstanceProfile,omitempty"`
}
