Documentation
¶
Index ¶
- Constants
- type Application
- type ApplicationFilter
- type ApplicationInput
- type ApplicationRestrction
- type ApplicationSpec
- func (s *ApplicationSpec) HasBuildCommand() bool
- func (s *ApplicationSpec) HasStartCommand() bool
- func (s *ApplicationSpec) IsGit() bool
- func (s *ApplicationSpec) IsRegistry() bool
- func (s *ApplicationSpec) ShouldAddStartCommand() bool
- func (s *ApplicationSpec) ToDeployInput() *DeployInput
- func (s *ApplicationSpec) ToGeneralInput() *GeneralInput
- func (s *ApplicationSpec) ToGitInput() *GitInput
- func (s *ApplicationSpec) ToInput() *ApplicationInput
- func (s *ApplicationSpec) ToNetorkInput() *NetworkInput
- func (s *ApplicationSpec) ToRegistryInput() *RegistryInput
- func (s *ApplicationSpec) ToServiceDomainInput() *ServiceDomainInput
- func (s *ApplicationSpec) ToTCPPorxiesInput() *TCPProxiesInput
- func (s *ApplicationSpec) ToVolumeInput() *VolumeInput
- type Artifact
- type ArtifactLogLine
- type AuthSetting
- type BuildConfiguration
- type Certificate
- type Config
- type CreatedFilter
- type DemoUser
- type DeployConfiguration
- type DeployInput
- type Deployment
- type DeploymentInfo
- type Environment
- type EnvironmentFilter
- type Favorite
- type FavoriteDTO
- type GeneralInput
- type GitBranch
- type GitCommit
- type GitInput
- type GitRepo
- type GitSource
- type GithubApp
- type Instance
- type InstanceRestrictions
- type KubeServerConfig
- type ListQueryFilter
- type LogLine
- type Logs
- type Netrc
- type NetworkConfiguration
- type NetworkInput
- type OauthLoginResponse
- type Pagination
- type PermissionCheck
- type Principal
- type PrincipalFilter
- type PrincipalInfo
- type PrivateKey
- type Project
- type ProjectFilter
- type ProjectMembership
- type ProjectMembershipKey
- type ProjectMembershipUser
- type RegistryInput
- type RegistrySource
- type Resource
- type RunnerConfig
- type Scope
- type Server
- type ServerDomain
- type ServerRestrictions
- type ServerState
- type ServiceDomainConfiguraiton
- type ServiceDomainInput
- type Source
- type Stream
- type SystemVariable
- type TCPProxiesConfiguration
- type TCPProxiesInput
- type Tag
- type Template
- type TemplateService
- type TemplateSpec
- type TemplateTag
- type TemplateVariable
- type TemplateVolumeMounts
- type Tenant
- type TenantConfig
- type TenantFilter
- type TenantMembership
- type TenantMembershipKey
- type TenantMembershipUser
- type TenantRestrictions
- type Token
- type TokenResponse
- type UpdatedFilter
- type User
- type UserVariable
- type Variable
- type VariableDTO
- type Volume
- type VolumeCreateInput
- type VolumeFilter
- type VolumeInput
- type VolumeMounts
- type VolumeRestriction
Constants ¶
const AnonymousPrincipalUID = "anonymous"
AnonymousPrincipalUID is an internal UID for anonymous principals.
const (
PathSeparator = "/"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Application ¶
type Application struct {
ID int64 `db:"application_id" json:"-"`
UID int64 `db:"application_uid" json:"uid"`
TenantID int64 `db:"application_tenant_id" json:"-"`
ProjectID int64 `db:"application_project_id" json:"-"`
EnvironmentID int64 `db:"application_environment_id" json:"-"`
EnvironmentUID int64 `db:"application_environment_uid" json:"environment_uid"`
ServerID int64 `db:"application_server_id" json:"-"`
Name string `db:"application_name" json:"name"`
Description string `db:"application_description" json:"description"`
Type enum.ApplicationType `db:"application_type" json:"type"`
Status enum.ApplicationStatus `db:"application_status" json:"status"`
SpecJSON string `db:"application_spec" json:"-"`
Spec *ApplicationSpec `db:"-" json:"spec"`
GithubAppID *int64 `db:"application_githubapp_id" json:"-"`
Domain string `db:"application_domain" json:"domain"`
CustomDomain string `db:"application_custom_domain" json:"custom_domain"`
PrivateDomain string `db:"application_private_domain" json:"private_domain"`
DeploymentID *int64 `db:"application_deployment_id" json:"-"`
DeploymentStatus enum.ApplicationDeploymentStatus `db:"application_deployment_status" json:"deployment_status"`
DeploymentTriggeredAt int64 `db:"application_deployment_triggered_at" json:"deployment_triggered_at"`
Created int64 `db:"application_created" json:"created"`
Updated int64 `db:"application_updated" json:"updated"`
Deleted *int64 `db:"application_deleted" json:"deleted"`
}
func (*Application) GetGithubAppID ¶
func (a *Application) GetGithubAppID() int64
GetGithubAppID returns the github app id if it exists
func (*Application) GetIdentifierStr ¶
func (a *Application) GetIdentifierStr() string
func (*Application) IsStateful ¶
func (a *Application) IsStateful() bool
func (*Application) IsStateless ¶
func (a *Application) IsStateless() bool
func (*Application) Namespace ¶
func (a *Application) Namespace() string
func (*Application) UpdateSpecJSON ¶
func (a *Application) UpdateSpecJSON() error
type ApplicationFilter ¶
type ApplicationFilter struct {
ListQueryFilter
TenantID *int64 `json:"tenant_id,omitempty"`
ProjectID *int64 `json:"project_id,omitempty"`
EnvironmentID *int64 `json:"environment_id,omitempty"`
Sort enum.ApplicationAttr `json:"sort"`
Order enum.Order `json:"order"`
DeletedAt *int64 `json:"deleted_at,omitempty"`
DeletedBeforeOrAt *int64 `json:"deleted_before_or_at,omitempty"`
}
type ApplicationInput ¶
type ApplicationInput struct {
Name string `json:"name"`
Description string `json:"description"`
*RegistryInput
*GitInput
*DeployInput
*NetworkInput
*VolumeInput
}
type ApplicationRestrction ¶
type ApplicationSpec ¶
type ApplicationSpec struct {
Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`
Name string `json:"name" yaml:"name"`
Description string `json:"description,omitempty" yaml:"description,omitempty"`
Build *BuildConfiguration `json:"build,omitempty" yaml:"build,omitempty" mapstructure:"build"`
Deploy *DeployConfiguration `json:"deploy,omitempty" yaml:"deploy,omitempty" mapstructure:"deploy"`
Networking *NetworkConfiguration `json:"networking,omitempty" yaml:"networking,omitempty" mapstructure:"networking"`
Volumes []*VolumeMounts `json:"volumes,omitempty" yaml:"volumes,omitempty" mapstructure:"volumes"`
}
func (*ApplicationSpec) HasBuildCommand ¶
func (s *ApplicationSpec) HasBuildCommand() bool
func (*ApplicationSpec) HasStartCommand ¶
func (s *ApplicationSpec) HasStartCommand() bool
func (*ApplicationSpec) IsRegistry ¶
func (s *ApplicationSpec) IsRegistry() bool
func (*ApplicationSpec) ShouldAddStartCommand ¶
func (s *ApplicationSpec) ShouldAddStartCommand() bool
func (*ApplicationSpec) ToDeployInput ¶
func (s *ApplicationSpec) ToDeployInput() *DeployInput
func (*ApplicationSpec) ToGeneralInput ¶
func (s *ApplicationSpec) ToGeneralInput() *GeneralInput
func (*ApplicationSpec) ToGitInput ¶
func (s *ApplicationSpec) ToGitInput() *GitInput
func (*ApplicationSpec) ToInput ¶
func (s *ApplicationSpec) ToInput() *ApplicationInput
func (*ApplicationSpec) ToNetorkInput ¶
func (s *ApplicationSpec) ToNetorkInput() *NetworkInput
func (*ApplicationSpec) ToRegistryInput ¶
func (s *ApplicationSpec) ToRegistryInput() *RegistryInput
func (*ApplicationSpec) ToServiceDomainInput ¶
func (s *ApplicationSpec) ToServiceDomainInput() *ServiceDomainInput
func (*ApplicationSpec) ToTCPPorxiesInput ¶
func (s *ApplicationSpec) ToTCPPorxiesInput() *TCPProxiesInput
func (*ApplicationSpec) ToVolumeInput ¶
func (s *ApplicationSpec) ToVolumeInput() *VolumeInput
type ArtifactLogLine ¶
type AuthSetting ¶
type AuthSetting struct {
ID int64 `db:"auth_id" json:"-"`
Provider enum.AuthProvider `db:"auth_provider" json:"provider"`
Enabled bool `db:"auth_enabled" json:"enabled,string"`
ClientID string `db:"auth_client_id" json:"client_id"`
ClientSecret string `db:"auth_client_secret" json:"client_secret"`
BaseURL string `db:"auth_base_url" json:"base_url"`
Created int64 `db:"auth_created" json:"created"`
Updated int64 `db:"auth_updated" json:"updated"`
}
type BuildConfiguration ¶
type BuildConfiguration struct {
Source *Source `json:"source,omitempty" yaml:"source,omitempty" mapstructure:"source"`
}
func (*BuildConfiguration) GetSource ¶
func (b *BuildConfiguration) GetSource() string
type Certificate ¶
type Config ¶
type Config struct {
// InstanceID specifis the ID of the cloudness instance.
// NOTE: If the value is not provided the hostname of the machine is used.
InstanceID string `envconfig:"CLOUDNESS_INSTANCE_ID"`
Environment string `envconfig:"CLOUDNESS_ENVIRONMENT"`
Debug bool `envconfig:"CLOUDNESS_DEBUG"`
Trace bool `envconfig:"CLOUDNESS_TRACE"`
// GracefulShutdownTime defines the max time we wait when shutting down a server.
// 5min should be enough for most git clones to complete.
GracefulShutdownTime time.Duration `envconfig:"CLOUDNESS_GRACEFUL_SHUTDOWN_TIME" default:"300s"`
Profiler struct {
Type string `envconfig:"CLOUDNESS_PROFILER_TYPE"`
ServiceName string `envconfig:"CLOUDNESS_PROFILER_SERVICE_NAME" default:"cloudness"`
}
Instance struct {
AllowNewTenantCreation bool `envconfig:"CLOUDNESS_INSTANCE_ALLOW_NEW_TENANT" default:"true"`
}
TenantConfig TenantConfig
KubeServerConfig KubeServerConfig
ACME struct {
ACMEUrl string `envconfig:"CLOUDNESS_ACME_URL" default:"https://acme-v02.api.letsencrypt.org/directory"`
Email string `envconfig:"CLOUDNESS_ACME_EMAIL" default:"cloudness@localhost.com"`
UseStaging bool `envconfig:"CLOUDNESS_ACME_USE_STAGING" default:"false"`
}
// Token defines token configuration parameters.
Token struct {
CookieName string `envconfig:"CLOUDNESS_TOKEN_COOKIE_NAME" default:"token"`
Expire time.Duration `envconfig:"CLOUDNESS_TOKEN_EXPIRE" default:"720h"`
}
// Database defines the database configuration parameters.
Database struct {
Driver string `envconfig:"CLOUDNESS_DATABASE_DRIVER" default:"sqlite3"`
Datasource string `envconfig:"CLOUDNESS_DATABASE_DATASOURCE" default:"database.sqlite3"`
Host string `envconfig:"CLOUDNESS_DATABASE_HOST"`
Port string `envconfig:"CLOUDNESS_DATABASE_PORT"`
Name string `envconfig:"CLOUDNESS_DATABASE_NAME"`
User string `envconfig:"CLOUDNESS_DATABASE_USER"`
Password string `envconfig:"CLOUDNESS_DATABASE_PASSWORD"`
SSLMode string `envconfig:"CLOUDNESS_DATABASE_SSL_MODE"`
}
PubSub struct {
Provider pubsub.Provider `envconfig:"CLOUDNESS_PUBSUB_PROVIDER" default:"inmemory"`
AppNamespace string `envconfig:"CLOUDNESS_PUBSUB_APP_NAMESPACE" default:"cloudness"`
DefaultNamespace string `envconfig:"CLOUDNESS_PUBSUB_DEFAULT_NAMESPACE" default:"default"`
HealthInterval time.Duration `envconfig:"CLOUDNESS_PUBSUB_HEALTH_INTERVAL" default:"3s"`
SendTimeout time.Duration `envconfig:"CLOUDNESS_PUBSUB_SEND_TIMEOUT" default:"60s"`
ChannelSize int `envconfig:"CLOUDNESS_PUBSUB_CHANNEL_SIZE" default:"100"`
}
// Server defines the server configuration parameters.
Server struct {
// HTTP defines the http configuration parameters
HTTP struct {
Port int `envconfig:"CLOUDNESS_HTTP_PORT" default:"8000"`
Proto string `envconfig:"CLOUDNESS_HTTP_PROTO" default:"http"`
}
// Acme defines Acme configuration parameters.
Acme struct {
Enabled bool `envconfig:"CLOUDNESS_ACME_ENABLED"`
Endpont string `envconfig:"CLOUDNESS_ACME_ENDPOINT"`
Email bool `envconfig:"CLOUDNESS_ACME_EMAIL"`
Host string `envconfig:"CLOUDNESS_ACME_HOST"`
}
}
// Cors defines http cors parameters
Cors struct {
AllowedOrigins []string `envconfig:"CLOUDNESS_CORS_ALLOWED_ORIGINS" default:"*"`
AllowedMethods []string `envconfig:"CLOUDNESS_CORS_ALLOWED_METHODS" default:"GET,POST,PATCH,PUT,DELETE,OPTIONS"`
AllowedHeaders []string `` //nolint:lll // struct tags can't be multiline
/* 158-byte string literal not displayed */
ExposedHeaders []string `envconfig:"CLOUDNESS_CORS_EXPOSED_HEADERS" default:"Link"`
AllowCredentials bool `envconfig:"CLOUDNESS_CORS_ALLOW_CREDENTIALS" default:"true"`
MaxAge int `envconfig:"CLOUDNESS_CORS_MAX_AGE" default:"300"`
}
Redis struct {
Endpoint string `envconfig:"CLOUDNESS_REDIS_ENDPOINT" default:"localhost:6379"`
MaxRetries int `envconfig:"CLOUDNESS_REDIS_MAX_RETRIES" default:"3"`
MinIdleConnections int `envconfig:"CLOUDNESS_REDIS_MIN_IDLE_CONNECTIONS" default:"0"`
Username string `envconfig:"CLOUDNESS_REDIS_USERNAME"`
Password string `envconfig:"CLOUDNESS_REDIS_PASSWORD"`
}
// Secure defines http security parameters.
Secure struct {
AllowedHosts []string `envconfig:"CLOUDNESS_HTTP_ALLOWED_HOSTS"`
HostsProxyHeaders []string `envconfig:"CLOUDNESS_HTTP_PROXY_HEADERS"`
SSLRedirect bool `envconfig:"CLOUDNESS_HTTP_SSL_REDIRECT"`
SSLTemporaryRedirect bool `envconfig:"CLOUDNESS_HTTP_SSL_TEMPORARY_REDIRECT"`
SSLHost string `envconfig:"CLOUDNESS_HTTP_SSL_HOST"`
SSLProxyHeaders map[string]string `envconfig:"CLOUDNESS_HTTP_SSL_PROXY_HEADERS"`
STSSeconds int64 `envconfig:"CLOUDNESS_HTTP_STS_SECONDS"`
STSIncludeSubdomains bool `envconfig:"CLOUDNESS_HTTP_STS_INCLUDE_SUBDOMAINS"`
STSPreload bool `envconfig:"CLOUDNESS_HTTP_STS_PRELOAD"`
ForceSTSHeader bool `envconfig:"CLOUDNESS_HTTP_STS_FORCE_HEADER"`
BrowserXSSFilter bool `envconfig:"CLOUDNESS_HTTP_BROWSER_XSS_FILTER" default:"true"`
FrameDeny bool `envconfig:"CLOUDNESS_HTTP_FRAME_DENY" default:"true"`
ContentTypeNosniff bool `envconfig:"CLOUDNESS_HTTP_CONTENT_TYPE_NO_SNIFF"`
ContentSecurityPolicy string `envconfig:"CLOUDNESS_HTTP_CONTENT_SECURITY_POLICY"`
ReferrerPolicy string `envconfig:"CLOUDNESS_HTTP_REFERRER_POLICY"`
}
// Github provides the github client configuration.
Github struct {
ClientId string `envconfig:"CLOUDNESS_SCM_GITHUB_CLIENT_ID"`
ClientSecret string `envconfig:"CLOUDNESS_SCM_GITHUB_CLIENT_SECRET"`
Scope []string `envconfig:"CLOUDNESS_SCM_GITHUB_SCOPE" default:"repo,repo:status,user:email,read:org"`
Debug bool `envconfig:"CLOUDNESS_SCM_GITHUB_DEBUG"`
}
Lock struct {
// Provider is a name of distributed lock service like redis, memory, file etc...
Provider lock.Provider `envconfig:"CLOUDNESS_LOCK_PROVIDER" default:"inmemory"`
Expiry time.Duration `envconfig:"CLOUDNESS_LOCK_EXPIRE" default:"8s"`
Tries int `envconfig:"CLOUDNESS_LOCK_TRIES" default:"8"`
RetryDelay time.Duration `envconfig:"CLOUDNESS_LOCK_RETRY_DELAY" default:"250ms"`
DriftFactor float64 `envconfig:"CLOUDNESS_LOCK_DRIFT_FACTOR" default:"0.01"`
TimeoutFactor float64 `envconfig:"CLOUDNESS_LOCK_TIMEOUT_FACTOR" default:"0.25"`
// AppNamespace is just service app prefix to avoid conflicts on key definition
AppNamespace string `envconfig:"CLOUDNESS_LOCK_APP_NAMESPACE" default:"cloudness"`
// DefaultNamespace is when mutex doesn't specify custom namespace for their keys
DefaultNamespace string `envconfig:"CLOUDNESS_LOCK_DEFAULT_NAMESPACE" default:"default"`
}
}
Config stores the system configuration.
type CreatedFilter ¶
type DeployConfiguration ¶
type DeployConfiguration struct {
StartCommand string `json:"startCommand,omitempty" yaml:"startCommand,omitempty" mapstructure:"startCommand"`
SleepApplication bool `json:"sleepApplication" yaml:"sleepApplication" mapstructure:"sleepApplication"`
MaxReplicas int64 `json:"maxReplicas" yaml:"maxReplicas" mapstructure:"maxReplicas"`
CPU int64 `json:"cpu" yaml:"cpu" mapstructure:"cpu"`
Memory float64 `json:"memory" yaml:"memory" mapstructure:"memory"`
HealthcheckPath string `json:"healthcheckPath,omitempty" yaml:"healthcheckPath" mapstructure:"healthcheckPath"`
HealthcheckTimeout int `json:"healthcheckTimeout" yaml:"healthcheckTimeout" mapstructure:"healthcheckTimeout"`
RestartPolicyType enum.RestartPolicyType `json:"restartPolicyType" yaml:"restartPolicyType" mapstructure:"restartPolicyType"`
RestartPolicyMaxRetries int `json:"restartPolicyMaxRetries" yaml:"restartPolicyMaxRetries" mapstructure:"restartPolicyMaxRetries"`
}
Deploy
type DeployInput ¶
type DeployInput struct {
StartCommand string `json:"startCommand,omitempty"`
SleepApplication bool `json:"sleepApplication,string"`
MaxReplicas int64 `json:"maxReplicas,string"`
CPU int64 `json:"cpu,string"`
Memory float64 `json:"memory,string"`
HealthcheckPath string `json:"healthcheckPath,omitempty"`
HealthcheckTimeout int `json:"healthcheckTimeout,string,omitempty"`
RestartPolicyType enum.RestartPolicyType `json:"restartPolicyType"`
RestartPolicyMaxRetries int `json:"restartPolicyMaxRetries"`
}
type Deployment ¶
type Deployment struct {
ID int64 `db:"deployment_id" json:"-"`
UID int64 `db:"deployment_uid" json:"uid"`
ApplicationID int64 `db:"deployment_application_id" json:"application_id"`
SpecJson string `db:"deployment_spec" json:"spec"`
Spec *ApplicationSpec `db:"-" json:"-"`
NeedsBuild bool `db:"deployment_needs_build" json:"needs_build"`
Triggerer string `db:"deployment_triggerer" json:"triggerer"`
Title string `db:"deployment_title" json:"title"`
Action enum.TriggerAction `db:"deployment_action" json:"action"`
Status enum.DeploymentStatus `db:"deployment_status" json:"status"`
Error string `db:"deployment_error" json:"error"`
Version int64 `db:"deployment_version" json:"version"`
Machine string `db:"deployment_machine" json:"machine,omitempty"`
Started int64 `db:"deployment_started" json:"started"`
Stopped int64 `db:"deployment_stopped" json:"stopped"`
Created int64 `db:"deployment_created" json:"created"`
Updated int64 `db:"deployment_updated" json:"updated"`
}
func (*Deployment) Fail ¶
func (d *Deployment) Fail(err error)
func (*Deployment) Finish ¶
func (d *Deployment) Finish()
func (*Deployment) IsDone ¶
func (d *Deployment) IsDone() bool
func (*Deployment) Start ¶
func (d *Deployment) Start()
type DeploymentInfo ¶
type Environment ¶
type Environment struct {
ID int64 `db:"environment_id" json:"-"`
TenantID int64 `db:"environment_tenant_id" json:"-"`
ProjectID int64 `db:"environment_project_id" json:"-"`
UID int64 `db:"environment_uid" json:"uid"`
Name string `db:"environment_name" json:"name"`
CreateBy int64 `db:"environment_created_by" json:"-"`
Created int64 `db:"environment_created" json:"created"`
Updated int64 `db:"environment_updated" json:"updated"`
Deleted *int64 `db:"environment_deleted" json:"deleted"`
}
func (*Environment) Namespace ¶
func (e *Environment) Namespace() string
type EnvironmentFilter ¶
type EnvironmentFilter struct {
ListQueryFilter
TenantID *int64 `json:"tenant_id,omitempty"`
ProjectID *int64 `json:"project_id,omitempty"`
Sort enum.EnvironmentAttr `json:"sort"`
Order enum.Order `json:"order"`
DeletedAt *int64 `json:"deleted_at,omitempty"`
DeletedBeforeOrAt *int64 `json:"deleted_before_or_at,omitempty"`
}
EnvironmentFilter stores projects query parameters.
type FavoriteDTO ¶
type FavoriteDTO struct {
ProjectUID int64 `json:"project_uid"`
ProjectName string `json:"project_name"`
EnvironmentUID int64 `json:"environment_uid"`
EnvironmentName string `json:"environment_name"`
ApplicationUID int64 `json:"application_uid"`
AppName string `json:"app_name"`
AppDomain string `json:"app_domain"`
}
type GeneralInput ¶
type GeneralInput struct {
Icon string `json:"icon"`
Name string `json:"name"`
Description string `json:"description"`
Type enum.ApplicationType `json:"type"`
}
type GitInput ¶
type GitInput struct {
RepoURL string `json:"repoURL"`
Repo string `json:"repo"`
Branch string `json:"branch"`
Commit string `json:"commit"`
CommitMsg string `json:"commitMsg"`
Builder enum.BuilderType `json:"builder"`
BasePath string `json:"basePath"`
IsStaticSite bool `json:"isStaticSite,string"`
PublishPath string `json:"publishPath"`
Dockerfile string `json:"dockerfile"`
BuildCommand string `json:"buildCommand,omitempty"`
}
type GitSource ¶
type GitSource struct {
RepoURL string `json:"repoURL" yaml:"repoURL" mapstructure:"repoURL"`
Branch string `json:"branch" yaml:"branch" mapstructure:"branch"`
Commit string `json:"commit" yaml:"commit" mapstructure:"commit"`
Builder enum.BuilderType `json:"builder" yaml:"builder" mapstructure:"builder"`
BasePath string `json:"basePath" yaml:"basePath" mapstructure:"basePath"`
IsStaticSite bool `json:"isStaticSite,string" yaml:"isStaticSite" mapstructure:"isStaticSite"`
PublishPath string `json:"publishPath" yaml:"publishPath" mapstructure:"publishPath"`
Dockerfile string `json:"dockerfile,omitempty" yaml:"dockerfile,omitempty" mapstructure:"dockerfile"`
BuildCommand string `json:"buildCommand,omitempty" yaml:"buildCommand,omitempty" mapstructure:"buildCommand"`
}
type GithubApp ¶
type GithubApp struct {
ID int64 `db:"github_app_id" json:"-"`
UID int64 `db:"github_app_uid" json:"uid"`
TenantID int64 `db:"github_app_tenant_id" json:"-"`
ProjectID int64 `db:"github_app_project_id" json:"-"`
PrivateKeyID int64 `db:"github_app_private_key_id" json:"private_key_id"`
IsTenantWide bool `db:"github_app_is_tenant_wide" json:"is_tenant_wide"`
Name string `db:"github_app_name" json:"name"`
Organization string `db:"github_app_organization" json:"organization"`
ApiUrl string `db:"github_app_api_url" json:"api_url"`
HtmlUrl string `db:"github_app_html_url" json:"html_url"`
CustomUser string `db:"github_app_custom_user" json:"custom_user"`
CustomPort int64 `db:"github_app_custom_port" json:"custom_port"`
AppID int64 `db:"github_app_app_id" json:"app_id"`
InstallationID int64 `db:"github_app_installation_id" json:"installation_id"`
ClientID string `db:"github_app_client_id" json:"client_id"`
ClientSecret string `db:"github_app_client_secret" json:"client_secret"`
WebhookSecret string `db:"github_app_webhook_secret" json:"webhook_secret"`
CreateBy int64 `db:"github_app_created_by" json:"-"`
Created int64 `db:"github_app_created" json:"created"`
Updated int64 `db:"github_app_updated" json:"updated"`
}
type Instance ¶
type Instance struct {
ID int64 `db:"instance_id" json:"-"`
SuperAdmin *int64 `db:"instance_super_admin" json:"-"`
PublicIPV4 string `db:"instance_public_ipv4" json:"public_ipv4"`
PublicIPV6 string `db:"instance_public_ipv6" json:"public_ipv6"`
UpdateEnabled bool `db:"instance_update_enabled" json:"update_enabled,string"`
UpdateCheckFrequency string `db:"instance_update_check_frequency" json:"update_check_frequency"`
FQDN string `db:"instance_fqdn" json:"fqdn"`
DNSValidationEnabled bool `db:"instance_dns_validation_enabled" json:"dns_validation_enabled,string"`
DNSServers string `db:"instance_dns_servers" json:"dns_servers"`
DNSProvider enum.DNSProvider `db:"instance_dns_provider" json:"dns_provider"`
DNSProviderAuth string `db:"instance_dns_provider_auth" json:"-"`
UserSignupEnabled bool `db:"instance_user_signup_enabled" json:"user_signup_enabled,string"`
DemoUserEnabled bool `db:"instance_demo_user_enabled" json:"demo_user_enabled,string"`
RegistryEnabled bool `db:"instance_registry_enabled" json:"registry_enabled,string"`
RegistrySize int64 `db:"instance_registry_size" json:"registry_size,string"`
RegistryMirrorEnabled bool `db:"instance_registry_mirror_enabled" json:"registry_mirror_enabled,string"`
RegistryMirrorSize int64 `db:"instance_registry_mirror_size" json:"registry_mirror_size"`
ExternalScripts string `db:"instance_external_scripts" json:"external_scripts"`
AdditionalScripts string `db:"instance_additional_scripts" json:"additional_scripts"`
Created int64 `db:"instance_created" json:"-"`
Updated int64 `db:"instance_updated" json:"-"`
}
func (*Instance) GetHttpDomain ¶
GetHttpDomain returns the http domain for this instance
type InstanceRestrictions ¶
type InstanceRestrictions struct {
AllowNewTenant bool
}
type KubeServerConfig ¶
type KubeServerConfig struct {
DefaultVolumeSupportsOnlineExpansion bool `envconfig:"CLOUDNESS_KUBE_UNMOUNT_BEFORE_RESIZE" default:"true"`
}
type ListQueryFilter ¶
type ListQueryFilter struct {
Pagination
Query string `json:"query"`
}
ListQueryFilter has pagination related info and a query param.
type LogLine ¶
type LogLine struct {
Number int `json:"pos"`
Message string `json:"out"`
Timestamp int64 `json:"time"`
}
LogLine represents a line in the logs.
type Logs ¶
type Logs struct {
ID int64 `db:"log_id" json:"id"`
DeploymentID int64 `db:"log_deployment_id" json:"deployment_id"`
Data []byte `db:"log_data" json:"data"`
}
Logs represets the full logs of a deployment.
type Netrc ¶
type Netrc struct {
Machine string `json:"machine"`
Login string `json:"login"`
Password string `json:"password"`
HttpUrl string `json:"http_url"`
}
func (*Netrc) SetMachine ¶
SetMachine sets the netrc machine from a URL value.
type NetworkConfiguration ¶
type NetworkConfiguration struct {
ContainerPorts []int `json:"containerPorts" yaml:"containerPorts" mapstructure:"containerPorts"`
ServiceDomain *ServiceDomainConfiguraiton `json:"serviceDomain" yaml:"serviceDomain" mapstructure:"serviceDomain"`
TCPProxies *TCPProxiesConfiguration `json:"tcpProxies" yaml:"tcpProxies" mapstructure:"tcpProxies"`
}
type NetworkInput ¶
type NetworkInput struct {
ContainerPorts []string `json:"containerPorts"`
*ServiceDomainInput
*TCPProxiesInput
}
type OauthLoginResponse ¶
type OauthLoginResponse struct {
LoginUrl string `json:"login_url"`
}
TokenResponse is returned as part of token creation for PAT / SAT / User Session.
type Pagination ¶
Pagination stores pagination related params.
type PermissionCheck ¶
type PermissionCheck struct {
Scope Scope
Resource Resource
Permission enum.Permission
}
PermissionCheck represents a permission check.
type Principal ¶
type Principal struct {
ID int64 `db:"principal_id" json:"-"`
UID string `db:"principal_uid" json:"uid"`
Email string `db:"principal_email" json:"email"`
Type enum.PrincipalType `db:"principal_type" json:"type"`
DisplayName string `db:"principal_display_name" json:"display_name"`
// Should be part of principal or not?
Blocked bool `db:"principal_blocked" json:"blocked"`
Password string `db:"principal_user_password" json:"-"`
Salt string `db:"principal_salt" json:"-"`
// Other info
Created int64 `db:"principal_created" json:"created"`
Updated int64 `db:"principal_updated" json:"updated"`
}
Principal represents the identity of an acting entity (User, ServiceAccount, Service).
func (*Principal) ToPrincipalInfo ¶
func (p *Principal) ToPrincipalInfo() *PrincipalInfo
type PrincipalFilter ¶
type PrincipalFilter struct {
Page int `json:"page"`
Size int `json:"size"`
Query string `json:"query"`
Types []enum.PrincipalType `json:"types"`
}
type PrincipalInfo ¶
type PrincipalInfo struct {
ID int64 `json:"id"`
UID string `json:"uid"`
DisplayName string `json:"display_name"`
Email string `json:"email"`
Type enum.PrincipalType `json:"type"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
}
PrincipalInfo is a compressed representation of a principal we return as part of non-principal APIs.
func (*PrincipalInfo) Identifier ¶
func (p *PrincipalInfo) Identifier() int64
type PrivateKey ¶
type PrivateKey struct {
ID int64 `db:"private_key_id" json:"-"`
UID int64 `db:"private_key_uid" json:"uid"`
TenantID int64 `db:"private_key_tenant_id" json:"-"`
Name string `db:"private_key_name" json:"name"`
Description string `db:"private_key_description" json:"description"`
Key string `db:"private_key_pem" json:"-"`
IsGit bool `db:"private_key_is_git" json:"is_git"`
Created int64 `db:"private_key_created" json:"created"`
Updated int64 `db:"private_key_updated" json:"updated"`
}
type Project ¶
type Project struct {
ID int64 `db:"project_id" json:"-"`
TenantID int64 `db:"project_tenant_id" json:"-"`
UID int64 `db:"project_uid" json:"uid"`
Name string `db:"project_name" json:"name"`
Description string `db:"project_description" json:"description"`
CreateBy int64 `db:"project_created_by" json:"-"`
Created int64 `db:"project_created" json:"created"`
Updated int64 `db:"project_updated" json:"updated"`
Deleted *int64 `db:"project_deleted" json:"deleted"`
}
type ProjectFilter ¶
type ProjectFilter struct {
ListQueryFilter
TenantID *int64 `json:"tenant_id,omitempty"`
PrincipalID *int64 `json:"principal_id,omitempty"`
Sort enum.ProjectAttr `json:"sort"`
Order enum.Order `json:"order"`
DeletedAt *int64 `json:"deleted_at,omitempty"`
DeletedBeforeOrAt *int64 `json:"deleted_before_or_at,omitempty"`
}
ProjectFilter stores projects query parameters.
type ProjectMembership ¶
type ProjectMembership struct {
*ProjectMembershipKey
CreatedBy int64 `json:"-"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
}
type ProjectMembershipKey ¶
type ProjectMembershipUser ¶
type ProjectMembershipUser struct {
*ProjectMembership
DisplayName string `json:"display_name"`
Email string `json:"email"`
}
type RegistryInput ¶
type RegistryInput struct {
Image string `json:"image"`
*NetworkInput
}
type RegistrySource ¶
type Resource ¶
type Resource struct {
Type enum.ResourceType
Identifier string
}
Resource represents the resource of a permission check. Note: Keep the name empty in case access is requested for all resources of that type.
type RunnerConfig ¶
type Scope ¶
Scope represents the scope of a permission check Notes:
- In case the permission check is for resource App, keep app empty (app is resource, not scope)
- In case the permission check is for resource Tenant, Tenant is an ancestor of the tenant (tenant is resource, not scope)
- App isn't use as of now (will be useful once we add access control for app child resources, e.g. branches).
type Server ¶
type Server struct {
ID int64 `db:"server_id" json:"-"`
UID int64 `db:"server_uid" json:"uid"`
Type enum.ServerType `db:"server_type" json:"type"`
Name string `db:"server_name" json:"name"`
Description string `db:"server_description" json:"description"`
IPV4 string `db:"server_ipv4" json:"ipv4"`
IPV6 string `db:"server_ipv6" json:"ipv6"`
WildCardDomain string `db:"server_wildcard_domain" json:"wildcard_domain"`
DNSProvider enum.DNSProvider `db:"server_dns_provider" json:"dns_provider"`
DNSProviderAuth string `db:"server_dns_provider_auth" json:"-"`
User string `db:"server_user" json:"user"`
Port int64 `db:"server_port" json:"port"`
VolumeSupportsOnlineExpansion bool `db:"server_volume_supports_online_expansion" json:"volume_supports_online_expansion"`
VolumeMinSize int64 `db:"server_volume_min_size" json:"volume_min_size"`
BuildEnabled bool `db:"server_builder_is_enabled" json:"build_enabled"`
IsBuildServer bool `db:"server_builder_is_build_server" json:"is_build_server"`
PollingInterval int64 `db:"server_builder_polling_interval" json:"polling_interval"`
MaxConcurrentBuilds int64 `db:"server_builder_max_concurrent_builds" json:"max_concurrent_builds"`
MaxCPUPerBuild float64 `db:"server_builder_max_cpu" json:"max_cpu_per_build"`
MaxMemoryPerBuild float64 `db:"server_builder_max_memory" json:"max_memory_per_build"`
Created int64 `db:"server_created" json:"created"`
Updated int64 `db:"server_updated" json:"updated"`
}
func (*Server) GetDomain ¶
func (s *Server) GetDomain() (*ServerDomain, error)
type ServerDomain ¶
type ServerRestrictions ¶
type ServerRestrictions struct {
UnmountBeforeResize bool `json:"unmount_before_resize,string"`
}
type ServerState ¶
type ServerState struct {
VolumeAllowsOnlineExpansion bool
}
type ServiceDomainInput ¶
type ServiceDomainInput struct {
Enabled bool `json:"serviceDomainEnabled"`
FQDN string `json:"serviceDomainFQDN"`
Scheme string `json:"serviceDomainScheme"`
Subdomain string `json:"serviceDomainSubdomain"`
Domain string `json:"serviceDomainDomain"`
Port int `json:"serviceDomainPort,string"`
Path string `json:"serviceDomainPath"`
}
type Source ¶
type Source struct {
Git *GitSource `json:"git,omitempty" yaml:"git,omitempty" mapstructure:"git"`
Registry *RegistrySource `json:"registry,omitempty" yaml:"registry,omitempty" mapstructure:"registry"`
}
type SystemVariable ¶
type TCPProxiesConfiguration ¶
type TCPProxiesConfiguration struct {
TCPPort int `json:"tcpPort" yaml:"tcpPort" mapstructure:"tcpPort"`
}
type TCPProxiesInput ¶
type Template ¶
type Template struct {
ID int64 `db:"template_id" json:"-"`
Slug string `db:"template_slug" json:"slug"`
Name string `db:"template_name" json:"name"`
Icon string `db:"template_icon" json:"icon"`
ReadMe string `db:"template_readme" json:"readme"`
Tags string `db:"template_tags" json:"tags"`
Spec *TemplateSpec `db:"-" json:"spec"`
SpecJson string `db:"template_spec" json:"-"`
Created int64 `db:"template_created" json:"created"`
}
type TemplateService ¶
type TemplateService struct {
Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`
Name string `json:"name" yaml:"name"`
Build *BuildConfiguration `json:"build,omitempty" yaml:"build,omitempty" mapstructure:"build"`
Deploy *DeployConfiguration `json:"deploy,omitempty" yaml:"deploy,omitempty" mapstructure:"deploy"`
Networking *NetworkConfiguration `json:"networking,omitempty" yaml:"networking,omitempty" mapstructure:"networking"`
Volumes []*TemplateVolumeMounts `json:"volumes,omitempty" yaml:"volumes,omitempty" mapstructure:"volumes"`
Variables []*TemplateVariable `json:"variables,omitempty" yaml:"variables,omitempty" mapstructure:"variables"`
}
func (*TemplateService) ToVolumeMounts ¶
func (s *TemplateService) ToVolumeMounts() []*VolumeMounts
type TemplateSpec ¶
type TemplateSpec struct {
Icon string `json:"icon,omitempty" yaml:"icon,omitempty"`
Name string `json:"name" yaml:"name"`
Readme string `json:"readme,omitempty" yaml:"readme,omitempty"`
Tags []string `json:"tags,omitempty" yaml:"tags,omitempty"`
Services []*TemplateService `json:"services" yaml:"services"`
}
func (*TemplateSpec) ToTemplate ¶
func (t *TemplateSpec) ToTemplate() (*Template, error)
type TemplateTag ¶
type TemplateVariable ¶
type TemplateVariable struct {
Key string `json:"key" yaml:"key"`
Value string `json:"value" yaml:"value"`
Type enum.VariableType `json:"type" yaml:"type"`
}
type TemplateVolumeMounts ¶
type Tenant ¶
type Tenant struct {
ID int64 `db:"tenant_id" json:"-"`
UID int64 `db:"tenant_uid" json:"uid"`
Name string `db:"tenant_name" json:"name"`
Description string `db:"tenant_description" json:"description"`
AllowAdminToModify bool `db:"tenant_allow_admin_to_modify" json:"allow_admin_to_modify"`
MaxProjects int64 `db:"tenant_max_projects" json:"max_projects"`
MaxApps int64 `db:"tenant_max_apps" json:"max_apps"`
MaxInstances int64 `db:"tenant_max_instances" json:"max_instances"`
MaxCPUPerApp int64 `db:"tenant_max_cpu_per_app" json:"max_cpu_per_app"`
MaxMemoryPerApp float64 `db:"tenant_max_memory_per_app" json:"max_memory_per_app"`
MaxVolumes int64 `db:"tenant_max_volumes" json:"max_volumes"`
MinVolumeSize int64 `db:"tenant_min_volume_size" json:"min_volume_size"`
MaxVolumeSize int64 `db:"tenant_max_volume_size" json:"max_volume_size"`
CreateBy int64 `db:"tenant_created_by" json:"-"`
Created int64 `db:"tenant_created" json:"created"`
Updated int64 `db:"tenant_updated" json:"updated"`
Deleted *int64 `db:"tenant_deleted" json:"deleted"`
}
type TenantConfig ¶
type TenantConfig struct {
DefaultTenantName string `envconfig:"CLOUDNESS_TENANT_DEFAULT_NAME" default:"root"`
DefaultAllowAdminToModify bool `envconfig:"CLOUDNESS_TENANT_ALLOW_ADMIN_TO_MODIFY" default:"false"`
DefaultMaxProjectsPerTenant int64 `envconfig:"CLOUDNESS_TENANT_MAX_PROJECTS" default:"10"`
DefaultMaxApplicationsPerTenant int64 `envconfig:"CLOUDNESS_TENANT_MAX_APPLICATIONS" default:"10"`
DefaultMaxInstancesPerApplication int64 `envconfig:"CLOUDNESS_TENANT_MAX_INSTANCES" default:"2"`
DefaultMaxCPUPerApplication int64 `envconfig:"CLOUDNESS_TENANT_MAX_CPU" default:"2"`
DefaultMaxMemoryPerApplication float64 `envconfig:"CLOUDNESS_TENANT_MAX_MEMORY" default:"2"`
DefaultMaxVolumeCount int64 `envconfig:"CLOUDNESS_TENANT_MAX_VOLUME_COUNT" default:"10"`
DefaultMinVolumeSize int64 `envconfig:"CLOUDNESS_TENANT_MIN_VOLUME_SIZE" default:"1"`
DefaultMaxVolumeSize int64 `envconfig:"CLOUDNESS_TENANT_MAX_VOLUME_SIZE" default:"10"`
}
type TenantFilter ¶
type TenantFilter struct {
ListQueryFilter
Sort enum.TenantAttr `json:"sort"`
Order enum.Order `json:"order"`
DeletedAt *int64 `json:"deleted_at,omitempty"`
DeletedBeforeOrAt *int64 `json:"deleted_before_or_at,omitempty"`
}
TenantFilter stores projects query parameters.
type TenantMembership ¶
type TenantMembership struct {
*TenantMembershipKey
CreatedBy int64 `json:"-"`
Created int64 `json:"created"`
Updated int64 `json:"updated"`
}
type TenantMembershipKey ¶
type TenantMembershipUser ¶
type TenantMembershipUser struct {
*TenantMembership
DisplayName string `json:"display_name"`
Email string `json:"email"`
}
type TenantRestrictions ¶
type TenantRestrictions struct {
AllowAdminToModify bool `json:"allow_admin,string"`
MaxProjects int64 `json:"max_projects,string"`
MaxApps int64 `json:"max_apps,string"`
MaxInstances int64 `json:"max_instances,string"`
MaxCPU int64 `json:"max_cpu,string"`
MaxMemory float64 `json:"max_memory,string"`
MaxVolumes int64 `json:"max_volumes,string"`
MinVolumeSize int64 `json:"min_volume_size,string"`
MaxVolumeSize int64 `json:"max_volume_size,string"`
}
type Token ¶
type Token struct {
// TODO: int64 ID doesn't match DB
ID int64 `db:"token_id" json:"-"`
PrincipalID int64 `db:"token_principal_id" json:"principal_id"`
Type enum.TokenType `db:"token_type" json:"type"`
Identifier string `db:"token_uid" json:"identifier"`
// ExpiresAt is an optional unix time that if specified restricts the validity of a token.
ExpiresAt *int64 `db:"token_expires_at" json:"expires_at,omitempty"`
// IssuedAt is the unix time at which the token was issued.
IssuedAt int64 `db:"token_issued_at" json:"issued_at"`
CreatedBy int64 `db:"token_created_by" json:"created_by"`
}
Represents server side infos stored for tokens we distribute.
type TokenResponse ¶
TokenResponse is returned as part of token creation for PAT / SAT / User Session.
type UpdatedFilter ¶
type User ¶
type User struct {
// Fields from user
ID int64 `db:"principal_id" json:"-"`
UID string `db:"principal_uid" json:"uid"`
Email string `db:"principal_email" json:"email"`
DisplayName string `db:"principal_display_name" json:"display_name"`
AvatarUrl string `db:"principal_avatar_url" json:"avatar_url"`
Blocked bool `db:"principal_blocked" json:"blocked"`
Password string `db:"principal_user_password" json:"-"`
Salt string `db:"principal_salt" json:"-"`
Created int64 `db:"principal_created" json:"created"`
Updated int64 `db:"principal_updated" json:"updated"`
}
User is a user representing an end user.
func (*User) ToPrincipal ¶
func (*User) ToPrincipalInfo ¶
func (u *User) ToPrincipalInfo() *PrincipalInfo
type UserVariable ¶
type Variable ¶
type Variable struct {
UID int64 `db:"variable_uid" json:"uid"`
EnvironmentID int64 `db:"variable_environment_id" json:"-"`
ApplicationID int64 `db:"variable_application_id" json:"-"`
ApplicationName string `db:"application_name" json:"application_name"`
Key string `db:"variable_key" json:"key"`
Value string `db:"variable_value" json:"value"`
TextValue string `db:"variable_text_value" json:"text_value"`
Type enum.VariableType `db:"variable_type" json:"type"`
Created int64 `db:"variable_created" json:"created"`
Updated int64 `db:"variable_updated" json:"updated"`
}
type VariableDTO ¶
type VariableDTO struct {
SystemVariable []*SystemVariable
UserVariable []*UserVariable
}
DTO to render frontend
type Volume ¶
type Volume struct {
ID int64 `db:"volume_id" json:"-"`
UID int64 `db:"volume_uid" json:"uid"`
TenantID int64 `db:"volume_tenant_id" json:"-"`
ProjectID int64 `db:"volume_project_id" json:"-"`
EnvironmentID int64 `db:"volume_environment_id" json:"-"`
EnvironmentUID int64 `db:"volume_environment_uid" json:"environment_uid"`
ServerID int64 `db:"volume_server_id" json:"-"`
ApplicaitonID *int64 `db:"volume_application_id" json:"application_id"`
Name string `db:"volume_name" json:"name"`
MountPath string `db:"volume_mount_path" json:"mount_path"`
HostPath string `db:"volume_host_path" json:"host_path"`
Size int64 `db:"volume_size" json:"size"`
Created int64 `db:"volume_created" json:"created"`
Updated int64 `db:"volume_updated" json:"updated"`
Deleted *int64 `db:"volume_deleted" json:"deleted"`
}
func (*Volume) FromInput ¶
func (v *Volume) FromInput(in *VolumeCreateInput)
func (*Volume) ToInput ¶
func (v *Volume) ToInput() *VolumeCreateInput
type VolumeCreateInput ¶
type VolumeCreateInput struct {
Name string `json:"name"`
MountPath string `json:"mountPath"`
Size int64 `json:"size,string"`
Server *Server `json:"-"`
}
input
type VolumeFilter ¶
type VolumeFilter struct {
ListQueryFilter
TenantID *int64 `json:"tenant_id,omitempty"`
ProjectID *int64 `json:"project_id,omitempty"`
EnvironmentID *int64 `json:"environment_id,omitempty"`
ApplicationID *int64 `json:"application_id,omitempty"`
ServerID *int64 `json:"server_id,omitempty"`
Sort enum.VolumeAttr `json:"sort"`
Order enum.Order `json:"order"`
DeletedAt *int64 `json:"deleted_at,omitempty"`
DeletedBeforeOrAt *int64 `json:"deleted_before_or_at,omitempty"`
}
type VolumeInput ¶
type VolumeInput struct {
VolumesRaw string `json:"volumesJson"`
Volumes []*VolumeMounts `json:"volumes"`
}
func (*VolumeInput) DecodeVolumes ¶
func (v *VolumeInput) DecodeVolumes() error
type VolumeMounts ¶
type VolumeMounts struct {
VolumeName string `json:"volumeName" yaml:"volumeName" mapstructure:"volumeName"`
VolumeSize int64 `json:"volumeSize" yaml:"volumeSize" mapstructure:"volumeSize"`
MountPath string `json:"mountPath" yaml:"mountPath" mapstructure:"mountPath"`
}
Volumemounts
type VolumeRestriction ¶
Source Files
¶
- application.go
- application_input.go
- application_spec.go
- application_spec_mapper.go
- artifact.go
- auth_settings.go
- authz.go
- certificate.go
- config.go
- deployments.go
- environment.go
- favorite.go
- git.go
- github_app.go
- helpers.go
- instance.go
- list_filters.go
- log.go
- netrc.go
- oauth.go
- pagination.go
- path.go
- principal.go
- private_key.go
- project.go
- project_membership.go
- restriciton.go
- runner_config.go
- server.go
- server_state.go
- stream.go
- template.go
- template_spec.go
- template_spec_mapper.go
- template_tag.go
- tenant.go
- tenant_membership.go
- token.go
- user.go
- variable.go
- volume.go