Documentation
¶
Overview ¶
Package storage implements storage backends for objects in portal - Accounts, Sites and others these implementations are supposed to be dumb - no business logic just storage logic should be handled to keep the backend implementations small.
Index ¶
- Constants
- Variables
- func CanonicalKind(kind string) string
- func CheckUserToken(s string) error
- func ClusterAdminAgent(clusterName string) string
- func ClusterAgent(cluster string) string
- func DeepComparePhases(c *check.C, expected, actual OperationPhase)
- func DisableAccess(backend Backend, name string, delay time.Duration) error
- func Encode(resources []UnknownResource, w io.Writer) error
- func GetAlertSchema() string
- func GetAlertTargetSchema() string
- func GetAllowedLogins(currentUser *user.User) []string
- func GetAuthGatewaySchema() string
- func GetClusterSchema() string
- func GetEndpointsSchema() string
- func GetEnvironmentSpecSchema() string
- func GetLocalPackage(backend Backend) (*loc.Locator, error)
- func GetLogForwarderSchema() string
- func GetOperationSchema() string
- func GetPersistentStorageSchema() string
- func GetReleaseSchema() string
- func GetRepositorySchema() string
- func GetSMTPConfigSchema() string
- func GetSystemInfoSchema() string
- func GetTLSKeyPairSchema() string
- func GetTokenSchema() string
- func Hostnames(servers []Server) (hostnames []string)
- func IsValidOperationPhaseState(state string) bool
- func MarshalAlert(alert Alert, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalAlertTarget(target AlertTarget, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalAuthGateway(gw AuthGateway, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalCluster(cluster Cluster, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalEndpoints(endpoints Endpoints, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalEnvironment(env EnvironmentVariables, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalOperation(operation Operation, opts ...services.MarshalOption) ([]byte, error)
- func MarshalPersistentStorage(ps PersistentStorage, opts ...services.MarshalOption) ([]byte, error)
- func MarshalRelease(release Release, opts ...services.MarshalOption) ([]byte, error)
- func MarshalRepository(r Repository, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalSMTPConfig(config SMTPConfig, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalSystemInfo(info System, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalTLSKeyPair(keyPair TLSKeyPair, opts ...teleservices.MarshalOption) ([]byte, error)
- func MarshalTrustedCluster(cluster teleservices.TrustedCluster) ([]byte, error)
- func MarshalUser(u teleservices.User, opts ...teleservices.MarshalOption) ([]byte, error)
- func NewGithubConnector(name string, spec teleservices.GithubConnectorSpecV3) *teleservices.GithubConnectorV3
- func NewOIDCConnector(name string, spec teleservices.OIDCConnectorSpecV2) *teleservices.OIDCConnectorV2
- func NewSAMLConnector(name string, spec teleservices.SAMLConnectorSpecV2) *teleservices.SAMLConnectorV2
- func UpsertCluster(backend Backend, cluster Site) error
- func UpsertOperation(backend Backend, operation SiteOperation) error
- type APIKey
- type APIKeys
- type AWSVariables
- type Account
- type Accounts
- type AgentProfile
- type Alert
- type AlertSpecV2
- type AlertTarget
- type AlertTargetSpecV2
- type AlertTargetV2
- type AlertV2
- func (r *AlertV2) CheckAndSetDefaults() error
- func (r *AlertV2) GetAlertName() string
- func (r *AlertV2) GetAnnotations() map[string]string
- func (r *AlertV2) GetDelay() time.Duration
- func (r *AlertV2) GetFormula() string
- func (r *AlertV2) GetGroupName() string
- func (r *AlertV2) GetLabels() map[string]string
- type App
- type AppOperation
- type AppOperations
- type AppProgressEntries
- type AppProgressEntry
- type AppSpecV2
- type AppType
- type AppV2
- func (a *AppV2) Expiry() time.Time
- func (a *AppV2) GetMetadata() teleservices.Metadata
- func (a *AppV2) GetName() string
- func (a *AppV2) GetRepository() string
- func (a *AppV2) SetExpiry(expires time.Time)
- func (a *AppV2) SetName(name string)
- func (a *AppV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type Application
- type Applications
- type AssignKubernetesGroupsExpr
- type AuthGateway
- type AuthGatewaySpecV1
- type AuthGatewayV1
- func (gw *AuthGatewayV1) ApplyTo(other AuthGateway)
- func (gw *AuthGatewayV1) ApplyToTeleportConfig(config *teleconfig.FileConfig)
- func (gw *AuthGatewayV1) CheckAndSetDefaults() error
- func (gw *AuthGatewayV1) Expiry() time.Time
- func (gw *AuthGatewayV1) GetAuthPreference() (teleservices.AuthPreference, error)
- func (gw *AuthGatewayV1) GetAuthentication() *teleservices.AuthPreferenceSpecV2
- func (gw *AuthGatewayV1) GetClientIdleTimeout() *teleservices.Duration
- func (gw *AuthGatewayV1) GetConnectionLimits() *ConnectionLimits
- func (gw *AuthGatewayV1) GetDisconnectExpiredCert() *teleservices.Bool
- func (gw *AuthGatewayV1) GetKubernetesPublicAddrs() []string
- func (gw *AuthGatewayV1) GetMaxConnections() int64
- func (gw *AuthGatewayV1) GetMaxUsers() int
- func (gw *AuthGatewayV1) GetMetadata() teleservices.Metadata
- func (gw *AuthGatewayV1) GetName() string
- func (gw *AuthGatewayV1) GetPublicAddrs() []string
- func (gw *AuthGatewayV1) GetSSHPublicAddrs() []string
- func (gw *AuthGatewayV1) GetWebPublicAddrs() (addrs []string)
- func (gw *AuthGatewayV1) PrincipalsChanged(other AuthGateway) bool
- func (gw *AuthGatewayV1) SetAuthPreference(authPreference teleservices.AuthPreference) error
- func (gw *AuthGatewayV1) SetAuthentication(value teleservices.AuthPreferenceSpecV2)
- func (gw *AuthGatewayV1) SetClientIdleTimeout(value teleservices.Duration)
- func (gw *AuthGatewayV1) SetConnectionLimits(value ConnectionLimits)
- func (gw *AuthGatewayV1) SetDisconnectExpiredCert(value teleservices.Bool)
- func (gw *AuthGatewayV1) SetExpiry(expires time.Time)
- func (gw *AuthGatewayV1) SetKubernetesPublicAddrs(value []string)
- func (gw *AuthGatewayV1) SetName(name string)
- func (gw *AuthGatewayV1) SetPublicAddrs(value []string)
- func (gw *AuthGatewayV1) SetSSHPublicAddrs(value []string)
- func (gw *AuthGatewayV1) SetTTL(clock clockwork.Clock, ttl time.Duration)
- func (gw *AuthGatewayV1) SetWebPublicAddrs(value []string)
- func (gw *AuthGatewayV1) SettingsChanged(other AuthGateway) bool
- func (gw AuthGatewayV1) String() string
- type Backend
- type Charts
- type CloudConfig
- type Cluster
- type ClusterAWSProviderSpecV2
- type ClusterConfigData
- type ClusterConfiguration
- type ClusterImport
- type ClusterNodeSpecV2
- type ClusterSpecV2
- type ClusterState
- func (s *ClusterState) ClusterNodeSpec() []ClusterNodeSpecV2
- func (s *ClusterState) FindServer(hostname string) (*Server, error)
- func (s *ClusterState) FindServerByIP(ip string) (*Server, error)
- func (s ClusterState) HasServer(hostname string) bool
- func (s *ClusterState) ProfileMap() map[string][]Server
- type ClusterV2
- func (c *ClusterV2) CheckAndSetDefaults() error
- func (c *ClusterV2) Expiry() time.Time
- func (c *ClusterV2) GetApp() string
- func (c *ClusterV2) GetLicense() string
- func (c *ClusterV2) GetMetadata() teleservices.Metadata
- func (c *ClusterV2) GetName() string
- func (c *ClusterV2) GetNodes() []ClusterNodeSpecV2
- func (c *ClusterV2) GetProvider() string
- func (c *ClusterV2) GetRegion() string
- func (c *ClusterV2) GetResources() string
- func (c *ClusterV2) GetStatus() string
- func (c *ClusterV2) SetApp(app string)
- func (c *ClusterV2) SetExpiry(expires time.Time)
- func (c *ClusterV2) SetLicense(license string)
- func (c *ClusterV2) SetName(name string)
- func (c *ClusterV2) SetResources(resources string)
- func (c *ClusterV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type ConnectionLimits
- type Connectors
- type ContainsExpr
- type DNSConfig
- type DNSOverrides
- type Device
- type DeviceName
- type DeviceType
- type Devices
- type Docker
- type DockerConfig
- type ElectionChange
- type Endpoints
- type EndpointsSpecV2
- type EndpointsV2
- func (e *EndpointsV2) CheckAndSetDefaults() error
- func (e *EndpointsV2) Expiry() time.Time
- func (e *EndpointsV2) GetAgentsAddr() string
- func (e *EndpointsV2) GetMetadata() teleservices.Metadata
- func (e *EndpointsV2) GetName() string
- func (e *EndpointsV2) GetPublicAddr() string
- func (e *EndpointsV2) SetExpiry(expires time.Time)
- func (e *EndpointsV2) SetName(name string)
- func (e *EndpointsV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type EnvironmentSpec
- type EnvironmentV1
- func (r *EnvironmentV1) CheckAndSetDefaults() error
- func (r *EnvironmentV1) Expiry() time.Time
- func (r *EnvironmentV1) GetKeyValues() map[string]string
- func (r *EnvironmentV1) GetMetadata() teleservices.Metadata
- func (r *EnvironmentV1) GetName() string
- func (r *EnvironmentV1) SetExpiry(expires time.Time)
- func (r *EnvironmentV1) SetName(name string)
- func (r *EnvironmentV1) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type EnvironmentVariables
- type EqualsExpr
- type Expr
- type Filesystem
- type FilesystemStats
- type FilesystemUsage
- type GarbageCollectOperationData
- type IdentifierExpr
- type InstallExpandOperationState
- type InstallOperationData
- type InstallToken
- type Leader
- type LegacyRoles
- type Links
- type LocalBackend
- type Locks
- type LogForwarder
- type LogForwarderMarshaler
- type LogForwarderSpecV2
- type LogForwarderV1
- type LogForwarderV2
- func (l *LogForwarderV2) CheckAndSetDefaults() error
- func (l *LogForwarderV2) Expiry() time.Time
- func (l *LogForwarderV2) GetAddress() string
- func (l *LogForwarderV2) GetMetadata() teleservices.Metadata
- func (l *LogForwarderV2) GetName() string
- func (l *LogForwarderV2) GetProtocol() string
- func (l *LogForwarderV2) SetExpiry(expires time.Time)
- func (l *LogForwarderV2) SetName(name string)
- func (l *LogForwarderV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type LoginEntries
- type LoginEntry
- type Memory
- type Migrations
- type Mount
- type NDMConfig
- func (c *NDMConfig) Apply(ps PersistentStorage)
- func (c *NDMConfig) DeviceExcludes() []string
- func (c *NDMConfig) DeviceIncludes() []string
- func (c *NDMConfig) MountExcludes() []string
- func (c *NDMConfig) SetDeviceExcludes(excludes []string)
- func (c *NDMConfig) SetDeviceIncludes(includes []string)
- func (c *NDMConfig) SetMountExcludes(excludes []string)
- func (c *NDMConfig) SetVendorExcludes(excludes []string)
- func (c *NDMConfig) SetVendorIncludes(includes []string)
- func (c *NDMConfig) ToConfigMap() (*v1.ConfigMap, error)
- func (c *NDMConfig) VendorExcludes() []string
- func (c *NDMConfig) VendorIncludes() []string
- type NDMFilter
- type NDMProbe
- type NetworkInterface
- type OSInfo
- type OSUser
- type Objects
- type OnPremVariables
- type OpenEBS
- type OpenEBSFilter
- type OpenEBSFilters
- type Operation
- type OperationExpand
- type OperationInstall
- type OperationNode
- type OperationPhase
- func (p OperationPhase) GetLastUpdateTime() time.Time
- func (p OperationPhase) GetState() string
- func (p OperationPhase) HasSubphases() bool
- func (p OperationPhase) IsCompleted() bool
- func (p OperationPhase) IsFailed() bool
- func (p OperationPhase) IsInProgress() bool
- func (p OperationPhase) IsRolledBack() bool
- func (p OperationPhase) IsUnstarted() bool
- type OperationPhaseData
- type OperationPlan
- type OperationReconfigure
- type OperationShrink
- type OperationSpecV2
- type OperationUpdateConfig
- type OperationUpdateEnviron
- type OperationUpgrade
- type OperationV2
- func (o *OperationV2) CheckAndSetDefaults() error
- func (o *OperationV2) Expiry() time.Time
- func (o *OperationV2) GetCreated() time.Time
- func (o *OperationV2) GetExpand() OperationExpand
- func (o *OperationV2) GetInstall() OperationInstall
- func (o *OperationV2) GetMetadata() services.Metadata
- func (o *OperationV2) GetName() string
- func (o *OperationV2) GetReconfigure() OperationReconfigure
- func (o *OperationV2) GetShrink() OperationShrink
- func (o *OperationV2) GetState() string
- func (o *OperationV2) GetType() string
- func (o *OperationV2) GetUpdateConfig() OperationUpdateConfig
- func (o *OperationV2) GetUpdateEnviron() OperationUpdateEnviron
- func (o *OperationV2) GetUpgrade() OperationUpgrade
- func (o *OperationV2) SetExpiry(expires time.Time)
- func (o *OperationV2) SetName(id string)
- func (o *OperationV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type OperationVariables
- type OpsCenterLink
- type Package
- type PackageChangeset
- type PackageChangesets
- type PackageUpdate
- type Peer
- type Peers
- type Permission
- type Permissions
- type PersistentStorage
- type PersistentStorageSpecV1
- type PersistentStorageV1
- func (ps *PersistentStorageV1) CheckAndSetDefaults() error
- func (ps *PersistentStorageV1) Expiry() time.Time
- func (ps *PersistentStorageV1) GetDeviceExcludes() []string
- func (ps *PersistentStorageV1) GetDeviceIncludes() []string
- func (ps *PersistentStorageV1) GetMetadata() services.Metadata
- func (ps *PersistentStorageV1) GetMountExcludes() []string
- func (ps *PersistentStorageV1) GetName() string
- func (ps *PersistentStorageV1) GetVendorExcludes() []string
- func (ps *PersistentStorageV1) GetVendorIncludes() []string
- func (ps *PersistentStorageV1) SetExpiry(expires time.Time)
- func (ps *PersistentStorageV1) SetName(name string)
- func (ps *PersistentStorageV1) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type PlanChange
- type PlanChangelog
- type Process
- type ProgressEntries
- type ProgressEntry
- type ProvisioningToken
- type ProvisioningTokenType
- type PullData
- type Reason
- type ReconfigureOperationState
- type Release
- type ReleaseSpecV1
- type ReleaseStatusV1
- type ReleaseV1
- func (r *ReleaseV1) Expiry() time.Time
- func (r *ReleaseV1) GetAppVersion() string
- func (r *ReleaseV1) GetChart() string
- func (r *ReleaseV1) GetChartIcon() string
- func (r *ReleaseV1) GetChartName() string
- func (r *ReleaseV1) GetChartVersion() string
- func (r *ReleaseV1) GetLocator() loc.Locator
- func (r *ReleaseV1) GetMetadata() services.Metadata
- func (r *ReleaseV1) GetName() string
- func (r *ReleaseV1) GetNamespace() string
- func (r *ReleaseV1) GetRevision() int
- func (r *ReleaseV1) GetStatus() string
- func (r *ReleaseV1) GetUpdated() time.Time
- func (r *ReleaseV1) SetChartIcon(val string)
- func (r *ReleaseV1) SetExpiry(expires time.Time)
- func (r *ReleaseV1) SetName(name string)
- func (r *ReleaseV1) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type RemoteAccessUser
- type Repositories
- type Repository
- type RepositoryV1
- type RepositoryV2
- func (c *RepositoryV2) Expiry() time.Time
- func (c *RepositoryV2) GetMetadata() teleservices.Metadata
- func (c *RepositoryV2) GetName() string
- func (c *RepositoryV2) SetExpiry(expires time.Time)
- func (c *RepositoryV2) SetName(name string)
- func (c *RepositoryV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type ResolvConf
- type RoleSpecV2
- type RoleV2
- type RuntimePackage
- type RuntimeUpdate
- type SMTPConfig
- type SMTPConfigSpecV2
- type SMTPConfigV2
- type Server
- func (s *Server) EtcdPeerURL() string
- func (s *Server) Fields() logrus.Fields
- func (s *Server) GetKubeletLabels(profileLabels map[string]string) map[string]string
- func (s *Server) GetNodeLabels(profileLabels map[string]string) map[string]string
- func (s *Server) IsEqualTo(other Server) bool
- func (s *Server) IsMaster() bool
- func (s *Server) KubeNodeID() string
- func (s *Server) ObjectPeerID() string
- func (s *Server) StateDir() string
- func (s Server) String() string
- type ServerProfile
- type ServerProfileRequest
- type ServerUpdate
- type Servers
- type ShrinkOperationState
- type Site
- type SiteOperation
- func GetLastOperation(backend Backend) (*SiteOperation, error)
- func GetLastOperationForCluster(backend Backend, clusterName string) (*SiteOperation, error)
- func GetOperationByID(backend Backend, operationID string) (*SiteOperation, error)
- func GetOperations(backend Backend) ([]SiteOperation, error)
- func GetOperationsForCluster(backend Backend, clusterName string) ([]SiteOperation, error)
- type SiteOperations
- type Sites
- type StringExpr
- type StringsExpr
- type Subnets
- type Swap
- type System
- type SystemMetadata
- type SystemPackage
- type SystemSpecV2
- type SystemState
- type SystemV2
- func (r *SystemV2) GetDevices() Devices
- func (r *SystemV2) GetFilesystemStats() FilesystemStats
- func (r *SystemV2) GetFilesystems() []Filesystem
- func (r *SystemV2) GetHostname() string
- func (r *SystemV2) GetMemory() Memory
- func (r *SystemV2) GetNetworkInterfaces() map[string]NetworkInterface
- func (r *SystemV2) GetNumCPU() uint
- func (r *SystemV2) GetOS() OSInfo
- func (r *SystemV2) GetProcesses() []Process
- func (r *SystemV2) GetSwap() Swap
- func (r *SystemV2) GetSystemPackages() []SystemPackage
- func (r *SystemV2) GetUser() OSUser
- func (r SystemV2) String() string
- type SystemVariables
- type TLSKeyPair
- type TLSKeyPairSpecV2
- type TLSKeyPairV2
- func (t *TLSKeyPairV2) CheckAndSetDefaults() error
- func (t *TLSKeyPairV2) Expiry() time.Time
- func (t *TLSKeyPairV2) GetCert() string
- func (t *TLSKeyPairV2) GetMetadata() teleservices.Metadata
- func (t *TLSKeyPairV2) GetName() string
- func (t *TLSKeyPairV2) GetPrivateKey() string
- func (t *TLSKeyPairV2) SetExpiry(expires time.Time)
- func (t *TLSKeyPairV2) SetName(name string)
- func (t *TLSKeyPairV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- type TeleportPackage
- type TeleportUpdate
- type Token
- type TokenMarshaler
- type TokenSpecV2
- type TokenV2
- func (t *TokenV2) CheckAndSetDefaults() error
- func (t *TokenV2) Expiry() time.Time
- func (t *TokenV2) GetMetadata() teleservices.Metadata
- func (t *TokenV2) GetName() string
- func (t *TokenV2) GetUser() string
- func (t *TokenV2) SetExpiry(expires time.Time)
- func (t *TokenV2) SetName(name string)
- func (t *TokenV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- func (t *TokenV2) SetUser(username string)
- func (t *TokenV2) ToV1() *APIKey
- type Tokens
- type TrustedCluster
- func GetTrustedCluster(backend Backend) (TrustedCluster, error)
- func GetWizardTrustedCluster(backend Backend) (TrustedCluster, error)
- func NewTrustedCluster(name string, spec TrustedClusterSpecV2) TrustedCluster
- func NewTrustedClusterFromLinks(remoteLink OpsCenterLink, updateLink *OpsCenterLink) (TrustedCluster, error)
- func UnmarshalTrustedCluster(bytes []byte) (TrustedCluster, error)
- type TrustedClusterSpecV2
- type TrustedClusterV2
- func (c *TrustedClusterV2) CanChangeStateTo(t teleservices.TrustedCluster) error
- func (c *TrustedClusterV2) CheckAndSetDefaults() error
- func (c *TrustedClusterV2) CombinedMapping() teleservices.RoleMap
- func (c *TrustedClusterV2) Expiry() time.Time
- func (c *TrustedClusterV2) GetEnabled() bool
- func (c *TrustedClusterV2) GetMetadata() teleservices.Metadata
- func (c *TrustedClusterV2) GetName() string
- func (c *TrustedClusterV2) GetProxyAddress() string
- func (c *TrustedClusterV2) GetPullUpdates() bool
- func (c *TrustedClusterV2) GetRegular() bool
- func (c *TrustedClusterV2) GetReverseTunnelAddress() string
- func (c *TrustedClusterV2) GetRoleMap() teleservices.RoleMap
- func (c *TrustedClusterV2) GetRoles() []string
- func (c *TrustedClusterV2) GetSNIHost() string
- func (c *TrustedClusterV2) GetSystem() bool
- func (c *TrustedClusterV2) GetToken() string
- func (c *TrustedClusterV2) GetWizard() bool
- func (c *TrustedClusterV2) SetEnabled(enabled bool)
- func (c *TrustedClusterV2) SetExpiry(expires time.Time)
- func (c *TrustedClusterV2) SetName(name string)
- func (c *TrustedClusterV2) SetProxyAddress(addr string)
- func (c *TrustedClusterV2) SetPullUpdates(enabled bool)
- func (c *TrustedClusterV2) SetReverseTunnelAddress(addr string)
- func (c *TrustedClusterV2) SetRoleMap(m teleservices.RoleMap)
- func (c *TrustedClusterV2) SetRoles(roles []string)
- func (c *TrustedClusterV2) SetSNIHost(host string)
- func (c *TrustedClusterV2) SetSystem(system bool)
- func (c *TrustedClusterV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- func (c *TrustedClusterV2) SetToken(token string)
- func (c *TrustedClusterV2) SetWizard(wizard bool)
- func (c TrustedClusterV2) String() string
- type U2F
- type UninstallOperationState
- type UnknownResource
- type UpdateConfigOperationState
- type UpdateEnvarsOperationState
- type UpdateOperationData
- type UpdateOperationState
- type UpdateServer
- type UpdateUserReq
- type User
- type UserInvite
- type UserInvites
- type UserSpecV2
- type UserToken
- type UserTokens
- type UserV1
- type UserV2
- func (u *UserV2) AddRole(name string)
- func (u *UserV2) Check() error
- func (u *UserV2) CheckAndSetDefaults() error
- func (u *UserV2) Equals(other teleservices.User) bool
- func (u *UserV2) Expiry() time.Time
- func (u *UserV2) GetAccountID() string
- func (u *UserV2) GetClusterName() string
- func (u *UserV2) GetCreatedBy() teleservices.CreatedBy
- func (u *UserV2) GetExpiry() time.Time
- func (u *UserV2) GetFullName() string
- func (u *UserV2) GetGithubIdentities() []teleservices.ExternalIdentity
- func (u *UserV2) GetHOTP() []byte
- func (u *UserV2) GetMetadata() teleservices.Metadata
- func (u *UserV2) GetName() string
- func (u *UserV2) GetOIDCIdentities() []teleservices.ExternalIdentity
- func (u *UserV2) GetOpsCenter() string
- func (u *UserV2) GetPassword() string
- func (u *UserV2) GetRawObject() interface{}
- func (u *UserV2) GetRoles() []string
- func (u *UserV2) GetSAMLIdentities() []teleservices.ExternalIdentity
- func (u *UserV2) GetStatus() teleservices.LoginStatus
- func (u *UserV2) GetTraits() map[string][]string
- func (u *UserV2) GetType() string
- func (u *UserV2) IsAccountOwner() bool
- func (u *UserV2) SetClusterName(name string)
- func (u *UserV2) SetCreatedBy(b teleservices.CreatedBy)
- func (u *UserV2) SetExpiry(expires time.Time)
- func (u *UserV2) SetFullName(fullName string)
- func (u *UserV2) SetHOTP(h []byte)
- func (u *UserV2) SetLocked(until time.Time, reason string)
- func (u *UserV2) SetMetadata() teleservices.Metadata
- func (u *UserV2) SetName(name string)
- func (u *UserV2) SetPassword(pass string)
- func (u *UserV2) SetRawObject(o interface{})
- func (u *UserV2) SetRoles(roles []string)
- func (u *UserV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
- func (u *UserV2) SetTraits(traits map[string][]string)
- func (u *UserV2) SetType(v string)
- func (u *UserV2) String() string
- func (u *UserV2) V1() *UserV1
- func (u *UserV2) V2() *UserV2
- func (u *UserV2) WebSessionInfo(allowedLogins []string) interface{}
- func (u *UserV2) WithoutSecrets() User
- type Users
- type WebSessions
Constants ¶
const ( // OperationPhaseStateUnstarted means that the phase or all of its subphases haven't started executing yet OperationPhaseStateUnstarted = "unstarted" // OperationPhaseStateInProgress means that the phase or any of its subphases haven't reached any of the final states yet OperationPhaseStateInProgress = "in_progress" // OperationPhaseStateCompleted means that the phase or all of its subphases have been completed OperationPhaseStateCompleted = "completed" // OperationPhaseStateFailed means that the phase or all of its subphases have failed OperationPhaseStateFailed = "failed" // OperationPhaseStateRolledBack means that the phase or all of its subphases have been rolled back OperationPhaseStateRolledBack = "rolled_back" )
const ( // KindCluster is a resource kind for gravity clusters KindCluster = "cluster" // KindRepository represents repositories KindRepository = "repository" // KindApp represents applications and packages KindApp = "app" // KindObject represents binary object BLOB KindObject = "object" // KindAccount represents account resource KindAccount = "account" // KindToken is security token (e.g. API Key) KindToken = "token" // KindLicense represents Gravity software license KindLicense = "license" // VerbRegister is used to allow registering new clusters // within an Ops Center VerbRegister = "register" // VerbConnect is used to allow users to connect to clusters VerbConnect = "connect" // VerbReadSecrets is used to allow reading secrets VerbReadSecrets = "readsecrets" // KindLogForwarder is log forwarder resource kind KindLogForwarder = "logforwarder" // KindTLSKeyPair is a TLS key pair KindTLSKeyPair = "tlskeypair" // KindSMTPConfig defines the monitoring SMTP configuration resource type KindSMTPConfig = "smtp" // KindAlert defines the monitoring alert resource type KindAlert = "alert" // KindAlertTarget defines the monitoring alert target resource type KindAlertTarget = "alerttarget" // KindSystemInfo defines the system information resource KindSystemInfo = "systeminfo" // KindEndpoints defines the Ops Center endpoints resource type KindEndpoints = "endpoints" // KindAuthGateway defines the auth gateway resource type KindAuthGateway = "authgateway" // KindRuntimeEnvironment defines the resource that manages cluster environment variables KindRuntimeEnvironment = "runtimeenvironment" // KindClusterConfiguration defines the resource that manages cluster configuration KindClusterConfiguration = "clusterconfiguration" // KindPersistentStorage is the resource for managing persistent storage in the cluster KindPersistentStorage = "persistentstorage" // KindOperation is the cluster operation resource type. KindOperation = "operation" // KindRelease defines the application release resource type KindRelease = "release" // KindInvite defines the user invite token. KindInvite = "invite" )
const ( // UserTokenTypeInvite adds new user to existing account UserTokenTypeInvite = "invite" // UserTokenTypeReset resets user credentials UserTokenTypeReset = "reset" )
const ( // ProvisioningTokenTypeInstall is cluster agent token ProvisioningTokenTypeInstall = "install" // ProvisioningTokenTypeExpand is used to validate joining nodes ProvisioningTokenTypeExpand = "expand" // ProvisioningTokenTypeTeleport is used by Teleport nodes to authenticate with auth server ProvisioningTokenTypeTeleport = "teleport" )
const ( // NodeTypeNode is a type of teleport node - SSH Node NodeTypeNode = "node" // NodeTypeProxy is a type of teleport node - SSH Proxy server NodeTypeProxy = "proxy" // NodeTypeAuth is a type of teleport node - SSH Auth server NodeTypeAuth = "auth" )
const ( // OpsCenterRemoteAccessLink is a link used to provide remote access via Teleport OpsCenterRemoteAccessLink = "remote_access" // OpsCenterUpdateLink is a link to fetch periodic updates OpsCenterUpdateLink = "update" )
const ( // MaxLimit sets maximum pagination limit MaxLimit = 1000 // Forever indicates to store value forever Forever = 0 )
const ( // ServerUpdateStart is the value of the operation state at start ServerUpdateStart = "" // ServerUpdateSuccess signifies successfully completed operation ServerUpdateSuccess = "update_success" // ServerUpdateInProgress signifies an ongoing operation ServerUpdateInProgress = "update_in_progress" // ServerUpdateRollbackInProgress signifies the ongoing rollback operation ServerUpdateRollbackInProgress = "rollback_in_progress" // ServerUpdateRollbackSuccess signifies a successfully rolled back operation ServerUpdateRollbackSuccess = "rollback_success" // ServerUpdateFailed signifies an update operation failure state ServerUpdateFailed = "failed" )
const ( // AgentUser defines a restricted user type used during OpsCenter operations AgentUser = "agent" // AdminUser defines a user type with maximum permissions AdminUser = "admin" // RegularUser user is standard interactive user RegularUser = "regular" )
const AlertSpecV2Schema = `` /* 321-byte string literal not displayed */
AlertSpecV2Schema is JSON schema for a monitoring alert
const AlertTargetSpecV2Schema = `` /* 135-byte string literal not displayed */
AlertTargetSpecV2Schema is JSON schema for a monitoring alert target
const ClusterSpecV2Schema = `` /* 915-byte string literal not displayed */
ClusterSpecV2Schema is JSON schema for server
const EndpointsSpecV2Schema = `` /* 216-byte string literal not displayed */
EndpointsSpecV2Schema is the endpoints resource JSON schema
const EnvironmentSpecSchema = `` /* 875-byte string literal not displayed */
EnvironmentSpecSchema is JSON schema for the cluster runtime environment variables resource
const LogForwarderV2Schema = `` /* 175-byte string literal not displayed */
LogForwarderV2Schema is the log forwarder JSON schema
const MetadataSchema = `` /* 441-byte string literal not displayed */
MetadataSchema is a copy of teleport/lib/services.MetadataSchema but with optional 'name' property because some Gravity resources do not require it
const RepositorySpecV2Schema = `{
"type": "object",
"additionalProperties": false,
"properties": {}
}`
RepositorySpecV2Schema is JSON schema for repository spec
const SMTPConfigSpecV2Schema = `` /* 238-byte string literal not displayed */
SMTPConfigSpecV2Schema is JSON schema for SMTP configuration
const SystemSpecV2Schema = `` /* 3210-byte string literal not displayed */
SystemSpecV2Schema is JSON schema for host system information
const TLSKeyPairSpecV2Schema = `` /* 187-byte string literal not displayed */
TLSKeyPairSpecV2Schema is JSON schema for TLS keypair
const TokenSpecV2Schema = `` /* 133-byte string literal not displayed */
TokenSpecV2Schema is JSON schema for server
const TrustedClusterSpecV2Extension = `
"sni_host": {"type": "string"},
"pull_updates": {"type": "boolean"},
"wizard": {"type": "boolean"}
`
const UserSpecV2Extension = `` /* 279-byte string literal not displayed */
UserSpecV2Extension is our extension to Teleport's user
Variables ¶
var AuthGatewaySpecV1Schema = fmt.Sprintf(`{ "type": "object", "additionalProperties": false, "properties": { "connection_limits": { "type": "object", "additionalProperties": false, "properties": { "max_connections": {"type": "number"}, "max_users": {"type": "number"} } }, "authentication": %v, "client_idle_timeout": {"type": "string"}, "disconnect_expired_cert": {"type": "boolean"}, "public_addr": {"type": "array", "items": {"type": "string"}}, "ssh_public_addr": {"type": "array", "items": {"type": "string"}}, "kubernetes_public_addr": {"type": "array", "items": {"type": "string"}}, "web_public_addr": {"type": "array", "items": {"type": "string"}} } }`, fmt.Sprintf(teleservices.AuthPreferenceSpecSchemaTemplate, ""))
AuthGatewaySpecV1Schema defines the auth gateway spec schema.
var DefaultDNSConfig = DNSConfig{ Port: defaults.DNSPort, Addrs: []string{defaults.DNSListenAddr}, }
DefaultDNSConfig defines the default cluster local DNS configuration
var DefaultSubnets = Subnets{ Overlay: defaults.PodSubnet, Service: defaults.ServiceSubnet, }
DefaultSubnets defines a default Subnets descriptor to use for onprem installations
var LegacyDNSConfig = DNSConfig{ Port: defaults.DNSPort, Addrs: []string{"127.0.0.1"}, }
LegacyDNSConfig defines the local DNS configuration on older clusters
var OperationNodeSchema = `` /* 176-byte string literal not displayed */
OperationNodeSchema is a single operation node json schema.
var OperationPhaseStates = []string{ OperationPhaseStateUnstarted, OperationPhaseStateInProgress, OperationPhaseStateCompleted, OperationPhaseStateFailed, OperationPhaseStateRolledBack, }
OperationPhaseStates is a list of all supported phase states.
var OperationSpecV2Schema = fmt.Sprintf(`{ "type": "object", "additionalProperties": false, "properties": { "type": {"type": "string"}, "created": {"type": "string"}, "install": { "type": "object", "additionalProperties": false, "properties": { "nodes": { "type": "array", "items": %[1]v } } }, "expand": { "type": "object", "additionalProperties": false, "properties": { "node": %[1]v } }, "shrink": { "type": "object", "additionalProperties": false, "properties": { "node": %[1]v } }, "upgrade": { "type": "object", "additionalProperties": false, "properties": { "package": {"type": "string"} } }, "updateEnviron": { "type": "object", "additionalProperties": false, "properties": { "env": {"type": "object"} } }, "updateConfig": { "type": "object", "additionalProperties": false, "properties": { "config": {"type": "string"} } }, "reconfigure": { "type": "object", "additionalProperties": false, "properties": { "ip": {"type": "string"} } } } }`, OperationNodeSchema)
OperationSpecV2Schema is the operation json schema.
var PersistentStorageSpecV1Schema = `` /* 1194-byte string literal not displayed */
PersistentStorageSpecV1Schema is the persistent storage resource spec schema.
var ReleaseV1Schema = `` /* 464-byte string literal not displayed */
ReleaseV1Schema defines the release resource schema.
var ( // ResourceNameExpr is identifier that specifies resource name ResourceNameExpr = IdentifierExpr("resource.metadata.name") )
var SupportedGravityResources = []string{ teleservices.KindClusterAuthPreference, teleservices.KindGithubConnector, teleservices.KindAuthConnector, teleservices.KindUser, KindToken, KindLogForwarder, KindSMTPConfig, KindAlert, KindAlertTarget, KindTLSKeyPair, KindAuthGateway, KindRuntimeEnvironment, KindClusterConfiguration, KindPersistentStorage, KindOperation, }
SupportedGravityResources is a list of resources supported by "gravity resource create/get" subcommands
var SupportedGravityResourcesToRemove = []string{ teleservices.KindGithubConnector, teleservices.KindUser, KindToken, KindLogForwarder, KindSMTPConfig, KindAlert, KindAlertTarget, KindTLSKeyPair, KindRuntimeEnvironment, KindClusterConfiguration, }
SupportedGravityResourcesToRemove is a list of resources supported by "gravity resource rm" subcommand
var SupportedUserTypes = []string{AgentUser, AdminUser, RegularUser}
SupportedUserTypes lists all supported user types
Functions ¶
func CanonicalKind ¶
CanonicalKind translates the specified kind to canonical form. Returns the kind unmodified if it did not match any known resource
func CheckUserToken ¶
CheckUserToken returns nil if the value is correct, error otherwise
func ClusterAdminAgent ¶
ClusterAdminAgent generates the name of the admin agent user for the specified cluster
func ClusterAgent ¶
ClusterAgent generates the name of the agent user for the specified cluster
func DeepComparePhases ¶
func DeepComparePhases(c *check.C, expected, actual OperationPhase)
DeepComparePhases compares the actual phase to the expected phase omitting some insignificant fields like description or UI step number
func DisableAccess ¶
DisableAccess disables access for the remote Teleport cluster (Ops Center or installer wizard) with the specified name.
All objects that comprise remote access such as reverse tunnels, trusted clusters and certificate authorities are deleted from backend.
If non-0 delay is specified, the access is scheduled to be removed after the specified interval.
func Encode ¶
func Encode(resources []UnknownResource, w io.Writer) error
Encode YAML-encodes the specified list of resources into w
func GetAlertSchema ¶
func GetAlertSchema() string
GetAlertSchema returns alert schema for version V2
func GetAlertTargetSchema ¶
func GetAlertTargetSchema() string
GetAlertTargetSchema returns alert target schema for version V2
func GetAllowedLogins ¶
GetAllowedLogins returns a list of unix logins that are set by default for admin users, this feature is going to be deprecated once we will be able to set roles via UI
func GetAuthGatewaySchema ¶
func GetAuthGatewaySchema() string
GetAuthGatewaySchema returns the full auth gateway resource schema.
func GetClusterSchema ¶
func GetClusterSchema() string
GetClusterSchema returns cluster schema for V2 resource
func GetEndpointsSchema ¶
func GetEndpointsSchema() string
GetEndpointsSchema returns the endpoints resource schema
func GetEnvironmentSpecSchema ¶
func GetEnvironmentSpecSchema() string
GetEnvironmentSpecSchema returns the formatted JSON schema for the cluster runtime environment variables resource
func GetLocalPackage ¶
GetLocalPackage returns the local cluster application package
func GetLogForwarderSchema ¶
func GetLogForwarderSchema() string
GetLogForwarderSchema returns log forwarder JSON schema
func GetOperationSchema ¶
func GetOperationSchema() string
GetOperationSchema returns a cluster operation schema.
func GetPersistentStorageSchema ¶
func GetPersistentStorageSchema() string
GetPersistentStorageSchema returns the full persistent storage resource schema.
func GetReleaseSchema ¶
func GetReleaseSchema() string
GetReleaseSchema returns the full release resource schema.
func GetRepositorySchema ¶
func GetRepositorySchema() string
GetRepositorySchema returns V2 schema of the repository
func GetSMTPConfigSchema ¶
func GetSMTPConfigSchema() string
GetSMTPConfigSchema returns SMTP configuration schema for version V2
func GetSystemInfoSchema ¶
func GetSystemInfoSchema() string
GetSystemInfoSchema returns system information schema for version V2
func GetTLSKeyPairSchema ¶
func GetTLSKeyPairSchema() string
GetTLSKeyPairSchema returns TLS keypair schema for V2 resource
func GetTokenSchema ¶
func GetTokenSchema() string
GetTokenSchema returns token schema for V2 resource
func IsValidOperationPhaseState ¶
IsValidOperationPhaseState returns true if the provided phase state is valid.
func MarshalAlert ¶
func MarshalAlert(alert Alert, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalAlert marshals an alert into JSON
func MarshalAlertTarget ¶
func MarshalAlertTarget(target AlertTarget, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalAlertTarget marshals an alert target into JSON
func MarshalAuthGateway ¶
func MarshalAuthGateway(gw AuthGateway, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalAuthGateway marshals provided auth gateway resource to JSON.
func MarshalCluster ¶
func MarshalCluster(cluster Cluster, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalCluster marshals cluster into JSON
func MarshalEndpoints ¶
func MarshalEndpoints(endpoints Endpoints, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalEndpoints marshals the endpoints resource to JSON
func MarshalEnvironment ¶
func MarshalEnvironment(env EnvironmentVariables, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalEnvironment marshals this resource as JSON
func MarshalOperation ¶
func MarshalOperation(operation Operation, opts ...services.MarshalOption) ([]byte, error)
MarshalOperation marshals operation resource as json.
func MarshalPersistentStorage ¶
func MarshalPersistentStorage(ps PersistentStorage, opts ...services.MarshalOption) ([]byte, error)
MarshalPersistentStorage marshals persistent storage resource into a json.
func MarshalRelease ¶
func MarshalRelease(release Release, opts ...services.MarshalOption) ([]byte, error)
MarshalRelease marshals provided release resource to JSON.
func MarshalRepository ¶
func MarshalRepository(r Repository, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalRepository marshalls repository into JSON
func MarshalSMTPConfig ¶
func MarshalSMTPConfig(config SMTPConfig, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalSMTPConfig marshals SMTP config into JSON
func MarshalSystemInfo ¶
func MarshalSystemInfo(info System, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalSystemInfo marshals the specified system info object to JSON
func MarshalTLSKeyPair ¶
func MarshalTLSKeyPair(keyPair TLSKeyPair, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalTLSKeyPair marshals TLS keypair into JSON
func MarshalTrustedCluster ¶
func MarshalTrustedCluster(cluster teleservices.TrustedCluster) ([]byte, error)
MarshalTrustedCluster marshals the provided trusted cluster into JSON
func MarshalUser ¶
func MarshalUser(u teleservices.User, opts ...teleservices.MarshalOption) ([]byte, error)
MarshalUser marshals user to some representation
func NewGithubConnector ¶
func NewGithubConnector(name string, spec teleservices.GithubConnectorSpecV3) *teleservices.GithubConnectorV3
NewGithubConnector returns a new Github connector with specified name and spec
func NewOIDCConnector ¶
func NewOIDCConnector(name string, spec teleservices.OIDCConnectorSpecV2) *teleservices.OIDCConnectorV2
NewOIDCConnector returns a new OIDC connector with specified name and spec
func NewSAMLConnector ¶
func NewSAMLConnector(name string, spec teleservices.SAMLConnectorSpecV2) *teleservices.SAMLConnectorV2
NewSAMLConnector returns a new SAML connector with specified name and spec
func UpsertCluster ¶
UpsertCluster creates or updates cluster in the provided backend.
func UpsertOperation ¶
func UpsertOperation(backend Backend, operation SiteOperation) error
UpsertOperation creates or updates operation in the provided backend.
Types ¶
type APIKey ¶
type APIKey struct {
// Token is the api key itself
Token string `json:"token"`
// Expires is the key expiration time
Expires time.Time `json:"expires"`
// UserEmail is the name of the user the api key belongs to
UserEmail string `json:"user_email"`
}
APIKey is a token that agent users use to access the API
type APIKeys ¶
type APIKeys interface {
// CreateAPIKey creates a new api key
CreateAPIKey(APIKey) (*APIKey, error)
// UpsertAPIKey creates or updates an api key
UpsertAPIKey(APIKey) (*APIKey, error)
// GetAPIKeys returns api keys for a user
GetAPIKeys(username string) ([]APIKey, error)
// GetAPIKey returns an api key entry by token
GetAPIKey(token string) (*APIKey, error)
// DeleteAPIKey deletes an api key
DeleteAPIKey(username, token string) error
}
APIKeys provides operations with api keys
type AWSVariables ¶
type AWSVariables struct {
// AMI is the Amazon Machine Image name
AMI string `json:"ami"`
// Region is the AWS region
Region string `json:"region"`
// AccessKey is the AWS API access key
AccessKey string `json:"access_key"`
// SecretKey is the AWS API secret key
SecretKey string `json:"secret_key"`
// SessionToken is the AWS API session token
SessionToken string `json:"session_token"`
// VPCID is the AWS VPC ID
VPCID string `json:"vpc_id"`
// VPCCIDR is the AWS VPC CIDR
VPCCIDR string `json:"vpc_cidr"`
// SubnetID is the AWS subnet ID
SubnetID string `json:"subnet_id"`
// SubnetCIDR is the AWS subnet CIDR
SubnetCIDR string `json:"subnet_cidr"`
// InternetGatewayID is the AWS internet gateway ID
InternetGatewayID string `json:"igw_id"`
// KeyPair is the AWS key pair name
KeyPair string `json:"key_pair"`
}
AWSVariables is a set of operation variables specific to AWS provider
func (*AWSVariables) SetDefaults ¶
func (v *AWSVariables) SetDefaults()
SetDefaults fills in some unset fields with their default values if they have them
type Account ¶
type Account struct {
// ID is a unique organization identifier
ID string `json:"id"`
// Org is organisation name
Org string `json:"org"`
}
Account represents some organization or company that can have multiple sites
type Accounts ¶
type Accounts interface {
// CreateAccount creates account entry
CreateAccount(a Account) (*Account, error)
// DeleteAccount deletes account entry and all associated data, e.g.
// sites and all site-specific stuff
DeleteAccount(id string) error
// GetAccounts returns list of accounts
GetAccounts() ([]Account, error)
// GetAccount returns account entry by it's id
GetAccount(id string) (*Account, error)
}
Accounts collection modifies and updates account entries, where each account is related to some organization
type AgentProfile ¶
type AgentProfile struct {
// Instructions defines the set of shell commands to download and start an agent
// on a host
Instructions string `json:"instructions"`
// AgentURL is connection string for install agent
AgentURL string `json:"agent_url"`
// Token is the token used to connect to the agent server
Token string `json:"token"`
}
type Alert ¶
type Alert interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults that the object is valid
CheckAndSetDefaults() error
// GetGroupName returns the alerting rule group name
GetGroupName() string
// GetAlertName returns the alerting rule name
GetAlertName() string
// GetFormula returns the kapacitor formula
GetFormula() string
// GetDelay returns the delay before alert fires
GetDelay() time.Duration
// GetLabels returns the alerting rule labels
GetLabels() map[string]string
// GetAnnotations returns the alerting rule annotations
GetAnnotations() map[string]string
}
Alert describes a monitoring alert
type AlertSpecV2 ¶
type AlertSpecV2 struct {
// GroupName optionally specifies alerting rule group.
//
// If not specified, group name will be constructed based on
// the resource name.
GroupName string `json:"group_name,omitempty"`
// AlertName optionally specifies alerting rule name.
//
// If not specified, rule name will be equal to the resource name.
AlertName string `json:"alert_name,omitempty"`
// Formula defines a formula for kapacitor
Formula string `json:"formula"`
// Delay is an optional delay before firing an alert.
Delay time.Duration `json:"duration,omitempty"`
// Labels specifies additional labels to be attached to alert.
Labels map[string]string `json:"labels,omitempty"`
// Annotations specifies informational labels that can be used
// to store longer additional information.
Annotations map[string]string `json:"annotations,omitempty"`
}
AlertSpecV2 defines a monitoring alert
type AlertTarget ¶
type AlertTarget interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults that the object is valid
CheckAndSetDefaults() error
// GetEmail returns the recipient's email
GetEmail() string
}
AlertTarget describes a monitoring alert target
type AlertTargetSpecV2 ¶
type AlertTargetSpecV2 struct {
// Email specifies recipient's email
Email string `json:"email"`
}
AlertTargetSpecV2 defines a monitoring alert target
type AlertTargetV2 ¶
type AlertTargetV2 struct {
// Metadata is resource metadata
teleservices.Metadata `json:"metadata"`
// Kind is a resource kind
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Spec defines the alert target
Spec AlertTargetSpecV2 `json:"spec"`
}
AlertTargetV2 defines a monitoring alert target
func UnmarshalAlertTarget ¶
func UnmarshalAlertTarget(data []byte) (*AlertTargetV2, error)
UnmarshalAlertTarget unmarshals an alert target from JSON
func (*AlertTargetV2) CheckAndSetDefaults ¶
func (r *AlertTargetV2) CheckAndSetDefaults() error
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*AlertTargetV2) GetEmail ¶
func (r *AlertTargetV2) GetEmail() string
GetEmail returns recipient's email
type AlertV2 ¶
type AlertV2 struct {
// Metadata is resource metadata
teleservices.Metadata `json:"metadata"`
// Kind is a resource kind
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Spec defines the monitoring alert
Spec AlertSpecV2 `json:"spec"`
}
AlertV2 defines a monitoring alert
func UnmarshalAlert ¶
UnmarshalAlert unmarshals an alert from JSON
func (*AlertV2) CheckAndSetDefaults ¶
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*AlertV2) GetAlertName ¶
GetAlertName returns the alerting rule name
func (*AlertV2) GetAnnotations ¶
GetAnnotations returns the alerting rule annotations
func (*AlertV2) GetFormula ¶
GetFormula returns alert's kapacitor formula
func (*AlertV2) GetGroupName ¶
GetGroupName returns the alerting rule group name
type App ¶
type App interface {
teleservices.Resource
// GetRepository returns app repository
GetRepository() string
}
App defines an app resource
type AppOperation ¶
type AppOperation struct {
// Repository defines the repository of the application package
Repository string `json:"repository"`
// PackageName defines the name of the application package
PackageName string `json:"package_name"`
// PackageVersion defines the version of the application package
PackageVersion string `json:"package_version"`
// ID identifies the operation
ID string `json:"operation_id"`
// Type defines application operation type
Type string `json:"type"`
// Created specifies the time when the operation was created
Created time.Time `json:"created"`
// Updated specifies the time when the operation was last updated
Updated time.Time `json:"updated"`
// State represents current operation state
State string `json:"state"`
}
AppOperation represents operations on applications e.g. updating or removing
func (*AppOperation) Check ¶
func (a *AppOperation) Check() error
type AppOperations ¶
type AppOperations interface {
// CreateAppOperation creates a new application operation
CreateAppOperation(op AppOperation) (*AppOperation, error)
// GetAppOperation queries an operation in progress
GetAppOperation(id string) (*AppOperation, error)
// UpdateAppImportOperation updates an operation in progress
UpdateAppOperation(op AppOperation) (*AppOperation, error)
}
AppOperations defines the interface to handle operations on applications
type AppProgressEntries ¶
type AppProgressEntries interface {
// CreateAppProgressEntry adds a progress entry for the specified application
CreateAppProgressEntry(p AppProgressEntry) (*AppProgressEntry, error)
// GetLastAppProgressEntry queries the last progress entry for the specified application
GetLastAppProgressEntry(operationID string) (*AppProgressEntry, error)
}
AppProgressEntries collection stores progress entries for the application operations
type AppProgressEntry ¶
type AppProgressEntry struct {
// ID is auto generated ID
ID string `json:"id"`
// Repository defines the repository of the application package
Repository string `json:"repository"`
// PackageName defines the name of the application package
PackageName string `json:"package_name"`
// PackageVersion defines the version of the application package
PackageVersion string `json:"package_version"`
// OperationID identifies the application operation
OperationID string `json:"operation_id"`
// Created is a time when this entry was created
Created time.Time `json:"created"`
// Completion is a number from 0 (just started) to 100 (completed)
Completion int `json:"completion"`
// State is a string that indicates current operation state
State string `json:"state"`
// Message defines a text message describing the operation
Message string `json:"message"`
}
AppProgressEntry is a structured entry indicating operation progress
func (*AppProgressEntry) Check ¶
func (a *AppProgressEntry) Check() error
type AppSpecV2 ¶
type AppSpecV2 struct {
// Repository is repository app belongs to
Repository string `json:"repository"`
}
AppSpecV2 represents an app resource spec
type AppType ¶
type AppType string
AppType defines an application type
const ( // AppUser defines a type for user apps // // User apps are the ones that a user builds, publishes into // OpsCenters and installs (e.g. mattermost). These are the // only apps that are visible in OpsCenter by default. AppUser AppType = "user" // AppService defines a type for service apps // // Service apps are "building blocks" that cannot be installed // separately from a user app but provide essential services to // user apps that take dependency on them (e.g. dns, logging). AppService AppType = "service" // AppRuntime defines a type for runtime apps // // Runtime apps serve as a backbone for user apps, they are the // lowest-level base for any application (e.g. kubernetes of a // certain version). AppRuntime AppType = "runtime" )
type AppV2 ¶
type AppV2 struct {
// Kind is resource kind, should be "app"
Kind string `json:"kind"`
// Version is the app version
Version string `json:"version"`
// Metadata is resource metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec is the app spec
Spec AppSpecV2 `json:"spec"`
}
AppV2 represents an app resource format
func (*AppV2) GetMetadata ¶
func (a *AppV2) GetMetadata() teleservices.Metadata
GetMetadata returns the app metadata
func (*AppV2) GetRepository ¶
GetRepository returns repository the app belongs to
type Application ¶
type Application struct {
// Locator references the application package
loc.Locator
// Manifest is the application's manifest
schema.Manifest
}
Application describes an application for the package cleaner
type Applications ¶
type Applications interface {
// GetApplication queries an existing application
GetApplication(repository, packageName, packageVersion string) (*Package, error)
// GetApplications lists all applications for the specified repository
GetApplications(repository string, appType AppType) ([]Package, error)
}
Applications defines operations on the site applications
type AssignKubernetesGroupsExpr ¶
type AssignKubernetesGroupsExpr struct {
// Groups is a list of groups to assign
Groups StringsExpr
}
AssignKubernetesGroupsExpr constructs function expression used in rules specifications that assigns kubernetes groups to the current user
func (AssignKubernetesGroupsExpr) String ¶
func (a AssignKubernetesGroupsExpr) String() string
String returns function call expression used in rules
type AuthGateway ¶
type AuthGateway interface {
// Resource provides common resource methods.
teleservices.Resource
// CheckAndSetDefaults validates the resource and fills in some defaults.
CheckAndSetDefaults() error
// GetMaxConnections returns maximum allowed connections number.
GetMaxConnections() int64
// GetMaxUsers returns maximum allowed users number.
GetMaxUsers() int
// GetConnectionLimits returns all configured connection limits.
GetConnectionLimits() *ConnectionLimits
// SetConnectionLimits sets connection limits on the resource.
SetConnectionLimits(ConnectionLimits)
// GetClientIdleTimeout returns idle timeout for SSH sessions.
GetClientIdleTimeout() *teleservices.Duration
// SetClientIdleTimeout sets idle timeout setting on the resource.
SetClientIdleTimeout(teleservices.Duration)
// GetDisconnectExpiredCert returns whether ongoing SSH session will be
// disconnected immediately upon certificate expiration.
GetDisconnectExpiredCert() *teleservices.Bool
// SetDisconnectExpiredCert sets expired cert policy setting on the resource.
SetDisconnectExpiredCert(teleservices.Bool)
// GetAuthentication returns authentication preference setting.
GetAuthentication() *teleservices.AuthPreferenceSpecV2
// SetAuthentication sets authentication preference setting on the resource.
SetAuthentication(teleservices.AuthPreferenceSpecV2)
// GetAuthPreference returns authentication preference resource.
GetAuthPreference() (teleservices.AuthPreference, error)
// SetAuthPreference sets authentication settings from the provided auth preference resource.
SetAuthPreference(teleservices.AuthPreference) error
// GetSSHPublicAddrs returns SSH public addresses.
GetSSHPublicAddrs() []string
// SetSSHPublicAddrs sets SSH public addresses on the resource.
SetSSHPublicAddrs([]string)
// GetKubernetesPublicAddrs returns Kubernetes public addresses.
GetKubernetesPublicAddrs() []string
// SetKubernetesPublicAddrs sets Kubernetes public addresses on the resource.
SetKubernetesPublicAddrs([]string)
// GetWebPublicAddrs returns web service public addresses.
GetWebPublicAddrs() []string
// SetWebPublicAddrs sets web service public addresses on the resource.
SetWebPublicAddrs([]string)
// GetPublicAddrs returns public addresses set for all services.
GetPublicAddrs() []string
// SetPublicAddrs sets public addresses that apply to all services.
SetPublicAddrs([]string)
// ApplyTo applies auth gateway settings to the provided auth gateway resource.
ApplyTo(AuthGateway)
// ApplyToTeleportConfig applies auth gateway settings to the provided Teleport config.
ApplyToTeleportConfig(*teleconfig.FileConfig)
// PrincipalsChanged returns true if list of principals is different b/w two auth gateway configs.
PrincipalsChanged(AuthGateway) bool
// SettingsChanged returns true is connection settings changed b/w two auth gateway configs.
SettingsChanged(AuthGateway) bool
}
AuthGateway defines a resource that controls embedded Teleport configuration.
func DefaultAuthGateway ¶
func DefaultAuthGateway() AuthGateway
DefaultAuthGateway returns auth gateway resource with default parameters.
func NewAuthGateway ¶
func NewAuthGateway(spec AuthGatewaySpecV1) AuthGateway
NewAuthGateway creates a new auth gateway resource for the provided spec.
func UnmarshalAuthGateway ¶
func UnmarshalAuthGateway(data []byte) (AuthGateway, error)
UnmarshalAuthGateway unmarshals auth gateway resource from the provided JSON data.
type AuthGatewaySpecV1 ¶
type AuthGatewaySpecV1 struct {
// ConnectionLimits describes configured connection limits.
ConnectionLimits *ConnectionLimits `json:"connection_limits,omitempty"`
// ClientIdleTimeout is the idle session timeout.
ClientIdleTimeout *teleservices.Duration `json:"client_idle_timeout,omitempty"`
// DisconnectExpiredCert is whether expired certificate interrupts session.
DisconnectExpiredCert *teleservices.Bool `json:"disconnect_expired_cert,omitempty"`
// Authentication is authentication preferences.
Authentication *teleservices.AuthPreferenceSpecV2 `json:"authentication,omitempty"`
// PublicAddr sets public addresses for all Teleport services.
PublicAddr *[]string `json:"public_addr,omitempty"`
// SSHPublicAddr sets public addresses for proxy SSH service.
SSHPublicAddr *[]string `json:"ssh_public_addr,omitempty"`
// KubernetesPublicAddr sets public addresses for Kubernetes proxy service.
KubernetesPublicAddr *[]string `json:"kubernetes_public_addr,omitempty"`
// WebPublicAddr sets public addresses for web service.
WebPublicAddr *[]string `json:"web_public_addr,omitempty"`
}
AuthGatewaySpecV1 defines the auth gateway resource specification.
type AuthGatewayV1 ¶
type AuthGatewayV1 struct {
// Kind is the resource kind.
Kind string `json:"kind"`
// Version is the resource version.
Version string `json:"version"`
// Metadata is the resource metadata.
Metadata teleservices.Metadata `json:"metadata"`
// Spec is the resource specification.
Spec AuthGatewaySpecV1 `json:"spec"`
}
AuthGatewayV1 defines the auth gateway resource.
func (*AuthGatewayV1) ApplyTo ¶
func (gw *AuthGatewayV1) ApplyTo(other AuthGateway)
ApplyTo applies auth gateway settings to the provided other auth gateway.
Only non-nil settings are applied.
func (*AuthGatewayV1) ApplyToTeleportConfig ¶
func (gw *AuthGatewayV1) ApplyToTeleportConfig(config *teleconfig.FileConfig)
ApplyToTeleportConfig applies auth gateway settings to the provided config.
func (*AuthGatewayV1) CheckAndSetDefaults ¶
func (gw *AuthGatewayV1) CheckAndSetDefaults() error
CheckAndSetDefaults validates the resource and fills in some defaults.
func (*AuthGatewayV1) Expiry ¶
func (gw *AuthGatewayV1) Expiry() time.Time
Expiry returns the resource expiration time.
func (*AuthGatewayV1) GetAuthPreference ¶
func (gw *AuthGatewayV1) GetAuthPreference() (teleservices.AuthPreference, error)
GetAuthPreference returns authentication preference resource.
func (*AuthGatewayV1) GetAuthentication ¶
func (gw *AuthGatewayV1) GetAuthentication() *teleservices.AuthPreferenceSpecV2
GetAuthentication returns authentication preference setting.
func (*AuthGatewayV1) GetClientIdleTimeout ¶
func (gw *AuthGatewayV1) GetClientIdleTimeout() *teleservices.Duration
GetClientIdleTimeout returns the client idle timeout setting.
func (*AuthGatewayV1) GetConnectionLimits ¶
func (gw *AuthGatewayV1) GetConnectionLimits() *ConnectionLimits
GetConnectionLimits returns connection limit settings.
func (*AuthGatewayV1) GetDisconnectExpiredCert ¶
func (gw *AuthGatewayV1) GetDisconnectExpiredCert() *teleservices.Bool
GetDisconnectExpiredCert returns the expired certificate policy setting.
func (*AuthGatewayV1) GetKubernetesPublicAddrs ¶
func (gw *AuthGatewayV1) GetKubernetesPublicAddrs() []string
GetKubernetesPublicAddrs returns public addresses for Kubernetes proxy service.
func (*AuthGatewayV1) GetMaxConnections ¶
func (gw *AuthGatewayV1) GetMaxConnections() int64
GetMaxConnections returns max connections setting.
func (*AuthGatewayV1) GetMaxUsers ¶
func (gw *AuthGatewayV1) GetMaxUsers() int
GetMaxUsers returns max users setting.
func (*AuthGatewayV1) GetMetadata ¶
func (gw *AuthGatewayV1) GetMetadata() teleservices.Metadata
GetMetadata returns the resource metadata.
func (*AuthGatewayV1) GetName ¶
func (gw *AuthGatewayV1) GetName() string
GetName returns the resource name.
func (*AuthGatewayV1) GetPublicAddrs ¶
func (gw *AuthGatewayV1) GetPublicAddrs() []string
GetPublicAddrs returns public addresses for all services.
func (*AuthGatewayV1) GetSSHPublicAddrs ¶
func (gw *AuthGatewayV1) GetSSHPublicAddrs() []string
GetSSHPublicAddrs returns public addresses for proxy SSH service.
func (*AuthGatewayV1) GetWebPublicAddrs ¶
func (gw *AuthGatewayV1) GetWebPublicAddrs() (addrs []string)
GetWebPublicAddrs returns proxy web service public addresses.
func (*AuthGatewayV1) PrincipalsChanged ¶
func (gw *AuthGatewayV1) PrincipalsChanged(other AuthGateway) bool
PrincipalsChanged returns true if a list of principals is different between this and provided auth gateway configurations.
"Principals" are hostname parts of public addresses of different services that get encoded as SAN extensions (Subject Alternative Names) into their respective certificates.
func (*AuthGatewayV1) SetAuthPreference ¶
func (gw *AuthGatewayV1) SetAuthPreference(authPreference teleservices.AuthPreference) error
SetAuthPreference sets the authentication settings from the provided auth preference resource.
func (*AuthGatewayV1) SetAuthentication ¶
func (gw *AuthGatewayV1) SetAuthentication(value teleservices.AuthPreferenceSpecV2)
SetAuthentication sets authentication preference setting on the resource.
func (*AuthGatewayV1) SetClientIdleTimeout ¶
func (gw *AuthGatewayV1) SetClientIdleTimeout(value teleservices.Duration)
SetClientIdleTimeout sets the client idle timeout setting on the resource.
func (*AuthGatewayV1) SetConnectionLimits ¶
func (gw *AuthGatewayV1) SetConnectionLimits(value ConnectionLimits)
SetConnectionLimits sets connection limits settings on the resource.
func (*AuthGatewayV1) SetDisconnectExpiredCert ¶
func (gw *AuthGatewayV1) SetDisconnectExpiredCert(value teleservices.Bool)
SetDisconnectExpiredCert sets the expired certificate policy setting on the resource.
func (*AuthGatewayV1) SetExpiry ¶
func (gw *AuthGatewayV1) SetExpiry(expires time.Time)
SetExpiry sets the resource expiration time.
func (*AuthGatewayV1) SetKubernetesPublicAddrs ¶
func (gw *AuthGatewayV1) SetKubernetesPublicAddrs(value []string)
SetKubernetesPublicAddrs sets Kubernetes proxy service public addresses.
func (*AuthGatewayV1) SetName ¶
func (gw *AuthGatewayV1) SetName(name string)
SetName sets the resource name.
func (*AuthGatewayV1) SetPublicAddrs ¶
func (gw *AuthGatewayV1) SetPublicAddrs(value []string)
SetPublicAddrs sets public addresses for all services.
func (*AuthGatewayV1) SetSSHPublicAddrs ¶
func (gw *AuthGatewayV1) SetSSHPublicAddrs(value []string)
SetSSHPublicAddrs sets proxy SSH service public addresses.
func (*AuthGatewayV1) SetTTL ¶
func (gw *AuthGatewayV1) SetTTL(clock clockwork.Clock, ttl time.Duration)
SetTTL sets the resource TTL.
func (*AuthGatewayV1) SetWebPublicAddrs ¶
func (gw *AuthGatewayV1) SetWebPublicAddrs(value []string)
SetWebPublicAddrs sets proxy web service public addresses.
func (*AuthGatewayV1) SettingsChanged ¶
func (gw *AuthGatewayV1) SettingsChanged(other AuthGateway) bool
SettingsChanged returns true if connection settings are different between this and provided auth gateway configuration.
func (AuthGatewayV1) String ¶
func (gw AuthGatewayV1) String() string
String returns the object's string representation.
type Backend ¶
type Backend interface {
io.Closer
clockwork.Clock
teleservices.Trust
teleservices.Presence
teleservices.Access
ClusterConfiguration
U2F
Locks
WebSessions
UserTokens
Tokens
UserInvites
Applications
AppOperations
AppProgressEntries
Users
APIKeys
Connectors
Accounts
Sites
SiteOperations
ProgressEntries
Repositories
Permissions
LoginEntries
Migrations
Peers
Objects
PackageChangesets
Links
ClusterImport
LegacyRoles
Charts
}
Backend is a combination of all collections and a couple of common methods like Closer
type Charts ¶
type Charts interface {
// GetIndexFile returns the chart repository index file.
GetIndexFile() (*repo.IndexFile, error)
// CompareAndSwapIndexFile updates the chart repository index file.
CompareAndSwapIndexFile(new, existing *repo.IndexFile) error
// UpsertIndexFile creates or replaces chart repository index file.
UpsertIndexFile(repo.IndexFile) error
}
Charts defines methods related to Helm chart repository functionality.
type CloudConfig ¶
type CloudConfig struct {
// GCENodeTags lists additional node tags on GCE
GCENodeTags []string `json:"gce_node_tags,omitempty"`
}
CloudConfig represents additional cloud provider-specific configuration
type Cluster ¶
type Cluster interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults makes sure the cluster is valid
CheckAndSetDefaults() error
// SetApp sets the cluster app
SetApp(string)
// GetApp returns the cluster app
GetApp() string
// SetResources sets additional Kubernetes resources
SetResources(string)
// GetResources returns additional Kubernetes resources
GetResources() string
// SetLicense sets the cluster license
SetLicense(string)
// GetLicense returns the cluster license
GetLicense() string
// GetStatus returns cluster status
GetStatus() string
// GetProvider returns cluster provider
GetProvider() string
// GetAWSRegion returns region
GetRegion() string
// GetNodes returns cluster nodes
GetNodes() []ClusterNodeSpecV2
}
Cluster contains a set of permissions or settings
func NewCluster ¶
NewCluster returns instance of the new cluster
func NewClusterFromSite ¶
NewClusterFromSite returns new cluster from stored site
func UnmarshalCluster ¶
UnmarshalCluster unmarshals cluster from JSON
type ClusterAWSProviderSpecV2 ¶
type ClusterAWSProviderSpecV2 struct {
// Region is AWS region
Region string `json:"region"`
// VPC is VPC ID
VPC string `json:"vpc,omitempty"`
// KeyName is SSH key name
KeyName string `json:"keyName"`
}
ClusterAWSProviderSpecV2 is AWS provider specification
type ClusterConfigData ¶
type ClusterConfigData struct {
// ServiceSuffix specifies the suffix of the temporary DNS services with a ClusterIP
// from a new service subnet when updating cluster service CIDR
ServiceSuffix string `json:"service_suffix,omitempty"`
// ServiceCIDR specifies the service IP range
ServiceCIDR string `json:"service_cidr,omitempty"`
// Services lists original service definitions as captured
// prior to update
Services []v1.Service `json:"services,omitempty"`
}
ClusterConfigData describes the configuration specific to cluster configuration update operation
type ClusterConfiguration ¶
type ClusterConfiguration interface {
// SetClusterName gets services.ClusterName
GetClusterName() (teleservices.ClusterName, error)
// CreateClusterName creates teleservices.ClusterName
CreateClusterName(teleservices.ClusterName) error
// GetStaticTokens gets teleservices.StaticTokens
GetStaticTokens() (teleservices.StaticTokens, error)
// UpsertStaticTokens upserts teleservices.StaticToken
UpsertStaticTokens(teleservices.StaticTokens) error
// GetAuthPreference gets services.AuthPreference
GetAuthPreference() (teleservices.AuthPreference, error)
// UpsertAuthPreference upserts teleservices.AuthPreference
UpsertAuthPreference(teleservices.AuthPreference) error
// GetClusterConfig gets services.ClusterConfig
GetClusterConfig() (teleservices.ClusterConfig, error)
// UpsertClusterConfig upserts teeleservices.ClusterConfig
UpsertClusterConfig(teleservices.ClusterConfig) error
}
ClusterConfiguration stores the cluster configuration in the DB.
type ClusterImport ¶
type ClusterImport interface {
// GetClusterImportStatus returns the state of cluster state import - e.g. whether it has
// already been done
GetClusterImportStatus() (bool, error)
// SetClusterImported marks cluster import as complete.
// After cluster import has completed, no other site instance will attempt
// to import the state
SetClusterImported() error
}
ClusterImport defines the interface to manage status of cluster state import
type ClusterNodeSpecV2 ¶
type ClusterNodeSpecV2 struct {
// Profile is server profile
Profile string `json:"profile"`
// InstanceType is instance type to use
InstanceType string `json:"instanceType"`
// Count is count of instances
Count int `json:"count"`
}
ClusterNodeSpecV2 is a spec of cluster node provisioned via AWS
type ClusterSpecV2 ¶
type ClusterSpecV2 struct {
// App is an application name
App string `json:"app"`
// Provider is a cloud provider name
Provider string `json:"provider"`
// AWS is AWS provider specification, used when provider is set to aws
AWS *ClusterAWSProviderSpecV2 `json:"aws"`
// Nodes is a list of node profiles with amount to create/update and instance types
Nodes []ClusterNodeSpecV2 `json:"nodes"`
// Resources is additional Kubernetes resources
Resources string `json:"resources"`
// License is the cluster license
License string `json:"license"`
// Status is a cluster status, initialized for existing clusters only
Status string `json:"status,omitempty"`
}
ClusterSpecV2 is cluster V2 specification
type ClusterState ¶
type ClusterState struct {
// Servers is a list of servers in the cluster
Servers Servers `json:"servers"`
// Docker specifies current cluster Docker configuration
Docker DockerConfig `json:"docker"`
}
ClusterState defines the state of the cluster
func (*ClusterState) ClusterNodeSpec ¶
func (s *ClusterState) ClusterNodeSpec() []ClusterNodeSpecV2
ClusterNodeSpec converts Servers list to node spec
func (*ClusterState) FindServer ¶
func (s *ClusterState) FindServer(hostname string) (*Server, error)
FindServer returns a server by hostname
func (*ClusterState) FindServerByIP ¶
func (s *ClusterState) FindServerByIP(ip string) (*Server, error)
FindServerByIP returns a server by advertise IP
func (ClusterState) HasServer ¶
func (s ClusterState) HasServer(hostname string) bool
HasServer returns true if cluster state contains server with specified hostname
func (*ClusterState) ProfileMap ¶
func (s *ClusterState) ProfileMap() map[string][]Server
ProfileMap returns servers mapped by server profile
type ClusterV2 ¶
type ClusterV2 struct {
// Kind is a resource kind - always resource
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata is cluster metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec contains cluster specification
Spec ClusterSpecV2 `json:"spec"`
}
ClusterV2 represents cluster resource specification
func (*ClusterV2) CheckAndSetDefaults ¶
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*ClusterV2) GetLicense ¶
GetLicense returns the cluster license
func (*ClusterV2) GetMetadata ¶
func (c *ClusterV2) GetMetadata() teleservices.Metadata
GetMetadata returns cluster metadata
func (*ClusterV2) GetNodes ¶
func (c *ClusterV2) GetNodes() []ClusterNodeSpecV2
GetNodes returns cluster nodes
func (*ClusterV2) GetProvider ¶
GetProvider returns cluster provider
func (*ClusterV2) GetResources ¶
GetResources returns additional Kubernetes resources
func (*ClusterV2) SetLicense ¶
SetLicense sets the cluster license
func (*ClusterV2) SetResources ¶
SetResources sets additional Kubernetes resources
type ConnectionLimits ¶
type ConnectionLimits struct {
// MaxConnections is the maximum number of connections to auth/proxy services.
MaxConnections *int64 `json:"max_connections,omitempty"`
// MaxUsers is the maximum number of simultaneously connected users.
MaxUsers *int `json:"max_users,omitempty"`
}
ConnectionLimits defines connection limits setting on auth gateway resource.
func (*ConnectionLimits) Check ¶
func (l *ConnectionLimits) Check() error
Check validates the limits settings.
func (ConnectionLimits) String ¶
func (l ConnectionLimits) String() string
String returns the object's string representation.
type Connectors ¶
type Connectors interface {
// UpsertOIDCConnector upserts OIDC Connector
UpsertOIDCConnector(teleservices.OIDCConnector) error
// DeleteOIDCConnector deletes OIDC Connector
DeleteOIDCConnector(connectorID string) error
// GetOIDCConnector returns OIDC connector data, withSecrets adds or removes client secret from return results
GetOIDCConnector(id string, withSecrets bool) (teleservices.OIDCConnector, error)
// GetOIDCConnectors returns registered connectors, withSecrets adds or removes client secret from return results
GetOIDCConnectors(withSecrets bool) ([]teleservices.OIDCConnector, error)
// CreateOIDCAuthRequest creates new auth request
CreateOIDCAuthRequest(req teleservices.OIDCAuthRequest) error
// GetOIDCAuthRequest returns OIDC auth request if found
GetOIDCAuthRequest(stateToken string) (*teleservices.OIDCAuthRequest, error)
// GetUserByOIDCIdentity returns a user by its specified OIDC Identity, returns first
// user specified with this identity
GetUserByOIDCIdentity(id teleservices.ExternalIdentity) (teleservices.User, error)
// GetUserBySAMLIdentity returns a user by its specified SAML Identity, returns first
// user specified with this identity
GetUserBySAMLIdentity(id teleservices.ExternalIdentity) (teleservices.User, error)
// GetUserByGithubIdentity returns a user by its specified Github Identity, returns first
// user specified with this identity
GetUserByGithubIdentity(id teleservices.ExternalIdentity) (teleservices.User, error)
// CreateSAMLConnector creates SAML Connector
CreateSAMLConnector(connector teleservices.SAMLConnector) error
// UpsertSAMLConnector upserts SAML Connector
UpsertSAMLConnector(connector teleservices.SAMLConnector) error
// DeleteSAMLConnector deletes SAML Connector
DeleteSAMLConnector(connectorID string) error
// GetSAMLConnector returns SAML connector data, withSecrets adds or removes secrets from return results
GetSAMLConnector(id string, withSecrets bool) (teleservices.SAMLConnector, error)
// GetSAMLConnectors returns registered connectors, withSecrets adds or removes secret from return results
GetSAMLConnectors(withSecrets bool) ([]teleservices.SAMLConnector, error)
// CreateSAMLAuthRequest creates new auth request
CreateSAMLAuthRequest(req teleservices.SAMLAuthRequest, ttl time.Duration) error
// GetSAMLAuthRequest returns SAML auth request if found
GetSAMLAuthRequest(id string) (*teleservices.SAMLAuthRequest, error)
// CreateGithubConnector creates a new Github connector
CreateGithubConnector(connector teleservices.GithubConnector) error
// UpsertGithubConnector creates or updates a new Github connector
UpsertGithubConnector(connector teleservices.GithubConnector) error
// GetGithubConnectors returns all configured Github connectors
GetGithubConnectors(withSecrets bool) ([]teleservices.GithubConnector, error)
// GetGithubConnector returns a Github connector by its name
GetGithubConnector(name string, withSecrets bool) (teleservices.GithubConnector, error)
// DeleteGithubConnector deletes a Github connector by its name
DeleteGithubConnector(name string) error
// CreateGithubAuthRequest creates a new auth request for Github OAuth2 flow
CreateGithubAuthRequest(req teleservices.GithubAuthRequest) error
// GetGithubAuthRequest retrieves Github auth request by the token
GetGithubAuthRequest(stateToken string) (*teleservices.GithubAuthRequest, error)
}
Connectors manages OIDC connectors (OpenID connect configurations)
type ContainsExpr ¶
type ContainsExpr struct {
// Left is a left argument of Contains expression
Left Expr
// Right is a right argument of Contains expression
Right Expr
}
ContainsExpr constructs function expression used in rules specifications that checks if one value contains the other, e.g. contains([]string{"a"}, "b") where left is []string{"a"} and right is "b"
func (ContainsExpr) String ¶
func (i ContainsExpr) String() string
String returns function call expression used in rules
type DNSConfig ¶
type DNSConfig struct {
// Addrs lists local cluster DNS server IP addresses
Addrs []string `json:"addrs"`
// Port specifies the DNS port to use for dns
Port int `json:"port"`
}
DNSConfig describes a DNS server
func GetDNSConfig ¶
func GetDNSConfig(backend LocalBackend, fallback DNSConfig) (config *DNSConfig, err error)
GetDNSConfig returns the DNS configuration from the backend using fallback if no configuration is available
type DNSOverrides ¶
type DNSOverrides struct {
// Hosts maps a hostname to an IP address it will resolve to
Hosts map[string]string `json:"hosts"`
// Zones maps a DNS zone to nameservers it will be served by
Zones map[string][]string `json:"zones"`
}
DNSOverrides defines a cluster's DNS host/zone overrides
func (DNSOverrides) FormatHosts ¶
func (d DNSOverrides) FormatHosts() string
FormatHosts formats host overrides to a string
func (DNSOverrides) FormatZones ¶
func (d DNSOverrides) FormatZones() string
FormatZones formats zone overrides to a string
type Device ¶
type Device struct {
// Name identifies the device
Name DeviceName `json:"name"`
// Type defines the type of device: disk or partition
Type DeviceType `json:"type"`
// SizeMB of the device in MB
SizeMB uint64 `json:"size_mb"`
}
Device defines a device on a host: block device or a partition
func (Device) MarshalJSON ¶
MarshalJSON serializes this device as text
func (*Device) UnmarshalJSON ¶
UnmarshalJSON interpets input as either a Device or a device name (backwards-compatibility)
type DeviceName ¶
type DeviceName string
DeviceName identifies a device by name
func (DeviceName) MarshalText ¶
func (r DeviceName) MarshalText() ([]byte, error)
MarshalText formats device as text with full path
func (DeviceName) Path ¶
func (r DeviceName) Path() string
Path builds the device node path (in /dev)
func (*DeviceName) UnmarshalText ¶
func (r *DeviceName) UnmarshalText(p []byte) error
UnmarshalText reads device name from text
type DeviceType ¶
type DeviceType string
DeviceType defines a device type
const ( // DeviceDisk defines a block device DeviceDisk DeviceType = "disk" // DevicePartition defines a partition on a device DevicePartition DeviceType = "part" )
type Devices ¶
type Devices []Device
Devices defines a list of devices
func (Devices) GetByName ¶
func (r Devices) GetByName(name DeviceName) Device
GetByName looks up a device by name
type Docker ¶
type Docker struct {
// Device defines the block device (disk or partition) to use
// for a devicemapper configuration
Device Device `json:"device"`
// LVMSystemDirectory specifies the location of lvm system directory
// if the storage driver is `devicemapper`
LVMSystemDirectory string `json:"system_directory"`
}
Docker defines the configuration specific to docker
type DockerConfig ¶
type DockerConfig struct {
// StorageDriver specifies a storage driver to use
StorageDriver string `json:"storage_driver,omitempty"`
// Args specifies additional options to the docker daemon
Args []string `json:"args,omitempty"`
}
DockerConfig overrides Docker configuration for the cluster
func (DockerConfig) Check ¶
func (r DockerConfig) Check() error
Check makes sure the docker config is correct
func (DockerConfig) IsEmpty ¶
func (r DockerConfig) IsEmpty() bool
IsEmpty returns whether this configuration is empty
type ElectionChange ¶
type ElectionChange struct {
// EnableServers is a list of servers that we should enable elections on
EnableServers []Server `json:"enable_server,omitempty" yaml:"enable_server,omitempty"`
// DisableServers is a list of servers that we should disable elections on
DisableServers []Server `json:"disable_servers,omitempty" yaml:"disable_servers,omitempty"`
}
ElectionChange describes changes to make to cluster elections
type Endpoints ¶
type Endpoints interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults makes sure the resource is valid
CheckAndSetDefaults() error
// GetPublicAddr returns the public advertise addr
GetPublicAddr() string
// GetAgentsAddr returns the agents advertise addr
GetAgentsAddr() string
}
Endpoints represents a resource that allows to customize advertise addresses used for user and cluster communication
func NewEndpoints ¶
func NewEndpoints(spec EndpointsSpecV2) Endpoints
NewEndpoints creates a new endpoints resource from the provided spec
func UnmarshalEndpoints ¶
UnmarshalEndpoints unmarshals the endpoints resource from JSON
type EndpointsSpecV2 ¶
type EndpointsSpecV2 struct {
// PublicAddr is the Ops Center endpoint for user traffic
PublicAddr string `json:"public_advertise_addr"`
// AgentsAddr is the Ops Center endpoint for cluster traffic
AgentsAddr string `json:"agents_advertise_addr"`
}
EndpointsSpecV2 is the endpoints resource spec
type EndpointsV2 ¶
type EndpointsV2 struct {
// Kind is the resource kind
Kind string `json:"kind"`
// Version is the resource version
Version string `json:"version"`
// Metadata is the resource metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec is the resource spec
Spec EndpointsSpecV2 `json:"spec"`
}
EndpointsV2 represents the endpoints resource
func (*EndpointsV2) CheckAndSetDefaults ¶
func (e *EndpointsV2) CheckAndSetDefaults() error
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*EndpointsV2) Expiry ¶
func (e *EndpointsV2) Expiry() time.Time
Expiry returns the resource expiration time
func (*EndpointsV2) GetAgentsAddr ¶
func (e *EndpointsV2) GetAgentsAddr() string
GetAgentsAddr returns the agents advertise address
func (*EndpointsV2) GetMetadata ¶
func (e *EndpointsV2) GetMetadata() teleservices.Metadata
GetMetadata returns the resource metadata
func (*EndpointsV2) GetName ¶
func (e *EndpointsV2) GetName() string
GetName returns the resource name
func (*EndpointsV2) GetPublicAddr ¶
func (e *EndpointsV2) GetPublicAddr() string
GetPublicAddr returns the public advertise address
func (*EndpointsV2) SetExpiry ¶
func (e *EndpointsV2) SetExpiry(expires time.Time)
SetExpiry sets the resource expiration time
func (*EndpointsV2) SetName ¶
func (e *EndpointsV2) SetName(name string)
SetName sets the resource name
type EnvironmentSpec ¶
type EnvironmentSpec struct {
// KeyValues specifies the environment
KeyValues map[string]string `json:"data"`
}
EnvironmentSpec defines the environment variable resource
type EnvironmentV1 ¶
type EnvironmentV1 struct {
// Kind is a resource kind
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata specifies resource metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec defines the resource
Spec EnvironmentSpec `json:"spec"`
}
EnvironmentV1 describes the cluster runtime environment variables resource
func NewEnvironment ¶
func NewEnvironment(kvs map[string]string) *EnvironmentV1
NewEnvironment creates a new instance of the resource
func (*EnvironmentV1) CheckAndSetDefaults ¶
func (r *EnvironmentV1) CheckAndSetDefaults() error
CheckAndSetDefaults validates this resource and sets defaults
func (*EnvironmentV1) Expiry ¶
func (r *EnvironmentV1) Expiry() time.Time
Expiry returns expiration time
func (*EnvironmentV1) GetKeyValues ¶
func (r *EnvironmentV1) GetKeyValues() map[string]string
GetKeyValues returns the values of environment variables from this resource
func (*EnvironmentV1) GetMetadata ¶
func (r *EnvironmentV1) GetMetadata() teleservices.Metadata
GetMetadata returns resource metadata
func (*EnvironmentV1) GetName ¶
func (r *EnvironmentV1) GetName() string
GetName returns the name of the resource name
func (*EnvironmentV1) SetExpiry ¶
func (r *EnvironmentV1) SetExpiry(expires time.Time)
SetExpiry resets expiration time to the specified value
func (*EnvironmentV1) SetName ¶
func (r *EnvironmentV1) SetName(name string)
SetName resets the resource name to the specified value
type EnvironmentVariables ¶
type EnvironmentVariables interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults validates this resource and sets defaults
CheckAndSetDefaults() error
// GetKeyValues returns the values of environment variables from this resource
GetKeyValues() map[string]string
}
EnvironmentVariables defines the cluster runtime environment variables resource. It allows to override runtime environment variables on each node in the cluster. There is only a single instance of the resource in a cluster
func UnmarshalEnvironmentVariables ¶
func UnmarshalEnvironmentVariables(data []byte) (EnvironmentVariables, error)
UnmarshalEnvironmentVariables unmarshals the resource from YAML/JSON given with data
type EqualsExpr ¶
type EqualsExpr struct {
// Left is a left argument of Equals expression
Left Expr
// Value to check
Right Expr
}
EqualsExpr constructs function expression used in rules specifications that checks if one value is equal to another e.g. equals("a", "b") where Left is "a" and right is "b"
func (EqualsExpr) String ¶
func (i EqualsExpr) String() string
String returns function call expression used in rules
type Expr ¶
type Expr interface {
// String serializes expression into format parsed by rules engine
// (golang based syntax)
String() string
}
Expr is an expression
type Filesystem ¶
type Filesystem struct {
// DirName specifies the name of the directory where the file system is mounted
DirName string `json:"dir_name"`
// Type is the file system type
Type string `json:"type"`
}
Filesystem describes a mounted file system
type FilesystemStats ¶
type FilesystemStats map[string]FilesystemUsage
FilesystemStats maps a directory name to usage information
type FilesystemUsage ¶
type FilesystemUsage struct {
// TotalKB is the amount of space on a file system, in kilobytes (KB)
TotalKB uint64 `json:"total"`
// FreeKB is the amount of free space on a file system, in kilobytes (KB)
FreeKB uint64 `json:"free"`
}
FilesystemUsage describes usage for a mounted file system
type GarbageCollectOperationData ¶
type GarbageCollectOperationData struct {
// RemoteApps lists remote applications known to cluster
RemoteApps []Application `json:"remote_apps,omitempty" yaml:"remote_apps,omitempty"`
}
GarbageCollectOperationData describes configuration for the garbage collect operation
type IdentifierExpr ¶
type IdentifierExpr string
IdentifierExpr is identifier expression
func (IdentifierExpr) String ¶
func (i IdentifierExpr) String() string
String serializes identifier expression into format parsed by rules engine
type InstallExpandOperationState ¶
type InstallExpandOperationState struct {
// Profiles contains certain details about servers provisioned during
// the operation, e.g. roles, counts, instance types
Profiles map[string]ServerProfile `json:"profiles"`
// Servers defines (user-affected) configuration of each active server
// instance
Servers Servers `json:"servers"`
// Agents defines the list of agent attributes (like download instructions,
// etc.) to use on the client
Agents map[string]AgentProfile `json:"agents"`
// Subnets describes selected overlay/service network subnets for this
// operation
Subnets Subnets `json:"subnets"`
// Vars is a set of variables specific to this operation, e.g. AWS
// credentials or region
Vars OperationVariables `json:"vars"`
// Package is the application being installed
Package loc.Locator `json:"package"`
}
InstallExpandOperationState defines the state of an install or expand operation
type InstallOperationData ¶
type InstallOperationData struct {
// Env specifies optional cluster environment variables to add
Env map[string]string `json:"env,omitempty"`
// Config specifies optional cluster configuration resource
Config []byte `json:"config,omitempty"`
// Resources specifies optional Kubernetes resources to create
Resources []byte `json:"resources,omitempty"`
// GravityResources specifies optional Gravity resources to create upon successful installation
GravityResources []UnknownResource `json:"gravity_resources,omitempty"`
}
InstallOperationData describes configuration for the install operation
type InstallToken ¶
type InstallToken struct {
// Token is a unique randomly generated character sequence
Token string `json:"token"`
// Expires sets the token expiry time, zero time if never expires
Expires time.Time `json:"expires"`
// AccountID is the account this signup token
// is associated with in case if that's user signup token
AccountID string `json:"account_id"`
// SiteDomain defines a site this token will be associated with
// once the installation has started
SiteDomain string `json:"site_domain"`
// Application defines the application package this token is bound to.
// Only set for one-time installations
Application *loc.Locator `json:"application,omitempty"`
// UserEmail links this token to a user with permissions to execute a one-time
// installation of a specific site
UserEmail string `json:"user_email"`
// UserType defines the type of user to create and associate with this token
UserType string `json:"type"`
}
InstallToken defines a one-time installation token
func (*InstallToken) Check ¶
func (p *InstallToken) Check() error
type Leader ¶
type Leader interface {
// AddWatch starts watching the key for changes and sending them
// to the valuesC channel.
AddWatch(key string, retry time.Duration, valuesC chan string)
// AddVoter adds a new voter.
// The voter will participate in the election until paused with StepDown
// The voter can be cancelled via the specified context.
AddVoter(ctx context.Context, key, value string, term time.Duration) error
// StepDown instructs the voter to pause election and give up its leadership
StepDown()
}
Leader describes a leader election campaign
type LegacyRoles ¶
type LegacyRoles interface {
// UpsertV1Role creates or updates V2 role
// used for migration purposes
UpsertV2Role(role RoleV2) error
}
LegacyRoles is used in testing
type Links ¶
type Links interface {
// UpsertOpsCenterLink updates or creates new OpsCenter link
UpsertOpsCenterLink(l OpsCenterLink, ttl time.Duration) (*OpsCenterLink, error)
// GetOpsCenterLinks returns a list of OpsCenter links
GetOpsCenterLinks(siteDomain string) ([]OpsCenterLink, error)
}
Links is a legacy an interface for remote Ops Center links which have been superseded by trusted clusters, kept only for migration purposes
type LocalBackend ¶
type LocalBackend interface {
Backend
// SystemMetadata manages node-local system metadata
SystemMetadata
}
LocalBackend represents the node-local backend
type Locks ¶
type Locks interface {
// AcquireLock grabs a lock that will be released automatically in ttl time
// blocks until lock is available
AcquireLock(token string, ttl time.Duration) error
// TryAcquireLock grabs a lock that will be released automatically in ttl time
// tries once and either succeeds right away or fails
TryAcquireLock(token string, ttl time.Duration) error
// ReleaseLock releases lock by token name
ReleaseLock(token string) error
}
Locks is the locking service
type LogForwarder ¶
type LogForwarder interface {
teleservices.Resource
// GetAddress returns log forwarder address
GetAddress() string
// GetProtocol returns log forwarder protocol
GetProtocol() string
// CheckAndSetDefaults validates log forwarder configuration
CheckAndSetDefaults() error
}
LogForwarder describes a log forwarder resource
func NewLogForwarder ¶
func NewLogForwarder(name, address, protocol string) LogForwarder
NewLogForwarder creates a new log forwarder
func NewLogForwarderFromV1 ¶
func NewLogForwarderFromV1(l LogForwarderV1) LogForwarder
NewLogForwarderFromV1 creates a new log forwarder from legacy format
type LogForwarderMarshaler ¶
type LogForwarderMarshaler interface {
// Unmarshal unmarshals log forwarder
Unmarshal([]byte) (LogForwarder, error)
// Marshal marshals log forwarder
Marshal(LogForwarder, ...teleservices.MarshalOption) ([]byte, error)
}
LogForwarderMarshaler defines methods to marshal/unmarshal log forwarders
func GetLogForwarderMarshaler ¶
func GetLogForwarderMarshaler() LogForwarderMarshaler
GetLogForwarderMarshaler returns log forwarder marshaler
type LogForwarderSpecV2 ¶
type LogForwarderSpecV2 struct {
// Address is log forwarder address
Address string `json:"address"`
// Protocol is log forwarder protocol
Protocol string `json:"protocol,omitempty"`
}
LogForwarderSpecV2 is the log forwarder spec
type LogForwarderV1 ¶
type LogForwarderV1 struct {
// Address is log forwarder address
Address string `json:"address"`
// Protocol is log forwarder protocol
Protocol string `json:"protocol"`
}
LogForwarderV1 is the legacy log forwarder spec
type LogForwarderV2 ¶
type LogForwarderV2 struct {
// Kind is the resource kind, "logforwarder"
Kind string `json:"kind"`
// Version is the resource version, "v2"
Version string `json:"version"`
// Metadata contains log forwarder metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec is log forwarder spec
Spec LogForwarderSpecV2 `json:"spec"`
}
LogForwarderV2 represents log forwarder resource
func (*LogForwarderV2) CheckAndSetDefaults ¶
func (l *LogForwarderV2) CheckAndSetDefaults() error
CheckAndSetDefaults validates log forwarder configuration
func (*LogForwarderV2) Expiry ¶
func (l *LogForwarderV2) Expiry() time.Time
Expiry returns log forwarder expiration time
func (*LogForwarderV2) GetAddress ¶
func (l *LogForwarderV2) GetAddress() string
GetAddress returns log forwarder address
func (*LogForwarderV2) GetMetadata ¶
func (l *LogForwarderV2) GetMetadata() teleservices.Metadata
GetMetadata returns log forwarder metadata
func (*LogForwarderV2) GetName ¶
func (l *LogForwarderV2) GetName() string
GetName returns log forwarder name
func (*LogForwarderV2) GetProtocol ¶
func (l *LogForwarderV2) GetProtocol() string
GetProtocol returns log forwarder protocol
func (*LogForwarderV2) SetExpiry ¶
func (l *LogForwarderV2) SetExpiry(expires time.Time)
SetExpiry sets log forwarder expiration time
func (*LogForwarderV2) SetName ¶
func (l *LogForwarderV2) SetName(name string)
SetName sets log forwarder name
type LoginEntries ¶
type LoginEntries interface {
UpsertLoginEntry(l LoginEntry) (*LoginEntry, error)
GetLoginEntries() ([]LoginEntry, error)
GetLoginEntry(opsCenterURL string) (*LoginEntry, error)
DeleteLoginEntry(opsCenterURL string) error
GetCurrentOpsCenter() string
SetCurrentOpsCenter(string) error
}
LoginEntries store local agent logins with remote portals
type LoginEntry ¶
type LoginEntry struct {
// Email is user email
Email string `yaml:"email"`
// Password is a password or token
Password string `yaml:"token"`
// OpsCenterURL is URL of the OpsCenter
OpsCenterURL string `yaml:"opscenter"`
// Expires is optional setting when this token/password expires
Expires time.Time `yaml:"expires"`
// AccountID is account id this user belongs to
AccountID string `yaml:"account_id"`
// Created is when the entry was created
Created time.Time `yaml:"created"`
}
LoginEntry represents local agent login with remote portal, used to pull and push packages
func GetClusterAgentCreds ¶
func GetClusterAgentCreds(backend Backend, clusterName string, needAdmin bool) (*LoginEntry, error)
GetClusterAgentCreds returns credentials for cluster agent
- for regular nodes, this is unprivileged cluster agent that can pull updates
- for master nodes, this is privileged agent, that can also do some cluster administration
func GetClusterLoginEntry ¶
func GetClusterLoginEntry(backend Backend) (*LoginEntry, error)
GetClusterLoginEntry returns login entry for the local cluster
func (*LoginEntry) Check ¶
func (l *LoginEntry) Check() error
func (LoginEntry) String ¶
func (l LoginEntry) String() string
String returns the login entry string representation
type Memory ¶
type Memory struct {
// Total is the amount of physical RAM, in kilobytes (kB)
Total uint64 `json:"total"`
// Free is the amount of physical RAM left unused, in kilobytes (kB)
Free uint64 `json:"free"`
// ActualFree is the amount of free RAM
// (accounting for kernel-allocated memory), in kilobytes
ActualFree uint64 `json:"actual_free"`
}
Memory describes RAM parameters on a system
type Migrations ¶
type Migrations interface {
// SchemaVersion returns the version of the schema
SchemaVersion() (int, error)
}
Migrations defines an interface to schema migration management
type Mount ¶
type Mount struct {
// Name identifies the mount
Name string `json:"name"`
// Source is the directory to mount
Source string `json:"source"`
// Destination is the mount destination directory
Destination string `json:"destination"`
// CreateIfMissing is whether to create the source directory if it doesn't exist
CreateIfMissing bool `json:"create_if_missing"`
// SkipIfMissing is whether to avoid mounting a directory if the source does not exist
// on host
SkipIfMissing bool `json:"skip_if_missing"`
// UID sets UID for a volume path on the host
UID *int `json:"uid,omitempty"`
// GID sets GID for a volume path on the host
GID *int `json:"gid,omitempty"`
// Mode sets file mode for a volume path on the host
// accepts octal format
Mode string `json:"mode,omitempty"`
// Recursive means that all mount points inside this mount should also be mounted
Recursive bool `json:"recursive,omitempty"`
}
Mount describes a mount on a server
type NDMConfig ¶
type NDMConfig struct {
// ProbeConfigs contains probes NDM performs when discovering devices.
ProbeConfigs []*NDMProbe `yaml:"probeconfigs"`
// FilterConfigs contains filters NDM considers when discovering devices.
FilterConfigs []*NDMFilter `yaml:"filterconfigs"`
}
NDMConfig represents the OpenEBS Node Device Manager configuration.
func DefaultNDMConfig ¶
func DefaultNDMConfig() *NDMConfig
DefaultNDMConfig returns a default NDM config.
func NDMConfigFromConfigMap ¶
NDMConfigFromConfigMap creates NDM config from the provided config map.
func (*NDMConfig) Apply ¶
func (c *NDMConfig) Apply(ps PersistentStorage)
Apply applies parameters from the provided resource to this configuration.
func (*NDMConfig) DeviceExcludes ¶
DeviceExcludes returns device exclude filter.
func (*NDMConfig) DeviceIncludes ¶
DeviceIncludes returns device include filter.
func (*NDMConfig) MountExcludes ¶
MountExcludes returns mount exclude filter.
func (*NDMConfig) SetDeviceExcludes ¶
SetDeviceExcludes sets device exclude filter.
func (*NDMConfig) SetDeviceIncludes ¶
SetDeviceIncludes sets device include filter.
func (*NDMConfig) SetMountExcludes ¶
SetMountExcludes sets mount exclude filter.
func (*NDMConfig) SetVendorExcludes ¶
SetVendorExcludes sets vendor exclude filter.
func (*NDMConfig) SetVendorIncludes ¶
SetVendorIncludes sets vendor include filter.
func (*NDMConfig) ToConfigMap ¶
ToConfigMap creates a config map from this NDM config.
func (*NDMConfig) VendorExcludes ¶
VendorExcludes returns vendor exclude filter.
func (*NDMConfig) VendorIncludes ¶
VendorIncludes returns vendor include filter.
type NDMFilter ¶
type NDMFilter struct {
// Name is the filter name.
Name string `yaml:"name"`
// Key is the filter id.
Key string `yaml:"key"`
// State is the filter state (enabled/disabled).
State bool `yaml:"state"`
// Include is a list of includes for this filter.
Include string `yaml:"include,omitempty"`
// Exclude is a list of excludes for this filter.
Exclude string `yaml:"exclude,omitempty"`
}
NDMFilter represents a single NDM filter.
type NDMProbe ¶
type NDMProbe struct {
// Name is the probe name.
Name string `yaml:"name"`
// Key is the probe id.
Key string `yaml:"key"`
// State is the probe state (enabled/disabled).
State bool `yaml:"state"`
}
NDMProbe represents a single NDM probe configuration.
type NetworkInterface ¶
type NetworkInterface struct {
// IPv4 address assigned to the interface
IPv4 string `json:"ipv4_addr"`
// Name is the interface name
Name string `json:"name"`
}
NetworkInterface represents a network interface
type OSInfo ¶
type OSInfo struct {
// ID defines the system with a single word ID: `ubuntu` or `rhel`
ID string `json:"name"`
// Like defines the system as being similar to given ones: `debian` or `rhel fedora`
Like []string `json:"like,omitempty"`
// Version defines the numeric version of the system: `7.2`
Version string `json:"version"`
}
OSInfo describes an operating system using several attributes like operating system ID and a version number
type OSUser ¶
type OSUser struct {
// Name of the user. Not empty if this describes an existing user
Name string `json:"name"`
// UID specifies the user ID
UID string `json:"uid"`
// GID specifies the group ID
GID string `json:"gid"`
}
OSUser describes a user on host.
func DefaultOSUser ¶
func DefaultOSUser() OSUser
type Objects ¶
type Objects interface {
GetObjects() ([]string, error)
UpsertObjectPeers(hash string, peers []string, expires time.Duration) error
GetObjectPeers(hash string) ([]string, error)
DeleteObjectPeers(hash string, peers []string) error
DeleteObject(hash string) error
}
Objects stores binary objects metadata
type OnPremVariables ¶
type OnPremVariables struct {
// PodCIDR specifies the network range for pods
PodCIDR string `json:"pod_cidr"`
// ServiceCIDR specifies the network range for services
ServiceCIDR string `json:"service_cidr"`
// VxlanPort is the overlay network port
VxlanPort int `json:"vxlan_port"`
}
OnPremVariables is a set of operation variables specific to onprem provider
type OpenEBS ¶
type OpenEBS struct {
// Filters is a list of filters OpenEBS will use when discovering devices.
Filters OpenEBSFilters `json:"filters"`
}
OpenEBS represents OpenEBS configuration.
type OpenEBSFilter ¶
type OpenEBSFilter struct {
// Include defines filters to include when discovering devices.
Include []string `json:"include,omitempty"`
// Exclude defines filters to exclude when discovering devices.
Exclude []string `json:"exclude,omitempty"`
}
OpenEBSFilter represents a single filter type.
type OpenEBSFilters ¶
type OpenEBSFilters struct {
// MountPoints filters devices based on directory mount points.
MountPoints OpenEBSFilter `json:"mountPoints"`
// Vendors filters devices based on their vendor names.
Vendors OpenEBSFilter `json:"vendors"`
// Devices filters devices based on their names.
Devices OpenEBSFilter `json:"devices"`
}
OpenEBSFilters is a list of filters OpenEBS will use when discovering devices.
type Operation ¶
type Operation interface {
// Resource provides common resource methods.
services.Resource
// CheckAndSetDefaults validates the object and sets defaults.
CheckAndSetDefaults() error
// GetType returns the operation type.
GetType() string
// GetCreates returns the operation created timestamp.
GetCreated() time.Time
// GetState returns the operation state.
GetState() string
// GetInstall returns install operation data.
GetInstall() OperationInstall
// GetExpand returns expand operation data.
GetExpand() OperationExpand
// GetShrink returns shrink operation data.
GetShrink() OperationShrink
// GetUpgrade returns upgrade operation data.
GetUpgrade() OperationUpgrade
// GetUpdateEnviron returns environment update operation data.
GetUpdateEnviron() OperationUpdateEnviron
// GetUpdateConfig returns runtime configuration update operation data.
GetUpdateConfig() OperationUpdateConfig
// GetReconfigure returns reconfigure operation data.
GetReconfigure() OperationReconfigure
}
Operation represents a single cluster operation.
func UnmarshalOperation ¶
UnmarshalOperation unmarshals operation resource from json.
type OperationExpand ¶
type OperationExpand struct {
// Node is the joining node.
Node OperationNode `json:"node"`
}
OperationExpand contains expand specific parameters.
type OperationInstall ¶
type OperationInstall struct {
// Nodes is a list of nodes participating in installation.
Nodes []OperationNode `json:"nodes"`
}
OperationInstall contains install specific parameters.
type OperationNode ¶
type OperationNode struct {
// IP is the node advertise IP address.
IP string `json:"ip"`
// Hostname is the node hostname.
Hostname string `json:"hostname"`
// Role is the node role.
Role string `json:"role"`
}
OperationNode describes an operation node.
func (OperationNode) String ¶
func (n OperationNode) String() string
String returns the node human friendly description.
type OperationPhase ¶
type OperationPhase struct {
// ID is the ID of the phase within operation
ID string `json:"id"`
// Executor is function which should execute this phase
Executor string `json:"executor"`
// Description is verbose description of the phase
Description string `json:"description,omitempty" yaml:"description,omitempty"`
// State is the current phase state
State string `json:"state,omitempty" yaml:"state,omitempty"`
// Step maps the phase to its corresponding step on the UI progress screen
Step int `json:"step"`
// Phases is the list of sub-phases the phase consists of
Phases []OperationPhase `json:"phases,omitempty" yaml:"phases,omitempty"`
// Requires is a list of phase names that need to be
// completed before this phase can be executed
Requires []string `json:"requires,omitempty" yaml:"requires,omitempty"`
// LimitParallel enables x parallel executions of sub phases.
LimitParallel int `json:"num_parallel"`
// Updated is the last phase update time
Updated time.Time `json:"updated,omitempty" yaml:"updated,omitempty"`
// Data is optional phase-specific data attached to the phase
Data *OperationPhaseData `json:"data,omitempty" yaml:"data,omitempty"`
// Error is the error that happened during phase execution
Error *trace.RawTrace `json:"error,omitempty"`
}
OperationPhase represents a single operation plan phase
func (OperationPhase) GetLastUpdateTime ¶
func (p OperationPhase) GetLastUpdateTime() time.Time
GetLastUpdateTime returns the phase last updated time
func (OperationPhase) GetState ¶
func (p OperationPhase) GetState() string
GetState returns the phase state based on the states of all its subphases
func (OperationPhase) HasSubphases ¶
func (p OperationPhase) HasSubphases() bool
HasSubphases returns true if the phase has 1 or more subphases
func (OperationPhase) IsCompleted ¶
func (p OperationPhase) IsCompleted() bool
IsCompleted returns true if the phase is in "completed" state
func (OperationPhase) IsFailed ¶
func (p OperationPhase) IsFailed() bool
IsFailed returns true if the phase is in "failed" state
func (OperationPhase) IsInProgress ¶
func (p OperationPhase) IsInProgress() bool
IsInProgress returns true if the phase is in "in progress" state
func (OperationPhase) IsRolledBack ¶
func (p OperationPhase) IsRolledBack() bool
IsRolledBack returns true if the phase is in "rolled back" state
func (OperationPhase) IsUnstarted ¶
func (p OperationPhase) IsUnstarted() bool
IsUnstarted returns true if the phase is in "unstarted" state
type OperationPhaseData ¶
type OperationPhaseData struct {
// Server is the server the phase operates on
Server *Server `json:"server,omitempty" yaml:"server,omitempty"`
// ExecServer is an optional server the phase is supposed to be executed on.
// If unspecified, the Server is used
ExecServer *Server `json:"exec_server,omitempty" yaml:"exec_server,omitempty"`
// Master is the selected master node the phase needs access to
Master *Server `json:"master,omitempty" yaml:"master,omitempty"`
// Package is the package locator for the phase, e.g. update package
Package *loc.Locator `json:"package,omitempty" yaml:"package,omitempty"`
// Labels can optionally identify the package
Labels map[string]string `json:"labels,omitempty" yaml:"labels,omitempty"`
// InstalledPackage references the installed application package
InstalledPackage *loc.Locator `json:"installed_package,omitempty" yaml:"installed_package,omitempty"`
// RuntimePackage references the update runtime package
RuntimePackage *loc.Locator `json:"runtime_package,omitempty" yaml:"runtime_package,omitempty"`
// ElectionChange describes changes to make to cluster elections
ElectionChange *ElectionChange `json:"election_status,omitempty" yaml:"election_status,omitempty"`
// Agent is the credentials of the agent that should be logged in
Agent *LoginEntry `json:"agent,omitempty" yaml:"agent,omitempty"`
// License is the cluster license
License []byte `json:"license,omitempty" yaml:"license,omitempty"`
// TrustedCluster is the resource data for a trusted cluster representing an Ops Center
TrustedCluster []byte `json:"trusted_cluster_resource,omitempty" yaml:"trusted_cluster_resource,omitempty"`
// Storage is the persistent storage resource configuration.
Storage []byte `json:"storage_resource,omitempty" yaml:"storage_resource,omitempty"`
// Values are helm values in a marshaled yaml format
Values []byte `json:"values,omitempty" yaml:"values,omitempty"`
// ServiceUser specifies the optional service user to use as a context
// for file operations
ServiceUser *OSUser `json:"service_user,omitempty" yaml:"service_user,omitempty"`
// Data is arbitrary text data to provide to a phase executor
Data string `json:"data,omitempty" yaml:"data,omitempty"`
// Pull contains applications and packages that should be pulled
Pull *PullData `json:"pull,omitempty" yaml:"pull,omitempty"`
// GarbageCollect specifies configuration specific to garbage collect operation
GarbageCollect *GarbageCollectOperationData `json:"garbage_collect,omitempty" yaml:"garbage_collect,omitempty"`
// Update specifies configuration specific to update operations
Update *UpdateOperationData `json:"update,omitempty" yaml:"update,omitempty"`
// Install specifies configuration specific to install operation
Install *InstallOperationData `json:"install,omitempty" yaml:"install,omitempty"`
}
OperationPhaseData represents data attached to an operation phase
type OperationPlan ¶
type OperationPlan struct {
// OperationID is the ID of the operation the plan belongs to
OperationID string `json:"operation_id"`
// OperationType is the type of the operation the plan belongs to
OperationType string `json:"operation_type"`
// AccountID is the ID of the account initiated the operation
AccountID string `json:"account_id"`
// ClusterName is the name of the cluster for the operation
ClusterName string `json:"cluster_name"`
// Phases is the list of phases the plan consists of
Phases []OperationPhase `json:"phases"`
// Servers is the list of all cluster servers
Servers []Server `json:"servers"`
// OfflineCoordinator is the server leading/coordinating the upgrade across the cluster, and will have a local copy
// of completed plan phases if the underlying state sync (etcd) is offline
OfflineCoordinator *Server `json:"lead_master"`
// GravityPackage is the gravity package locator to update to
GravityPackage loc.Locator `json:"gravity_package"`
// CreatedAt is the plan creation timestamp
CreatedAt time.Time `json:"created_at"`
// DNSConfig specifies cluster DNS configuration
DNSConfig DNSConfig `json:"dns_config"`
}
OperationPlan represents a plan of an operation as a collection of phases
func (OperationPlan) Check ¶
func (p OperationPlan) Check() error
Check makes sure operation plan is valid
func (*OperationPlan) GetLeafPhases ¶
func (p *OperationPlan) GetLeafPhases() (result []OperationPhase)
GetLeafPhases flattens the plan and returns all phases that do not have any subphases in the order they appear in the plan.
For instance, for the following plan
- /init
- /node-1
- /node-2
- /checks
it will return ["/init/node-1", "/init/node-2", "/checks"].
func (*OperationPlan) IsStarted ¶
func (p *OperationPlan) IsStarted() bool
IsStarted returns true if the operation plan has already started.
func (*OperationPlan) Len ¶
func (p *OperationPlan) Len() int
Len returns the number of leaf phases the plan consists of.
type OperationReconfigure ¶
type OperationReconfigure struct {
// IP is the new advertise IP address.
IP string `json:"ip"`
}
OperationReconfigure contains reconfiguration specific parameters.
type OperationShrink ¶
type OperationShrink struct {
// Node is the node that's leaving.
Node OperationNode `json:"node"`
}
OperationShrink contains shrink specific parameters.
type OperationSpecV2 ¶
type OperationSpecV2 struct {
// Type is the operation type.
Type string `json:"type"`
// Created is when the operation was created.
Created time.Time `json:"created"`
// State is the operation state.
State string `json:"state"`
// Install is install operation data.
Install *OperationInstall `json:"install,omitempty"`
// Expand is expand operation data.
Expand *OperationExpand `json:"expand,omitempty"`
// Shrink is shrink operation data.
Shrink *OperationShrink `json:"shrink,omitempty"`
// Upgrade is upgrade operation data.
Upgrade *OperationUpgrade `json:"upgrade,omitempty"`
// UpdateEnviron is environment update operation data.
UpdateEnviron *OperationUpdateEnviron `json:"updateEnviron,omitempty"`
// UpdateConfig is runtime configuration update operation data.
UpdateConfig *OperationUpdateConfig `json:"updateConfig,omitempty"`
// Reconfigure is advertise IP reconfiguration operation data.
Reconfigure *OperationReconfigure `json:"reconfigure,omitempty"`
}
OperationSpecV2 is the operation resource spec.
type OperationUpdateConfig ¶
type OperationUpdateConfig struct {
// Config is the new runtime config.
Config []byte `json:"config"`
}
OperationUpdateConfig contains configuration update specific parameters.
type OperationUpdateEnviron ¶
type OperationUpdateEnviron struct {
// Env is the new environment.
Env map[string]string `json:"env"`
}
OperationUpdateEnviron contains environment update specific parameters.
type OperationUpgrade ¶
type OperationUpgrade struct {
// Package is the upgrade package.
Package loc.Locator `json:"package"`
}
OperationUpgrade contains upgrade specific parameters.
type OperationV2 ¶
type OperationV2 struct {
// Kind is the operation resource kind.
Kind string `json:"kind"`
// Version is the operation resource version.
Version string `json:"version"`
// Metadata is the operation metadata.
Metadata services.Metadata `json:"metadata"`
// Spec is the operation spec.
Spec OperationSpecV2 `json:"spec"`
}
OperationV2 is the operation resource definition.
func (*OperationV2) CheckAndSetDefaults ¶
func (o *OperationV2) CheckAndSetDefaults() error
CheckAndSetDefaults validates operation resource and sets defaults.
func (*OperationV2) Expiry ¶
func (o *OperationV2) Expiry() time.Time
Expiry returns the resource expiration time.
func (*OperationV2) GetCreated ¶
func (o *OperationV2) GetCreated() time.Time
GetCreated returns the operation created timestamp.
func (*OperationV2) GetExpand ¶
func (o *OperationV2) GetExpand() OperationExpand
GetExpand returns expand operation data.
func (*OperationV2) GetInstall ¶
func (o *OperationV2) GetInstall() OperationInstall
GetInstall returns install operation data.
func (*OperationV2) GetMetadata ¶
func (o *OperationV2) GetMetadata() services.Metadata
GetMetadata returns operation metadata.
func (*OperationV2) GetReconfigure ¶
func (o *OperationV2) GetReconfigure() OperationReconfigure
GetReconfigure returns reconfigure operation data.
func (*OperationV2) GetShrink ¶
func (o *OperationV2) GetShrink() OperationShrink
GetShrink returns shrink operation data.
func (*OperationV2) GetState ¶
func (o *OperationV2) GetState() string
GetState returns the operation state.
func (*OperationV2) GetType ¶
func (o *OperationV2) GetType() string
GetType returns the operation type.
func (*OperationV2) GetUpdateConfig ¶
func (o *OperationV2) GetUpdateConfig() OperationUpdateConfig
GetUpdateConfig returns runtime configuration update operation data.
func (*OperationV2) GetUpdateEnviron ¶
func (o *OperationV2) GetUpdateEnviron() OperationUpdateEnviron
GetUpdateEnviron returns environment update operation data.
func (*OperationV2) GetUpgrade ¶
func (o *OperationV2) GetUpgrade() OperationUpgrade
GetUpgrade returns upgrade operation data.
func (*OperationV2) SetExpiry ¶
func (o *OperationV2) SetExpiry(expires time.Time)
SetExpiry sets the resource expiration time.
type OperationVariables ¶
type OperationVariables struct {
// System is a set of variables common for each provider
System SystemVariables `json:"system"`
// OnPrem is a set of onprem-specific variables
OnPrem OnPremVariables `json:"onprem"`
// AWS is a set of AWS-specific variables
AWS AWSVariables `json:"aws"`
// Values are helm values in a marshaled yaml format
Values []byte `json:"values,omitempty"`
}
OperationVariables is operation-specific set of variables
func (OperationVariables) ToMap ¶
func (v OperationVariables) ToMap() (map[string]interface{}, error)
ToMap converts operation variables into a JSON object for easier use in templates
type OpsCenterLink ¶
type OpsCenterLink struct {
// SiteDomain is the domain name of the site
SiteDomain string `json:"site_domain"`
// Hostname is OpsCenter hostname we are connected to
Hostname string `json:"hostname"`
// Type is a link type (e.g. updates, remote_access)
Type string `json:"type"`
// RemoteAddr is a remote address used for updates or remote access
RemoteAddr string `json:"remote_address"`
// APIURL is a URL of remote ops center
APIURL string `json:"api_url"`
// Enabled is whether this link is enabled
Enabled bool `json:"enabled"`
// User defines an optional user context to use for remote access
User *RemoteAccessUser `json:"user"`
// Wizard indicates whether this is a link to a wizard
Wizard bool `json:"wizard"`
}
OpsCenterLink is a link between remote OpsCenter and a local site
func (*OpsCenterLink) Check ¶
func (l *OpsCenterLink) Check() error
Check checks if OpsCenter link parameters are correct
type Package ¶
type Package struct {
// Repository is a package repository
Repository string `json:"repository"`
// Name is a full package name
Name string `json:"name"`
// Version is a package version in SemVer format
Version string `json:"version"`
// SHA512 is a sha512 hash of the data in storage
SHA512 string `json:"checksum"`
// SizePytes is a package size in bytes
SizeBytes int `json:"size_bytes"`
// Created is the time the package was created at
Created time.Time `json:"created"`
// CreatedBy is the email of a user who created the package
CreatedBy string `json:"created_by"`
// RuntimeLabels are optional key=value pairs metadata that
// can be assigned to a package, they are not a part of
// the package, and assigned at a run time,
// they are useful for denoting packages currently installed
// in the system
RuntimeLabels map[string]string `json:"runtime_labels"`
// Type defines the type of the package
Type string `json:"type"`
// Hidden defines the package visibility
Hidden bool `json:"hidden"`
// Encrypted indicates whether the package data is encrypted
Encrypted bool `json:"encrypted"`
// Manifest defines the application manifest for an application package
Manifest []byte `json:"manifest"`
// Base refers to the package this application is based on
Base *Package `json:"base,omitempty"`
}
Package is any named and versioned blob with an optional manifest
func (*Package) SetRuntimeLabel ¶
SetRuntimeLabel sets runtime label name and value for the package
type PackageChangeset ¶
type PackageChangeset struct {
ID string `json:"id"`
// Changes is a list of package updates
Changes []PackageUpdate `json:"changes"`
// Created is the time when this update was created
Created time.Time `json:"created"`
}
PackageChangeset is a set of package updates from one version to another
func (*PackageChangeset) Check ¶
func (u *PackageChangeset) Check() error
Check checks the validity of this object
func (*PackageChangeset) ReversedChanges ¶
func (u *PackageChangeset) ReversedChanges() []PackageUpdate
ReversedChanges returns changeset with all changes inversed
func (PackageChangeset) String ¶
func (u PackageChangeset) String() string
String returns user-friendly representation of this update
type PackageChangesets ¶
type PackageChangesets interface {
// CreatePackageChangeset creates new changeset
CreatePackageChangeset(u PackageChangeset) (*PackageChangeset, error)
// GetPackageChangesets lists package changesets
GetPackageChangesets() ([]PackageChangeset, error)
// GetPackageChangeset returns update by id
GetPackageChangeset(id string) (*PackageChangeset, error)
}
PackageChangesets tracks server local package changes - updates and downgrades
type PackageUpdate ¶
type PackageUpdate struct {
// From is currently installed version
From loc.Locator `json:"from"`
// To is the target version
To loc.Locator `json:"to"`
// Labels defines optional identifying set of labels
Labels map[string]string `json:"labels,omitempty"`
// ConfigPackage specifies optional configuration package dependency
ConfigPackage *PackageUpdate `json:"config_package,omitempty"`
}
PackageUpdate represents package change from one version to another
func (*PackageUpdate) String ¶
func (u *PackageUpdate) String() string
String formats this update as human-readable text
type Peer ¶
type Peer struct {
ID string `json:"id"`
AdvertiseAddr string `json:"advertise_addr"`
LastHeartbeat time.Time `json:"last_heartbeat"`
}
Peer is a peer node of the package management service
type Permission ¶
type Permission struct {
// UserEmail this the user this rule refers to
UserEmail string `json:"user_email"`
// Action on object, one of create, read, delete
Action string `json:"action"`
// Collection is a collection this rule refers to e.g. "repository"
Collection string `json:"collection"`
// Collection ID, e.g. repository name, can be empty in case
// if there is only one object
CollectionID string `json:"collection_id"`
}
Permission represent action that user can perform on objects in certain collections e.g. user can read packages from gravitational repository:
<UserID: install-agent> has permission to <Action: read> packages to <Collection: repository> <CollectionID: gravitational>
e.g. user can add new repositories
<UserID: admin> has permission to <Action: create> repositories in <Collection: portal_repositories>
func (*Permission) Check ¶
func (p *Permission) Check() error
func (Permission) String ¶
func (p Permission) String() string
type Permissions ¶
type Permissions interface {
CreatePermission(p Permission) (*Permission, error)
GetPermission(p Permission) (*Permission, error)
GetUserPermissions(email string) ([]Permission, error)
DeletePermissionsForUser(email string) error
}
Permissions collection manages repository access rules - read, create, delete
type PersistentStorage ¶
type PersistentStorage interface {
// Resource provides common resource methods.
services.Resource
// CheckAndSetDefaults validates the object and sets defaults.
CheckAndSetDefaults() error
// GetMountExcludes returns mount points to exclude when discovering devices.
GetMountExcludes() []string
// GetVendorIncludes returns vendor names to include when discovering devices.
GetVendorIncludes() []string
// GetVendorExcludes returns vendor names to exclude when discovering devices.
GetVendorExcludes() []string
// GetDeviceIncludes returns device names to include when discovering devices.
GetDeviceIncludes() []string
// GetDeviceExcludes returns device names to exclude when discovering devices.
GetDeviceExcludes() []string
}
PersistentStorage represents persistent storage configuration resource.
func DefaultPersistentStorage ¶
func DefaultPersistentStorage() PersistentStorage
DefaultPersistentStorage returns a new default persistent storage resource.
func NewPersistentStorage ¶
func NewPersistentStorage(spec PersistentStorageSpecV1) PersistentStorage
NewPersistentStorage creates a new persistent storage resource from the provided spec.
func PersistentStorageFromNDMConfig ¶
func PersistentStorageFromNDMConfig(c *NDMConfig) PersistentStorage
PersistentStorageFromNDMConfig creates a new persistent storage resource from the provided Node Device Manager configuration.
func UnmarshalPersistentStorage ¶
func UnmarshalPersistentStorage(data []byte) (PersistentStorage, error)
UnmarshalPersistentStorage unmarshals provided data into persistent storage resource.
type PersistentStorageSpecV1 ¶
type PersistentStorageSpecV1 struct {
// OpenEBS contains OpenEBS configuration.
OpenEBS OpenEBS `json:"openebs"`
}
PersistentStorageSpecV1 is persistent storage resource spec.
type PersistentStorageV1 ¶
type PersistentStorageV1 struct {
// Kind is the resource kind, always PersistentStorage.
Kind string `json:"kind"`
// Version is the resource version.
Version string `json:"version"`
// Metadata is the resource metadata.
Metadata services.Metadata `json:"metadata"`
// Spec is the resource spec.
Spec PersistentStorageSpecV1 `json:"spec"`
}
PersistentStorageV1 represents a persistent storage resource.
func (*PersistentStorageV1) CheckAndSetDefaults ¶
func (ps *PersistentStorageV1) CheckAndSetDefaults() error
CheckAndSetDefaults validates the resources and sets defaults.
func (*PersistentStorageV1) Expiry ¶
func (ps *PersistentStorageV1) Expiry() time.Time
Expiry returns the resource expiration time.
func (*PersistentStorageV1) GetDeviceExcludes ¶
func (ps *PersistentStorageV1) GetDeviceExcludes() []string
GetDeviceExcludes returns device names to exclude when discovering devices.
func (*PersistentStorageV1) GetDeviceIncludes ¶
func (ps *PersistentStorageV1) GetDeviceIncludes() []string
GetDeviceIncludes returns device names to include when discovering devices.
func (*PersistentStorageV1) GetMetadata ¶
func (ps *PersistentStorageV1) GetMetadata() services.Metadata
GetMetadata returns the resource metadata.
func (*PersistentStorageV1) GetMountExcludes ¶
func (ps *PersistentStorageV1) GetMountExcludes() []string
GetMountExcludes returns mount points to exclude when discovering devices.
func (*PersistentStorageV1) GetName ¶
func (ps *PersistentStorageV1) GetName() string
GetName returns the resource name.
func (*PersistentStorageV1) GetVendorExcludes ¶
func (ps *PersistentStorageV1) GetVendorExcludes() []string
GetVendorExcludes returns vendor names to exclude when discovering devices.
func (*PersistentStorageV1) GetVendorIncludes ¶
func (ps *PersistentStorageV1) GetVendorIncludes() []string
GetVendorIncludes returns vendor names to include when discovering devices.
func (*PersistentStorageV1) SetExpiry ¶
func (ps *PersistentStorageV1) SetExpiry(expires time.Time)
SetExpiry sets the resource expiration time.
func (*PersistentStorageV1) SetName ¶
func (ps *PersistentStorageV1) SetName(name string)
SetName sets the resource name.
type PlanChange ¶
type PlanChange struct {
// ID is the change ID
ID string `json:"id"`
// ClusterName is the name of the cluster for the operation
ClusterName string `json:"cluster_name"`
// OperationID is the ID of the operation this change is for
OperationID string `json:"operation_id"`
// PhaseID is the ID of the phase the change refers to
PhaseID string `json:"phase_id"`
// PhaseIndex is an optional index number of the phase in the plan
PhaseIndex int `json:"phase_index,omitempty"`
// NewState is the state the phase moved into
NewState string `json:"new_state"`
// Created is the change timestamp
Created time.Time `json:"created"`
// Error is the error that happened during phase execution
Error *trace.RawTrace `json:"error"`
}
PlanChange represents a single operation plan state change
type PlanChangelog ¶
type PlanChangelog []PlanChange
PlanChangelog is a list of plan state changes
func (PlanChangelog) Latest ¶
func (c PlanChangelog) Latest(phaseID string) *PlanChange
Latest returns the most recent plan change entry for the specified phase
type Process ¶
type Process struct {
// Name is the process executable name
Name string `json:"name"`
// PID is the process ID
PID int `json:"pid"`
}
Process represents a running process
type ProgressEntries ¶
type ProgressEntries interface {
// CreateProgressEntry adds a progress entry for this site
CreateProgressEntry(p ProgressEntry) (*ProgressEntry, error)
// GetLastProgressEntry gets a progress entry for this site
GetLastProgressEntry(siteDomain, operationID string) (*ProgressEntry, error)
}
ProgressEntries collection stores progress entries for the operations
type ProgressEntry ¶
type ProgressEntry struct {
// ID is auto generated ID
ID string `json:"id"`
// SiteDomain is a reference to existing site domain
SiteDomain string `json:"site_domain"`
// OperationID is id of the operation this progress entry refers to
OperationID string `json:"operation_id"`
// Created is a time when this entry was created
Created time.Time `json:"created"`
// Completion is a number from 0 (just started) to 100 (completed)
Completion int `json:"completion"`
// Step defines the current operation step as a value from a step matrix
// Step matrix is a finite set of steps that comprise an operation
Step int `json:"step"`
// State is a string that indicates current operation state
State string `json:"state"`
// Message is a text message describing the operation
Message string `json:"message"`
}
ProgressEntry is a structured entry indicating operation progress
func (*ProgressEntry) Check ¶
func (p *ProgressEntry) Check() error
func (ProgressEntry) IsCompleted ¶
func (p ProgressEntry) IsCompleted() bool
IsCompleted returns true if the progress entry is completed
func (ProgressEntry) IsEqual ¶
func (p ProgressEntry) IsEqual(other ProgressEntry) bool
IsEqual returns true if the progress entry is equal to the other entry
type ProvisioningToken ¶
type ProvisioningToken struct {
// Token is a unique randomly generated token
Token string `json:"token"`
// Expires sets the token expiry time, zero time if never expires
Expires time.Time `json:"expires"`
// Type is token type - 'install' or 'expand'
Type ProvisioningTokenType `json:"type"`
// AccountID is the account this signup token
// is associated with in case if that's user signup token
AccountID string `json:"account_id"`
// SiteDomain is the site this token is associated with
SiteDomain string `json:"site_domain"`
// OperationID is the id of the operation (install or expand)
OperationID string `json:"operation_id"`
// UserEmail links this token to the user with permissions,
// usually it's a site agent user
UserEmail string `json:"user_email"`
}
ProvisioningToken is used to add new servers to the cluster
func (*ProvisioningToken) Check ¶
func (p *ProvisioningToken) Check() error
func (*ProvisioningToken) IsExpand ¶
func (p *ProvisioningToken) IsExpand() bool
IsExpand returns true if this is an expand token.
func (*ProvisioningToken) IsPersistent ¶
func (p *ProvisioningToken) IsPersistent() bool
IsPersistent returns true if this token does not expire.
func (*ProvisioningToken) IsTeleport ¶
func (p *ProvisioningToken) IsTeleport() bool
IsTeleport returns true if this is a teleport token.
type ProvisioningTokenType ¶
type ProvisioningTokenType string
ProvisioningTokenType specifies token type
func (*ProvisioningTokenType) Check ¶
func (s *ProvisioningTokenType) Check() error
Check returns nil if the value is correct, error otherwise
type PullData ¶
type PullData struct {
// Packages is a list of packages to pull
Packages []loc.Locator `json:"packages,omitempty" yaml:"packages,omitempty"`
// Apps is a list of applications to pull
Apps []loc.Locator `json:"apps,omitempty" yaml:"apps,omitempty"`
}
PullData contains applications and packages to pull
type Reason ¶
type Reason string
Reason details the reason a site is in a particular state
const ( // ReasonLicenseInvalid means that the license installed on the site is not valid ReasonLicenseInvalid Reason = "license_invalid" // ReasonStatusCheckFailed means that the site's status check failed ReasonStatusCheckFailed Reason = "status_check_failed" // ReasonClusterDegraded means one or more of cluster nodes are degraded ReasonClusterDegraded Reason = "cluster_degraded" )
func (*Reason) Description ¶
Description returns human-readable description of the reason
type ReconfigureOperationState ¶
type ReconfigureOperationState struct {
// AdvertiseAddr is the advertise address the node's being changed to.
AdvertiseAddr string `json:"advertise_addr"`
}
ReconfigureOperationState defines the reconfiguration operation state.
type Release ¶
type Release interface {
// Resource provides base resource methods.
services.Resource
// GetChartName returns the name of the deployed chart.
GetChartName() string
// GetChartVersion returns the deployed chart version.
GetChartVersion() string
// GetChartIcon returns the chart application icon.
GetChartIcon() string
// SetChartIcon sets the chart application icon.
SetChartIcon(string)
// GetChart returns the full chart name that includes version.
GetChart() string
// GetAppVersion returns the application version (may be empty).
GetAppVersion() string
// GetNamespace returns namespace where chart is deployed.
GetNamespace() string
// GetStatus returns the release deployment status.
GetStatus() string
// GetRevision returns the release revision number.
GetRevision() int
// GetUpdated returns the release last updated timestamp.
GetUpdated() time.Time
// GetLocator returns locator of the corresponding application package.
GetLocator() loc.Locator
}
Release represents a single instance of a running application.
func NewRelease ¶
NewRelease creates a new release resource from the provided Helm release.
func UnmarshalRelease ¶
UnmarshalRelease unmarshals release resource from the provided data.
type ReleaseSpecV1 ¶
type ReleaseSpecV1 struct {
// ChartName is the name of the deployed chart.
ChartName string `json:"chart_name"`
// ChartVersion is the deployed chart version.
ChartVersion string `json:"chart_version"`
// ChartIcon is the chart application icon.
ChartIcon string `json:"chart_icon,omitempty"`
// AppVersion is the application version (may be empty).
AppVersion string `json:"app_version"`
// Namespace is the namespace where release is deployed.
//
// TODO: This field is a part of spec rather than metadata because
// Teleport resources are single-namespace at the moment and namespace
// field from metadata is never exposed.
Namespace string `json:"namespace"`
}
ReleaseSpecV1 defines release resource spec.
type ReleaseStatusV1 ¶
type ReleaseStatusV1 struct {
// Status is the release deployment status.
Status string `json:"status"`
// Revision is the release revision number.
Revision int `json:"revision"`
// Updated is the release last updated timestamp.
Updated time.Time `json:"updated"`
}
ReleaseStatusV1 provides runtime information about release.
type ReleaseV1 ¶
type ReleaseV1 struct {
// Kind is the resource kind, always "release" for this resource.
Kind string `json:"kind"`
// Version is the resource version, always "v1" for this resource.
Version string `json:"version"`
// Metadata is the resource metadata.
Metadata services.Metadata `json:"metadata"`
// Spec is the release spec.
Spec ReleaseSpecV1 `json:"spec"`
// Status provides runtime information about release.
Status ReleaseStatusV1 `json:"status"`
}
ReleaseV1 defines the release resource.
func (*ReleaseV1) GetAppVersion ¶
GetAppVersion returns chart application name.
func (*ReleaseV1) GetChartIcon ¶
GetChartIcon returns the chart application icon.
func (*ReleaseV1) GetChartName ¶
GetChartName returns the deployed chart name.
func (*ReleaseV1) GetChartVersion ¶
GetChartVersion returns the deployed chart version.
func (*ReleaseV1) GetLocator ¶
GetLocator returns locator of the corresponding application package.
func (*ReleaseV1) GetMetadata ¶
GetMetadata returns the resource metadata.
func (*ReleaseV1) GetNamespace ¶
GetNamespace returns namespace where chart is deployed.
func (*ReleaseV1) GetRevision ¶
GetRevision returns the release revision number.
func (*ReleaseV1) GetUpdated ¶
GetUpdated returns the release last update timestamp.
func (*ReleaseV1) SetChartIcon ¶
SetChartIcon sets the chart application icon.
type RemoteAccessUser ¶
type RemoteAccessUser struct {
// Email identifies the user
Email string `json:"email"`
// Token identifies the API key for this user
Token string `json:"token"`
// SiteDomain identifies the cluster this user represents
SiteDomain string `json:"site_domain"`
// OpsCenter defines the OpsCenter on the other side
OpsCenter string `json:"ops_center"`
}
RemoteAccessUser groups the attributes to identify or create a user to use to connect a cluster to a remote OpsCenter
func (*RemoteAccessUser) Check ¶
func (r *RemoteAccessUser) Check() error
Check validates this object
type Repositories ¶
type Repositories interface {
// Creates a repository - a collection of packages
CreateRepository(r Repository) (Repository, error)
// GetRepository returns a repository by a given name,
// or NotFoundError if repository is not found
GetRepository(name string) (Repository, error)
// DeleteRepository deletes a repository and associated packages
DeleteRepository(name string) error
// GetRepositories returns list of repositories
GetRepositories() ([]Repository, error)
// CreatePackage creates a package in a repository, will return
// error if a given package already exists
CreatePackage(p Package) (*Package, error)
// UpsertPackage creates or updates a package in a repository
UpsertPackage(p Package) (*Package, error)
// DeletePackage deletes a package from repository
DeletePackage(repository string, packageName, packageVersion string) error
// GetPackage returns a package by it's name and version a repository
GetPackage(repository string, packageName, packageVersion string) (*Package, error)
// GetPackages returns s list of packages in a repository, in case if
// if prevName and prevVersion are not empty, returns packages greater
// than given names and version in lexicographical order
GetPackages(repository string) ([]Package, error)
// UpdatePackageRuntimeLabels is an atomic operation that sets runtime labels
// for a set of package, adding and removing labels in one atomic operation
UpdatePackageRuntimeLabels(repository, packageName, packageVersion string, addLabels map[string]string, removeLabels []string) error
}
Repositories interface provides operations on repositories and packages. Repository is a collection of packages - arbitrary blobs with metadata, name and version.
type Repository ¶
type Repository interface {
// Resource provides common resource methods
teleservices.Resource
}
Repository is a repository resource
func UnmarshalRepository ¶
func UnmarshalRepository(data []byte) (Repository, error)
UnmarshalRepository unmarshals repository from JSON
type RepositoryV1 ¶
type RepositoryV1 struct {
// Name is a unique repository name, usually domain name, e.g. example.com
Name string
// Expires sets expiry for this repository and all packages
// inside this repository
Expires time.Time
}
RepositoryV1 is a collection of packages
func (RepositoryV1) String ¶
func (r RepositoryV1) String() string
String returns human readable representation of the repository
func (*RepositoryV1) V2 ¶
func (r *RepositoryV1) V2() *RepositoryV2
V2 returns V2 version of Repository resource
type RepositoryV2 ¶
type RepositoryV2 struct {
// Kind is a resource kind - always resource
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata is cluster metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec is repository specification
Spec struct{} `json:"spec"`
}
RepositoryV2 represents repository resource specification
func NewRepository ¶
func NewRepository(name string) *RepositoryV2
NewRepository returns new repository object from repo name
func (*RepositoryV2) Expiry ¶
func (c *RepositoryV2) Expiry() time.Time
Expiry returns cluster expiration time
func (*RepositoryV2) GetMetadata ¶
func (c *RepositoryV2) GetMetadata() teleservices.Metadata
GetMetadata returns cluster metadata
func (*RepositoryV2) GetName ¶
func (c *RepositoryV2) GetName() string
GetName returns cluster name and is a shortcut for GetMetadata().Name
func (*RepositoryV2) SetExpiry ¶
func (c *RepositoryV2) SetExpiry(expires time.Time)
SetExpiry sets cluster expiration time
func (*RepositoryV2) SetName ¶
func (c *RepositoryV2) SetName(name string)
SetName sets cluster name
type ResolvConf ¶
type ResolvConf struct {
// Servers - Name server IP addresses
Servers []string
// Domain - Local domain name
Domain string
// Search list for host-name lookup
Search []string
// Ndots is the number of dots in name to trigger absolute lookup
Ndots int
// Timeout is the number of seconds the resolver will wait for a response from the remote server
Timeout int
// Attempts is the number of times the resolver will send queries before giving up
Attempts int
// Rotate sets round robin selection of nameservers
Rotate bool
// UnknownOpt indicates whether we received any unknown options
UnknownOpt bool
// Lookup is OpenBSD top-level database "lookup" order
Lookup []string
}
ResolvConf describes the system resolv.conf configuration
type RoleSpecV2 ¶
type RoleSpecV2 struct {
// MaxSessionTTL is a maximum SSH or Web session TTL
MaxSessionTTL teleservices.Duration `json:"max_session_ttl"`
// Logins is a list of linux logins allowed for this role
Logins []string `json:"logins,omitempty"`
// NodeLabels is a set of matching labels that users of this role
// will be allowed to access
NodeLabels map[string]string `json:"node_labels,omitempty"`
// Namespaces is a list of namespaces, guarding access to resources
Namespaces []string `json:"namespaces,omitempty"`
// Resources limits access to resources
Resources map[string][]string `json:"resources,omitempty"`
// KubernetesGroups is a list of groups this role maps to
KubernetesGroups []string `json:"kubernetes_groups,omitempty"`
// GenerateLicenses specifies whether this role can generate licenses
GenerateLicenses bool `json:"generate_licenses,omitempty"`
// RegisterClusters returns whether this role can register new clusters
// usually created remotely via offline install
RegisterClusters bool `json:"register_clusters,omitempty"`
// System indicates that this role is a system defined role
System bool `json:"system"`
// Clusters specifies what clusters this role has access to,
// it could be wildcard or have access to all clusters
// e.g. ["*"] for all clusters or ["a"] to cluster "a" only
Clusters []string `json:"clusters,omitempty"`
// Repositories specifies which repositories this role has access to
// it could be wildcard or have access to all repositories
Repositories []string `json:"repositories,omitempty"`
// ForwardAgent permits SSH agent forwarding if requested by the client
ForwardAgent bool `json:"forward_agent"`
}
RoleSpecV2 is role specification for RoleV2
type RoleV2 ¶
type RoleV2 struct {
// Kind is a resource kind - always resource
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata is Role metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec contains role specification
Spec RoleSpecV2 `json:"spec"`
}
RoleV2 represents role resource specification
func (*RoleV2) CheckAndSetDefaults ¶
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*RoleV2) Equals ¶
func (r *RoleV2) Equals(other teleservices.Role) bool
Equals test roles for equality. Roles are considered equal if all resources, logins, namespaces, labels, and options match.
func (*RoleV2) V3 ¶
func (r *RoleV2) V3() *teleservices.RoleV3
type RuntimePackage ¶
type RuntimePackage struct {
// Installed identifies the installed version of the runtime package
Installed loc.Locator `json:"installed"`
// SecretsPackage specifies the new secrets package
SecretsPackage *loc.Locator `json:"secrets_package,omitempty"`
// Update describes an update to the runtime package
Update *RuntimeUpdate `json:"update,omitempty"`
}
RuntimePackage describes the state of the runtime package during update
type RuntimeUpdate ¶
type RuntimeUpdate struct {
// Package identifies the package to update to.
// This can be the same as Installed in which case no update is performed
Package loc.Locator `json:"package"`
// ConfigPackage identifies the new configuration package
ConfigPackage loc.Locator `json:"config_package"`
}
RuntimeUpdate describes an update to the runtime package
type SMTPConfig ¶
type SMTPConfig interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults verifies that the object is valid
CheckAndSetDefaults() error
// GetHost returns the SMTP host
GetHost() string
// GetPort returns the SMTP port
GetPort() int
// GetUsername returns SMTP username
GetUsername() string
// GetPassword returns SMTP password
GetPassword() string
}
SMTPConfig describes cluster SMTP configuration
func UnmarshalSMTPConfig ¶
func UnmarshalSMTPConfig(data []byte) (SMTPConfig, error)
UnmarshalSMTPConfig unmarshals SMTP configuration from JSON
type SMTPConfigSpecV2 ¶
type SMTPConfigSpecV2 struct {
// Host specifies the SMTP host
Host string `json:"host"`
// Port specifies the SMTP port
Port int `json:"port"`
// Username specifies the username
Username string `json:"username"`
// Password specifies the password
Password string `json:"password"`
}
SMTPConfigSpecV2 defines SMTP configuration for the cluster
type SMTPConfigV2 ¶
type SMTPConfigV2 struct {
// Metadata is resource metadata
teleservices.Metadata `json:"metadata"`
// Kind is a resource kind
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Spec defines the SMTP configuration
Spec SMTPConfigSpecV2 `json:"spec"`
}
SMTPConfigV2 defines SMTP configuration
func (*SMTPConfigV2) CheckAndSetDefaults ¶
func (r *SMTPConfigV2) CheckAndSetDefaults() error
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*SMTPConfigV2) GetPassword ¶
func (r *SMTPConfigV2) GetPassword() string
GetPassword returns SMTP password
func (*SMTPConfigV2) GetUsername ¶
func (r *SMTPConfigV2) GetUsername() string
GetUsername returns SMTP username
type Server ¶
type Server struct {
// AdvertiseIP is the IP that will be used for inter host communication
AdvertiseIP string `json:"advertise_ip"`
// Hostname is the server hostname
Hostname string `json:"hostname"`
// Nodename as assigned by the cloud provider (if any).
// In case of Amazon private DNS zone, this will be the `PrivateDnsName`
Nodename string `json:"nodename"`
// Role is application specific role, e.g. "database"
Role string `json:"role"`
// InstanceType is provisioned instance type
InstanceType string `json:"instance_type"`
// InstanceID is cloud specific instance ID
InstanceID string `json:"instance_id"`
// ClusterRole is the node's system role, "master" or "node"
ClusterRole string `json:"cluster_role"`
// Provisioner is the provisioner the server was provisioned with
Provisioner string `json:"provisioner"`
// OSInfo identifies the host operating system
OSInfo OSInfo `json:"os"`
// Mounts lists mount configurations for a server profile instance
Mounts []Mount `json:"mounts"`
// SystemState defines the system configuration for gravity - location
// of state directory, etc.
SystemState SystemState `json:"system_state"`
// Docker defines docker-specific configuration parameters
// For example, it specifies which disk/partition to use for devicemapper
// direct-lvm configuration
Docker Docker `json:"docker"`
// User is current OS user information
User OSUser `json:"user"`
// Created is the timestamp when the server was created
Created time.Time `json:"created"`
// SELinux specifies whether the node has SELinux support on
SELinux bool `json:"selinux,omitempty"`
}
Server is used during site install process and is configured by users during manual install or by automatic provisioner when creating environment from scratch
func GetLocalServers ¶
GetLocalServers returns local cluster state servers
func (*Server) EtcdPeerURL ¶
EtcdPeerURL returns etcd peer advertise URL with the server's IP.
func (*Server) GetKubeletLabels ¶
GetKubeletLabels returns the node's labels that can be set by kubelet.
func (*Server) GetNodeLabels ¶
GetNodeLabels returns a consistent set of labels that should be applied to the node
func (*Server) IsEqualTo ¶
IsEqualTo returns true if this and the provided server are the same server.
func (*Server) KubeNodeID ¶
KubeNodeID returns the identity of the node within the kubernetes cluster (kubectl get node) when running on a cloud environment such as AWS, kubelet tends to pick up it's hostname from the cloud provider API. So when running on these environments, we should ensure our hostnames match what kubernetes will be doing. When not running on a cloud environment with this behaviour, we will identify nodes by their Advertise IP address More Information: https://github.com/kubernetes/kubernetes/pull/58114#pullrequestreview-88022039 https://github.com/kubernetes/kubernetes/issues/54482 https://github.com/kubernetes/kubernetes/issues/58084
func (*Server) ObjectPeerID ¶
ObjectPeerID returns the peer ID of this server
type ServerProfile ¶
type ServerProfile struct {
// Description is the server description
Description string `json:"description"`
// Labels is the server labels
Labels map[string]string `json:"labels"`
// ServiceRole is the server role (e.g. "master" or "node")
ServiceRole string `json:"service_role"`
// Request contains instance type and count that were provisioned
Request ServerProfileRequest `json:"request"`
}
ServerProfile describes server that was provisioned during install/expand
type ServerProfileRequest ¶
type ServerProfileRequest struct {
// InstanceType is the instance type to provision
InstanceType string `json:"instance_type"`
// Count is the number of servers to provision
Count int `json:"count"`
}
ServerProfileRequest contains information about how many nodes of a certain type were requested for install/expand
type ServerUpdate ¶
type ServerUpdate struct {
// Server is a server being updated
Server teleservices.ServerV1 `json:"server"`
// State defines the state of server update operation
// (e.g. started, in-progress or completed/failed)
State string `json:"state"`
}
ServerUpdate represents server that is being updated
func (*ServerUpdate) String ¶
func (s *ServerUpdate) String() string
String returns debug-friendly representation of the server udpate
type Servers ¶
type Servers []Server
Servers is a list of servers
func (Servers) IsEqualTo ¶
IsEqualTo returns true if the provided list contains all the same servers as this list.
type ShrinkOperationState ¶
type ShrinkOperationState struct {
// Vars is a set of variables for this operation
Vars OperationVariables `json:"vars"`
// LegacyHostnames is used during migrations,
// find a way to get rid of it
LegacyHostnames []string `json:"servers"`
// Servers is a list of servers to remove
Servers []Server `json:"server_specs"`
// Force controls whether the operation ignores intermediate errors
Force bool `json:"force"`
// NodeRemoved indicates whether the node has already been removed from the cluster
// Used in cases where we receive an event where the node is being terminated, but may
// not have disconnected from the cluster yet.
NodeRemoved bool `json:"node_removed"`
}
ShrinkOperationState contains information about shrink operation
type Site ¶
type Site struct {
// Domain is a site specific unique domain name (e.g. site.example.com)
Domain string `json:"domain"`
// Created records the time when site was created
Created time.Time `json:"created"`
// CreatedBy is the email of a user who created the site
CreatedBy string `json:"created_by"`
// AccountID is the id of the account this site belongs to
AccountID string `json:"account_id"`
// State represents the state of this site, e.g. 'created', 'configured'
State string `json:"state"`
// Reason is the code describing the state the site is currently in
Reason Reason `json:"reason"`
// Provider is a provider selected for this site
Provider string `json:"provider"`
// License is the license currently installed on this site
License string `json:"license"`
// TODO: this should probably move to SiteOperation as well
// ProvisionerState is a provisioner-specific state
// that used to track some resources allocated for the cloud
// e.g. disks, VMs
ProvisionerState []byte `json:"provisioner_state"`
// App is application installed on this site, e.g.
// "gravitational.io/mattermost:1.2.1"
App Package `json:"app"`
// Local specifies whether this site is local to the running
// process (opscenter or site)
Local bool `json:"local"`
// Labels is a custom key/value metadata attached to the site (think AWS tags)
Labels map[string]string `json:"labels"`
// FinalInstallStepComplete indicates whether the site has completed the final installation step
FinalInstallStepComplete bool `json:"final_install_step_complete"`
// Resources is optional byte-string with K8s resources injected at site creation
Resources []byte `json:"resources"`
// Location is a location where the site is deployed, for example AWS region name
Location string `json:"location"`
// Flavor is the initial cluster flavor.
Flavor string `json:"flavor"`
// DisabledWebUI specifies whether OpsCenter and WebInstallWizard are disabled
DisabledWebUI bool `json:"disabled_web_ui"`
// UpdateInterval is how often the site checks for and downloads newer versions of the
// installed application
UpdateInterval time.Duration `json:"update_interval"`
// NextUpdateCheck is the timestamp of the upcoming updates check for the site
NextUpdateCheck time.Time `json:"next_update_check"`
// ClusterState holds the current cluster state, e.g. nodes in the cluster and information
// about them
ClusterState ClusterState `json:"cluster_state"`
// ServiceUser specifies the service user for planet
ServiceUser OSUser `json:"service_user"`
// CloudConfig provides additional cloud configuration
CloudConfig CloudConfig `json:"cloud_config"`
// DNSOverrides contains DNS overrides for this cluster
// TODO(dmitri): move to DNSConfig
DNSOverrides DNSOverrides `json:"dns_overrides"`
// DNSConfig defines cluster local DNS configuration
DNSConfig DNSConfig `json:"dns_config"`
// InstallToken specifies the original token the cluster was installed with
InstallToken string `json:"install_token"`
}
Site is a group of servers that belongs to some account and having some application installed
type SiteOperation ¶
type SiteOperation struct {
// ID is a unique operation ID
ID string `json:"id"`
// AccountID - id of the account this site belongs to
AccountID string `json:"account_id"`
// SiteDomain - ID of the site this operation refers to
SiteDomain string `json:"site_domain"`
// Type is operation type - e.g. add or delete servers
Type string `json:"type"`
// Created is a time when this operation was created
Created time.Time `json:"created"`
// CreatedBy specifies the user who created the operation
CreatedBy string `json:"created_by,omitempty"`
// Updated is a time when this operation was last updated
Updated time.Time `json:"updated"`
// State represents current operation state
State string `json:"state"`
// Provisioner defines the provisioner used for this operation
Provisioner string `json:"provisioner"`
// Servers stores servers affected by the operation, e.g.
// in case of 'install' or 'provision_servers' it will store the
// servers that will be added and configured, for 'deprovision_servers'
// it will store the servers that will be deleted
Servers Servers `json:"servers"`
// Shrink is set when the operation type is shrink (removing nodes from the cluster)
Shrink *ShrinkOperationState `json:"shrink,omitempty"`
// InstallExpand is set when the operation is install or expand
InstallExpand *InstallExpandOperationState `json:"install_expand,omitempty"`
// Uninstall is for uninstalling gravity and it's data
Uninstall *UninstallOperationState `json:"uninstall,omitempty"`
// Update is for updating application on the gravity site
Update *UpdateOperationState `json:"update,omitempty"`
// UpdateEnviron defines the runtime environment update state
UpdateEnviron *UpdateEnvarsOperationState `json:"update_environ,omitempty"`
// UpdateConfig defines the state of the cluster configuration update operation
UpdateConfig *UpdateConfigOperationState `json:"update_config,omitempty"`
// Reconfigure contains reconfiguration operation state
Reconfigure *ReconfigureOperationState `json:"reconfigure,omitempty"`
}
SiteOperation represents any modification of the site, e.g. adding or deleting a server or a group of servers
func GetLastOperation ¶
func GetLastOperation(backend Backend) (*SiteOperation, error)
GetLastOperation returns the last operation for the local cluster
func GetLastOperationForCluster ¶
func GetLastOperationForCluster(backend Backend, clusterName string) (*SiteOperation, error)
GetLastOperationForCluster returns the last operation for the specified cluster
func GetOperationByID ¶
func GetOperationByID(backend Backend, operationID string) (*SiteOperation, error)
GetOperationByID returns the operation with the given ID for the local cluster
func GetOperations ¶
func GetOperations(backend Backend) ([]SiteOperation, error)
GetOperations returns all operations for the local cluster sorted by time in descending order (with most recent operation first)
func GetOperationsForCluster ¶
func GetOperationsForCluster(backend Backend, clusterName string) ([]SiteOperation, error)
GetOperationsForCluster returns all operations for the specified cluster sorted by time in descending order (with most recent operation first)
func (*SiteOperation) Check ¶
func (s *SiteOperation) Check() error
func (*SiteOperation) IsEqualTo ¶
func (s *SiteOperation) IsEqualTo(other SiteOperation) bool
IsEqualTo returns true if the operation is equal to the provided operation.
func (*SiteOperation) Vars ¶
func (s *SiteOperation) Vars() OperationVariables
Vars returns operation specific variables
type SiteOperations ¶
type SiteOperations interface {
// CreateSiteOperation creates a new site operation
CreateSiteOperation(SiteOperation) (*SiteOperation, error)
// GetSiteOperation returns the operation identified by the operation id
// and site id
GetSiteOperation(siteDomain, operationID string) (*SiteOperation, error)
// GetSiteOperations returns a list of operations performed on this
// site sorted by time (latest operations come first)
GetSiteOperations(siteDomain string) ([]SiteOperation, error)
// UpdateSiteOperation updates site operation state
UpdateSiteOperation(SiteOperation) (*SiteOperation, error)
// DeleteSiteOperation removes an unstarted site operation
DeleteSiteOperation(siteDomain, operationID string) error
// CreateOperationPlan saves a new operation plan
CreateOperationPlan(OperationPlan) (*OperationPlan, error)
// GetOperationPlan returns plan for the specified operation
GetOperationPlan(clusterName, operationID string) (*OperationPlan, error)
// CreateOperationPlanChange creates a new state transition entry for a plan
CreateOperationPlanChange(PlanChange) (*PlanChange, error)
// GetOperationPlanChangelog returns all state transition entries for a plan
GetOperationPlanChangelog(clusterName, operationID string) (PlanChangelog, error)
}
SiteOperations colection represents a list of operations performed on the site, e.g. provisioning servers, or upgrading applications
type Sites ¶
type Sites interface {
// CompareAndSwapSiteState swaps site state to new version only if
// it's set to the required state
CompareAndSwapSiteState(domain string, old, new string) error
// CreateSite creates site entry
CreateSite(s Site) (*Site, error)
// UpdateSite updates site properties
UpdateSite(s Site) (*Site, error)
// DeleteSite deletes site entry
DeleteSite(domain string) error
// GetSites returns a list of sites for account id
GetSites(accountID string) ([]Site, error)
// GetAllSites returns a list of all sites for all accounts
GetAllSites() ([]Site, error)
// GetSite returns site by account id and site domain
GetSite(domain string) (*Site, error)
// GetLocalSite returns local site for a given account ID
GetLocalSite(accountID string) (*Site, error)
}
Sites collection works with sites - a group of servers
type StringExpr ¶
type StringExpr string
StringExpr is a string expression
func (StringExpr) String ¶
func (s StringExpr) String() string
type StringsExpr ¶
type StringsExpr []string
StringsExpr is a slice of strings
func (StringsExpr) String ¶
func (s StringsExpr) String() string
type Subnets ¶
type Subnets struct {
// Overlay is the Kubernetes overlay network (flannel) subnet
Overlay string `json:"overlay"`
// Service is the subnet for Kubernetes services
Service string `json:"service"`
}
Subnets describes selected overlay/service network subnets for an operation
type Swap ¶
type Swap struct {
// Total is total amount of swap, in kilobytes
Total uint64 `json:"total"`
// Free is total amount of swap free, in kilobytes
Free uint64 `json:"free"`
}
Swap describes swapping configuration
type System ¶
type System interface {
teleservices.Resource
// GetHostname returns the system hostname
GetHostname() string
// GetNetworkInterfaces returns the list of network interfaces
GetNetworkInterfaces() map[string]NetworkInterface
// GetFilesystems returns the mounted files systems
GetFilesystems() []Filesystem
// GetFilesystemStats returns the mounted files systems
GetFilesystemStats() FilesystemStats
// GetMemory returns the RAM configuration
GetMemory() Memory
// GetSwap returns the swap configuration
GetSwap() Swap
// GetNumCPU returns the number of CPUs
GetNumCPU() uint
// GetProcesses returns the list of running processes
GetProcesses() []Process
// GetDevices returns the list of unallocated devices
GetDevices() Devices
// GetSystemPackages returns the list of installed system packages
GetSystemPackages() []SystemPackage
// GetOS identifies the host operating system or distribution
GetOS() OSInfo
// GetUser returns the information about the user the agent is running under
GetUser() OSUser
}
System describes a system
type SystemMetadata ¶
type SystemMetadata interface {
// GetDNSConfig returns current DNS configuration
GetDNSConfig() (*DNSConfig, error)
// SetDNSConfig sets current DNS configuration
SetDNSConfig(DNSConfig) error
// GetSELinux returns whether SELinux support is on
GetSELinux() (enabled bool, err error)
// SetSELinux sets SELinux support
SetSELinux(enabled bool) error
// GetNodeAddr returns the current node advertise IP
GetNodeAddr() (addr string, err error)
// SetNodeAddr sets current node advertise IP
SetNodeAddr(addr string) error
// GetServiceUser returns the current service user
GetServiceUser() (*OSUser, error)
// SetServiceUser sets current service user
SetServiceUser(OSUser) error
}
SystemMetadata stores system-relevant data on the host
type SystemPackage ¶
type SystemPackage struct {
// Name identifies the package by name
Name string `json:"name"`
// Version describes the version of the installed package.
// It will be empty if no such package is installed
Version string `json:"version"`
// Error describes an error querying for the package
Error string `json:"error"`
}
SystemPackage describes a package on a Linux system
type SystemSpecV2 ¶
type SystemSpecV2 struct {
// Hostname specifies the hostname
Hostname string `json:"hostname"`
// NetworkInterfaces lists all network interfaces
NetworkInterfaces map[string]NetworkInterface `json:"interfaces"`
// Filesystem returns information about filesystem usage
Filesystems []Filesystem `json:"filesystem"`
// FilesystemStats returns information about filesystem usage per directory
FilesystemStats FilesystemStats `json:"filesystem_stats"`
// Memory contains information about system memory
Memory Memory `json:"memory"`
// Swap contains info about system's swap capacity
Swap Swap `json:"swap"`
// NumCPU specifies the CPU count
NumCPU uint `json:"cpus"`
// Processes lists running processes
Processes []Process `json:"processes"`
// Devices lists the disks/partitions
Devices Devices `json:"devices"`
// SystemPackages lists installed system packages.
// Packages are queried per distribution.
// Only packages required for operation are listed
SystemPackages []SystemPackage `json:"system_packages"`
// OS identifies the host operating system
OS OSInfo `json:"os"`
// LVMSystemDirectory specifies the location of the LVM system directory if the
// docker storage driver is devicemapper, empty otherwise
// DEPRECATED
LVMSystemDirectory string `json:"lvm_system_dir"`
// User specifies the agent's user identity
User OSUser `json:"user"`
}
SystemSpecV2 represents a set of facts about a system
type SystemState ¶
type SystemState struct {
// Disk defines the block device (disk or partition) to use
// for gravity system state directory
Device Device `json:"device"`
// StateDir is where all gravity data is stored on the server
StateDir string `json:"state_dir"`
}
SystemState defines the system configuration for gravity - location of state directory, etc.
type SystemV2 ¶
type SystemV2 struct {
// Kind is resource kind, "systeminfo"
Kind string `json:"kind"`
// Version is the resource version
Version string `json:"version"`
// Metadata is resource metadata
teleservices.Metadata `json:"metadata"`
// Spec is the system information spec
Spec SystemSpecV2 `json:"spec"`
}
SystemV2 describes a system
func NewSystemInfo ¶
func NewSystemInfo(spec SystemSpecV2) *SystemV2
NewSystemInfo creates a new instance of system information from the provided spec
func UnmarshalSystemInfo ¶
UnmarshalSystemInfo unmarshals system info from JSON specified with data
func (*SystemV2) GetDevices ¶
GetDevices returns the list of unallocated devices
func (*SystemV2) GetFilesystemStats ¶
func (r *SystemV2) GetFilesystemStats() FilesystemStats
GetFilesystemStats returns the mounted files systems
func (*SystemV2) GetFilesystems ¶
func (r *SystemV2) GetFilesystems() []Filesystem
GetFilesystems returns the mounted files systems
func (*SystemV2) GetHostname ¶
GetHostname returns the system hostname
func (*SystemV2) GetNetworkInterfaces ¶
func (r *SystemV2) GetNetworkInterfaces() map[string]NetworkInterface
GetNetworkInterfaces returns the list of network interfaces
func (*SystemV2) GetProcesses ¶
GetProcesses returns the list of running processes
func (*SystemV2) GetSystemPackages ¶
func (r *SystemV2) GetSystemPackages() []SystemPackage
GetSystemPackages returns the list of installed system packages
type SystemVariables ¶
type SystemVariables struct {
// ClusterName is the name of the cluster the operation is for
ClusterName string `json:"cluster_name"`
// OpsURL is remote Ops Center URL
OpsURL string `json:"ops_url"`
// Devmode is whether the operation is running in dev mode
Devmode bool `json:"devmode"`
// Token is the agent token
Token string `json:"token"`
// TeleportProxyAddress is the address of teleport proxy
TeleportProxyAddress string `json:"teleport_proxy_address"`
// Docker overrides configuration from the manifest
Docker DockerConfig `json:"docker"`
}
SystemVariables represents a set of operation variables common for each provider
type TLSKeyPair ¶
type TLSKeyPair interface {
// Resource provides common resource methods
teleservices.Resource
// CheckAndSetDefaults makes sure the TLS keypair is valid
CheckAndSetDefaults() error
// GetCert returns certificate and optional certificate chain
GetCert() string
// GetPrivateKey returns private key
GetPrivateKey() string
}
TLSKeyPair describes a TLS key pair resource that can be checked for validity and queried.
func NewTLSKeyPair ¶
func NewTLSKeyPair(cert, privateKey []byte) TLSKeyPair
NewTLSKeyPair creates new TLS key pair from cert and private key
func UnmarshalTLSKeyPair ¶
func UnmarshalTLSKeyPair(data []byte) (TLSKeyPair, error)
UnmarshalTLSKeyPair unmarshals TLS keypair from JSON
type TLSKeyPairSpecV2 ¶
type TLSKeyPairSpecV2 struct {
// Cert is a PEM encoded certificate chain
// including intermediaries
Cert string `json:"cert"`
// PrivateKey is PEM encoded private key
PrivateKey string `json:"private_key"`
}
TLSKeyPairSpecV2 is TLS keypair V2 specification
type TLSKeyPairV2 ¶
type TLSKeyPairV2 struct {
// Kind is a resource kind - always tlskeypair
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata is TLS keypair metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec contains TLS keypair specification
Spec TLSKeyPairSpecV2 `json:"spec"`
}
TLSKeyPairV2 represents TLS key pair specification
func (*TLSKeyPairV2) CheckAndSetDefaults ¶
func (t *TLSKeyPairV2) CheckAndSetDefaults() error
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*TLSKeyPairV2) Expiry ¶
func (t *TLSKeyPairV2) Expiry() time.Time
Expiry returns TLS keypair expiration time
func (*TLSKeyPairV2) GetMetadata ¶
func (t *TLSKeyPairV2) GetMetadata() teleservices.Metadata
GetMetadata returns TLS keypair metadata
func (*TLSKeyPairV2) GetName ¶
func (t *TLSKeyPairV2) GetName() string
GetName returns TLS keypair name and is a shortcut for GetMetadata().Name
func (*TLSKeyPairV2) GetPrivateKey ¶
func (t *TLSKeyPairV2) GetPrivateKey() string
GetPrivateKey returns private key
func (*TLSKeyPairV2) SetExpiry ¶
func (t *TLSKeyPairV2) SetExpiry(expires time.Time)
SetExpiry sets TLS keypair expiration time
func (*TLSKeyPairV2) SetName ¶
func (t *TLSKeyPairV2) SetName(name string)
SetName sets TLS keypair name
type TeleportPackage ¶
type TeleportPackage struct {
// Installed identifies the installed version of the teleport package
Installed loc.Locator `json:"installed"`
// Update describes an update to the runtime package
Update *TeleportUpdate `json:"update,omitempty"`
}
TeleportPackage describes the state of the teleport package during update
func (TeleportPackage) Package ¶
func (p TeleportPackage) Package() loc.Locator
Package returns either the updated teleport package locator if it's not empty, or the installed one.
type TeleportUpdate ¶
type TeleportUpdate struct {
// Package identifies the package to update to.
// This can be the same as Installed in which case no update is performed
Package loc.Locator `json:"package"`
// NodeConfigPackage identifies the new host teleport configuration package.
// If nil, no changes to configuration package required
NodeConfigPackage *loc.Locator `json:"node_config_package,omitempty"`
}
TeleportUpdate describes an update to the teleport package
type Token ¶
type Token interface {
// Resource provides common resource methods
teleservices.Resource
// GetUser returns username the token belongs to
GetUser() string
// SetUser sets the token owner
SetUser(name string)
// CheckAndSetDefaults makes sure the token is valid
CheckAndSetDefaults() error
}
Token contains a set of permissions or settings
func NewTokenFromV1 ¶
NewTokenFromV1 creates token from API key
type TokenMarshaler ¶
type TokenMarshaler interface {
// UnmarshalToken unmarshals token from JSON
UnmarshalToken([]byte) (Token, error)
// MarshalToken marshals token to JSON
MarshalToken(Token, ...teleservices.MarshalOption) ([]byte, error)
}
TokenMarshaler is interface for marshaling token
func GetTokenMarshaler ¶
func GetTokenMarshaler() TokenMarshaler
GetTokenMarshaler returns token marshaler
type TokenSpecV2 ¶
type TokenSpecV2 struct {
// User is username associated with this token
User string `json:"user"`
}
TokenSpecV2 is token V2 specification
type TokenV2 ¶
type TokenV2 struct {
// Kind is a resource kind - always resource
Kind string `json:"kind"`
// Version is a resource version
Version string `json:"version"`
// Metadata is token metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec contains token specification
Spec TokenSpecV2 `json:"spec"`
}
TokenV2 represents token resource specification
func (*TokenV2) CheckAndSetDefaults ¶
CheckAndSetDefaults checks validity of all parameters and sets defaults
func (*TokenV2) GetMetadata ¶
func (t *TokenV2) GetMetadata() teleservices.Metadata
GetMetadata returns token metadata
type Tokens ¶
type Tokens interface {
// CreateProvisioningToken creates a temporary authentication token
CreateProvisioningToken(t ProvisioningToken) (*ProvisioningToken, error)
// DeleteProvisioningToken deletes a token specified by token
DeleteProvisioningToken(token string) error
// GetProvisioningToken returns a token if it has not expired yet
GetProvisioningToken(token string) (*ProvisioningToken, error)
// GetOperationProvisioningToken returns an existing token for the particular operation if
// it has not expired yet
GetOperationProvisioningToken(clusterName, operationID string) (*ProvisioningToken, error)
// GetSiteProvisioningTokens returns a list of tokens for the site specified with siteDomain
// that have not expired yet
GetSiteProvisioningTokens(siteDomain string) ([]ProvisioningToken, error)
// CreateInstallToken creates a token for a one-time install operation
CreateInstallToken(InstallToken) (*InstallToken, error)
// GetInstallToken returns an active install token with the specified ID
GetInstallToken(token string) (*InstallToken, error)
// GetInstallTokenByUser returns an active install token with the specified user ID
GetInstallTokenByUser(email string) (*InstallToken, error)
// GetInstallTokenForCluster returns an active install token for the specified cluster
GetInstallTokenForCluster(name string) (*InstallToken, error)
// UpdateInstallToken updates the specified install token
UpdateInstallToken(InstallToken) (*InstallToken, error)
}
Tokens interface defines a token management layer. Token types include those for adding new servers to the cluster during install or expand operations or running one-time installations.
type TrustedCluster ¶
type TrustedCluster interface {
// TrustedCluster is the base trusted cluster interface from Teleport
teleservices.TrustedCluster
// GetSNIHost returns the Ops Center SNI host
GetSNIHost() string
// SetSNIHost sets the Ops Center SNI host
SetSNIHost(string)
// GetPullUpdates returns true if the cluster pulls updates from Ops Center
GetPullUpdates() bool
// SetPullUpdates enables or disables pulling updates from Ops Center
SetPullUpdates(bool)
// GetWizard returns true for trusted cluster representing wizard Ops Center
GetWizard() bool
// SetWizard marks the trusted cluster as wizard mode or not
SetWizard(bool)
// GetSystem returns true if this is a system trusted cluster
GetSystem() bool
// SetSystem marks the trusted cluster as a system
SetSystem(bool)
// GetRegular returns true if this is a regular Ops Center.
GetRegular() bool
}
TrustedCluster extends Teleport's trusted cluster interface with Gravity specific methods
func GetTrustedCluster ¶
func GetTrustedCluster(backend Backend) (TrustedCluster, error)
GetTrustedCluster returns a trusted cluster representing the Ops Center the cluster is connected to, currently only 1 is supported
func GetWizardTrustedCluster ¶
func GetWizardTrustedCluster(backend Backend) (TrustedCluster, error)
GetWizardTrustedCluster returns a trusted cluster representing the wizard Ops Center the specified site is connected to
func NewTrustedCluster ¶
func NewTrustedCluster(name string, spec TrustedClusterSpecV2) TrustedCluster
NewTrustedCluster returns a new trusted cluster from the provided name and spec
func NewTrustedClusterFromLinks ¶
func NewTrustedClusterFromLinks(remoteLink OpsCenterLink, updateLink *OpsCenterLink) (TrustedCluster, error)
NewTrustedClusterFromLinks creates a trusted cluster from the legacy remote support and update links
func UnmarshalTrustedCluster ¶
func UnmarshalTrustedCluster(bytes []byte) (TrustedCluster, error)
UnmarshalTrustedCluster unmarshals the trusted cluster resource from bytes
type TrustedClusterSpecV2 ¶
type TrustedClusterSpecV2 struct {
// Enabled indicates whether the trusted cluster is enabled
Enabled bool `json:"enabled"`
// Token is a shared authorization token used to connect a remote cluster
Token string `json:"token"`
// ProxyAddress is the address of the web proxy server of the cluster to join.
// If not set, defaults to <metadata.name>:<default web proxy server port>
ProxyAddress string `json:"web_proxy_addr"`
// ReverseTunnelAddress is the address of the SSH proxy server of the cluster
// to join. If not set, defaults to <metadata.name>:<default reverse tunnel port>
ReverseTunnelAddress string `json:"tunnel_addr"`
// SNIHost is the Ops Center's public endpoint hostname
SNIHost string `json:"sni_host"`
// Roles is a list of roles that users will be assuming when connecting to
// this cluster
Roles []string `json:"roles,omitempty"`
// RoleMap specifies role mappings to remote roles
RoleMap teleservices.RoleMap `json:"role_map,omitempty"`
// PullUpdates indicates whether the trusted cluster should pull updates
PullUpdates bool `json:"pull_updates"`
// Wizard is true for trusted cluster representing a standalone installer
// Ops Center
Wizard bool `json:"wizard,omitempty"`
}
TrustedClusterSpecV2 represents the trusted cluster spec
type TrustedClusterV2 ¶
type TrustedClusterV2 struct {
// Kind is the resource kind, trusted_cluster
Kind string `json:"kind"`
// Version is the resource version
Version string `json:"version"`
// Metadata is the resource metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec is the trusted cluster spec
Spec TrustedClusterSpecV2 `json:"spec"`
}
TrustedClusterV2 represents a trusted cluster resource
func (*TrustedClusterV2) CanChangeStateTo ¶
func (c *TrustedClusterV2) CanChangeStateTo(t teleservices.TrustedCluster) error
CanChangeStateTo checks if the state change is allowed or not. If not, returns an error explaining the reason
func (*TrustedClusterV2) CheckAndSetDefaults ¶
func (c *TrustedClusterV2) CheckAndSetDefaults() error
CheckAndSetDefaults checks the cluster resource and sets some defaults
func (*TrustedClusterV2) CombinedMapping ¶
func (c *TrustedClusterV2) CombinedMapping() teleservices.RoleMap
CombinedMapping returns role map combined with roles
func (*TrustedClusterV2) Expiry ¶
func (c *TrustedClusterV2) Expiry() time.Time
Expiry returns the trusted cluster expiration time
func (*TrustedClusterV2) GetEnabled ¶
func (c *TrustedClusterV2) GetEnabled() bool
GetEnabled returns true if the cluster is connected to Ops Center
func (*TrustedClusterV2) GetMetadata ¶
func (c *TrustedClusterV2) GetMetadata() teleservices.Metadata
GetMetadata returns the trusted cluster metadata
func (*TrustedClusterV2) GetName ¶
func (c *TrustedClusterV2) GetName() string
GetName returns the trusted cluster name
func (*TrustedClusterV2) GetProxyAddress ¶
func (c *TrustedClusterV2) GetProxyAddress() string
GetProxyAddress returns the address of the proxy server
func (*TrustedClusterV2) GetPullUpdates ¶
func (c *TrustedClusterV2) GetPullUpdates() bool
GetPullUpdates returns true if the cluster pulls updates from Ops Center
func (*TrustedClusterV2) GetRegular ¶
func (c *TrustedClusterV2) GetRegular() bool
GetRegular returns true if this is a regular Ops Center.
func (*TrustedClusterV2) GetReverseTunnelAddress ¶
func (c *TrustedClusterV2) GetReverseTunnelAddress() string
GetReverseTunnelAddress returns the address of the reverse tunnel
func (*TrustedClusterV2) GetRoleMap ¶
func (c *TrustedClusterV2) GetRoleMap() teleservices.RoleMap
GetRoleMap returns the cluster role map
func (*TrustedClusterV2) GetRoles ¶
func (c *TrustedClusterV2) GetRoles() []string
GetRoles returns the cluster roles
func (*TrustedClusterV2) GetSNIHost ¶
func (c *TrustedClusterV2) GetSNIHost() string
GetSNIHost returns the Ops Center SNI host
func (*TrustedClusterV2) GetSystem ¶
func (c *TrustedClusterV2) GetSystem() bool
GetSystem returns true if this is a system trusted cluster
func (*TrustedClusterV2) GetToken ¶
func (c *TrustedClusterV2) GetToken() string
GetToken returns the authorization and authentication token
func (*TrustedClusterV2) GetWizard ¶
func (c *TrustedClusterV2) GetWizard() bool
GetWizard returns true for trusted cluster representing wizard Ops Center
func (*TrustedClusterV2) SetEnabled ¶
func (c *TrustedClusterV2) SetEnabled(enabled bool)
SetEnabled enables or disables Ops Center connection
func (*TrustedClusterV2) SetExpiry ¶
func (c *TrustedClusterV2) SetExpiry(expires time.Time)
SetExpiry sets the trusted cluster expiration time
func (*TrustedClusterV2) SetName ¶
func (c *TrustedClusterV2) SetName(name string)
SetName sets the trusted cluster name
func (*TrustedClusterV2) SetProxyAddress ¶
func (c *TrustedClusterV2) SetProxyAddress(addr string)
SetProxyAddress sets the address of the proxy server
func (*TrustedClusterV2) SetPullUpdates ¶
func (c *TrustedClusterV2) SetPullUpdates(enabled bool)
SetPullUpdates enables or disables pulling updates from Ops Center
func (*TrustedClusterV2) SetReverseTunnelAddress ¶
func (c *TrustedClusterV2) SetReverseTunnelAddress(addr string)
SetReverseTunnelAddress sets the address of the reverse tunnel
func (*TrustedClusterV2) SetRoleMap ¶
func (c *TrustedClusterV2) SetRoleMap(m teleservices.RoleMap)
SetRoleMap sets the cluster role map
func (*TrustedClusterV2) SetRoles ¶
func (c *TrustedClusterV2) SetRoles(roles []string)
SetRoles sets the cluster roles
func (*TrustedClusterV2) SetSNIHost ¶
func (c *TrustedClusterV2) SetSNIHost(host string)
SetSNIHost sets the Ops Center SNI host
func (*TrustedClusterV2) SetSystem ¶
func (c *TrustedClusterV2) SetSystem(system bool)
SetSystem marks the trusted clusters as a system
func (*TrustedClusterV2) SetTTL ¶
func (c *TrustedClusterV2) SetTTL(clock clockwork.Clock, ttl time.Duration)
SetTTL sets the trusted cluster TTL
func (*TrustedClusterV2) SetToken ¶
func (c *TrustedClusterV2) SetToken(token string)
SetToken sets the authorization and authentication token
func (*TrustedClusterV2) SetWizard ¶
func (c *TrustedClusterV2) SetWizard(wizard bool)
SetWizard marks the trusted cluster as wizard mode or not
func (TrustedClusterV2) String ¶
func (c TrustedClusterV2) String() string
String returns a string representation of a trusted cluster
type U2F ¶
type U2F interface {
// UpsertU2FRegisterChallenge upserts a U2F challenge for a new user corresponding to the token
UpsertU2FRegisterChallenge(token string, u2fChallenge *u2f.Challenge) error
// GetU2FRegisterChallenge returns a U2F challenge for a new user corresponding to the token
GetU2FRegisterChallenge(token string) (*u2f.Challenge, error)
// UpsertU2FRegistration upserts a U2F registration from a valid register response
UpsertU2FRegistration(user string, u2fReg *u2f.Registration) error
// GetU2FRegistration returns a U2F registration from a valid register response
GetU2FRegistration(user string) (*u2f.Registration, error)
// UpsertU2FRegistrationCounter upserts a counter associated with a U2F registration
UpsertU2FRegistrationCounter(user string, counter uint32) error
// UpsertU2FRegistrationCounter upserts a counter associated with a U2F registration
GetU2FRegistrationCounter(user string) (counter uint32, e error)
// GetU2FSignChallenge returns a U2F sign (auth) challenge
UpsertU2FSignChallenge(user string, u2fChallenge *u2f.Challenge) error
// GetU2FSignChallenge returns a U2F sign (auth) challenge
GetU2FSignChallenge(user string) (*u2f.Challenge, error)
}
U2F collection operates on U2F signups, logins, and password resets
type UninstallOperationState ¶
type UninstallOperationState struct {
// Force enforces uninstall even if application uninstall failed
Force bool `json:"force"`
// Vars is standard operation variables set
Vars OperationVariables `json:"vars"`
}
UninstallOperationState defines the state of the uninstall operation
type UnknownResource ¶
type UnknownResource struct {
// ResourceHeader describes the resource by providing the metadata common to all resources
teleservices.ResourceHeader
// Raw is the unparsed resource data.
Raw json.RawMessage `json:",inline"`
}
UnknownResource represents an unparsed resource with an interpreted ResourceHeader. The embedded resource can either be a Kubernetes or a Gravity resource. The struct implements both json.Marshaler/json.Unmarshaler
func (UnknownResource) MarshalJSON ¶
func (r UnknownResource) MarshalJSON() ([]byte, error)
MarshalJSON returns the raw message
func (*UnknownResource) UnmarshalJSON ¶
func (r *UnknownResource) UnmarshalJSON(data []byte) (err error)
UnmarshalJSON consumes the specified data as a binary blob w/o interpreting it
type UpdateConfigOperationState ¶
type UpdateConfigOperationState struct {
// PrevConfig specifies the previous configuration state
PrevConfig []byte `json:"prev_config,omitempty"`
// Config specifies the raw configuration resource
Config []byte `json:"config,omitempty"`
}
UpdateConfigOperationState describes the state of the operation to update cluster configuration
type UpdateEnvarsOperationState ¶
type UpdateEnvarsOperationState struct {
// PrevEnv specifies the previous environment state
PrevEnv map[string]string `json:"prev_env,omitempty"`
// Env defines new cluster environment variables
Env map[string]string `json:"env,omitempty"`
}
UpdateEnvarsOperationState describes the state of the operation to update cluster environment variables.
type UpdateOperationData ¶
type UpdateOperationData struct {
// Servers lists the cluster servers to use for the configuration update step.
// The list might be a subset of all cluster servers in case
// the operation only operates on a specific part
Servers []UpdateServer `json:"updates,omitempty"`
// ClusterConfig optionally specifies data specific to cluster configuration operation
ClusterConfig *ClusterConfigData `json:"cluster_config,omitempty"`
}
UpdateOperationData describes configuration for update operations
type UpdateOperationState ¶
type UpdateOperationState struct {
// UpdatePackage references the application package to update to
UpdatePackage string `json:"update_package"`
// ChangesetID is id of the package changeset used by this operation
ChangesetID string `json:"changeset_id,omitempty"`
// UpdateServiceName is a name of systemd service performing update
UpdateServiceName string `json:"update_service_name,omitempty"`
// RollbackServiceName is a name of systemd service performing rollback
RollbackServiceName string `json:"rollback_service_name,omitempty"`
// ServerUpdates contains servers and their update state
ServerUpdates []ServerUpdate `json:"server_updates,omitempty"`
// Manual specifies whether this update operation was created in manual mode
Manual bool `json:"manual"`
// Vars are variables specific to this operation
Vars OperationVariables `json:"vars"`
}
UpdateOperationState describes the state of the update operation.
type UpdateServer ¶
type UpdateServer struct {
// Server identifies the server for the configuration package update
Server `json:"server"`
// Runtime defines the runtime update
Runtime RuntimePackage `json:"runtime"`
// Teleport defines the optional teleport update
Teleport TeleportPackage `json:"teleport"`
}
UpdateServer describes an intent to update runtime/teleport configuration packages on a specific cluster node
type UpdateUserReq ¶
type UpdateUserReq struct {
// HOTP is a request to update user HOTP token
HOTP *[]byte
// Password is a request to update user password
Password *string
// Roles sets user roles
Roles *[]string
// User full name
FullName *string
}
UpdateUserReq instructs update method to update certain fields of the user struct, if they are set as not nil
func (*UpdateUserReq) Check ¶
func (u *UpdateUserReq) Check() error
Check will check if all parameters are correct and will return error
type User ¶
type User interface {
// Resource provides common resource methods
teleservices.Resource
// GetFullName returns user full name
GetFullName() string
// SetFullName sets user full name
SetFullName(fullname string)
// GetOIDCIdentities returns a list of connected OIDCIdentities
GetOIDCIdentities() []teleservices.ExternalIdentity
// GetSAMLIdentities returns a list of connected SAMLIdentities
GetSAMLIdentities() []teleservices.ExternalIdentity
// GetGithubIdentities returns a list of connected Github identities
GetGithubIdentities() []teleservices.ExternalIdentity
// GetRoles returns a list of roles assigned to user
GetRoles() []string
// String returns string representation of user
String() string
// Equals checks if user equals to another
Equals(other teleservices.User) bool
// GetStatus return user login status
GetStatus() teleservices.LoginStatus
// SetLocked sets login status to locked
SetLocked(until time.Time, reason string)
// SetRoles sets user roles
SetRoles(roles []string)
// AddRole adds role to the users' role list
AddRole(name string)
// GetExpiry returns ttl of the user
GetExpiry() time.Time
// GetCreatedBy returns information about user
GetCreatedBy() teleservices.CreatedBy
// SetCreatedBy sets created by information
SetCreatedBy(teleservices.CreatedBy)
// Check checks basic user parameters for errors
Check() error
// CheckAndSetDefaults checks basic user parameters for errors
// and sets default values
CheckAndSetDefaults() error
// GetRawObject returns raw object data, used for migrations
GetRawObject() interface{}
// SetRawObject sets raw object
SetRawObject(a interface{})
// WebSessionInfo returns web session information about user
WebSessionInfo(allowedLogins []string) interface{}
// GetType returns user type
GetType() string
// SetType sets user type
SetType(string)
// GetOpsCenter returns a hostname of the Ops Center this usre is authenticated with
GetOpsCenter() string
// IsAccountOwner returns account ownership flag
IsAccountOwner() bool
// SetHOTP sets HOTP token value
SetHOTP(h []byte)
// SetPassword sets password hash
SetPassword(pass string)
// GetPassword returns password hash
GetPassword() string
// GetHOTP sets HOTP token value
GetHOTP() []byte
// GetAccountID returns user account ID
GetAccountID() string
// GetClusterName returns cluster name of this user
GetClusterName() string
// SetClusterName sets cluster name of this user
SetClusterName(name string)
// WithoutSecrets returns user copy but with secrets
// data removed
WithoutSecrets() User
// GetTraits gets the trait map for this user used to populate role variables.
GetTraits() map[string][]string
// GetTraits sets the trait map for this user used to populate role variables.
SetTraits(map[string][]string)
}
User a human or bot user in the system
func NewUser ¶
func NewUser(name string, spec UserSpecV2) User
NewUser returns new user object based on the spec data, this is a helpful shortcut
func UnmarshalUser ¶
UnmarshalUser unmarshals user from default representation
type UserInvite ¶
type UserInvite struct {
// Name is the user of this user
Name string `json:"name"`
// CreatedBy is a user who sends the invite
CreatedBy string `json:"created_by"`
// Created is a time this user invite has been created
Created time.Time `json:"created"`
// Roles are the roles that will be assigned to invited user
Roles []string `json:"roles"`
// ExpiresIn sets the token expiry time
ExpiresIn time.Duration `json:"expires_in"`
}
UserInvite represents a promise to add user to account
func (*UserInvite) CheckAndSetDefaults ¶
func (u *UserInvite) CheckAndSetDefaults() error
CheckAndSetDefaults checks and sets defaults for user invite
type UserInvites ¶
type UserInvites interface {
// UpsertUserInvite upserts a new user invite
UpsertUserInvite(u UserInvite) (*UserInvite, error)
// GetUserInvites returns a list of user invites
GetUserInvites() ([]UserInvite, error)
// DeleteUserInvite deletes user invite
DeleteUserInvite(token string) error
// GetUserInvite returns user invite by user name
GetUserInvite(username string) (*UserInvite, error)
}
UserInvites manages user invites
type UserSpecV2 ¶
type UserSpecV2 struct {
// OIDCIdentities lists associated OpenID Connect identities
// that let user log in using externally verified identity
OIDCIdentities []teleservices.ExternalIdentity `json:"oidc_identities,omitempty"`
// SAMLIdentities lists associated SAML identities
// that let user log in using externally verified identity
SAMLIdentities []teleservices.ExternalIdentity `json:"saml_identities,omitempty"`
// GithubIdentities lists associated Github identities
// that let user log in using externally verified identity
GithubIdentities []teleservices.ExternalIdentity `json:"github_identities,omitempty"`
// Roles is a list of roles assigned to user
Roles []string `json:"roles,omitempty"`
// Status is a login status of the user
Status teleservices.LoginStatus `json:"status"`
// Expires if set sets TTL on the user
Expires time.Time `json:"expires"`
// CreatedBy holds information about agent or person created this user
CreatedBy teleservices.CreatedBy `json:"created_by"`
// Type is a user type - e.g. human or install agent
Type string `json:"type"`
// AccountOwner indicates that this user is owner of the account and
// can not be deleted without deleting the whole account
AccountOwner bool `json:"account_owner"`
// AccountID is an optional account id this user belongs to
AccountID string `json:"account_id"`
// ClusterName is the name of the cluster this user belongs to
ClusterName string `json:"cluster_name"`
// Password contains bcrypted password for human users
Password string `json:"password"`
// HOTP is HOTP secret used to generate 2nd factor auth challenges
HOTP []byte `json:"hotp,omitempty"`
// OpsCenter is a hostname of the ops center this user is authenticated with
// is initialized by OpsCenter when it creates new sites
OpsCenter string `json:"ops_center"`
// FullName is full user name
FullName string `json:"full_name"`
// Traits are key/value pairs received from an identity provider (through
// OIDC claims or SAML assertions) or from a system administrator for local
// accounts. Traits are used to populate role variables.
Traits map[string][]string `json:"traits,omitempty"`
}
UserSpecV2 is a specification for V2 user
type UserToken ¶
type UserToken struct {
// Token is a unique randomly generated token
Token string `json:"token"`
// User is user name associated with this token
User string `json:"user"`
// Expires sets the token expiry time
Expires time.Time `json:"expires"`
// Type is token type
Type string `json:"type"`
// HOTP is a secret value of one time password secret generator
HOTP []byte `json:"hotp"`
// QRCode is a QR code value
QRCode []byte `json:"qr_code"`
// Created holds information about when the token was created
Created time.Time `json:"created"`
// URL is this token URL
URL string `json:"url"`
}
UserToken is a temporary token used to create and reset a user
type UserTokens ¶
type UserTokens interface {
// CreateUserToken creates a temporary authentication token
CreateUserToken(t UserToken) (*UserToken, error)
// DeleteUserToken deletes token by its id
DeleteUserToken(token string) error
// GetUserToken returns a token if it has not expired yet
GetUserToken(token string) (*UserToken, error)
// DeleteUserTokens deletes user tokens
DeleteUserTokens(tokenType string, user string) error
}
UserTokens collection operates on one-time tokens used for creating new accounts and adding users to existing accounts, as well as recovering passwords
type UserV1 ¶
type UserV1 struct {
// Email is email address used for login, it is globally unique
Email string `json:"email"`
// Name aliases the email and is provided for backwards-compatibility
Name string `json:"name"`
// Type is a user type - e.g. human or install agent
Type string `json:"type"`
// AccountOwner indicates that this user is owner of the account and
// can not be deleted without deleting the whole account
AccountOwner bool `json:"account_owner"`
// AccountID is an optional account id this user belongs to
AccountID string `json:"account_id"`
// SiteDomain is an optional site id this user belongs to
SiteDomain string `json:"site_domain"`
// Password contains bcrypted password for human users
Password string `json:"password"`
// HOTP is HOTP secret used to generate 2nd factor auth challenges
HOTP []byte `json:"hotp"`
// AllowedLogins is a list of allowed logins
AllowedLogins []string `json:"allowed_logins"`
// Identities is a list of connected OIDCIdentities
Identities []teleservices.ExternalIdentity `json:"identities"`
}
UserV1 is a struct representing a user in the system, user or bot performing operations,
type UserV2 ¶
type UserV2 struct {
// Kind is a resource kind
Kind string `json:"kind"`
// Version is version
Version string `json:"version"`
// Metadata is User metadata
Metadata teleservices.Metadata `json:"metadata"`
// Spec contains user specification
Spec UserSpecV2 `json:"spec"`
// contains filtered or unexported fields
}
UserV2 is version 2 resource spec of the user
func (*UserV2) CheckAndSetDefaults ¶
CheckAndSetDefaults checks that the user is valid and sets some defaults
func (*UserV2) Equals ¶
func (u *UserV2) Equals(other teleservices.User) bool
Equals checks if user equals to another
func (*UserV2) GetAccountID ¶
GetAccountID returns user account ID
func (*UserV2) GetClusterName ¶
GetClusterName returns cluster name of this user
func (*UserV2) GetCreatedBy ¶
func (u *UserV2) GetCreatedBy() teleservices.CreatedBy
GetCreatedBy returns information about who created user
func (*UserV2) GetGithubIdentities ¶
func (u *UserV2) GetGithubIdentities() []teleservices.ExternalIdentity
GetGithubIdentities returns a list of connected Github identities
func (*UserV2) GetMetadata ¶
func (u *UserV2) GetMetadata() teleservices.Metadata
GetMetadata returns role metadata
func (*UserV2) GetOIDCIdentities ¶
func (u *UserV2) GetOIDCIdentities() []teleservices.ExternalIdentity
GetOIDCIdentities returns a list of connected OIDCIdentities
func (*UserV2) GetOpsCenter ¶
GetOpsCenter returns a hostname of the Ops Center this usre is authenticated with
func (*UserV2) GetPassword ¶
GetPassword returns password hash
func (*UserV2) GetRawObject ¶
func (u *UserV2) GetRawObject() interface{}
GetRawObject returns raw object data, used for migrations
func (*UserV2) GetSAMLIdentities ¶
func (u *UserV2) GetSAMLIdentities() []teleservices.ExternalIdentity
GetSAMLIdentities returns a list of connected SAML identities
func (*UserV2) GetStatus ¶
func (u *UserV2) GetStatus() teleservices.LoginStatus
GetStatus returns login status of the user
func (*UserV2) GetTraits ¶
GetTraits gets the trait map for this user used to populate role variables.
func (*UserV2) IsAccountOwner ¶
IsAccountOwner returns account ownership flag
func (*UserV2) SetClusterName ¶
SetClusterName sets cluster name of this user
func (*UserV2) SetCreatedBy ¶
func (u *UserV2) SetCreatedBy(b teleservices.CreatedBy)
SetCreatedBy sets created by information
func (*UserV2) SetFullName ¶
SetFullName sets user full name
func (*UserV2) SetMetadata ¶
func (u *UserV2) SetMetadata() teleservices.Metadata
SetMetadata returns role metadata
func (*UserV2) SetPassword ¶
SetPassword sets password hash
func (*UserV2) SetRawObject ¶
func (u *UserV2) SetRawObject(o interface{})
SetRawObject sets raw object
func (*UserV2) SetTraits ¶
SetTraits sets the trait map for this user used to populate role variables.
func (*UserV2) WebSessionInfo ¶
WebSessionInfo returns web session information about user
func (*UserV2) WithoutSecrets ¶
WithoutSecrets returns user copy but with secrets data removed
type Users ¶
type Users interface {
// CreateUser creates a user entry
CreateUser(u User) (User, error)
// UpsertUser creates or updates a user
UpsertUser(u User) (User, error)
// UpdateUser udpates existing users parameters
UpdateUser(email string, req UpdateUserReq) error
// DeleteUser deletes a user entry
DeleteUser(email string) error
// GetUser returns user by name
GetUser(email string) (User, error)
// GetUserRoles returns user roles
GetUserRoles(email string) ([]teleservices.Role, error)
// GetUsers returns users registered for account
GetUsers(accountID string) ([]User, error)
// DeleteAllUsers deletes all users
DeleteAllUsers() error
// GetAllUsers returns all users
GetAllUsers() ([]User, error)
// GetSiteUsers returns site users
GetSiteUsers(siteDomain string) ([]User, error)
// AddUserLoginAttempt logs user login attempt
AddUserLoginAttempt(user string, attempt teleservices.LoginAttempt, ttl time.Duration) error
// GetUserLoginAttempts returns user login attempts
GetUserLoginAttempts(user string) ([]teleservices.LoginAttempt, error)
// DeleteUserLoginAttempts removes all login attempts of a user. Should be called after successful login.
DeleteUserLoginAttempts(user string) error
// UpsertTOTP upserts TOTP secret key for a user that can be used to generate and validate tokens.
UpsertTOTP(user string, secretKey string) error
// GetTOTP returns the secret key used by the TOTP algorithm to validate tokens
GetTOTP(user string) (string, error)
// UpsertUsedTOTPToken upserts a TOTP token to the backend so it can't be used again
// during the 30 second window it's valid.
UpsertUsedTOTPToken(user string, otpToken string) error
// GetUsedTOTPToken returns the last successfully used TOTP token. If no token is found zero is returned.
GetUsedTOTPToken(user string) (string, error)
// DeleteUsedTOTPToken removes the used token from the backend. This should only
// be used during tests.
DeleteUsedTOTPToken(user string) error
}
Users collection provides operations on users - both humans and bots
type WebSessions ¶
type WebSessions interface {
UpsertWebSession(username, sid string, session teleservices.WebSession) error
// GetWebSession returns a web session state for a given user and session id
GetWebSession(username, sid string) (teleservices.WebSession, error)
// DeleteWebSession deletes web ession for user and session ide
DeleteWebSession(username, sid string) error
}
WebSessions take care of the user web sessions and help implement teleport's Identity backend
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
package allocator manages allocation of resources.
|
package allocator manages allocation of resources. |
|
Package keyval implements Etcd and BoltDB powered storage
|
Package keyval implements Etcd and BoltDB powered storage |
|
package suite contains a storage acceptance test suite that is backend implementation independent each storage will use the suite to test itself
|
package suite contains a storage acceptance test suite that is backend implementation independent each storage will use the suite to test itself |