Documentation
¶
Index ¶
- Constants
- type AuthenticationMethod
- type AzureCredentials
- type BaasAPP
- type Baask8s
- type Baask8sGroup
- type Baask8sGroupID
- type Baask8sGroupService
- type Baask8sID
- type Baask8sJob
- type Baask8sService
- type Baask8sStatus
- type Baask8sType
- type Baasmsp
- type BaasmspID
- type BaasmspService
- type BaasmspStatus
- type BaasmspType
- type CAFilesManager
- type CC
- type CCID
- type CHL
- type CHLID
- type CLIFlags
- type CLIService
- type CryptoService
- type DataStore
- type DigitalSignatureService
- type Error
- type Extension
- type ExtensionID
- type ExtensionManager
- type ExtensionService
- type FileService
- type GitService
- type JWTService
- type JobRunner
- type JobScheduler
- type JobService
- type JobType
- type LDAPGroupSearchSettings
- type LDAPSearchSettings
- type LDAPService
- type LDAPSettings
- type LicenseInformation
- type MSP
- type MSPORG
- type MembershipRole
- type OAuthSettings
- type Pair
- type Policy
- type Registry
- type RegistryID
- type RegistryManagementConfiguration
- type RegistryService
- type RegistryType
- type ResourceAccessLevel
- type ResourceControl
- type ResourceControlID
- type ResourceControlService
- type ResourceControlType
- type Schedule
- type ScheduleID
- type ScheduleService
- type ScriptExecutionJob
- type Server
- type Settings
- type SettingsService
- type Snapshot
- type SnapshotJob
- type SnapshotRaw
- type Snapshotter
- type Status
- type TLSConfiguration
- type TLSFileType
- type Tag
- type TagID
- type TagService
- type Team
- type TeamID
- type TeamMembership
- type TeamMembershipID
- type TeamMembershipService
- type TeamResourceAccess
- type TeamService
- type Template
- type TemplateEnv
- type TemplateEnvSelect
- type TemplateID
- type TemplateRepository
- type TemplateService
- type TemplateType
- type TemplateVolume
- type TokenData
- type User
- type UserID
- type UserResourceAccess
- type UserRole
- type UserService
- type VersionService
- type Webhook
- type WebhookID
- type WebhookService
- type WebhookType
Constants ¶
const ( // APIVersion is the version number of the BaaSapi API APIVersion = "1.20.3" // DBVersion is the version number of the BaaSapi database DBVersion = 18 // AssetsServerURL represents the URL of the BaaSapi asset server AssetsServerURL = "https://baasapi-io-assets.sfo2.digitaloceanspaces.com" // MessageOfTheDayURL represents the URL where BaaSapi MOTD message can be retrieved MessageOfTheDayURL = AssetsServerURL + "/motd.html" // MessageOfTheDayTitleURL represents the URL where BaaSapi MOTD title can be retrieved MessageOfTheDayTitleURL = AssetsServerURL + "/motd-title.txt" // ExtensionDefinitionsURL represents the URL where BaaSapi extension definitions can be retrieved ExtensionDefinitionsURL = AssetsServerURL + "/extensions-1.20.2.json" // BaaSapiAgentHeader represents the name of the header available in any agent response BaaSapiAgentHeader = "BaaSapi-Agent" // BaaSapiAgentTargetHeader represent the name of the header containing the target node name BaaSapiAgentTargetHeader = "X-BaaSapiAgent-Target" // BaaSapiAgentSignatureHeader represent the name of the header containing the digital signature BaaSapiAgentSignatureHeader = "X-BaaSapiAgent-Signature" // BaaSapiAgentPublicKeyHeader represent the name of the header containing the public key BaaSapiAgentPublicKeyHeader = "X-BaaSapiAgent-PublicKey" // BaaSapiAgentSignatureMessage represents the message used to create a digital signature // to be used when communicating with an agent BaaSapiAgentSignatureMessage = "BaaSapi-App" // SupportedDockerAPIVersion is the minimum Docker API version supported by BaaSapi SupportedDockerAPIVersion = "1.24" )
const ( ErrResourceAccessDenied = Error("Access denied to resource") ErrObjectNotFound = Error("Object not found inside the database") ErrMissingSecurityContext = Error("Unable to find security details in request context") )
General errors.
const ( ErrUserAlreadyExists = Error("User already exists") ErrInvalidUsername = Error("Invalid username. White spaces are not allowed") ErrAdminAlreadyInitialized = Error("An administrator user already exists") ErrAdminCannotRemoveSelf = Error("Cannot remove your own user account. Contact another administrator") ErrCannotRemoveLastLocalAdmin = Error("Cannot remove the last local administrator account") )
User errors.
const ( ErrScaleTypeError = Error("Scale resource type error") ErrScaleNumberError = Error("Scale number cannot be larger than 5") )
scale_error
const ( ErrPolicyAlreadyExists = Error("Policy already exists") ErrPolicyLastOne = Error("Cannot Delete the last one") )
Policy errors.
const ( ErrResourceControlAlreadyExists = Error("A resource control is already applied on this resource") ErrInvalidResourceControlType = Error("Unsupported resource control type") )
ResourceControl errors.
const ( ErrStackAlreadyExists = Error("A stack already exists with this name") ErrComposeFileNotFoundInRepository = Error("Unable to find a Compose file in the repository") ErrStackNotExternal = Error("Not an external stack") )
Stack errors
const ( ErrBaask8sExtensionNotSupported = Error("This extension is not supported") ErrBaask8sExtensionAlreadyAssociated = Error("This extension is already associated to the baask8s") )
Baask8s extensions error
const ( ErrSecretGeneration = Error("Unable to generate secret key") ErrInvalidJWTToken = Error("Invalid JWT token") ErrMissingContextData = Error("Unable to find JWT data in request context") )
JWT errors.
const ( ErrWebhookAlreadyExists = Error("A webhook for this resource already exists") ErrUnsupportedWebhookType = Error("Webhooks for this resource are not currently supported") )
Webhook errors
const (
ErrAzureInvalidCredentials = Error("Invalid Azure credentials")
)
Azure environment errors
const (
ErrBaask8sAccessDenied = Error("Access denied to baask8s")
)
Baask8s errors.
const (
ErrCannotRemoveDefaultGroup = Error("Cannot remove the default baask8s group")
)
Baask8s group errors.
const (
ErrCryptoHashFailure = Error("Unable to hash data")
)
Crypto errors.
const (
ErrExtensionAlreadyEnabled = Error("This extension is already enabled")
)
Extension errors.
const (
ErrHostManagementFeaturesDisabled = Error("Host management features are disabled")
)
Schedule errors.
const (
ErrRegistryAlreadyExists = Error("A registry is already defined for this URL")
)
Registry errors.
const (
ErrTagAlreadyExists = Error("A tag already exists with this name")
)
Tag errors
const (
ErrTeamAlreadyExists = Error("Team already exists")
)
Team errors.
const (
ErrTeamMembershipAlreadyExists = Error("Team membership already exists for this user and team")
)
TeamMembership errors.
const (
ErrUnableToPingBaask8s = Error("Unable to communicate with the baask8s")
)
Docker errors.
const (
ErrUndefinedTLSFileType = Error("Undefined TLS file type")
)
File errors.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AuthenticationMethod ¶
type AuthenticationMethod int
AuthenticationMethod represents the authentication method used to authenticate a user
const ( // AuthenticationInternal represents the internal authentication method (authentication against BaaSapi API) AuthenticationInternal AuthenticationMethod // AuthenticationLDAP represents the LDAP authentication method (authentication against a LDAP server) AuthenticationLDAP //AuthenticationOAuth represents the OAuth authentication method (authentication against a authorization server) AuthenticationOAuth )
type AzureCredentials ¶
type AzureCredentials struct {
ApplicationID string `json:"ApplicationID"`
TenantID string `json:"TenantID"`
AuthenticationKey string `json:"AuthenticationKey"`
}
AzureCredentials represents the credentials used to connect to an Azure environment.
type Baask8s ¶
type Baask8s struct {
ID Baask8sID `json:"Id"`
//GroupID Baask8sGroupID `json:"GroupId"`
NetworkName string `json:"NetworkName"`
NetworkID string `json:"NetworkID"`
Owner string `json:"Owner"`
Platform string `json:"Platform"`
CreatedAt string `json:"CreatedAt"`
MSPs []MSP `json:"MSPs"`
CHLs []CHL `json:"CHLs"`
Policys []Policy `json:"Policys"`
CCs []CC `json:"CCs"`
Applications []BaasAPP `json:"Applications"`
AuthorizedUsers []UserID `json:"AuthorizedUsers"`
AuthorizedTeams []TeamID `json:"AuthorizedTeams"`
//Tags []string `json:"Tags"`
Status Baask8sStatus `json:"Status"`
Snapshots []Snapshot `json:"Snapshots"`
Namespace string `json:"Namespace"`
}
Baask8s represents a Docker baask8s with all the info required to connect to it
type Baask8sGroup ¶
type Baask8sGroup struct {
ID Baask8sGroupID `json:"Id"`
Name string `json:"Name"`
Description string `json:"Description"`
AuthorizedUsers []UserID `json:"AuthorizedUsers"`
AuthorizedTeams []TeamID `json:"AuthorizedTeams"`
Tags []string `json:"Tags"`
// Deprecated fields
Labels []Pair `json:"Labels"`
}
Baask8sGroup represents a group of baask8ss
type Baask8sGroupService ¶
type Baask8sGroupService interface {
Baask8sGroup(ID Baask8sGroupID) (*Baask8sGroup, error)
Baask8sGroups() ([]Baask8sGroup, error)
CreateBaask8sGroup(group *Baask8sGroup) error
UpdateBaask8sGroup(ID Baask8sGroupID, group *Baask8sGroup) error
DeleteBaask8sGroup(ID Baask8sGroupID) error
}
Baask8sGroupService represents a service for managing baask8s group data
type Baask8sJob ¶
type Baask8sJob struct {
Baask8ss []Baask8sID
}
Baask8sJob represents a scheduled job that sync baask8s
type Baask8sService ¶
type Baask8sService interface {
Baask8s(ID Baask8sID) (*Baask8s, error)
Baask8ss() ([]Baask8s, error)
CreateBaask8s(baask8s *Baask8s) error
UpdateBaask8s(ID Baask8sID, baask8s *Baask8s) error
DeleteBaask8s(ID Baask8sID) error
GetNextIdentifier() int
}
Baask8sService represents a service for managing baask8s data
type Baask8sStatus ¶
type Baask8sStatus int
Baask8sStatus represents the status of an baask8s
const ( // Baask8sStatusUp is used to represent an available baask8s Baask8sStatusUp Baask8sStatus // Baask8sStatusDown is used to represent an unavailable baask8s Baask8sStatusDown )
type Baask8sType ¶
type Baask8sType int
Baask8stype represents the type of an baask8s
const ( // DockerEnvironment represents an baask8s connected to a Docker environment DockerEnvironment2 Baask8sType // AgentOnDockerEnvironment represents an baask8s connected to a BaaSapi agent deployed on a Docker environment AgentOnDockerEnvironment2 // AzureEnvironment represents an baask8s connected to an Azure environment AzureEnvironment2 )
type Baasmsp ¶
type Baasmsp struct {
ID BaasmspID `json:"Id"`
NetworkName string `json:"NetworkName"`
NetworkID string `json:"NetworkID"`
Owner string `json:"Owner"`
Platform string `json:"Platform"`
CreatedAt int64 `json:"CreatedAt"`
MSPs []MSP `json:"MSPs"`
//Tags []string `json:"Tags"`
Status Baask8sStatus `json:"Status"`
Snapshots []Snapshot `json:"Snapshots"`
Namespace string `json:"Namespace"`
}
Baasmsp represents a baasmsp with all the info required to connect to it
type BaasmspService ¶
type BaasmspService interface {
Baasmsp(ID BaasmspID) (*Baasmsp, error)
Baasmsps() ([]Baasmsp, error)
CreateBaasmsp(baasmsp *Baasmsp) error
DeleteBaasmsp(ID BaasmspID) error
GetNextIdentifier() int
}
BaasmspService represents a service for managing baasmsp data
type CAFilesManager ¶
type CAFilesManager interface {
Deploy(creator string, networkID string, ansible_extra string, ansible_env string, ansible_config string, flag bool) error
GetLogs(namespade string, nline int) (string, error)
}
CAFilesManager represents a service to manage CAFiles
type CC ¶
type CC struct {
//ID CCID `json:"id"`
ID int `json:"id"`
CCName string `json:"chaincodeName"`
CHLName string `json:"chlName"`
Version string `json:"chaincodeVersion"`
EndorsementPolicyparm interface{} `json:"endorsementPolicyparm"`
InstallORGs []MSPORG `json:"installORGs"`
InstantiateORGs []MSPORG `json:"instantiateORGs"`
ChaincodeType string `json:"chaincodeType"`
Path string `json:"path"`
}
type CHL ¶
type CHL struct {
ID CHLID `json:"Id"`
CHLName string `json:"CHLName"`
CreatedAt string `json:"CreatedAt"`
ORGs []MSPORG `json:"ORGs"`
}
MSP represents a MSP
type CLIFlags ¶
type CLIFlags struct {
Addr *string
AdminPassword *string
AdminPasswordFile *string
Assets *string
Data *string
Labels *[]Pair
Logo *string
NoAuth *bool
NoAnalytics *bool
Templates *string
TemplateFile *string
TLS *bool
TLSSkipVerify *bool
TLSCacert *string
TLSCert *string
TLSKey *string
SSL *bool
SSLCert *string
SSLKey *string
SyncInterval *string
Snapshot *bool
SnapshotInterval *string
Baask8s *bool
Baask8sInterval *string
}
CLIFlags represents the available flags on the CLI
type CLIService ¶
type CLIService interface {
ParseFlags(version string) (*CLIFlags, error)
ValidateFlags(flags *CLIFlags) error
}
CLIService represents a service for managing CLI
type CryptoService ¶
type CryptoService interface {
Hash(data string) (string, error)
CompareHashAndData(hash string, data string) error
}
CryptoService represents a service for encrypting/hashing data
type DigitalSignatureService ¶
type DigitalSignatureService interface {
ParseKeyPair(private, public []byte) error
GenerateKeyPair() ([]byte, []byte, error)
EncodedPublicKey() string
PEMHeaders() (string, string)
CreateSignature(message string) (string, error)
}
DigitalSignatureService represents a service to manage digital signatures
type Extension ¶
type Extension struct {
ID ExtensionID `json:"Id"`
Enabled bool `json:"Enabled"`
Name string `json:"Name,omitempty"`
ShortDescription string `json:"ShortDescription,omitempty"`
Description string `json:"Description,omitempty"`
DescriptionURL string `json:"DescriptionURL,omitempty"`
Price string `json:"Price,omitempty"`
PriceDescription string `json:"PriceDescription,omitempty"`
Deal bool `json:"Deal,omitempty"`
Available bool `json:"Available,omitempty"`
License LicenseInformation `json:"License,omitempty"`
Version string `json:"Version"`
UpdateAvailable bool `json:"UpdateAvailable"`
ShopURL string `json:"ShopURL,omitempty"`
Images []string `json:"Images,omitempty"`
Logo string `json:"Logo,omitempty"`
}
Extension represents a BaaSapi extension
type ExtensionID ¶
type ExtensionID int
ExtensionID represents a extension identifier
const ( // RegistryManagementExtension represents the registry management extension RegistryManagementExtension ExtensionID // OAuthAuthenticationExtension represents the OAuth authentication extension OAuthAuthenticationExtension )
type ExtensionManager ¶
type ExtensionManager interface {
FetchExtensionDefinitions() ([]Extension, error)
EnableExtension(extension *Extension, licenseKey string) error
DisableExtension(extension *Extension) error
UpdateExtension(extension *Extension, version string) error
}
ExtensionManager represents a service used to manage extensions
type ExtensionService ¶
type ExtensionService interface {
Extension(ID ExtensionID) (*Extension, error)
Extensions() ([]Extension, error)
Persist(extension *Extension) error
DeleteExtension(ID ExtensionID) error
}
ExtensionService represents a service for managing extension data
type FileService ¶
type FileService interface {
GetFileContent(filePath string) ([]byte, error)
Rename(oldPath, newPath string) error
RemoveDirectory(directoryPath string) error
StoreTLSFileFromBytes(folder string, fileType TLSFileType, data []byte) (string, error)
StoreKubeconfigFileFromBytes(folder string, fileType TLSFileType, data []byte) (string, error)
GetPathForTLSFile(folder string, fileType TLSFileType) (string, error)
DeleteTLSFile(folder string, fileType TLSFileType) error
DeleteTLSFiles(folder string) error
GetStackProjectPath(stackIdentifier string) string
StoreStackFileFromBytes(stackIdentifier, fileName string, data []byte) (string, error)
StoreRegistryManagementFileFromBytes(folder, fileName string, data []byte) (string, error)
KeyPairFilesExist() (bool, error)
StoreKeyPair(private, public []byte, privatePEMHeader, publicPEMHeader string) error
LoadKeyPair() ([]byte, []byte, error)
WriteJSONToFile(path string, content interface{}) error
StoreYamlFileFromJSON(stackIdentifier, fileName string, content interface{}, creator string) (string, error)
FileExists(path string) (bool, error)
StoreScheduledJobFileFromBytes(identifier string, data []byte) (string, error)
GetScheduleFolder(identifier string) string
ExtractExtensionArchive(data []byte) error
GetBinaryFolder() string
}
FileService represents a service for managing files
type GitService ¶
type GitService interface {
ClonePublicRepository(repositoryURL, referenceName string, destination string) error
ClonePrivateRepositoryWithBasicAuth(repositoryURL, referenceName string, destination, username, password string) error
}
GitService represents a service for managing Git
type JWTService ¶
type JWTService interface {
GenerateToken(data *TokenData) (string, error)
ParseAndVerifyToken(token string) (*TokenData, error)
}
JWTService represents a service for managing JWT tokens
type JobRunner ¶
type JobRunner interface {
Run()
GetSchedule() *Schedule
}
JobRunner represents a service that can be used to run a job
type JobScheduler ¶
type JobScheduler interface {
ScheduleJob(runner JobRunner) error
UpdateJobSchedule(runner JobRunner) error
UpdateSystemJobSchedule(jobType JobType, newCronExpression string) error
UnscheduleJob(ID ScheduleID)
Start()
}
JobScheduler represents a service to run jobs on a periodic basis
type JobService ¶
type JobService interface {
ExecuteScript(baask8s *Baask8s, nodeName, image string, script []byte, schedule *Schedule) error
}
JobService represents a service to manage job execution on hosts
type JobType ¶
type JobType int
JobType represents a job type
const ( // ScriptExecutionJobType is a non-system job used to execute a script against a list of // baask8ss via privileged containers ScriptExecutionJobType JobType // SnapshotJobType is a system job used to create baask8s snapshots SnapshotJobType // Baask8sJobType is a system job used to sync baask8s Baask8sJobType Baask8sSyncJobType )
type LDAPGroupSearchSettings ¶
type LDAPGroupSearchSettings struct {
GroupBaseDN string `json:"GroupBaseDN"`
GroupFilter string `json:"GroupFilter"`
GroupAttribute string `json:"GroupAttribute"`
}
LDAPGroupSearchSettings represents settings used to search for groups in a LDAP server
type LDAPSearchSettings ¶
type LDAPSearchSettings struct {
BaseDN string `json:"BaseDN"`
Filter string `json:"Filter"`
UserNameAttribute string `json:"UserNameAttribute"`
}
LDAPSearchSettings represents settings used to search for users in a LDAP server
type LDAPService ¶
type LDAPService interface {
AuthenticateUser(username, password string, settings *LDAPSettings) error
TestConnectivity(settings *LDAPSettings) error
GetUserGroups(username string, settings *LDAPSettings) ([]string, error)
}
LDAPService represents a service used to authenticate users against a LDAP/AD
type LDAPSettings ¶
type LDAPSettings struct {
ReaderDN string `json:"ReaderDN"`
Password string `json:"Password,omitempty"`
URL string `json:"URL"`
TLSConfig TLSConfiguration `json:"TLSConfig"`
StartTLS bool `json:"StartTLS"`
SearchSettings []LDAPSearchSettings `json:"SearchSettings"`
GroupSearchSettings []LDAPGroupSearchSettings `json:"GroupSearchSettings"`
AutoCreateUsers bool `json:"AutoCreateUsers"`
}
LDAPSettings represents the settings used to connect to a LDAP server
type LicenseInformation ¶
type LicenseInformation struct {
LicenseKey string `json:"LicenseKey,omitempty"`
Company string `json:"Company,omitempty"`
Expiration string `json:"Expiration,omitempty"`
Valid bool `json:"Valid,omitempty"`
}
LicenseInformation represents information about an extension license
type MSP ¶
type MSP struct {
ID int `json:"Id"`
MSPName string `json:"MSPName"`
ORGs []MSPORG `json:"ORGs"`
Role int `json:"Role"`
}
MSP represents a MSP
type MSPORG ¶
type MSPORG struct {
ORGName string `json:"ORGName"`
Anchor string `json:"Anchor"`
Peers []string `json:"Peers"`
}
MSP-ORG represents a ORG identifier
type MembershipRole ¶
type MembershipRole int
MembershipRole represents the role of a user within a team
const ( // TeamLeader represents a leader role inside a team TeamLeader MembershipRole // TeamMember represents a member role inside a team TeamMember )
type OAuthSettings ¶
type OAuthSettings struct {
ClientID string `json:"ClientID"`
ClientSecret string `json:"ClientSecret,omitempty"`
AccessTokenURI string `json:"AccessTokenURI"`
AuthorizationURI string `json:"AuthorizationURI"`
ResourceURI string `json:"ResourceURI"`
RedirectURI string `json:"RedirectURI"`
UserIdentifier string `json:"UserIdentifier"`
Scopes string `json:"Scopes"`
OAuthAutoCreateUsers bool `json:"OAuthAutoCreateUsers"`
DefaultTeamID TeamID `json:"DefaultTeamID"`
}
OAuthSettings represents the settings used to authorize with an authorization server
type Registry ¶
type Registry struct {
ID RegistryID `json:"Id"`
Type RegistryType `json:"Type"`
Name string `json:"Name"`
URL string `json:"URL"`
Authentication bool `json:"Authentication"`
Username string `json:"Username"`
Password string `json:"Password,omitempty"`
AuthorizedUsers []UserID `json:"AuthorizedUsers"`
AuthorizedTeams []TeamID `json:"AuthorizedTeams"`
ManagementConfiguration *RegistryManagementConfiguration `json:"ManagementConfiguration"`
}
Registry represents a Docker registry with all the info required to connect to it
type RegistryManagementConfiguration ¶
type RegistryManagementConfiguration struct {
Type RegistryType `json:"Type"`
Authentication bool `json:"Authentication"`
Username string `json:"Username"`
Password string `json:"Password"`
TLSConfig TLSConfiguration `json:"TLSConfig"`
}
RegistryManagementConfiguration represents a configuration that can be used to query the registry API via the registry management extension.
type RegistryService ¶
type RegistryService interface {
Registry(ID RegistryID) (*Registry, error)
Registries() ([]Registry, error)
CreateRegistry(registry *Registry) error
UpdateRegistry(ID RegistryID, registry *Registry) error
DeleteRegistry(ID RegistryID) error
}
RegistryService represents a service for managing registry data
type RegistryType ¶
type RegistryType int
RegistryType represents a type of registry
const ( // QuayRegistry represents a Quay.io registry QuayRegistry RegistryType // AzureRegistry represents an ACR registry AzureRegistry // CustomRegistry represents a custom registry CustomRegistry )
type ResourceAccessLevel ¶
type ResourceAccessLevel int
ResourceAccessLevel represents the level of control associated to a resource
const (
// ReadWriteAccessLevel represents an access level with read-write permissions on a resource
ReadWriteAccessLevel ResourceAccessLevel
)
type ResourceControl ¶
type ResourceControl struct {
ID ResourceControlID `json:"Id"`
ResourceID string `json:"ResourceId"`
SubResourceIDs []string `json:"SubResourceIds"`
Type ResourceControlType `json:"Type"`
UserAccesses []UserResourceAccess `json:"UserAccesses"`
TeamAccesses []TeamResourceAccess `json:"TeamAccesses"`
Public bool `json:"Public"`
// Deprecated fields
// Deprecated in DBVersion == 2
OwnerID UserID `json:"OwnerId,omitempty"`
AccessLevel ResourceAccessLevel `json:"AccessLevel,omitempty"`
// Deprecated in DBVersion == 14
AdministratorsOnly bool `json:"AdministratorsOnly,omitempty"`
}
ResourceControl represent a reference to a Docker resource with specific access controls
type ResourceControlID ¶
type ResourceControlID int
ResourceControlID represents a resource control identifier
type ResourceControlService ¶
type ResourceControlService interface {
ResourceControl(ID ResourceControlID) (*ResourceControl, error)
ResourceControlByResourceID(resourceID string) (*ResourceControl, error)
ResourceControls() ([]ResourceControl, error)
CreateResourceControl(rc *ResourceControl) error
UpdateResourceControl(ID ResourceControlID, resourceControl *ResourceControl) error
DeleteResourceControl(ID ResourceControlID) error
}
ResourceControlService represents a service for managing resource control data
type ResourceControlType ¶
type ResourceControlType int
ResourceControlType represents the type of resource associated to the resource control (volume, container, service...)
const ( // ContainerResourceControl represents a resource control associated to a Docker container ContainerResourceControl ResourceControlType // ServiceResourceControl represents a resource control associated to a Docker service ServiceResourceControl // VolumeResourceControl represents a resource control associated to a Docker volume VolumeResourceControl // NetworkResourceControl represents a resource control associated to a Docker network NetworkResourceControl // SecretResourceControl represents a resource control associated to a Docker secret SecretResourceControl // StackResourceControl represents a resource control associated to a stack composed of Docker services StackResourceControl // ConfigResourceControl represents a resource control associated to a Docker config ConfigResourceControl )
type Schedule ¶
type Schedule struct {
ID ScheduleID `json:"Id"`
Name string
CronExpression string
Recurring bool
Created int64
JobType JobType
ScriptExecutionJob *ScriptExecutionJob
SnapshotJob *SnapshotJob
Baask8sJob *Baask8sJob
}
Schedule represents a scheduled job. It only contains a pointer to one of the JobRunner implementations based on the JobType. NOTE: The Recurring option is only used by ScriptExecutionJob at the moment
type ScheduleService ¶
type ScheduleService interface {
Schedule(ID ScheduleID) (*Schedule, error)
Schedules() ([]Schedule, error)
SchedulesByJobType(jobType JobType) ([]Schedule, error)
CreateSchedule(schedule *Schedule) error
UpdateSchedule(ID ScheduleID, schedule *Schedule) error
DeleteSchedule(ID ScheduleID) error
GetNextIdentifier() int
}
ScheduleService represents a service for managing schedule data
type ScriptExecutionJob ¶
type ScriptExecutionJob struct {
Baask8ss []Baask8sID
Image string
ScriptPath string
RetryCount int
RetryInterval int
}
ScriptExecutionJob represents a scheduled job that can execute a script via a privileged container
type Settings ¶
type Settings struct {
LogoURL string `json:"LogoURL"`
BlackListedLabels []Pair `json:"BlackListedLabels"`
AuthenticationMethod AuthenticationMethod `json:"AuthenticationMethod"`
LDAPSettings LDAPSettings `json:"LDAPSettings"`
OAuthSettings OAuthSettings `json:"OAuthSettings"`
AllowBindMountsForRegularUsers bool `json:"AllowBindMountsForRegularUsers"`
AllowPrivilegedModeForRegularUsers bool `json:"AllowPrivilegedModeForRegularUsers"`
SnapshotInterval string `json:"SnapshotInterval"`
Baask8sInterval string `json:"Baask8sInterval"`
TemplatesURL string `json:"TemplatesURL"`
EnableHostManagementFeatures bool `json:"EnableHostManagementFeatures"`
// Deprecated fields
DisplayDonationHeader bool
DisplayExternalContributors bool
}
Settings represents the application settings
type SettingsService ¶
type SettingsService interface {
Settings() (*Settings, error)
UpdateSettings(settings *Settings) error
}
SettingsService represents a service for managing application settings
type Snapshot ¶
type Snapshot struct {
Time int64 `json:"Time"`
DockerVersion string `json:"DockerVersion"`
Swarm bool `json:"Swarm"`
TotalCPU int `json:"TotalCPU"`
TotalMemory int64 `json:"TotalMemory"`
RunningContainerCount int `json:"RunningContainerCount"`
StoppedContainerCount int `json:"StoppedContainerCount"`
VolumeCount int `json:"VolumeCount"`
ImageCount int `json:"ImageCount"`
ServiceCount int `json:"ServiceCount"`
StackCount int `json:"StackCount"`
SnapshotRaw SnapshotRaw `json:"SnapshotRaw"`
}
Snapshot represents a snapshot of a specific baask8s at a specific time
type SnapshotJob ¶
type SnapshotJob struct{}
SnapshotJob represents a scheduled job that can create baask8s snapshots
type SnapshotRaw ¶
type SnapshotRaw struct {
Containers interface{} `json:"Containers"`
Volumes interface{} `json:"Volumes"`
Networks interface{} `json:"Networks"`
Images interface{} `json:"Images"`
Info interface{} `json:"Info"`
Version interface{} `json:"Version"`
}
SnapshotRaw represents all the information related to a snapshot as returned by the Docker API
type Snapshotter ¶
Snapshotter represents a service used to create baask8s snapshots
type Status ¶
type Status struct {
Authentication bool `json:"Authentication"`
Baask8sManagement bool `json:"Baask8sManagement"`
Snapshot bool `json:"Snapshot"`
Analytics bool `json:"Analytics"`
Version string `json:"Version"`
}
Status represents the application status
type TLSConfiguration ¶
type TLSConfiguration struct {
TLS bool `json:"TLS"`
TLSSkipVerify bool `json:"TLSSkipVerify"`
TLSCACertPath string `json:"TLSCACert,omitempty"`
TLSCertPath string `json:"TLSCert,omitempty"`
TLSKeyPath string `json:"TLSKey,omitempty"`
}
TLSConfiguration represents a TLS configuration
type TLSFileType ¶
type TLSFileType int
TLSFileType represents a type of TLS file required to connect to a Docker baask8s. It can be either a TLS CA file, a TLS certificate file or a TLS key file
const ( // TLSFileCA represents a TLS CA certificate file TLSFileCA TLSFileType = iota // TLSFileCert represents a TLS certificate file TLSFileCert // TLSFileKey represents a TLS key file TLSFileKey // Other file TLSFileOther )
type TagService ¶
type TagService interface {
Tags() ([]Tag, error)
CreateTag(tag *Tag) error
DeleteTag(ID TagID) error
}
TagService represents a service for managing tag data
type TeamMembership ¶
type TeamMembership struct {
ID TeamMembershipID `json:"Id"`
UserID UserID `json:"UserID"`
TeamID TeamID `json:"TeamID"`
Role MembershipRole `json:"Role"`
}
TeamMembership represents a membership association between a user and a team
type TeamMembershipID ¶
type TeamMembershipID int
TeamMembershipID represents a team membership identifier
type TeamMembershipService ¶
type TeamMembershipService interface {
TeamMembership(ID TeamMembershipID) (*TeamMembership, error)
TeamMemberships() ([]TeamMembership, error)
TeamMembershipsByUserID(userID UserID) ([]TeamMembership, error)
TeamMembershipsByTeamID(teamID TeamID) ([]TeamMembership, error)
CreateTeamMembership(membership *TeamMembership) error
UpdateTeamMembership(ID TeamMembershipID, membership *TeamMembership) error
DeleteTeamMembership(ID TeamMembershipID) error
DeleteTeamMembershipByUserID(userID UserID) error
DeleteTeamMembershipByTeamID(teamID TeamID) error
}
TeamMembershipService represents a service for managing team membership data
type TeamResourceAccess ¶
type TeamResourceAccess struct {
TeamID TeamID `json:"TeamId"`
AccessLevel ResourceAccessLevel `json:"AccessLevel"`
}
TeamResourceAccess represents the level of control on a resource for a specific team
type TeamService ¶
type TeamService interface {
Team(ID TeamID) (*Team, error)
TeamByName(name string) (*Team, error)
Teams() ([]Team, error)
CreateTeam(team *Team) error
UpdateTeam(ID TeamID, team *Team) error
DeleteTeam(ID TeamID) error
}
TeamService represents a service for managing user data
type Template ¶
type Template struct {
// Mandatory container/stack fields
ID TemplateID `json:"Id"`
Type TemplateType `json:"type"`
Title string `json:"title"`
Description string `json:"description"`
AdministratorOnly bool `json:"administrator_only"`
// Mandatory container fields
Image string `json:"image"`
// Mandatory stack fields
Repository TemplateRepository `json:"repository"`
// Optional stack/container fields
Name string `json:"name,omitempty"`
Logo string `json:"logo,omitempty"`
Env []TemplateEnv `json:"env,omitempty"`
Note string `json:"note,omitempty"`
Platform string `json:"platform,omitempty"`
Categories []string `json:"categories,omitempty"`
// Optional container fields
Registry string `json:"registry,omitempty"`
Command string `json:"command,omitempty"`
Network string `json:"network,omitempty"`
Volumes []TemplateVolume `json:"volumes,omitempty"`
Ports []string `json:"ports,omitempty"`
Labels []Pair `json:"labels,omitempty"`
Privileged bool `json:"privileged,omitempty"`
Interactive bool `json:"interactive,omitempty"`
RestartPolicy string `json:"restart_policy,omitempty"`
Hostname string `json:"hostname,omitempty"`
}
Template represents an application template
type TemplateEnv ¶
type TemplateEnv struct {
Name string `json:"name"`
Label string `json:"label,omitempty"`
Description string `json:"description,omitempty"`
Default string `json:"default,omitempty"`
Preset bool `json:"preset,omitempty"`
Select []TemplateEnvSelect `json:"select,omitempty"`
}
TemplateEnv represents a template environment variable configuration
type TemplateEnvSelect ¶
type TemplateEnvSelect struct {
Text string `json:"text"`
Value string `json:"value"`
Default bool `json:"default"`
}
TemplateEnvSelect represents text/value pair that will be displayed as a choice for the template user
type TemplateRepository ¶
TemplateRepository represents the git repository configuration for a template
type TemplateService ¶
type TemplateService interface {
Templates() ([]Template, error)
Template(ID TemplateID) (*Template, error)
CreateTemplate(template *Template) error
UpdateTemplate(ID TemplateID, template *Template) error
DeleteTemplate(ID TemplateID) error
}
TemplateService represents a service for managing template data
type TemplateType ¶
type TemplateType int
TemplateType represents the type of a template
const ( // ContainerTemplate represents a container template ContainerTemplate TemplateType // SwarmStackTemplate represents a template used to deploy a Swarm stack SwarmStackTemplate // ComposeStackTemplate represents a template used to deploy a Compose stack ComposeStackTemplate )
type TemplateVolume ¶
type TemplateVolume struct {
Container string `json:"container"`
Bind string `json:"bind,omitempty"`
ReadOnly bool `json:"readonly,omitempty"`
}
TemplateVolume represents a template volume configuration
type User ¶
type User struct {
ID UserID `json:"Id"`
Username string `json:"Username"`
Password string `json:"Password,omitempty"`
Role UserRole `json:"Role"`
}
User represents a user account
type UserResourceAccess ¶
type UserResourceAccess struct {
UserID UserID `json:"UserId"`
AccessLevel ResourceAccessLevel `json:"AccessLevel"`
}
UserResourceAccess represents the level of control on a resource for a specific user
type UserRole ¶
type UserRole int
UserRole represents the role of a user. It can be either an administrator or a regular user
const ( // AdministratorRole represents an administrator user role AdministratorRole UserRole // StandardUserRole represents a regular user role StandardUserRole )
type UserService ¶
type UserService interface {
User(ID UserID) (*User, error)
UserByUsername(username string) (*User, error)
Users() ([]User, error)
UsersByRole(role UserRole) ([]User, error)
CreateUser(user *User) error
UpdateUser(ID UserID, user *User) error
DeleteUser(ID UserID) error
}
UserService represents a service for managing user data
type VersionService ¶
VersionService represents a service for managing version data
type Webhook ¶
type Webhook struct {
ID WebhookID `json:"Id"`
Token string `json:"Token"`
ResourceID string `json:"ResourceId"`
Baask8sID Baask8sID `json:"Baask8sId"`
WebhookType WebhookType `json:"Type"`
}
Webhook represents a url webhook that can be used to update a service
type WebhookService ¶
type WebhookService interface {
Webhooks() ([]Webhook, error)
Webhook(ID WebhookID) (*Webhook, error)
CreateWebhook(baasapi *Webhook) error
WebhookByResourceID(resourceID string) (*Webhook, error)
WebhookByToken(token string) (*Webhook, error)
DeleteWebhook(serviceID WebhookID) error
}
WebhookService represents a service for managing webhook data.
type WebhookType ¶
type WebhookType int
WebhookType represents the type of resource a webhook is related to
const (
// ServiceWebhook is a webhook for restarting a docker service
ServiceWebhook WebhookType
)