Documentation
¶
Index ¶
- Constants
- func ParseUniqueName(workspaceID string) (string, uint, uint, error)
- type AuthCode
- type Cluster
- type ClusterAuth
- type ClusterCandidate
- type ClusterResolver
- type DNSRecord
- type EventContainer
- type GitActionConfig
- type GitRepo
- type HelmRepo
- type HelmRepoExternal
- type Infra
- type Invite
- type NotificationConfig
- type PWResetToken
- type Project
- type Registry
- type Release
- type Role
- type Session
- type SubEvent
- type User
Constants ¶
const ( RoleAdmin string = "admin" RoleDeveloper string = "developer" RoleViewer string = "viewer" )
The roles available for a project
Variables ¶
This section is empty.
Functions ¶
Types ¶
type AuthCode ¶
type AuthCode struct {
gorm.Model
Token string `gorm:"unique"`
AuthorizationCode string `gorm:"unique"`
Expiry *time.Time
}
AuthCode type that extends gorm.Model
type Cluster ¶
type Cluster struct {
gorm.Model
// The auth mechanism that this cluster will use
AuthMechanism ClusterAuth `json:"auth_mechanism"`
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// Name of the cluster
Name string `json:"name"`
// Server endpoint for the cluster
Server string `json:"server"`
// Additional fields optionally used by the kube client
ClusterLocationOfOrigin string `json:"location_of_origin,omitempty"`
TLSServerName string `json:"tls-server-name,omitempty"`
InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify,omitempty"`
ProxyURL string `json:"proxy-url,omitempty"`
UserLocationOfOrigin string
UserImpersonate string `json:"act-as,omitempty"`
UserImpersonateGroups string `json:"act-as-groups,omitempty"`
InfraID uint `json:"infra_id"`
// The various auth mechanisms available to the integration
KubeIntegrationID uint
OIDCIntegrationID uint
GCPIntegrationID uint
AWSIntegrationID uint
DOIntegrationID uint
// A token cache that can be used by an auth mechanism, if desired
TokenCache integrations.ClusterTokenCache `json:"token_cache" gorm:"-" sql:"-"`
TokenCacheID uint `gorm:"token_cache_id"`
// CertificateAuthorityData for the cluster, encrypted at rest
CertificateAuthorityData []byte `json:"certificate-authority-data,omitempty"`
}
Cluster is an integration that can connect to a Kubernetes cluster via a specific auth mechanism
func (*Cluster) ToClusterType ¶ added in v0.10.0
ToProjectType generates an external types.Project to be shared over REST
type ClusterAuth ¶
type ClusterAuth string
ClusterAuth is an auth mechanism that a cluster candidate can resolve
const ( X509 ClusterAuth = "x509" Basic ClusterAuth = "basic" Bearer ClusterAuth = "bearerToken" OIDC ClusterAuth = "oidc" GCP ClusterAuth = "gcp-sa" AWS ClusterAuth = "aws-sa" DO ClusterAuth = "do-oauth" Local ClusterAuth = "local" )
The support cluster candidate auth mechanisms
type ClusterCandidate ¶
type ClusterCandidate struct {
gorm.Model
// The auth mechanism that this candidate will parse for
AuthMechanism ClusterAuth `json:"auth_mechanism"`
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// CreatedClusterID is the ID of the cluster that's eventually
// created
CreatedClusterID uint `json:"created_cluster_id"`
// Resolvers are the list of resolvers: once all resolvers are "resolved," the
// cluster will be created
Resolvers []ClusterResolver `json:"resolvers"`
// Name of the cluster
Name string `json:"name"`
// Server endpoint for the cluster
Server string `json:"server"`
// Name of the context that this was created from, if it exists
ContextName string `json:"context_name"`
// The best-guess for the AWSClusterID, which is required by aws auth mechanisms
// See https://github.com/kubernetes-sigs/aws-iam-authenticator#what-is-a-cluster-id
AWSClusterIDGuess []byte `json:"aws_cluster_id_guess"`
// The raw kubeconfig
Kubeconfig []byte `json:"kubeconfig"`
}
ClusterCandidate is a cluster integration that requires additional action from the user to set up.
func (*ClusterCandidate) ToClusterCandidateType ¶ added in v0.10.0
func (cc *ClusterCandidate) ToClusterCandidateType() *types.ClusterCandidate
type ClusterResolver ¶
type ClusterResolver struct {
gorm.Model
// The ClusterCandidate that this is resolving
ClusterCandidateID uint `json:"cluster_candidate_id"`
// One of the ClusterResolverNames
Name types.ClusterResolverName `json:"name"`
// Resolved is true if this has been resolved, false otherwise
Resolved bool `json:"resolved"`
// Data is additional data for resolving the action, for example a file name,
// context name, etc
Data []byte `json:"data,omitempty"`
}
ClusterResolver is an action that must be resolved to set up a Cluster
func (*ClusterResolver) ToClusterResolverType ¶ added in v0.10.0
func (cr *ClusterResolver) ToClusterResolverType() *types.ClusterResolver
type DNSRecord ¶
type DNSRecord struct {
gorm.Model
SubdomainPrefix string `json:"subdomain_prefix" gorm:"unique"`
RootDomain string `json:"root_domain"`
Endpoint string `json:"endpoint"`
Hostname string `json:"hostname"`
ClusterID uint `json:"cluster_id"`
}
DNSRecord type that extends gorm.Model
func (*DNSRecord) ToDNSRecordType ¶ added in v0.10.0
type EventContainer ¶ added in v0.9.0
type GitActionConfig ¶
type GitActionConfig struct {
gorm.Model
// The ID of the release that this is linked to
ReleaseID uint `json:"release_id"`
// The git repo in ${owner}/${repo} form
GitRepo string `json:"git_repo"`
// The git branch to use
GitBranch string `json:"git_branch"`
// The complete image repository uri to pull from
ImageRepoURI string `json:"image_repo_uri"`
// The git installation ID
GithubInstallationID uint `json:"git_installation_id"`
// The git repo ID (legacy field)
GitRepoID uint `json:"git_repo_id"`
// The path to the dockerfile in the git repo
DockerfilePath string `json:"dockerfile_path"`
// The build context
FolderPath string `json:"folder_path"`
// Determines on how authentication is performed on this action
IsInstallation bool `json:"is_installation"`
Version string `json:"version" gorm:"default:v0.0.1"`
}
GitActionConfig is a configuration for release's CI integration via Github Actions
func (*GitActionConfig) ToGitActionConfigType ¶ added in v0.10.0
func (r *GitActionConfig) ToGitActionConfigType() *types.GitActionConfig
ToGitActionConfigType generates an external GitActionConfig to be shared over REST
type GitRepo ¶
type GitRepo struct {
gorm.Model
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// The username/organization that this repo integration is linked to
RepoEntity string `json:"repo_entity"`
// The various auth mechanisms available to the integration
OAuthIntegrationID uint
}
GitRepo is an integration that can connect to a remote git repo via an auth mechanism (currently only oauth)
type HelmRepo ¶
type HelmRepo struct {
gorm.Model
// Name given to the Helm repository
Name string `json:"name"`
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// RepoURL is the URL to the helm repo. This varies based on the integration
// type. For example, for AWS S3 this may be prefixed with s3://, or for
// GCS it may be gs://
RepoURL string `json:"repo_url"`
// ------------------------------------------------------------------
// All fields below this line are encrypted before storage
// ------------------------------------------------------------------
BasicAuthIntegrationID uint
GCPIntegrationID uint
AWSIntegrationID uint
// A token cache that can be used by an auth mechanism (integration), if desired
TokenCache integrations.HelmRepoTokenCache
}
HelmRepo is an integration that can connect to a Helm repository via a set of auth mechanisms
func (*HelmRepo) ToHelmRepoType ¶ added in v0.10.0
ToHelmRepoType generates an external HelmRepo to be shared over REST
type HelmRepoExternal ¶
type HelmRepoExternal struct {
ID uint `json:"id"`
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// Name of the repo
Name string `json:"name"`
RepoURL string `json:"repo_name"`
}
HelmRepoExternal is an external HelmRepo to be shared over REST
type Infra ¶
type Infra struct {
gorm.Model
// The type of infra that was provisioned
Kind types.InfraKind `json:"kind"`
// A random 6-byte suffix to ensure workspace/stream ids are unique
Suffix string
// The project that this infra belongs to
ProjectID uint `json:"project_id"`
// The ID of the user that created this infra
CreatedByUserID uint
// Status is the status of the infra
Status types.InfraStatus `json:"status"`
// The AWS integration that was used to create the infra
AWSIntegrationID uint
// The GCP integration that was used to create the infra
GCPIntegrationID uint
// The DO integration that was used to create the infra:
// this points to an OAuthIntegrationID
DOIntegrationID uint
// The last-applied input variables to the provisioner
LastApplied []byte
}
Infra represents the metadata for an infrastructure type provisioned on Porter
func (*Infra) GetUniqueName ¶
GetID returns the unique id for this infra
func (*Infra) ToInfraType ¶ added in v0.10.0
ToInfraType generates an external Infra to be shared over REST
type Invite ¶
type Invite struct {
gorm.Model
Token string `gorm:"unique"`
Expiry *time.Time
Email string
// Kind is the role kind that this refers to
Kind string
ProjectID uint
UserID uint
}
Invite type that extends gorm.Model
func (*Invite) IsAccepted ¶
func (*Invite) ToInviteType ¶ added in v0.10.0
ToInviteType generates an external Invite to be shared over REST
type NotificationConfig ¶ added in v0.8.0
type NotificationConfig struct {
gorm.Model
Enabled bool // if notifications are enabled at all
Success bool
Failure bool
}
func (*NotificationConfig) ToNotificationConfigType ¶ added in v0.10.0
func (conf *NotificationConfig) ToNotificationConfigType() *types.NotificationConfig
type PWResetToken ¶
type PWResetToken struct {
gorm.Model
Email string
IsValid bool
Expiry *time.Time
// Token is hashed like a password before storage
Token string
}
PWResetToken type that extends gorm.Model
func (*PWResetToken) IsExpired ¶
func (p *PWResetToken) IsExpired() bool
type Project ¶
type Project struct {
gorm.Model
Name string `json:"name"`
Roles []Role `json:"roles"`
// linked repos
GitRepos []GitRepo `json:"git_repos,omitempty"`
// linked registries
Registries []Registry `json:"registries,omitempty"`
// linked clusters
Clusters []Cluster `json:"clusters"`
ClusterCandidates []ClusterCandidate `json:"cluster_candidates"`
// linked helm repos
HelmRepos []HelmRepo `json:"helm_repos"`
// invitations to the project
Invites []Invite `json:"invites"`
// provisioned aws infra
Infras []Infra `json:"infras"`
// auth mechanisms
KubeIntegrations []ints.KubeIntegration `json:"kube_integrations"`
BasicIntegrations []ints.BasicIntegration `json:"basic_integrations"`
OIDCIntegrations []ints.OIDCIntegration `json:"oidc_integrations"`
OAuthIntegrations []ints.OAuthIntegration `json:"oauth_integrations"`
AWSIntegrations []ints.AWSIntegration `json:"aws_integrations"`
GCPIntegrations []ints.GCPIntegration `json:"gcp_integrations"`
}
Project type that extends gorm.Model
func (*Project) ToProjectType ¶ added in v0.10.0
ToProjectType generates an external types.Project to be shared over REST
type Registry ¶
type Registry struct {
gorm.Model
// Name of the registry
Name string `json:"name"`
// URL of the registry
URL string `json:"url"`
// The project that this integration belongs to
ProjectID uint `json:"project_id"`
// The infra id, if registry was provisioned with Porter
InfraID uint `json:"infra_id"`
GCPIntegrationID uint
AWSIntegrationID uint
DOIntegrationID uint
BasicIntegrationID uint
// A token cache that can be used by an auth mechanism (integration), if desired
TokenCache integrations.RegTokenCache
}
Registry is an integration that can connect to a Docker image registry via a specific auth mechanism
func (*Registry) ToRegistryType ¶ added in v0.10.0
type Release ¶
type Release struct {
gorm.Model
WebhookToken string `json:"webhook_token" gorm:"unique"`
ClusterID uint `json:"cluster_id"`
ProjectID uint `json:"project_id"`
Name string `json:"name"`
Namespace string `json:"namespace"`
// The complete image repository uri to pull from. This is also stored in GitActionConfig,
// but this should be used for the source of truth going forward.
ImageRepoURI string `json:"image_repo_uri,omitempty"`
GitActionConfig *GitActionConfig `json:"git_action_config"`
EventContainer uint
NotificationConfig uint
}
Release type that extends gorm.Model
func (*Release) ToReleaseType ¶ added in v0.10.0
func (r *Release) ToReleaseType() *types.PorterRelease
type Session ¶
type Session struct {
gorm.Model
// Session ID
Key string `gorm:"unique"`
// encrypted cookie
Data []byte
// Time the session will expire
ExpiresAt time.Time
}
Session type that extends gorm.Model.
type SubEvent ¶ added in v0.9.0
type SubEvent struct {
gorm.Model
EventContainerID uint
EventID string // events with the same id wil be treated the same, and the highest index one is retained
Name string
Index int64 // priority of the event, used for sorting
Status types.EventStatus
Info string
}
func (*SubEvent) ToSubEventType ¶ added in v0.10.0
type User ¶
type User struct {
gorm.Model
Email string `json:"email" gorm:"unique"`
Password string `json:"password"`
EmailVerified bool `json:"email_verified"`
// ID of oauth integration for github connection (optional)
GithubAppIntegrationID uint
// The github user id used for login (optional)
GithubUserID int64
GoogleUserID string
}
User type that extends gorm.Model
func (*User) ToUserType ¶ added in v0.10.0
ToUserType generates an external types.User to be shared over REST