types

package
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2023 License: MIT Imports: 3 Imported by: 0

Documentation

Overview

Copyright (C) 2021-2023, Kubefirst

This program is licensed under MIT. See the LICENSE file for more details.

This program is licensed under MIT. See the LICENSE file for more details.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AWSAuth

type AWSAuth struct {
	AccessKeyID     string `bson:"access_key_id" json:"access_key_id"`
	SecretAccessKey string `bson:"secret_access_key" json:"secret_access_key"`
	SessionToken    string `bson:"session_token" json:"session_token"`
}

AWSAuth holds necessary auth credentials for interacting with aws

type CivoAuth

type CivoAuth struct {
	Token string `bson:"token" json:"token"`
}

CivoAuth holds necessary auth credentials for interacting with civo

type CloudflareAuth

type CloudflareAuth struct {
	Token             string `bson:"token" json:"token"`
	APIToken          string `bson:"api_token" json:"api_token"`
	OriginCaIssuerKey string `bson:"origin_ca_issuer_key" json:"origin_ca_issuer_key"`
}

CloudflareAuth holds necessary auth credentials for interacting with vultr

type Cluster

type Cluster struct {
	ID                primitive.ObjectID `bson:"_id" json:"_id"`
	CreationTimestamp string             `bson:"creation_timestamp" json:"creation_timestamp"`

	// Status
	Status        string `bson:"status" json:"status"`
	LastCondition string `bson:"last_condition" json:"last_condition"`
	InProgress    bool   `bson:"in_progress" json:"in_progress"`

	// Identifiers
	AlertsEmail   string `bson:"alerts_email" json:"alerts_email"`
	CloudProvider string `bson:"cloud_provider" json:"cloud_provider"`
	CloudRegion   string `bson:"cloud_region" json:"cloud_region"`
	ClusterName   string `bson:"cluster_name" json:"cluster_name"`
	ClusterID     string `bson:"cluster_id" json:"cluster_id"`
	ClusterType   string `bson:"cluster_type" json:"cluster_type"`
	DomainName    string `bson:"domain_name" json:"domain_name"`
	SubdomainName string `json:"subdomain_name,omitempty"`
	DnsProvider   string `bson:"dns_provider" json:"dns_provider"`

	// Auth
	AWSAuth          AWSAuth          `bson:"aws_auth,omitempty" json:"aws_auth,omitempty"`
	CivoAuth         CivoAuth         `bson:"civo_auth,omitempty" json:"civo_auth,omitempty"`
	DigitaloceanAuth DigitaloceanAuth `bson:"do_auth,omitempty" json:"do_auth,omitempty"`
	VultrAuth        VultrAuth        `bson:"vultr_auth,omitempty" json:"vultr_auth,omitempty"`
	CloudflareAuth   CloudflareAuth   `bson:"cloudflare_auth,omitempty" json:"cloudflare_auth,omitempty"`
	GitAuth          GitAuth          `bson:"git_auth,omitempty" json:"git_auth,omitempty"`
	VaultAuth        VaultAuth        `bson:"vault_auth,omitempty" json:"vault_auth,omitempty"`
	GoogleAuth       GoogleAuth       `bson:"google_auth,omitempty" json:"google_auth,omitempty"`

	GitopsTemplateURL    string `bson:"gitops_template_url" json:"gitops_template_url"`
	GitopsTemplateBranch string `bson:"gitops_template_branch" json:"gitops_template_branch"`
	GitProvider          string `bson:"git_provider" json:"git_provider"`
	GitProtocol          string `bson:"git_protocol" json:"git_protocol"`
	GitHost              string `bson:"git_host" json:"git_host"`
	GitlabOwnerGroupID   int    `bson:"gitlab_owner_group_id" json:"gitlab_owner_group_id"`

	AtlantisWebhookSecret string `bson:"atlantis_webhook_secret" json:"atlantis_webhook_secret"`
	AtlantisWebhookURL    string `bson:"atlantis_webhook_url" json:"atlantis_webhook_url"`
	KubefirstTeam         string `bson:"kubefirst_team" json:"kubefirst_team"`

	StateStoreCredentials StateStoreCredentials `bson:"state_store_credentials,omitempty" json:"state_store_credentials,omitempty"`
	StateStoreDetails     StateStoreDetails     `bson:"state_store_details,omitempty" json:"state_store_details,omitempty"`

	ArgoCDUsername  string `bson:"argocd_username" json:"argocd_username"`
	ArgoCDPassword  string `bson:"argocd_password" json:"argocd_password"`
	ArgoCDAuthToken string `bson:"argocd_auth_token" json:"argocd_auth_token"`

	// Container Registry and Secrets
	ECR bool `bson:"ecr" json:"ecr"`

	// kms
	AWSAccountId              string `bson:"aws_account_id,omitempty" json:"aws_account_id,omitempty"`
	AWSKMSKeyId               string `bson:"aws_kms_key_id,omitempty" json:"aws_kms_key_id,omitempty"`
	AWSKMSKeyDetokenizedCheck bool   `bson:"aws_kms_key_detokenized_check" json:"aws_kms_key_detokenized_check"`

	// Telemetry
	UseTelemetry bool `bson:"use_telemetry"`

	// Checks
	InstallToolsCheck              bool              `bson:"install_tools_check" json:"install_tools_check"`
	DomainLivenessCheck            bool              `bson:"domain_liveness_check" json:"domain_liveness_check"`
	StateStoreCredsCheck           bool              `bson:"state_store_creds_check" json:"state_store_creds_check"`
	StateStoreCreateCheck          bool              `bson:"state_store_create_check" json:"state_store_create_check"`
	GitInitCheck                   bool              `bson:"git_init_check" json:"git_init_check"`
	KbotSetupCheck                 bool              `bson:"kbot_setup_check" json:"kbot_setup_check"`
	GitopsReadyCheck               bool              `bson:"gitops_ready_check" json:"gitops_ready_check"`
	GitTerraformApplyCheck         bool              `bson:"git_terraform_apply_check" json:"git_terraform_apply_check"`
	GitopsPushedCheck              bool              `bson:"gitops_pushed_check" json:"gitops_pushed_check"`
	CloudTerraformApplyCheck       bool              `bson:"cloud_terraform_apply_check" json:"cloud_terraform_apply_check"`
	CloudTerraformApplyFailedCheck bool              `bson:"cloud_terraform_apply_failed_check" json:"cloud_terraform_apply_failed_check"`
	ClusterSecretsCreatedCheck     bool              `bson:"cluster_secrets_created_check" json:"cluster_secrets_created_check"`
	ArgoCDInstallCheck             bool              `bson:"argocd_install_check" json:"argocd_install_check"`
	ArgoCDInitializeCheck          bool              `bson:"argocd_initialize_check" json:"argocd_initialize_check"`
	ArgoCDCreateRegistryCheck      bool              `bson:"argocd_create_registry_check" json:"argocd_create_registry_check"`
	ArgoCDDeleteRegistryCheck      bool              `bson:"argocd_delete_registry_check" json:"argocd_delete_registry_check"`
	VaultInitializedCheck          bool              `bson:"vault_initialized_check" json:"vault_initialized_check"`
	VaultTerraformApplyCheck       bool              `bson:"vault_terraform_apply_check" json:"vault_terraform_apply_check"`
	UsersTerraformApplyCheck       bool              `bson:"users_terraform_apply_check" json:"users_terraform_apply_check"`
	WorkloadClusters               []WorkloadCluster `bson:"workload_clusters,omitempty" json:"workload_clusters,omitempty"`
}

Cluster describes the configuration storage for a Kubefirst cluster object

type ClusterDefinition

type ClusterDefinition struct {

	//Cluster
	AdminEmail    string `json:"admin_email" binding:"required"`
	CloudProvider string `json:"cloud_provider" binding:"required,oneof=aws civo digitalocean vultr google"`
	CloudRegion   string `json:"cloud_region" binding:"required"`
	ClusterName   string `json:"cluster_name,omitempty"`
	DomainName    string `json:"domain_name" binding:"required"`
	SubdomainName string `json:"subdomain_name,omitempty"`
	DnsProvider   string `json:"dns_provider,omitempty" binding:"required"`
	Type          string `json:"type" binding:"required,oneof=mgmt workload"`

	//Git
	GitopsTemplateURL    string `json:"gitops_template_url"`
	GitopsTemplateBranch string `json:"gitops_template_branch"`
	GitProvider          string `json:"git_provider" binding:"required,oneof=github gitlab"`
	GitProtocol          string `json:"git_protocol" binding:"required,oneof=ssh https"`

	//AWS
	ECR bool `json:"ecr,omitempty"`

	//Auth
	AWSAuth          AWSAuth          `json:"aws_auth,omitempty"`
	CivoAuth         CivoAuth         `json:"civo_auth,omitempty"`
	DigitaloceanAuth DigitaloceanAuth `json:"do_auth,omitempty"`
	VultrAuth        VultrAuth        `json:"vultr_auth,omitempty"`
	CloudflareAuth   CloudflareAuth   `json:"cloudflare_auth,omitempty"`
	GoogleAuth       GoogleAuth       `json:"google_auth,omitempty"`
	GitAuth          GitAuth          `json:"git_auth,omitempty"`
}

ClusterDefinition describes an incoming request to create a cluster

type DigitaloceanAuth

type DigitaloceanAuth struct {
	Token        string `bson:"token" json:"token"`
	SpacesKey    string `bson:"spaces_key" json:"spaces_key"`
	SpacesSecret string `bson:"spaces_secret" json:"spaces_secret"`
}

DigitaloceanAuth holds necessary auth credentials for interacting with digitalocean

type GitAuth

type GitAuth struct {
	Token      string `bson:"git_token,omitempty" json:"git_token,omitempty"`
	User       string `bson:"git_username,omitempty" json:"git_username,omitempty"`
	Owner      string `bson:"git_owner,omitempty" json:"git_owner,omitempty"`
	PublicKey  string `bson:"public_key,omitempty" json:"public_key,omitempty"`
	PrivateKey string `bson:"private_key,omitempty" json:"private_key,omitempty"`
	PublicKeys string `bson:"public_keys,omitempty" json:"public_keys,omitempty"`
}

Auth for Git Provider

type GoogleAuth

type GoogleAuth struct {
	KeyFile   string `bson:"key_file,omitempty" json:"key_file,omitempty"`
	ProjectId string `bson:"project_id,omitempty" json:"project_id,omitempty"`
}

type KubernetesClient

type KubernetesClient struct {
	Clientset      *kubernetes.Clientset
	RestConfig     *rest.Config
	KubeConfigPath string
}

type ProxyImportRequest

type ProxyImportRequest struct {
	Body Cluster `bson:"body" json:"body"`
	Url  string  `bson:"url" json:"url"`
}

type PushBucketObject

type PushBucketObject struct {
	LocalFilePath  string `json:"local_file_path"`
	RemoteFilePath string `json:"remote_file_path"`
	ContentType    string `json:"content_type"`
}

PushBucketObject

type StateStoreCredentials

type StateStoreCredentials struct {
	AccessKeyID     string `bson:"access_key_id,omitempty" json:"access_key_id,omitempty"`
	SecretAccessKey string `bson:"secret_access_key,omitempty" json:"secret_access_key,omitempty"`
	SessionToken    string `bson:"session_token,omitempty" json:"session_token,omitempty"`
	Name            string `bson:"name,omitempty" json:"name,omitempty"`
	ID              string `bson:"id,omitempty" json:"id,omitempty"`
}

StateStoreCredentials

type StateStoreDetails

type StateStoreDetails struct {
	Name                string `bson:"name,omitempty" json:"name,omitempty"`
	ID                  string `bson:"id,omitempty" json:"id,omitempty"`
	Hostname            string `bson:"hostname,omitempty" json:"hostname,omitempty"`
	AWSStateStoreBucket string `bson:"aws_state_store_bucket,omitempty" json:"aws_state_store_bucket,omitempty"`
	AWSArtifactsBucket  string `bson:"aws_artifacts_bucket,omitempty" json:"aws_artifacts_bucket,omitempty"`
}

StateStoreDetails

type VaultAuth

type VaultAuth struct {
	RootToken    string `bson:"root_token,omitempty" json:"root_token,omitempty"`
	KbotPassword string `bson:"kbot_password,omitempty" json:"kbot_password,omitempty"`
}

type VultrAuth

type VultrAuth struct {
	Token string `bson:"token" json:"token"`
}

VultrAuth holds necessary auth credentials for interacting with vultr

type WorkloadCluster

type WorkloadCluster struct {
	AdminEmail        string  `bson:"admin_email,omitempty" json:"admin_email,omitempty"`
	CloudProvider     string  `bson:"cloud_provider,omitempty" json:"cloud_provider,omitempty"`
	ClusterID         string  `bson:"cluster_id,omitempty" json:"cluster_id,omitempty"`
	ClusterName       string  `bson:"cluster_name,omitempty" json:"cluster_name,omitempty"`
	ClusterType       string  `bson:"cluster_type,omitempty" json:"cluster_type,omitempty"`
	CloudRegion       string  `bson:"cloud_region,omitempty" json:"cloud_region,omitempty"`
	CreationTimestamp string  `bson:"creation_timestamp" json:"creation_timestamp"`
	DomainName        string  `bson:"domain_name,omitempty" json:"domain_name,omitempty"`
	DnsProvider       string  `bson:"dns_provider,omitempty" json:"dns_provider,omitempty"`
	Environment       string  `bson:"environment,omitempty" json:"environment,omitempty"`
	GitAuth           GitAuth `bson:"git_auth,omitempty" json:"git_auth,omitempty"`
	InstanceSize      string  `bson:"instance_size,omitempty" json:"instance_size,omitempty"`
	MachineType       string  `bson:"machine_type,omitempty" json:"machine_type,omitempty"`
	NodeCount         int     `bson:"node_count,omitempty" json:"node_count,omitempty"`
	Status            string  `bson:"status,omitempty" json:"status,omitempty"`
}

Jump to

Keyboard shortcuts

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