package client

import "github.com/oslokommune/okctl/pkg/client"

Package client defines the domain model

Index

Constants

const (
	ManifestTypeExternalSecret = "external-secret"
	ManifestTypeStorageClass   = "storage-class"
	ManifestTypeConfigMap      = "config-map"
	ManifestTypeNamespace      = "namespace"
)

nolint: golint

Variables

var ErrClusterVersionNotFound = errors.New("not found")

ErrClusterVersionNotFound is returned when the cluster version is not found in state

var ErrOriginalClusterVersionNotFound = errors.New("not found")

ErrOriginalClusterVersionNotFound is returned when the original okctl version is not found in state

var ErrUpgradeNotFound = errors.New("not found")

ErrUpgradeNotFound is returned when an upgrade is not found in state

Types

type AWSLoadBalancerController

type AWSLoadBalancerController struct {
	Policy         *ManagedPolicy
	ServiceAccount *ServiceAccount
	Chart          *Helm
}

AWSLoadBalancerController contains the state of an alb ingress controller deployment

type AWSLoadBalancerControllerService

type AWSLoadBalancerControllerService interface {
	CreateAWSLoadBalancerController(ctx context.Context, opts CreateAWSLoadBalancerControllerOpts) (*AWSLoadBalancerController, error)
	DeleteAWSLoadBalancerController(ctx context.Context, id api.ID) error
}

AWSLoadBalancerControllerService defines the service layer

type AWSLoadBalancerControllerState

type AWSLoadBalancerControllerState interface {
	HasAWSLoadBalancerController() (bool, error)
}

AWSLoadBalancerControllerState defines the state layer

type AddPostgresToApplicationOpts

type AddPostgresToApplicationOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application

	DatabaseName string
}

AddPostgresToApplicationOpts defines required data to add a Postgres database to an application

type ApplicationManifestService

type ApplicationManifestService interface {
	// SaveManifest knows how to store a Kubernetes manifest and update Kustomize resources
	SaveManifest(ctx context.Context, opts SaveManifestOpts) error
	// SavePatch knows how to store a Kustomize patch
	SavePatch(ctx context.Context, opts SavePatchOpts) error
	// GetPatch knows how to retrieve a Kustomize patch
	GetPatch(ctx context.Context, opts GetPatchOpts) (jsonpatch.Patch, error)
	// SaveNamespace knows how to store a namespace
	SaveNamespace(ctx context.Context, opts SaveNamespaceOpts) error
}

ApplicationManifestService defines functionality for the ApplicationManifestService

type ApplicationPostgresService

type ApplicationPostgresService interface {
	AddPostgresToApplication(ctx context.Context, opts AddPostgresToApplicationOpts) error
	RemovePostgresFromApplication(ctx context.Context, opts RemovePostgresFromApplicationOpts) error
	HasPostgresIntegration(ctx context.Context, opts HasPostgresIntegrationOpts) (bool, error)
}

ApplicationPostgresService knows how to use the ApplicationPostgresService API

type ApplicationService

type ApplicationService interface {
	// ScaffoldApplication implements functionality for converting an Application.yaml to deployment resources
	ScaffoldApplication(context.Context, *ScaffoldApplicationOpts) error
	// DeleteApplicationManifests implements functionality for deleting application manifests
	DeleteApplicationManifests(context.Context, DeleteApplicationManifestsOpts) error
	// CreateArgoCDApplicationManifest implements functionality for integrating an app with ArgoCD
	CreateArgoCDApplicationManifest(opts CreateArgoCDApplicationManifestOpts) error
	// DeleteArgoCDApplicationManifest implements functionality for removing an ArgoCD integration for an app
	DeleteArgoCDApplicationManifest(opts DeleteArgoCDApplicationManifestOpts) error
	// HasArgoCDIntegration implements functionality for verifying if there is an existing ArgoCD integration for the app
	HasArgoCDIntegration(context.Context, HasArgoCDIntegrationOpts) (bool, error)
}

ApplicationService applies the scaffolding API and produces the requested resources

type Applier

type Applier interface {
	// Apply knows how to apply a manifest to a Kubernetes cluster
	Apply(io.Reader) error
}

Applier defines necessary functionality for applying manifests to a Kubernetes cluster

type ArgoCD

type ArgoCD struct {
	ID             api.ID
	ArgoDomain     string
	ArgoURL        string
	AuthDomain     string
	Certificate    *Certificate
	IdentityClient *IdentityPoolClient
	PrivateKey     *KubernetesManifest
	Secret         *KubernetesManifest
	ClientSecret   *SecretParameter
	SecretKey      *SecretParameter
	Chart          *Helm
}

ArgoCD contains state about an argo cd deployment

type ArgoCDService

type ArgoCDService interface {
	// CreateArgoCD defines functionality for installing ArgoCD into a cluster
	CreateArgoCD(context.Context, CreateArgoCDOpts) (*ArgoCD, error)
	// DeleteArgoCD defines functionality for uninstalling ArgoCD from a cluster
	DeleteArgoCD(context.Context, DeleteArgoCDOpts) error
	// SetupApplicationsSync defines functionality for preparing a directory where ArgoCD application manifests will be
	// automatically synced
	SetupApplicationsSync(context.Context, Applier, v1alpha1.Cluster) error
	// SetupNamespacesSync defines functionality for preparing a directory where namespace manifests will be
	// automatically synced
	SetupNamespacesSync(context.Context, Applier, v1alpha1.Cluster) error
}

ArgoCDService is a business logic implementation

type ArgoCDState

type ArgoCDState interface {
	SaveArgoCD(cd *ArgoCD) error
	GetArgoCD() (*ArgoCD, error)
	HasArgoCD() (bool, error)
	RemoveArgoCD() error
}

ArgoCDState implements the state layer

type Autoscaler

type Autoscaler struct {
	Policy         *ManagedPolicy
	ServiceAccount *ServiceAccount
	Chart          *Helm
}

Autoscaler is the content of an autoscaler deployment

type AutoscalerService

type AutoscalerService interface {
	CreateAutoscaler(ctx context.Context, opts CreateAutoscalerOpts) (*Autoscaler, error)
	DeleteAutoscaler(ctx context.Context, id api.ID) error
}

AutoscalerService is an implementation of the business logic

type AutoscalerState

type AutoscalerState interface {
	HasAutoscaler() (bool, error)
}

AutoscalerState knows how to store and retrieve information about the Autoscaler

type Blockstorage

type Blockstorage struct {
	Policy         *ManagedPolicy
	ServiceAccount *ServiceAccount
	Chart          *Helm
}

Blockstorage is the content of a blockstorage deployment

type BlockstorageService

type BlockstorageService interface {
	CreateBlockstorage(ctx context.Context, opts CreateBlockstorageOpts) (*Blockstorage, error)
	DeleteBlockstorage(ctx context.Context, id api.ID) error
}

BlockstorageService is an implementation of the business logic

type BlockstorageState

type BlockstorageState interface {
	HasBlockstorage() (bool, error)
}

BlockstorageState defines the state layer

type Certificate

type Certificate struct {
	ID                     api.ID
	FQDN                   string
	Domain                 string
	HostedZoneID           string
	ARN                    string
	StackName              string
	CloudFormationTemplate []byte
}

Certificate represents an AWS ACM certificate after it has been created

type CertificateAPI

type CertificateAPI interface {
	CreateCertificate(opts api.CreateCertificateOpts) (*api.Certificate, error)
	DeleteCertificate(opts api.DeleteCertificateOpts) error
	DeleteCognitoCertificate(opts api.DeleteCognitoCertificateOpts) error
}

CertificateAPI defines the api interactions

type CertificateService

type CertificateService interface {
	CreateCertificate(ctx context.Context, opts CreateCertificateOpts) (*Certificate, error)
	DeleteCertificate(ctx context.Context, opts DeleteCertificateOpts) error
	DeleteCognitoCertificate(ctx context.Context, opts DeleteCognitoCertificateOpts) error
}

CertificateService orchestrates the creation of a certificate

type CertificateState

type CertificateState interface {
	SaveCertificate(certificate *Certificate) error
	GetCertificate(domain string) (*Certificate, error)
	HasCertificate(domain string) (bool, error)
	RemoveCertificate(domain string) error
}

CertificateState defines the state layer

type Cluster

type Cluster struct {
	ID     api.ID
	Name   string
	Config *v1alpha5.ClusterConfig
}

Cluster contains the core state for a cluster

type ClusterAPI

type ClusterAPI interface {
	CreateCluster(opts api.ClusterCreateOpts) (*api.Cluster, error)
	DeleteCluster(opts api.ClusterDeleteOpts) error
	GetClusterSecurityGroupID(opts api.ClusterSecurityGroupIDGetOpts) (*api.ClusterSecurityGroupID, error)
}

ClusterAPI invokes the API calls for creating a cluster

type ClusterCreateOpts

type ClusterCreateOpts struct {
	ID                api.ID
	Cidr              string
	Version           string
	VpcID             string
	VpcPrivateSubnets []VpcSubnet
	VpcPublicSubnets  []VpcSubnet
}

ClusterCreateOpts specifies the required inputs for creating a cluster

type ClusterDeleteOpts

type ClusterDeleteOpts struct {
	ID                 api.ID
	FargateProfileName string
}

ClusterDeleteOpts specifies the required inputs for deleting a cluster

type ClusterService

type ClusterService interface {
	CreateCluster(context.Context, ClusterCreateOpts) (*Cluster, error)
	DeleteCluster(context.Context, ClusterDeleteOpts) error
	GetClusterSecurityGroupID(ctx context.Context, opts GetClusterSecurityGroupIDOpts) (*api.ClusterSecurityGroupID, error)
}

ClusterService manages a cluster

type ClusterState

type ClusterState interface {
	SaveCluster(cluster *Cluster) error
	GetCluster(name string) (*Cluster, error)
	RemoveCluster(name string) error
	HasCluster(name string) (bool, error)
}

ClusterState implements the state layer

type ClusterVersion

type ClusterVersion struct {
	ID    api.ID
	Value string
}

ClusterVersion contains state about the cluster version

type ComponentAPI

type ComponentAPI interface {
	CreatePostgresDatabase(opts api.CreatePostgresDatabaseOpts) (*api.PostgresDatabase, error)
	DeletePostgresDatabase(opts api.DeletePostgresDatabaseOpts) error
	CreateS3Bucket(opts api.CreateS3BucketOpts) (*api.S3Bucket, error)
	DeleteS3Bucket(opts api.DeleteS3BucketOpts) error
}

ComponentAPI invokes the API

type ComponentService

type ComponentService interface {
	CreatePostgresDatabase(ctx context.Context, opts CreatePostgresDatabaseOpts) (*PostgresDatabase, error)
	DeletePostgresDatabase(ctx context.Context, opts DeletePostgresDatabaseOpts) error
	GetPostgresDatabase(ctx context.Context, opts GetPostgresDatabaseOpts) (*PostgresDatabase, error)
}

ComponentService orchestrates the creation of various services

type ComponentState

type ComponentState interface {
	SavePostgresDatabase(database *PostgresDatabase) error
	RemovePostgresDatabase(stackName string) error
	GetPostgresDatabase(stackName string) (*PostgresDatabase, error)
	GetPostgresDatabases() ([]*PostgresDatabase, error)
}

ComponentState updates the state

type ContainerRepository

type ContainerRepository struct {
	ClusterID              api.ID
	ImageName              string
	StackName              string
	CloudFormationTemplate string
	ApplicationName        string
}

ContainerRepository contains state after creating a container repository

func (ContainerRepository) URI

func (c ContainerRepository) URI() string

URI returns the URI where the image can be pulled and pushed

type ContainerRepositoryAPI

type ContainerRepositoryAPI interface {
	CreateContainerRepository(opts api.CreateContainerRepositoryOpts) (*api.ContainerRepository, error)
	DeleteContainerRepository(opts api.DeleteContainerRepositoryOpts) error
	EmptyContainerRepository(opts api.EmptyContainerRepositoryOpts) error
}

ContainerRepositoryAPI invokes the API

type ContainerRepositoryService

type ContainerRepositoryService interface {
	CreateContainerRepository(ctx context.Context, opts CreateContainerRepositoryOpts) (*ContainerRepository, error)
	DeleteContainerRepository(ctx context.Context, opts DeleteContainerRepositoryOpts) error
	EmptyContainerRepository(ctx context.Context, opts EmptyContainerRepositoryOpts) error
}

ContainerRepositoryService orchestrates the creation of various services

type ContainerRepositoryState

type ContainerRepositoryState interface {
	SaveContainerRepository(repository *ContainerRepository) error
	RemoveContainerRepository(imageName string) error
	GetContainerRepository(imageName string) (*ContainerRepository, error)
	GetContainerRepositoryFromApplication(applicationName string) (*ContainerRepository, error)
	ApplicationHasImage(applicationName string) (bool, error)
}

ContainerRepositoryState updates the state

type CreateAWSLoadBalancerControllerOpts

type CreateAWSLoadBalancerControllerOpts struct {
	ID    api.ID
	VPCID string
}

CreateAWSLoadBalancerControllerOpts defines the required inputs

type CreateArgoCDApplicationManifestOpts

type CreateArgoCDApplicationManifestOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application
}

CreateArgoCDApplicationManifestOpts contains data required when creating a ArgoCD Application Manifest

func (CreateArgoCDApplicationManifestOpts) Validate

Validate ensures presented data is valid

type CreateArgoCDOpts

type CreateArgoCDOpts struct {
	ClusterManifest v1alpha1.Cluster
	Domain          string
	FQDN            string
	HostedZoneID    string
	UserPoolID      string
	AuthDomain      string
	Repository      *GithubRepository
}

CreateArgoCDOpts contains the required inputs for setting up argo cd

type CreateAutoscalerOpts

type CreateAutoscalerOpts struct {
	ID api.ID
}

CreateAutoscalerOpts contains the required inputs

type CreateBlockstorageOpts

type CreateBlockstorageOpts struct {
	ID api.ID
}

CreateBlockstorageOpts contains the required inputs

type CreateCertificateOpts

type CreateCertificateOpts struct {
	ID           api.ID
	FQDN         string
	Domain       string
	HostedZoneID string
}

CreateCertificateOpts contains the input required for creating a certificate

func (CreateCertificateOpts) Validate

func (o CreateCertificateOpts) Validate() error

Validate the input

type CreateConfigMapOpts

type CreateConfigMapOpts struct {
	ID        api.ID
	Name      string
	Namespace string
	Data      map[string]string
	Labels    map[string]string
}

CreateConfigMapOpts contains the required inputs

type CreateContainerRepositoryOpts

type CreateContainerRepositoryOpts struct {
	ClusterID       api.ID
	ImageName       string
	ApplicationName string
}

CreateContainerRepositoryOpts contains necessary information to create a container repository

type CreateExternalDNSOpts

type CreateExternalDNSOpts struct {
	ID           api.ID
	HostedZoneID string
	Domain       string
}

CreateExternalDNSOpts contains required inputs

type CreateExternalSecretOpts

type CreateExternalSecretOpts struct {
	ID        api.ID
	Name      string
	Namespace string
	Manifest  api.Manifest
}

CreateExternalSecretOpts contains the required inputs

type CreateExternalSecretsOpts

type CreateExternalSecretsOpts struct {
	ID api.ID
}

CreateExternalSecretsOpts contains the required inputs

type CreateGithubDeployKeyOpts

type CreateGithubDeployKeyOpts struct {
	ID           api.ID
	Organisation string
	Repository   string
	Title        string
}

CreateGithubDeployKeyOpts contains required inputs

type CreateGithubRepositoryOpts

type CreateGithubRepositoryOpts struct {
	ID           api.ID
	Host         string
	Organization string
	Name         string
}

CreateGithubRepositoryOpts contains the required inputs

func (CreateGithubRepositoryOpts) Validate

func (o CreateGithubRepositoryOpts) Validate() error

Validate the inputs

type CreateHelmReleaseOpts

type CreateHelmReleaseOpts struct {
	ID             api.ID
	RepositoryName string
	RepositoryURL  string
	ReleaseName    string
	Version        string
	Chart          string
	Namespace      string
	Values         []byte
}

CreateHelmReleaseOpts contains the required inputs for installing a Helm release on the Kubernetes cluster

func (CreateHelmReleaseOpts) Validate

func (o CreateHelmReleaseOpts) Validate() error

Validate the provided inputs

type CreateIdentityPoolClientOpts

type CreateIdentityPoolClientOpts struct {
	ID          api.ID
	UserPoolID  string
	Purpose     string
	CallbackURL string
}

CreateIdentityPoolClientOpts contains the required inputs

type CreateIdentityPoolOpts

type CreateIdentityPoolOpts struct {
	ID           api.ID
	AuthDomain   string
	AuthFQDN     string
	HostedZoneID string
}

CreateIdentityPoolOpts contains the required inputs

type CreateIdentityPoolUserOpts

type CreateIdentityPoolUserOpts struct {
	ID         api.ID
	Email      string
	UserPoolID string
}

CreateIdentityPoolUserOpts input

func (CreateIdentityPoolUserOpts) Validate

func (o CreateIdentityPoolUserOpts) Validate() error

Validate the inputs

type CreateKubePromStackOpts

type CreateKubePromStackOpts struct {
	ID           api.ID
	Domain       string
	HostedZoneID string
	AuthDomain   string
	UserPoolID   string
}

CreateKubePromStackOpts are the required inputs

type CreatePolicyOpts

type CreatePolicyOpts struct {
	ID                     api.ID
	StackName              string
	PolicyOutputName       string
	CloudFormationTemplate []byte
}

CreatePolicyOpts contains all the required inputs for creating a managed policy

func (CreatePolicyOpts) Validate

func (o CreatePolicyOpts) Validate() error

Validate the required inputs

type CreatePostgresDatabaseOpts

type CreatePostgresDatabaseOpts struct {
	ID                api.ID
	ApplicationName   string
	UserName          string
	VpcID             string
	DBSubnetGroupName string
	DBSubnetIDs       []string
	DBSubnetCIDRs     []string
	Namespace         string
}

CreatePostgresDatabaseOpts contains the required inputs

type CreatePrimaryHostedZoneOpts

type CreatePrimaryHostedZoneOpts struct {
	ID            api.ID
	Domain        string
	FQDN          string
	NameServerTTL int64
}

CreatePrimaryHostedZoneOpts is the required inputs

type CreateSecretOpts

type CreateSecretOpts struct {
	ID     api.ID
	Name   string
	Secret string
}

CreateSecretOpts contains the input required for creating a secret parameter

type CreateServiceAccountOpts

type CreateServiceAccountOpts struct {
	ID        api.ID
	Name      string
	PolicyArn string
	Config    *v1alpha5.ClusterConfig
}

CreateServiceAccountOpts contains the inputs required for creating a new service account

func (CreateServiceAccountOpts) Validate

func (o CreateServiceAccountOpts) Validate() error

Validate the provided inputs

type CreateVpcOpts

type CreateVpcOpts struct {
	ID      api.ID
	Cidr    string
	Minimal bool
}

CreateVpcOpts defines the inputs to create a vpc

func (CreateVpcOpts) Validate

func (o CreateVpcOpts) Validate() error

Validate a vpc create request

type DeleteApplicationManifestsOpts

type DeleteApplicationManifestsOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application
}

DeleteApplicationManifestsOpts contains necessary information to delete application manifests

func (DeleteApplicationManifestsOpts) Validate

Validate ensures presented data is valid

type DeleteArgoCDApplicationManifestOpts

type DeleteArgoCDApplicationManifestOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application
}

DeleteArgoCDApplicationManifestOpts contains data required when deleting an ArgoCD Application Manifest

func (DeleteArgoCDApplicationManifestOpts) Validate

Validate ensures presented data is valid

type DeleteArgoCDOpts

type DeleteArgoCDOpts struct {
	ID api.ID
}

DeleteArgoCDOpts contains the required inputs for deleting an argocd installation

type DeleteCertificateOpts

type DeleteCertificateOpts struct {
	ID     api.ID
	Domain string
}

DeleteCertificateOpts contains input required to delete a certificate

func (DeleteCertificateOpts) Validate

func (o DeleteCertificateOpts) Validate() error

Validate the deletion request inputs

type DeleteCognitoCertificateOpts

type DeleteCognitoCertificateOpts struct {
	ID     api.ID
	Domain string
}

DeleteCognitoCertificateOpts contains the inputs

func (DeleteCognitoCertificateOpts) Validate

func (o DeleteCognitoCertificateOpts) Validate() error

Validate the deletion request inputs

type DeleteConfigMapOpts

type DeleteConfigMapOpts struct {
	ID        api.ID
	Name      string
	Namespace string
}

DeleteConfigMapOpts contains the required inputs

type DeleteContainerRepositoryOpts

type DeleteContainerRepositoryOpts struct {
	ClusterID api.ID
	ImageName string
}

DeleteContainerRepositoryOpts contains necessary information to delete a container repository

type DeleteExternalSecretOpts

type DeleteExternalSecretOpts struct {
	ID      api.ID
	Name    string
	Secrets map[string]string
}

DeleteExternalSecretOpts contains the required inputs

type DeleteGithubDeployKeyOpts

type DeleteGithubDeployKeyOpts struct {
	ID           api.ID
	Organisation string
	Repository   string
	Identifier   int64
}

DeleteGithubDeployKeyOpts contains the required inputs

type DeleteGithubRepositoryOpts

type DeleteGithubRepositoryOpts struct {
	ID           api.ID
	Organisation string
	Name         string
}

DeleteGithubRepositoryOpts contains the required inputs

type DeleteHelmReleaseOpts

type DeleteHelmReleaseOpts struct {
	ID          api.ID
	ReleaseName string
	Namespace   string
}

DeleteHelmReleaseOpts contains the required inputs for removing a Helm release from the Kubernetes cluster Experimenting a little bit with a more generic/general interface, starting with Delete operation

func (DeleteHelmReleaseOpts) Validate

func (o DeleteHelmReleaseOpts) Validate() error

Validate the provided inputs

type DeleteIdentityPoolClientOpts

type DeleteIdentityPoolClientOpts struct {
	ID      api.ID
	Purpose string
}

DeleteIdentityPoolClientOpts contains the required inputs

type DeleteIdentityPoolOpts

type DeleteIdentityPoolOpts struct {
	ID         api.ID
	UserPoolID string
	Domain     string
}

DeleteIdentityPoolOpts input

type DeleteIdentityPoolUserOpts

type DeleteIdentityPoolUserOpts struct {
	ClusterID api.ID
	UserEmail string
}

DeleteIdentityPoolUserOpts contains required data for deleting a user pool user

func (DeleteIdentityPoolUserOpts) Validate

func (o DeleteIdentityPoolUserOpts) Validate() error

Validate the inputs

type DeleteKubePromStackOpts

type DeleteKubePromStackOpts struct {
	ID     api.ID
	Domain string
}

DeleteKubePromStackOpts are the required inputs

type DeletePolicyOpts

type DeletePolicyOpts struct {
	ID        api.ID
	StackName string
}

DeletePolicyOpts contains all the required inputs for deleting a managed policy

func (DeletePolicyOpts) Validate

func (o DeletePolicyOpts) Validate() error

Validate the required inputs

type DeletePostgresDatabaseOpts

type DeletePostgresDatabaseOpts struct {
	ID              api.ID
	ApplicationName string
	Namespace       string
	VpcID           string
}

DeletePostgresDatabaseOpts contains the required inputs

type DeletePrimaryHostedZoneOpts

type DeletePrimaryHostedZoneOpts struct {
	ID           api.ID
	HostedZoneID string
}

DeletePrimaryHostedZoneOpts is the require inputs

type DeleteSecretOpts

type DeleteSecretOpts struct {
	ID   api.ID
	Name string
}

DeleteSecretOpts contains the input required for deleting a secret parameter

type DeleteServiceAccountOpts

type DeleteServiceAccountOpts struct {
	ID     api.ID
	Name   string
	Config *v1alpha5.ClusterConfig
}

DeleteServiceAccountOpts contains the inputs required for deleting a service account

func (DeleteServiceAccountOpts) Validate

func (o DeleteServiceAccountOpts) Validate() error

Validate the provided inputs

type DeleteVpcOpts

type DeleteVpcOpts struct {
	ID api.ID
}

DeleteVpcOpts defines the inputs to delete a vpc

type DomainAPI

type DomainAPI interface {
	CreatePrimaryHostedZone(opts CreatePrimaryHostedZoneOpts) (*HostedZone, error)
	DeletePrimaryHostedZone(domain string, opts DeletePrimaryHostedZoneOpts) error
}

DomainAPI invokes the API

type DomainService

type DomainService interface {
	CreatePrimaryHostedZone(ctx context.Context, opts CreatePrimaryHostedZoneOpts) (*HostedZone, error)
	GetPrimaryHostedZone(ctx context.Context) (*HostedZone, error)
	DeletePrimaryHostedZone(ctx context.Context, opts DeletePrimaryHostedZoneOpts) error
	SetHostedZoneDelegation(ctx context.Context, domain string, delegated bool) error
}

DomainService orchestrates the creation of a hosted zone

type DomainState

type DomainState interface {
	SaveHostedZone(zone *HostedZone) error
	UpdateHostedZone(zone *HostedZone) error
	RemoveHostedZone(domain string) error
	GetHostedZone(domain string) (*HostedZone, error)
	GetPrimaryHostedZone() (*HostedZone, error)
	GetHostedZones() ([]*HostedZone, error)
	HasPrimaryHostedZone() (bool, error)
}

DomainState implements the in-memory state handling

type EmptyContainerRepositoryOpts

type EmptyContainerRepositoryOpts struct {
	Name string
}

EmptyContainerRepositoryOpts contains necessary information to empty a container registry

type ExternalDNS

type ExternalDNS struct {
	Policy         *ManagedPolicy
	ServiceAccount *ServiceAccount
	Kube           *ExternalDNSKube
}

ExternalDNS contains state about an external dns deployment

type ExternalDNSAPI

type ExternalDNSAPI interface {
	CreateExternalDNSKubeDeployment(opts api.CreateExternalDNSKubeDeploymentOpts) (*api.ExternalDNSKube, error)
}

ExternalDNSAPI implements the API invocation

type ExternalDNSKube

type ExternalDNSKube struct {
	ID           api.ID
	HostedZoneID string
	DomainFilter string
	Manifests    map[string][]byte
}

ExternalDNSKube contains the kubernetes data

type ExternalDNSService

type ExternalDNSService interface {
	CreateExternalDNS(ctx context.Context, opts CreateExternalDNSOpts) (*ExternalDNS, error)
	DeleteExternalDNS(ctx context.Context, id api.ID) error
}

ExternalDNSService is a business logic implementation

type ExternalDNSState

type ExternalDNSState interface {
	SaveExternalDNS(dns *ExternalDNS) error
	GetExternalDNS() (*ExternalDNS, error)
	RemoveExternalDNS() error
	HasExternalDNS() (bool, error)
}

ExternalDNSState implements the persistence layer

type ExternalSecrets

type ExternalSecrets struct {
	Policy         *ManagedPolicy
	ServiceAccount *ServiceAccount
	Chart          *Helm
}

ExternalSecrets is the content of an external-secrets deployment

type ExternalSecretsService

type ExternalSecretsService interface {
	CreateExternalSecrets(ctx context.Context, opts CreateExternalSecretsOpts) (*ExternalSecrets, error)
	DeleteExternalSecrets(ctx context.Context, id api.ID) error
}

ExternalSecretsService is an implementation of the business logic

type ExternalSecretsState

type ExternalSecretsState interface {
	HasExternalSecrets() (bool, error)
}

ExternalSecretsState defines the state layer

type GetClusterSecurityGroupIDOpts

type GetClusterSecurityGroupIDOpts struct {
	ID api.ID
}

GetClusterSecurityGroupIDOpts specifies the required inputs for getting a cluster

type GetHelmReleaseOpts

type GetHelmReleaseOpts struct {
	ClusterID   api.ID
	ReleaseName string
	Namespace   string
}

GetHelmReleaseOpts contains the required inputs for getting a Helm release from the Kubernetes cluster

func (GetHelmReleaseOpts) Validate

func (o GetHelmReleaseOpts) Validate() error

Validate the provided inputs

type GetPatchOpts

type GetPatchOpts struct {
	ApplicationName string
	ClusterName     string

	Kind string
}

GetPatchOpts contains required data to retrieve a Kustomize patch

type GetPostgresDatabaseOpts

type GetPostgresDatabaseOpts struct {
	ClusterID    api.ID
	DatabaseName string
}

GetPostgresDatabaseOpts contains the required inputs for retrieving an existing Postgres Database

type GitRemoteFileDeleter

type GitRemoteFileDeleter interface {
	// Delete deletes a remote file from a Git repository
	Delete(repositoryURL string, targetPath string, commitMessage string) error
}

GitRemoteFileDeleter knows how to remotely delete a file tracked by Git

type GithubDeployKey

type GithubDeployKey struct {
	Organisation     string
	Repository       string
	Identifier       int64
	Title            string
	PublicKey        string
	PrivateKeySecret *GithubSecret
}

GithubDeployKey is a github deploy key

func (GithubDeployKey) Validate

func (k GithubDeployKey) Validate() error

Validate the data

type GithubRepository

type GithubRepository struct {
	ID           api.ID
	Organisation string
	Repository   string
	FullName     string
	GitURL       string
	DeployKey    *GithubDeployKey
}

GithubRepository is a github repository

func (GithubRepository) Validate

func (r GithubRepository) Validate() error

Validate the github repository

type GithubSecret

type GithubSecret struct {
	Name    string
	Path    string
	Version int64
}

GithubSecret represents an SSM secret parameter

func (GithubSecret) Validate

func (s GithubSecret) Validate() error

Validate the data

type GithubService

type GithubService interface {
	CreateGithubRepository(ctx context.Context, opts CreateGithubRepositoryOpts) (*GithubRepository, error)
	DeleteGithubRepository(ctx context.Context, opts DeleteGithubRepositoryOpts) error
	CreateRepositoryDeployKey(opts CreateGithubDeployKeyOpts) (*GithubDeployKey, error)
	DeleteRepositoryDeployKey(opts DeleteGithubDeployKeyOpts) error
	ListReleases(owner, repo string) ([]*github.RepositoryRelease, error)
}

GithubService is a business logic implementation

type GithubState

type GithubState interface {
	SaveGithubRepository(repository *GithubRepository) error
	GetGithubRepository(fullName string) (*GithubRepository, error)
	RemoveGithubRepository(fullName string) error
}

GithubState is the state layer

type HasArgoCDIntegrationOpts

type HasArgoCDIntegrationOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application
}

HasArgoCDIntegrationOpts defines required information to verify an existing ArgoCD integration

func (HasArgoCDIntegrationOpts) Validate

func (c HasArgoCDIntegrationOpts) Validate() error

Validate ensures presented data is valid

type HasPostgresIntegrationOpts

type HasPostgresIntegrationOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application

	DatabaseName string
}

HasPostgresIntegrationOpts defines required data for checking if an integration is in place

type Helm

type Helm struct {
	ID      api.ID
	Release *release.Release
	Chart   *helm.Chart
}

Helm contains the data of a helm release

type HelmAPI

type HelmAPI interface {
	CreateHelmRelease(opts api.CreateHelmReleaseOpts) (*api.Helm, error)
	DeleteHelmRelease(opts api.DeleteHelmReleaseOpts) error
	GetHelmRelease(opts api.GetHelmReleaseOpts) (*api.Helm, error)
}

HelmAPI provides the invocation layer

type HelmService

type HelmService interface {
	CreateHelmRelease(ctx context.Context, opts CreateHelmReleaseOpts) (*Helm, error)
	DeleteHelmRelease(ctx context.Context, opts DeleteHelmReleaseOpts) error
	GetHelmRelease(ctx context.Context, opts GetHelmReleaseOpts) (*Helm, error)
}

HelmService provides functionality for interacting with helm chart lifecycle

type HelmState

type HelmState interface {
	SaveHelmRelease(helm *Helm) error
	RemoveHelmRelease(releaseName string) error
	GetHelmRelease(releaseName string) (*Helm, error)
}

HelmState provides the persistence layer

type HostedZone

type HostedZone struct {
	ID                     api.ID
	IsDelegated            bool
	Primary                bool
	Managed                bool
	FQDN                   string
	Domain                 string
	HostedZoneID           string
	NameServers            []string
	StackName              string
	CloudFormationTemplate []byte
}

HostedZone contains the state we are interested in

type IdentityManagerAPI

type IdentityManagerAPI interface {
	CreateIdentityPool(opts api.CreateIdentityPoolOpts) (*api.IdentityPool, error)
	DeleteIdentityPool(opts api.DeleteIdentityPoolOpts) error
	CreateIdentityPoolClient(opts api.CreateIdentityPoolClientOpts) (*api.IdentityPoolClient, error)
	DeleteIdentityPoolClient(opts api.DeleteIdentityPoolClientOpts) error
	CreateIdentityPoolUser(opts api.CreateIdentityPoolUserOpts) (*api.IdentityPoolUser, error)
	DeleteIdentityPoolUser(opts api.DeleteIdentityPoolUserOpts) error
}

IdentityManagerAPI invokes the API calls for creating an identity pool

type IdentityManagerService

type IdentityManagerService interface {
	CreateIdentityPool(ctx context.Context, opts CreateIdentityPoolOpts) (*IdentityPool, error)
	DeleteIdentityPool(ctx context.Context, opts api.ID) error
	CreateIdentityPoolClient(ctx context.Context, opts CreateIdentityPoolClientOpts) (*IdentityPoolClient, error)
	DeleteIdentityPoolClient(ctx context.Context, opts DeleteIdentityPoolClientOpts) error
	CreateIdentityPoolUser(ctx context.Context, opts CreateIdentityPoolUserOpts) (*IdentityPoolUser, error)
	DeleteIdentityPoolUser(ctx context.Context, opts DeleteIdentityPoolUserOpts) error
}

IdentityManagerService orchestrates the creation of an identity pool

type IdentityManagerState

type IdentityManagerState interface {
	SaveIdentityPool(pool *IdentityPool) error
	RemoveIdentityPool(stackName string) error
	GetIdentityPool(stackName string) (*IdentityPool, error)
	HasIdentityPool() (bool, error)
	SaveIdentityPoolClient(client *IdentityPoolClient) error
	GetIdentityPoolClient(stackName string) (*IdentityPoolClient, error)
	RemoveIdentityPoolClient(stackName string) error
	SaveIdentityPoolUser(user *IdentityPoolUser) error
	GetIdentityPoolUser(stackName string) (*IdentityPoolUser, error)
	RemoveIdentityPoolUser(stackName string) error
	GetIdentityPoolUsers() ([]IdentityPoolUser, error)
}

IdentityManagerState implements the state layer

type IdentityPool

type IdentityPool struct {
	ID                      api.ID
	UserPoolID              string
	AuthDomain              string
	HostedZoneID            string
	StackName               string
	CloudFormationTemplates []byte
	Certificate             *Certificate
	RecordSetAlias          *RecordSetAlias
}

IdentityPool contains the state about the created identity management

type IdentityPoolClient

type IdentityPoolClient struct {
	ID                      api.ID
	UserPoolID              string
	Purpose                 string
	CallbackURL             string
	ClientID                string
	ClientSecret            string
	StackName               string
	CloudFormationTemplates []byte
}

IdentityPoolClient contains the state about a client

type IdentityPoolUser

type IdentityPoolUser struct {
	ID                     api.ID
	Email                  string
	UserPoolID             string
	StackName              string
	CloudFormationTemplate []byte
}

IdentityPoolUser state of user

type InitiateDomainDelegationOpts

type InitiateDomainDelegationOpts struct {
	ClusterID api.ID

	PrimaryHostedZoneFQDN string
	Nameservers           []string
	Labels                []string
}

InitiateDomainDelegationOpts contains required inputs for creating a DNS zone delegation

func (InitiateDomainDelegationOpts) Validate

func (o InitiateDomainDelegationOpts) Validate() error

Validate the provided inputs

type KubePromStack

type KubePromStack struct {
	ID                                api.ID
	AuthHostname                      string
	CertificateARN                    string
	ClientID                          string
	FargateCloudWatchPolicyARN        string
	FargateProfilePodExecutionRoleARN string
	Hostname                          string
	SecretsAdminPassKey               string
	SecretsAdminUserKey               string
	SecretsClientSecretKey            string
	SecretsConfigName                 string
	SecretsCookieSecretKey            string
	Certificate                       *Certificate
	Chart                             *Helm
	ExternalSecret                    *KubernetesManifest
	IdentityPoolClient                *IdentityPoolClient
}

KubePromStack is the content of a kubernetes prometheus stack deployment

type KubernetesManifest

type KubernetesManifest struct {
	ID        api.ID
	Name      string
	Namespace string
	Type      ManifestType
	Content   []byte
}

KubernetesManifest contains data about a manifest

type KubernetesState

type KubernetesState interface {
	HasResource(kind, namespace, name string) (bool, error)
}

KubernetesState defines functionality for handling state in Kubernetes

type Locker

type Locker interface {
	// AcquireStateLock knows how to activate a locking mechanism preventing others from mutating state
	AcquireStateLock(clusterID api.ID) error
	// ReleaseStateLock knows how to deactivate a locking mechanism allowing others to mutate state
	ReleaseStateLock(clusterID api.ID) error
}

Locker defines functionality for ensuring only one client mutates state at a time

type LokiState

type LokiState interface {
	HasLoki() (bool, error)
}

LokiState describes an interface to handle state for a Loki instance

type ManagedPolicy

type ManagedPolicy struct {
	ID                     api.ID
	StackName              string
	PolicyARN              string
	CloudFormationTemplate []byte
}

ManagedPolicy holds state for a managed policy

type ManagedPolicyAPI

type ManagedPolicyAPI interface {
	CreatePolicy(opts api.CreatePolicyOpts) (*api.ManagedPolicy, error)
	DeletePolicy(opts api.DeletePolicyOpts) error
}

ManagedPolicyAPI invokes the remote API

type ManagedPolicyService

type ManagedPolicyService interface {
	CreatePolicy(ctx context.Context, opts CreatePolicyOpts) (*ManagedPolicy, error)
	DeletePolicy(ctx context.Context, opts DeletePolicyOpts) error
}

ManagedPolicyService implements the business logic

type ManagedPolicyState

type ManagedPolicyState interface {
	SavePolicy(policy *ManagedPolicy) error
	GetPolicy(stackName string) (*ManagedPolicy, error)
	RemovePolicy(stackName string) error
}

ManagedPolicyState provides a persistence layer

type ManifestAPI

type ManifestAPI interface {
	CreateStorageClass(opts api.CreateStorageClassOpts) (*api.StorageClassKube, error)
	CreateExternalSecret(opts CreateExternalSecretOpts) (*api.ExternalSecretsKube, error)
	DeleteExternalSecret(opts api.DeleteExternalSecretsOpts) error
	CreateConfigMap(opts api.CreateConfigMapOpts) (*api.ConfigMap, error)
	DeleteConfigMap(opts api.DeleteConfigMapOpts) error
	CreateNamespace(opts api.CreateNamespaceOpts) (*api.Namespace, error)
	DeleteNamespace(opts api.DeleteNamespaceOpts) error
	ScaleDeployment(opts api.ScaleDeploymentOpts) error
}

ManifestAPI invokes the API

type ManifestService

type ManifestService interface {
	CreateStorageClass(ctx context.Context, opts api.CreateStorageClassOpts) (*KubernetesManifest, error)
	CreateExternalSecret(ctx context.Context, opts CreateExternalSecretOpts) (*KubernetesManifest, error)
	DeleteExternalSecret(ctx context.Context, opts DeleteExternalSecretOpts) error
	CreateConfigMap(ctx context.Context, opts CreateConfigMapOpts) (*KubernetesManifest, error)
	DeleteConfigMap(ctx context.Context, opts DeleteConfigMapOpts) error
	CreateNamespace(ctx context.Context, opts api.CreateNamespaceOpts) (*KubernetesManifest, error)
	DeleteNamespace(ctx context.Context, opts api.DeleteNamespaceOpts) error
	ScaleDeployment(ctx context.Context, opts api.ScaleDeploymentOpts) error
}

ManifestService implements the business logic There is nothing inherently wrong with this service, but I think there exists opportunities to improve the way we interact with Kubernetes and apply and remove resources. That is basically what this service does, it handles kubernetes resources from the client side.

type ManifestState

type ManifestState interface {
	SaveKubernetesManifests(manifests *KubernetesManifest) error
	GetKubernetesManifests(name string) (*KubernetesManifest, error)
	RemoveKubernetesManifests(name string) error
}

ManifestState defines the state layer

type ManifestType

type ManifestType string

ManifestType enumerates the available manifest types

func (ManifestType) String

func (t ManifestType) String() string

String returns the string representation

type MonitoringService

type MonitoringService interface {
	CreateKubePromStack(ctx context.Context, opts CreateKubePromStackOpts) (*KubePromStack, error)
	DeleteKubePromStack(ctx context.Context, opts DeleteKubePromStackOpts) error
	CreateLoki(ctx context.Context, id api.ID) (*Helm, error)
	DeleteLoki(ctx context.Context, id api.ID) error
	CreatePromtail(ctx context.Context, id api.ID) (*Helm, error)
	DeletePromtail(ctx context.Context, id api.ID) error
	CreateTempo(ctx context.Context, id api.ID) (*Helm, error)
	DeleteTempo(ctx context.Context, id api.ID) error
}

MonitoringService is an implementation of the business logic

type MonitoringState

type MonitoringState interface {
	SaveKubePromStack(stack *KubePromStack) error
	RemoveKubePromStack() error
	GetKubePromStack() (*KubePromStack, error)
	HasKubePromStack() (bool, error)
}

MonitoringState is a state layer implementation

type NSRecordDelegationService

type NSRecordDelegationService interface {
	InitiateDomainDelegation(opts InitiateDomainDelegationOpts) error
	RevokeDomainDelegation(opts RevokeDomainDelegationOpts) error
}

NSRecordDelegationService defines required functionality for requesting a nameserver delegation record in the top level domain.

If a team wants 'team.oslo.systems', okctl will create that domain which will get its own nameservers assigned. The top level domain 'oslo.systems' then needs to delegate DNS inquiries for 'team.oslo.systems' to the assigned nameservers. This is the delegation this service should handle.

type OriginalClusterVersion

type OriginalClusterVersion struct {
	ID    api.ID
	Value string
}

OriginalClusterVersion contains state about the original okctl version installed

type ParameterAPI

type ParameterAPI interface {
	CreateSecret(opts api.CreateSecretOpts) (*api.SecretParameter, error)
	DeleteSecret(opts api.DeleteSecretOpts) error
}

ParameterAPI invokes REST API endpoints

type ParameterService

type ParameterService interface {
	CreateSecret(ctx context.Context, opts CreateSecretOpts) (*SecretParameter, error)
	DeleteSecret(ctx context.Context, opts DeleteSecretOpts) error
}

ParameterService implements the business logic

type ParameterState

type ParameterState interface {
	SaveSecret(parameter *SecretParameter) error
	GetSecret(name string) (*SecretParameter, error)
	RemoveSecret(name string) error
}

ParameterState stores the state

type PostgresDatabase

type PostgresDatabase struct {
	ID                           api.ID
	ApplicationName              string
	UserName                     string
	StackName                    string
	AdminSecretFriendlyName      string
	EndpointAddress              string
	EndpointPort                 int
	OutgoingSecurityGroupID      string
	SecretsManagerAdminSecretARN string
	LambdaPolicyARN              string
	LambdaRoleARN                string
	LambdaFunctionARN            string
	CloudFormationTemplate       string
	Namespace                    string
	AdminSecretName              string
	AdminSecretARN               string
	DatabaseConfigMapName        string
	RotaterBucket                *S3Bucket
}

PostgresDatabase contains the state after creating the database

type PromtailState

type PromtailState interface {
	HasPromtail() (bool, error)
}

PromtailState describes an interface to handle state for a Loki instance

type RecordSetAlias

type RecordSetAlias struct {
	AliasDomain            string
	AliasHostedZones       string
	StackName              string
	CloudFormationTemplate []byte
}

RecordSetAlias contains a record set alias this should not be here

type RemoteStateService

type RemoteStateService interface {
	// Purge knows how to tear down all traces of remote state
	Purge(clusterID api.ID) error
	Stater
	Locker
}

RemoteStateService defines expected functionality in a remote state service implementation

type RemovePostgresFromApplicationOpts

type RemovePostgresFromApplicationOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application

	DatabaseName string
}

RemovePostgresFromApplicationOpts defines required data to remove a Postgres database from an application

type RevokeDomainDelegationOpts

type RevokeDomainDelegationOpts struct {
	ClusterID             api.ID
	PrimaryHostedZoneFQDN string
	Labels                []string
}

RevokeDomainDelegationOpts contains required inputs for removing a DNS Zone delegation

func (RevokeDomainDelegationOpts) Validate

func (o RevokeDomainDelegationOpts) Validate() error

Validate the inputs

type S3Bucket

type S3Bucket struct {
	Name                   string
	StackName              string
	CloudFormationTemplate string
}

S3Bucket contains the state after an AWS S3 bucket has been created

type SaveManifestOpts

type SaveManifestOpts struct {
	ApplicationName string

	Filename string
	Content  []byte
}

SaveManifestOpts contains required data to save a Kubernetes manifest

type SaveNamespaceOpts

type SaveNamespaceOpts struct {
	Filename    string
	ClusterName string
	Payload     io.Reader
}

SaveNamespaceOpts contains required data for saving a namespace

type SavePatchOpts

type SavePatchOpts struct {
	ApplicationName string
	ClusterName     string

	Kind  string
	Patch jsonpatch.Patch
}

SavePatchOpts contains required data to save a Kustomize patch

type ScaffoldApplicationOpts

type ScaffoldApplicationOpts struct {
	Cluster     v1alpha1.Cluster
	Application v1alpha1.Application

	CertificateARN string
}

ScaffoldApplicationOpts contains information necessary to scaffold application resources

func (*ScaffoldApplicationOpts) Validate

func (o *ScaffoldApplicationOpts) Validate() error

Validate ensures presented data is valid

type SecretParameter

type SecretParameter struct {
	ID      api.ID
	Name    string
	Path    string
	Version int64
	Content string
}

SecretParameter contains the state for a secret parameter

type SecurityGroupAPI

type SecurityGroupAPI interface {
	api.SecurityGroupCRUDer
	api.SecurityGroupRuleCRUDer
}

SecurityGroupAPI defines functionality required by the Security Group API

type ServiceAccount

type ServiceAccount struct {
	ID        api.ID
	Name      string
	PolicyArn string
	Config    *v1alpha5.ClusterConfig
}

ServiceAccount holds state for a service account

type ServiceAccountAPI

type ServiceAccountAPI interface {
	CreateServiceAccount(opts api.CreateServiceAccountOpts) (*api.ServiceAccount, error)
	DeleteServiceAccount(opts api.DeleteServiceAccountOpts) error
}

ServiceAccountAPI invokes the remote API

type ServiceAccountService

type ServiceAccountService interface {
	CreateServiceAccount(ctx context.Context, opts CreateServiceAccountOpts) (*ServiceAccount, error)
	DeleteServiceAccount(ctx context.Context, opts DeleteServiceAccountOpts) error
}

ServiceAccountService implements the business logic

type ServiceAccountState

type ServiceAccountState interface {
	SaveServiceAccount(account *ServiceAccount) error
	RemoveServiceAccount(name string) error
	GetServiceAccount(name string) (*ServiceAccount, error)
	UpdateServiceAccount(account *ServiceAccount) error
}

ServiceAccountState defines the state layer

type Stater

type Stater interface {
	// Upload knows how to upload state to a remote location
	Upload(clusterID api.ID, reader io.Reader) error
	// Download knows how to download state from a remote location
	Download(clusterID api.ID) (io.Reader, error)
}

Stater defines functionality for transferring remote state back and forth

type TempoState

type TempoState interface {
	HasTempo() (bool, error)
}

TempoState describes an interface to handle state for a Tempo instance

type Upgrade

type Upgrade struct {
	ID      api.ID
	Version string
}

Upgrade contains state about an okctl upgrade

type UpgradeState

type UpgradeState interface {
	SaveUpgrade(upgrade *Upgrade) error
	GetUpgrades() ([]*Upgrade, error)
	SaveOriginalClusterVersionIfNotExists(originalClusterVersion *OriginalClusterVersion) error
	GetOriginalClusterVersion() (*OriginalClusterVersion, error)
	SaveClusterVersion(version *ClusterVersion) error
	GetClusterVersion() (*ClusterVersion, error)
}

UpgradeState updates the state

type VPCAPI

type VPCAPI interface {
	CreateVpc(opts api.CreateVpcOpts) (*api.Vpc, error)
	DeleteVpc(opts api.DeleteVpcOpts) error
}

VPCAPI invokes the API calls for creating a vpc

type VPCService

type VPCService interface {
	CreateVpc(ctx context.Context, opts CreateVpcOpts) (*Vpc, error)
	DeleteVpc(ctx context.Context, opts DeleteVpcOpts) error
	GetVPC(ctx context.Context, id api.ID) (*Vpc, error)
}

VPCService orchestrates the creation of a vpc

type VPCState

type VPCState interface {
	SaveVpc(vpc *Vpc) error
	GetVpc(stackName string) (*Vpc, error)
	RemoveVpc(stackName string) error
	HasVPC(clusterName string) (bool, error)
}

VPCState implement the state layer

type Vpc

type Vpc struct {
	ID                     api.ID
	StackName              string
	CloudFormationTemplate []byte

	VpcID                    string
	Cidr                     string
	PublicSubnets            []VpcSubnet
	PrivateSubnets           []VpcSubnet
	DatabaseSubnets          []VpcSubnet
	DatabaseSubnetsGroupName string
}

Vpc represents the state of an aws vpc

type VpcSubnet

type VpcSubnet struct {
	ID               string
	Cidr             string
	AvailabilityZone string
}

VpcSubnet represents an aws vpc subnet

Source Files

application_client.go application_manifest_client.go application_postgres_client.go argocd_client.go autoscaler_client.go awsloadbalancercontroller_client.go blockstorage_client.go certificate_client.go cluster_client.go component_client.go container_repository_client.go doc.go domain_client.go externaldns_client.go externalsecrets_client.go github_client.go helm_client.go identitymanager_client.go kubernetes_client.go loki_client.go managedpolicy_client.go manifest_client.go monitoring_client.go nameserverdelegator_client.go parameter_client.go promtail_client.go remote_state_client.go securitygroup_client.go serviceaccount_client.go tempo_client.go upgrade_client.go vpc_client.go

Directories

PathSynopsis
pkg/client/corePackage core implements the business logic layer for the client-side
pkg/client/core/state
pkg/client/core/state/directPackage direct contains functionality for retrieving state directly from the source
pkg/client/core/state/stormPackage storm implements a state layer using the storm library
pkg/client/core/store
pkg/client/core/store/filesystemPackage filesystem interacts with the file system
pkg/client/mockPackage mock contains some convenience functions for getting data
pkg/client/storePackage store provides interfaces for more easily interacting with a storage layer
Version
v0.0.106 (latest)
Published
Oct 21, 2022
Platform
linux/amd64
Imports
14 packages
Last checked
3 days ago

Tools for package owners.