Documentation
¶
Index ¶
- Constants
- Variables
- func Kind(kind string) schema.GroupKind
- func KoliPrefix(value string) string
- func Resource(resource string) schema.GroupResource
- type Addon
- type AddonList
- type AddonSpec
- type Domain
- func (d *Domain) GetDomain() string
- func (d *Domain) GetDomainType() string
- func (d *Domain) GetPrimaryDomain() string
- func (d *Domain) HasDelegate(namespace string) bool
- func (d *Domain) HasFinalizer(finalizer string) bool
- func (d *Domain) IsOK() bool
- func (d *Domain) IsPrimary() bool
- func (d *Domain) IsValidDomain() bool
- func (d *Domain) IsValidSharedDomain() bool
- type DomainList
- type DomainPhase
- type DomainSpec
- type DomainStatus
- type Label
- type Plan
- type PlanList
- type PlanSpec
- type PlatformRole
- type Release
- type ReleaseList
- type ReleaseSpec
- type ResourceList
- type ServicePlanPhase
- type SourceType
- type User
Constants ¶
const ( KoliPrefixValue = "kolihub.io" ReleaseExpireAfter = 20 )
KoliPrefixValue is used for creating annotations and labels
const GroupName = "platform.koli.io"
GroupName is the group name use in this package
const (
// ResourceNamespace , number
ResourceNamespace v1.ResourceName = "namespaces"
)
Variables ¶
var ( // SchemeBuilder collects functions that add things to a scheme. It's to allow // code to compile without explicitly referencing generated types. You should // declare one in each package that will have generated deep copy or conversion // functions. SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) // AddToScheme applies all the stored functions to the scheme. A non-nil error // indicates that one function failed and the attempt was abandoned. AddToScheme = SchemeBuilder.AddToScheme )
var PlatformRegisteredRoles []PlatformRole
PlatformRegisteredRoles contains all the cluster roles provisioned on the platform
var SchemeGroupVersion = schema.GroupVersion{Group: GroupName, Version: "v1"}
SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal}
Functions ¶
func KoliPrefix ¶
KoliPrefix returns a value with the default prefix - spec.KoliPrefix
func Resource ¶
func Resource(resource string) schema.GroupResource
Resource takes an unqualified resource and returns a Group qualified GroupResource
Types ¶
type Addon ¶
type Addon struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec AddonSpec `json:"spec"`
}
Addon defines integration with external resources
func (*Addon) GetReplicas ¶
GetReplicas returns the size of replicas, if is less than 1 sets a default value
type AddonList ¶
type AddonList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Addon `json:"items"`
}
AddonList is a list of Addons.
type AddonSpec ¶
type AddonSpec struct {
Type string `json:"type"`
BaseImage string `json:"baseImage"`
Version string `json:"version"`
Replicas int32 `json:"replicas"`
Port int32 `json:"port"`
Env []v1.EnvVar `json:"env"`
// More info: http://releases.k8s.io/HEAD/docs/user-guide/containers.md#containers-and-commands
Args []string `json:"args,omitempty"`
}
AddonSpec holds specification parameters of an addon
type Domain ¶
type Domain struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec DomainSpec `json:"spec,omitempty"`
Status DomainStatus `json:"status,omitempty"`
}
Domain are a way for users to "claim" a domain and be able to create ingresses
func (*Domain) GetDomainType ¶
GetDomainType returns the type of the resource: 'primary' or 'shared'
func (*Domain) GetPrimaryDomain ¶
GetPrimaryDomain returns the primary domain of the resource
func (*Domain) HasDelegate ¶
HasDelegate verifies if the the resource has the target namespace in the delegates attribute
func (*Domain) HasFinalizer ¶
func (*Domain) IsValidDomain ¶
func (*Domain) IsValidSharedDomain ¶
IsValidSharedDomain verifies if the shared domain it's a subdomain from the primary
type DomainList ¶
type DomainList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Domain `json:"items"`
}
DomainList is a List of Domain
type DomainPhase ¶
type DomainPhase string
DomainPhase is a label for the condition of a domain at the current time.
const ( // DomainStatusNew means it's a new resource and the phase it's not set DomainStatusNew DomainPhase = "" // DomainStatusOK means the domain doesn't have no pending operations or prohibitions, // and new ingresses could be created using the target domain. DomainStatusOK DomainPhase = "OK" // DomainStatusPending indicates that a request to create a new domain // has been received and is being processed. DomainStatusPending DomainPhase = "Pending" // DomainStatusFailed means the resource has failed on claiming the domain DomainStatusFailed DomainPhase = "Failed" )
type DomainSpec ¶
type DomainSpec struct {
// PrimaryDomain is the name of the primary domain, to set the resource as primary,
// 'name' and 'primary' must have the same value.
// +required
PrimaryDomain string `json:"primary,omitempty"`
// Sub is the label of the Primary Domain to form a subdomain
// +optional
Sub string `json:"sub,omitempty"`
// Delegates contains a list of namespaces that are allowed to use this domain.
// New domain resources could be referenced to primary ones using the 'parent' key.
// A wildcard ("*") allows delegate access to all namespaces in the cluster.
// +optional
Delegates []string `json:"delegates,omitempty"`
// Parent refers to the namespace where the primary domain is in.
// It only makes sense when the type of the domain is set to 'shared',
// +optional
Parent string `json:"parent,omitempty"`
}
DomainSpec represents information about a domain claim
type DomainStatus ¶
type DomainStatus struct {
// The state of the domain, an empty state means it's a new resource
// +optional
Phase DomainPhase `json:"phase,omitempty"`
// A human readable message indicating details about why the domain claim is in this state.
// +optional
Message string `json:"message,omitempty"`
// A brief CamelCase message indicating details about why the domain claim is in this state. e.g. 'AlreadyClaimed'
// +optional
Reason string `json:"reason,omitempty"`
// The last time the resource was updated
LastUpdateTime *metav1.Time `json:"lastUpdateTime,omitempty"`
// DeletionTimestamp it's a temporary field to work around the issue:
// https://github.com/kubernetes/kubernetes/issues/40715, once it's solved,
// remove this field and use the DeletionTimestamp from metav1.ObjectMeta
DeletionTimestamp *metav1.Time `json:"deletionTimestamp,omitempty"`
}
DomainStatus represents information about the status of a domain.
type Label ¶
Label wraps a labels.Set
func NewLabel ¶
NewLabel generates a new *spec.Label, if a prefix isn't provided it will use the the default one: spec.KoliPrefixValue.
type Plan ¶
type Plan struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec PlanSpec `json:"spec"`
}
Plan defines how resources could be managed and distributed
type PlanList ¶
type PlanList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Plan `json:"items"`
}
PlanList is a list of ServicePlans
type PlanSpec ¶
type PlanSpec struct {
// Compute Resources required by containers.
Resources v1.ResourceRequirements `json:"resources,omitempty"`
// Hard is the set of desired hard limits for each named resource.
Hard ResourceList `json:"hard,omitempty"`
Roles []PlatformRole `json:"roles,omitempty"`
}
PlanSpec holds specification parameters of an Plan
type PlatformRole ¶
type PlatformRole string
PlatformRole is the name identifying various roles in a PlatformRoleList.
const ( // RoleExecAllow cluster role name RoleExecAllow PlatformRole = "exec-allow" // RolePortForwardAllow cluster role name RolePortForwardAllow PlatformRole = "portforward-allow" // RoleAutoScaleAllow cluster role name RoleAutoScaleAllow PlatformRole = "autoscale-allow" // RoleAttachAllow cluster role name RoleAttachAllow PlatformRole = "attach-allow" // RoleAddonManagement cluster role name RoleAddonManagement PlatformRole = "addon-management" )
func NewPlatformRoles ¶
func NewPlatformRoles(roles string) []PlatformRole
NewPlatformRoles converts a string of comma separated roles to registered []PlatformRoles
func (PlatformRole) Exists ¶
func (r PlatformRole) Exists(roles []PlatformRole) bool
Exists verifies if the slice contains the role
func (PlatformRole) GetRoleBinding ¶
func (r PlatformRole) GetRoleBinding(subjects []rbac.Subject) *rbac.RoleBinding
GetRoleBinding retrieves a role binding for this role
func (PlatformRole) IsRegisteredRole ¶
func (r PlatformRole) IsRegisteredRole() bool
IsRegisteredRole check if the role matches with the registered roles.
type Release ¶
type Release struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec ReleaseSpec `json:"spec"`
}
Release refers to compiled slug file versions
func (*Release) BuildRevision ¶
BuildRevision returns the revision as int, if the conversion fails returns 0
func (*Release) GitCloneURL ¶
GitCloneURL constructs the remote clone URL for the given release
func (*Release) GitReleaseURL ¶
GitReleaseURL constructs the URL where the release must be stored
func (*Release) IsGitHubSource ¶
IsGitHubSource check if the source of the build is from github
type ReleaseList ¶
type ReleaseList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []Release `json:"items"`
}
ReleaseList is a list of Release
type ReleaseSpec ¶
type ReleaseSpec struct {
// The URL of the git remote server to download the git revision tarball
GitRemote string `json:"gitRemote"`
GitRevision string `json:"gitRevision"`
GitRepository string `json:"gitRepository"`
BuildRevision string `json:"buildRevision"`
AutoDeploy bool `json:"autoDeploy"`
ExpireAfter int32 `json:"expireAfter"`
DeployName string `json:"deployName"`
Build bool `json:"build"`
AuthToken string `json:"authToken"` // expirable token
Source SourceType `json:"sourceType"`
}
ReleaseSpec holds specification parameters of a release
type ResourceList ¶
type ResourceList v1.ResourceList
ResourceList is a set of (resource name, quantity) pairs.
var PlatformRegisteredResources *ResourceList
PlatformRegisteredResources contains all the resources allowed for a user to configure in resource quotas: http://kubernetes.io/docs/admin/resourcequota/#Object-Count-Quota
func (*ResourceList) RemoveUnregisteredResources ¶
func (r *ResourceList) RemoveUnregisteredResources()
RemoveUnregisteredResources removes resources which are not registered on the platform
type ServicePlanPhase ¶
type ServicePlanPhase string
ServicePlanPhase is the current lifecycle phase of the Service Plan.
const ( // ServicePlanActive means the ServicePlan is available for use in the system ServicePlanActive ServicePlanPhase = "Active" // ServicePlanPending means the ServicePlan isn't associate with any global ServicePlan ServicePlanPending ServicePlanPhase = "Pending" // ServicePlanNotFound means the reference plan wasn't found ServicePlanNotFound ServicePlanPhase = "NotFound" // ServicePlanDisabled means the ServicePlan is disabled and cannot be associated with resources ServicePlanDisabled ServicePlanPhase = "Disabled" )
type SourceType ¶
type SourceType string
SourceType refers to the source of the build
const ( // GitHubSource means the build came from a webhook GitHubSource SourceType = "github" // GitLocalSource means the build came from the git local server GitLocalSource SourceType = "local" )
type User ¶
type User struct {
ID string `json:"id"`
Username string `json:"username"`
Customer string `json:"customer"`
Organization string `json:"org"`
// Groups are a set of strings which associate users with as set of commonly grouped users.
// A group name is unique in the cluster and it's formed by it's namespace, customer or the organization name:
// [org] - Matches all the namespaces of the broker
// [customer]-[org] - Matches all namespaces from the customer broker
// [name]-[customer]-[org] - Matches a specific namespace
// http://kubernetes.io/docs/admin/authentication/
Groups []string `json:"groups"`
}
User identifies an user on the platform