migration

package
v2.9.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 20, 2023 License: AGPL-3.0 Imports: 9 Imported by: 0

Documentation

Overview

Package migration contains outdated configuration formats and their migration functions.

Index

Constants

View Source
const (
	// Version2 is the second version number for Constellation config file.
	Version2 = "v2"
)

Variables

This section is empty.

Functions

func V2ToV3

func V2ToV3(path string, fileHandler file.Handler) error

V2ToV3 converts an existing v2 config to a v3 config.

Types

type AWSConfig

type AWSConfig struct {
	Region                 string         `yaml:"region" validate:"required"`
	Zone                   string         `yaml:"zone" validate:"required"`
	InstanceType           string         `yaml:"instanceType" validate:"lowercase,aws_instance_type"`
	StateDiskType          string         `yaml:"stateDiskType" validate:"oneof=standard gp2 gp3 st1 sc1 io1"`
	IAMProfileControlPlane string         `yaml:"iamProfileControlPlane" validate:"required"`
	IAMProfileWorkerNodes  string         `yaml:"iamProfileWorkerNodes" validate:"required"`
	Measurements           measurements.M `yaml:"measurements" validate:"required,no_placeholders"`
}

AWSConfig are AWS specific configuration values used by the CLI.

type AzureConfig

type AzureConfig struct {
	SubscriptionID       string                 `yaml:"subscription" validate:"uuid"`
	TenantID             string                 `yaml:"tenant" validate:"uuid"`
	Location             string                 `yaml:"location" validate:"required"`
	ResourceGroup        string                 `yaml:"resourceGroup" validate:"required"`
	UserAssignedIdentity string                 `yaml:"userAssignedIdentity" validate:"required"`
	InstanceType         string                 `yaml:"instanceType" validate:"azure_instance_type"`
	StateDiskType        string                 `yaml:"stateDiskType" validate:"oneof=Premium_LRS Premium_ZRS Standard_LRS StandardSSD_LRS StandardSSD_ZRS"`
	DeployCSIDriver      *bool                  `yaml:"deployCSIDriver" validate:"required"`
	ConfidentialVM       *bool                  `yaml:"confidentialVM,omitempty" validate:"omitempty,deprecated"`
	SecureBoot           *bool                  `yaml:"secureBoot" validate:"required"`
	IDKeyDigest          idkeydigest.List       `yaml:"idKeyDigest" validate:"required_if=EnforceIdKeyDigest true,omitempty"`
	EnforceIDKeyDigest   IDKeyDigestEnforcement `yaml:"enforceIdKeyDigest" validate:"required"`
	Measurements         measurements.M         `yaml:"measurements" validate:"required,no_placeholders"`
}

AzureConfig are Azure specific configuration values used by the CLI.

type Config

type Config struct {
	Version             string         `yaml:"version" validate:"eq=v2"`
	Image               string         `yaml:"image" validate:"required,version_compatibility"`
	Name                string         `yaml:"name" validate:"valid_name,required"`
	StateDiskSizeGB     int            `yaml:"stateDiskSizeGB" validate:"min=0"`
	KubernetesVersion   string         `yaml:"kubernetesVersion" validate:"required,supported_k8s_version"`
	MicroserviceVersion string         `yaml:"microserviceVersion" validate:"required,version_compatibility"`
	DebugCluster        *bool          `yaml:"debugCluster" validate:"required"`
	AttestationVariant  string         `yaml:"attestationVariant,omitempty" validate:"valid_attestation_variant"`
	Provider            ProviderConfig `yaml:"provider" validate:"dive"`
}

Config defines configuration used by CLI.

type GCPConfig

type GCPConfig struct {
	Project               string         `yaml:"project" validate:"required"`
	Region                string         `yaml:"region" validate:"required"`
	Zone                  string         `yaml:"zone" validate:"required"`
	ServiceAccountKeyPath string         `yaml:"serviceAccountKeyPath" validate:"required"`
	InstanceType          string         `yaml:"instanceType" validate:"gcp_instance_type"`
	StateDiskType         string         `yaml:"stateDiskType" validate:"oneof=pd-standard pd-balanced pd-ssd"`
	DeployCSIDriver       *bool          `yaml:"deployCSIDriver" validate:"required"`
	Measurements          measurements.M `yaml:"measurements" validate:"required,no_placeholders"`
}

GCPConfig are GCP specific configuration values used by the CLI.

type IDKeyDigestEnforcement

type IDKeyDigestEnforcement uint32

IDKeyDigestEnforcement is the legacy format of idkeydigest.Enforcement.

const (
	// Unknown is reserved for invalid configurations.
	Unknown IDKeyDigestEnforcement = iota
	// StrictChecking will return an error if the ID key digest is not found in the expected list.
	StrictChecking
	// MAAFallback attempts to verify the attestation using Microsoft Azure Attestation (MAA),
	// if the ID key digest is not found in the expected list.
	MAAFallback
	// WarnOnly logs a warning if the ID key digest is not found in the expected list.
	// No error is returned.
	WarnOnly
)

func (*IDKeyDigestEnforcement) UnmarshalYAML

func (e *IDKeyDigestEnforcement) UnmarshalYAML(unmarshal func(any) error) error

UnmarshalYAML implements the yaml.Unmarshaler interface.

type OpenStackConfig

type OpenStackConfig struct {
	Cloud             string         `yaml:"cloud"`
	AvailabilityZone  string         `yaml:"availabilityZone" validate:"required"`
	FlavorID          string         `yaml:"flavorID" validate:"required"`
	FloatingIPPoolID  string         `yaml:"floatingIPPoolID" validate:"required"`
	AuthURL           string         `yaml:"authURL" validate:"required"`
	ProjectID         string         `yaml:"projectID" validate:"required"`
	ProjectName       string         `yaml:"projectName" validate:"required"`
	UserDomainName    string         `yaml:"userDomainName" validate:"required"`
	ProjectDomainName string         `yaml:"projectDomainName" validate:"required"`
	RegionName        string         `yaml:"regionName" validate:"required"`
	Username          string         `yaml:"username" validate:"required"`
	Password          string         `yaml:"password"`
	DirectDownload    *bool          `yaml:"directDownload" validate:"required"`
	Measurements      measurements.M `yaml:"measurements" validate:"required,no_placeholders"`
}

OpenStackConfig holds config information for OpenStack based Constellation deployments.

type ProviderConfig

type ProviderConfig struct {
	AWS       *AWSConfig       `yaml:"aws,omitempty" validate:"omitempty,dive"`
	Azure     *AzureConfig     `yaml:"azure,omitempty" validate:"omitempty,dive"`
	GCP       *GCPConfig       `yaml:"gcp,omitempty" validate:"omitempty,dive"`
	OpenStack *OpenStackConfig `yaml:"openstack,omitempty" validate:"omitempty,dive"`
	QEMU      *QEMUConfig      `yaml:"qemu,omitempty" validate:"omitempty,dive"`
}

ProviderConfig are cloud-provider specific configuration values used by the CLI. Fields should remain pointer-types so custom specific configs can nil them if not required.

type QEMUConfig

type QEMUConfig struct {
	ImageFormat           string         `yaml:"imageFormat" validate:"oneof=qcow2 raw"`
	VCPUs                 int            `yaml:"vcpus" validate:"required"`
	Memory                int            `yaml:"memory" validate:"required"`
	MetadataAPIImage      string         `yaml:"metadataAPIServer" validate:"required"`
	LibvirtURI            string         `yaml:"libvirtSocket"`
	LibvirtContainerImage string         `yaml:"libvirtContainerImage"`
	NVRAM                 string         `yaml:"nvram" validate:"required"`
	Firmware              string         `yaml:"firmware"`
	Measurements          measurements.M `yaml:"measurements" validate:"required,no_placeholders"`
}

QEMUConfig holds config information for QEMU based Constellation deployments.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL