kube

package
v1.3.735 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 15, 2019 License: Apache-2.0 Imports: 55 Imported by: 26

Documentation

Index

Constants

View Source
const (
	// DefaultNamespace the standard namespace for Jenkins X
	DefaultNamespace = "jx"

	// PodNamespaceFile the file path and name for pod namespace
	PodNamespaceFile = "/var/run/secrets/kubernetes.io/serviceaccount/namespace"
)
View Source
const (
	// ChartAmbassador the default chart for ambassador
	ChartAmbassador = "datawire/ambassador"

	// ChartAnchore the default chart for the Anchore plugin
	ChartAnchore = "stable/anchore-engine"

	// ChartCloudBees the default name of the CloudBees addon chart
	ChartCloudBees = "cb/core"

	// ChartExposecontrollerService the default name of the Exposecontroller Service chart for Edit environments
	ChartExposecontrollerService = "jenkins-x/exposecontroller-service"

	// ChartAnchore the default chart for the Anchore plugin
	ChartPipelineEvent = "jenkins-x/pipeline-events-addon"

	// ChartGitea the default name of the gitea chart
	ChartGitea = "jenkins-x/gitea"

	// ChartIstio the default chart for the Istio chart
	ChartIstio = "install/kubernetes/helm/istio"

	// ChartKubeless the default chart for kubeless
	ChartKubeless = "incubator/kubeless"

	// ChartProw the default chart for Prow
	ChartProw = "jenkins-x/prow"

	// ChartKnative the default chart for knative
	ChartKnativeBuild   = "jenkins-x/knative-build"
	ChartBuildTemplates = "jenkins-x/jx-build-templates"

	DefaultProwReleaseName           = "jx-prow"
	DefaultKnativeBuildReleaseName   = "knative-build"
	DefaultBuildTemplatesReleaseName = "jx-build-templates"

	// Charts Single Sign-On addon
	ChartSsoOperator              = "jenkinsxio/sso-operator"
	DefaultSsoOperatorReleaseName = "jx-sso-operator"
	ChartSsoDex                   = "jenkinsxio/dex"
	DefaultSsoDexReleaseName      = "jx-sso-dex"

	// ChartVaultOperator the default chart for vault opeator
	ChartVaultOperator              = "jenkinsxio/vault-operator"
	DefaultVaultOperatorReleaseName = "vault-operator"

	// ServiceJenkins is the name of the Jenkins Service
	ServiceJenkins = "jenkins"

	// SecretJenkins is the name of the Jenkins secret
	SecretJenkins = "jenkins"

	// ServiceCloudBees the service name of the CloudBees app for Kubernetes
	ServiceCloudBees = "cb-core"

	// ServiceChartMuseum the service name of the Helm ChartMuseum service
	ServiceChartMuseum = "jenkins-x-chartmuseum"

	// ServiceKubernetesDashboard the Kubernetes dashboard
	ServiceKubernetesDashboard = "jenkins-x-kubernetes-dashboard"

	// SecretJenkinsChartMuseum the chart museum secret
	SecretJenkinsChartMuseum = "jenkins-x-chartmuseum"

	// SecretJenkinsReleaseGPG the GPG secrets for doing releases
	SecretJenkinsReleaseGPG = "jenkins-release-gpg"

	// SecretJenkinsPipelinePrefix prefix for a jenkins pipeline secret name
	SecretJenkinsPipelinePrefix = "jx-pipeline-"

	// SecretJenkinsPipelineAddonCredentials the chat credentials secret
	SecretJenkinsPipelineAddonCredentials = "jx-pipeline-addon-"

	// SecretJenkinsPipelineChatCredentials the chat credentials secret
	SecretJenkinsPipelineChatCredentials = "jx-pipeline-chat-"

	// SecretJenkinsPipelineGitCredentials the git credentials secret
	SecretJenkinsPipelineGitCredentials = "jx-pipeline-git-"

	// SecretJenkinsPipelineIssueCredentials the issue tracker credentials secret
	SecretJenkinsPipelineIssueCredentials = "jx-pipeline-issues-"

	// ConfigMapExposecontroller the name of the ConfigMap with the Exposecontroller configuration
	ConfigMapExposecontroller = "exposecontroller"

	// ConfigMapIngressConfig the new name of the ConfigMap with the Exposecontroller configuration
	ConfigMapIngressConfig = "ingress-config"

	// ConfigMapJenkinsX the name of the ConfigMap with the Jenkins configuration
	ConfigMapJenkinsX = "jenkins"

	// ConfigMapJenkinsPodTemplates is the ConfigMap containing all the Pod Templates available
	ConfigMapJenkinsPodTemplates = "jenkins-x-pod-templates"

	// ConfigMapJenkinsTeamController is the ConfigMap containing the TeamController config files
	ConfigMapJenkinsTeamController = "jenkins-x-team-controller"

	// ConfigMapJenkinsDockerRegistry is the ConfigMap containing the Docker Registry configuration
	ConfigMapJenkinsDockerRegistry = "jenkins-x-docker-registry"

	// ConfigMapNameJXInstallConfig is the ConfigMap containing the jx installation's CA and server url. Used by jx login
	ConfigMapNameJXInstallConfig = "jx-install-config"

	// LocalHelmRepoName is the default name of the local chart repository where CI/CD releases go to
	LocalHelmRepoName = "releases"

	// DeploymentExposecontrollerService the name of the Deployment for the Exposecontroller Service
	DeploymentExposecontrollerService = "exposecontroller-service"

	// DeploymentProwBuild the name of the Deployment for the Prow webhook engine
	DeploymentProwBuild = "prow-build"

	DefaultEnvironmentGitRepoURL = "https://github.com/jenkins-x/default-environment-charts.git"

	DefaultOrganisationGitRepoURL = "https://github.com/jenkins-x/default-organisation.git"

	// AnnotationTitle the human readable name of a resource which can include mixed case, spaces and punctuation
	AnnotationTitle = "title"

	// AnnotationDescription the tooltip / texual description of an resource
	AnnotationDescription = "description"

	// LabelKind to indicate the kind of auth, such as Git or Issue
	LabelKind = "jenkins.io/kind"

	// ValueKindAddon an addon auth secret/credentials
	ValueKindAddon = "addon"

	// ValueKindChat a chat auth secret/credentials
	ValueKindChat = "chat"

	// ValueKindGit a git auth secret/credentials
	ValueKindGit = "git"

	// ValueKindIssue an issue auth secret/credentials
	ValueKindIssue = "issue"

	// ValueKindCVE an addon auth secret/credentials
	ValueKindCVE = "cve"

	// ValueKindCVE an addon auth PipelineEvent
	ValueKindPipelineEvent = "PipelineEvent"

	// ValueKindEnvironmentRole to indicate a Role which maps to an EnvironmentRoleBinding
	ValueKindEnvironmentRole = "EnvironmentRole"

	// ValueKindCVE an addon auth PipelineEvent
	ValueKindRelease = "Release"

	// ValueKindEditNamespace for edit namespace
	ValueKindEditNamespace = "editspace"

	// LabelServiceKind the label to indicate the auto Server's Kind
	LabelServiceKind = "jenkins.io/service-kind"

	// LabelCreatedBy indicates the service that created this resource
	LabelCreatedBy = "jenkins.io/created-by"

	// LabelPodTemplate the name of the pod template for a DevPod
	LabelPodTemplate = "jenkins.io/pod_template"

	// LabelDevPodName the name of a dev pod
	LabelDevPodName = "jenkins.io/devpod"

	// LabelDevPodUsername the user name owner of the DeVPod
	LabelDevPodUsername = "jenkins.io/devpod_user"

	// LabelUsername the user name owner of a namespace or resource
	LabelUsername = "jenkins.io/user"

	// ValueCreatedByJX for resources created by the Jenkins X CLI
	ValueCreatedByJX = "jx"

	// LabelCredentialsType the kind of jenkins credential for a secret
	LabelCredentialsType = "jenkins.io/credentials-type"

	// ValueCredentialTypeUsernamePassword for user password credential secrets
	ValueCredentialTypeUsernamePassword = "usernamePassword"

	// ValueCredentialTypeSecretFile for secret files
	ValueCredentialTypeSecretFile = "secretFile"

	// LabelTeam indicates the team name an environment belongs to
	LabelTeam = "team"

	// LabelEnvironment indicates the name of the environment
	LabelEnvironment = "env"

	// LabelValueDevEnvironment is the value of the LabelTeam label for Development environments (system namespace)
	LabelValueDevEnvironment = "dev"

	// LabelJobKind the kind of job
	LabelJobKind = "jenkins.io/job-kind"

	// ValueJobKindPostPreview
	ValueJobKindPostPreview = "post-preview-step"

	// AnnotationURL indicates a service/server's URL
	AnnotationURL = "jenkins.io/url"

	// AnnotationExpose used to expose service using exposecontroller
	AnnotationExpose = "fabric8.io/expose"

	// AnnotationIngress tells exposecontroller to annotate generated ingress rule with values
	AnnotationIngress = "fabric8.io/ingress.annotations"

	// AnnotationExposePort indicates to the exposecontroller which service port to expose
	//in case a service has multiple prots
	AnnotationExposePort = "fabric8.io/exposePort"

	// AnnotationName indicates a service/server's textual name (can be mixed case, contain spaces unlike Kubernetes resources)
	AnnotationName = "jenkins.io/name"

	// AnnotationCredentialsDescription the description text for a Credential on a Secret
	AnnotationCredentialsDescription = "jenkins.io/credentials-description"

	// AnnotationWorkingDir the working directory, such as for a DevPod
	AnnotationWorkingDir = "jenkins.io/working-dir"
	// AnnotationLocalDir the local directory that is sync'd to the DevPod
	AnnotationLocalDir = "jenkins.io/local-dir"

	// AnnotationIsDefaultStorageClass used to indicate a storageclass is default
	AnnotationIsDefaultStorageClass = "storageclass.kubernetes.io/is-default-class"

	// SecretDataUsername the username in a Secret/Credentials
	SecretDataUsername = "username"

	// SecretDataPassword the password in a Secret/Credentials
	SecretDataPassword = "password"

	// SecretBasicAuth the name for the Jenkins X basic auth secret
	SecretBasicAuth = "jx-basic-auth"

	JenkinsAdminApiToken = "jenkins-admin-api-token"

	JenkinsAdminUserField = "jenkins-admin-user"

	JenkinsBearTokenField = "jenkins-bearer-token"

	AUTH = "auth"
)
View Source
const (
	CertmanagerCertificateProd    = "letsencrypt-prod"
	CertmanagerCertificateStaging = "letsencrypt-staging"
	CertmanagerIssuerProd         = "letsencrypt-prod"
	CertmanagerIssuerStaging      = "letsencrypt-staging"
)
View Source
const (
	IngressConfigConfigmap = "ingress-config"
	Domain                 = "domain"
	Email                  = "email"
	TLS                    = "tls"
	Issuer                 = "issuer"
	Exposer                = "exposer"
)
View Source
const (
	BitbucketConfigMapKey = "com.cloudbees.jenkins.plugins.bitbucket.endpoints.BitbucketEndpointConfiguration.xml"
	GiteaConfigMapKey     = "org.jenkinsci.plugin.gitea.servers.GiteaServers.xml"
	GithubConfigMapKey    = "org.jenkinsci.plugins.github_branch_source.GitHubConfiguration.xml"
)
View Source
const (
	// ClassificationLogs stores build logs
	ClassificationLogs = "logs"

	// ClassificationTest stores test results/rports
	ClassificationTests = "tests"

	// ClassificationCoverage stores code coverage results/reports
	ClassificationCoverage = "coverage"
)
View Source
const (
	OptionName      = "name"
	OptionNamespace = "namespace"
)
View Source
const DEFAULT_APPS_REPOSITORY = "http://chartmuseum.jenkins-x.io"

Variables

View Source
var (
	AddonCharts = map[string]string{
		"ambassador":                    ChartAmbassador,
		"anchore":                       ChartAnchore,
		"cb":                            ChartCloudBees,
		"gitea":                         ChartGitea,
		"istio":                         ChartIstio,
		"kubeless":                      ChartKubeless,
		"prometheus":                    "stable/prometheus",
		"grafana":                       "stable/grafana",
		"jx-build-templates":            "jenkins-x/jx-build-templates",
		DefaultProwReleaseName:          ChartProw,
		DefaultKnativeBuildReleaseName:  ChartKnativeBuild,
		DefaultSsoDexReleaseName:        ChartSsoDex,
		DefaultSsoOperatorReleaseName:   ChartSsoOperator,
		DefaultVaultOperatorReleaseName: ChartVaultOperator,
	}

	AddonServices = map[string]string{
		"anchore":         "anchore-anchore-engine",
		"pipeline-events": "jx-pipeline-events-elasticsearch-client",
		"grafana":         "grafana",
	}
)
View Source
var (
	// Classifications the common classification names
	Classifications = []string{
		ClassificationCoverage, ClassificationTests, ClassificationLogs,
	}

	// ClassificationValues the classification values as a string
	ClassificationValues = strings.Join(Classifications, ", ")
)
View Source
var (
	DefaultQuickstartLocations = []v1.QuickStartLocation{
		{
			GitURL:   gits.GitHubURL,
			GitKind:  gits.KindGitHub,
			Owner:    "jenkins-x-quickstarts",
			Includes: []string{"*"},
			Excludes: []string{"WIP-*"},
		},
	}
)

Functions

func AddUserToConfig

func AddUserToConfig(user string, token string, config *api.Config) (*api.Config, error)

AddUserToConfig adds the given user to the config

func CertificateAuthorityData

func CertificateAuthorityData(config *api.Config, context *api.Context) []byte

CertificateAuthorityData returns the certificate authority data for the given context

func CleanCertmanagerResources

func CleanCertmanagerResources(c kubernetes.Interface, ns string, config IngressConfig) error

func ClusterRoleBindingYaml

func ClusterRoleBindingYaml(user string) string

func ClusterRoleYaml

func ClusterRoleYaml(user string) string

func CompletePromote

func CompletePromote(p *v1.PromoteActivityStep) error

func CreateClusterRole

func CreateClusterRole(kubeClient kubernetes.Interface, namesapce string, name string,
	apiGroups []string, resources []string, verbs []string) error

CreateClusterRole creates a new cluster role

func CreateClusterRoleBinding

func CreateClusterRoleBinding(kubeClient kubernetes.Interface, namespace string, name string,
	serviceAccountName string, clusterRoleName string) error

CreateClusterRoleBinding creates acluster role binding in a given namespace for a service account

func CreateDefaultDevEnvironment

func CreateDefaultDevEnvironment(ns string) *v1.Environment

CreateDefaultDevEnvironment creates a default development environment

func CreateEnvGitRepository

func CreateEnvGitRepository(batchMode bool, authConfigSvc auth.ConfigService, devEnv *v1.Environment, data *v1.Environment, config *v1.Environment, forkEnvGitURL string, envDir string, gitRepoOptions *gits.GitRepositoryOptions, helmValues config.HelmValuesConfig, prefix string, git gits.Gitter, in terminal.FileReader, out terminal.FileWriter, errOut io.Writer) (*gits.GitRepository, gits.GitProvider, error)

CreateEnvGitRepository creates the git repository for the given Environment

func CreateEnvironmentSurvey

func CreateEnvironmentSurvey(batchMode bool, authConfigSvc auth.ConfigService, devEnv *v1.Environment, data *v1.Environment,
	config *v1.Environment, forkEnvGitURL string, ns string, jxClient versioned.Interface, kubeClient kubernetes.Interface, envDir string,
	gitRepoOptions *gits.GitRepositoryOptions, helmValues config.HelmValuesConfig, prefix string, git gits.Gitter, in terminal.FileReader, out terminal.FileWriter, errOut io.Writer) (gits.GitProvider, error)

CreateEnvironmentSurvey creates a Survey on the given environment using the default options from the CLI

func CreateKubeClient

func CreateKubeClient(kubeconfig *string) (kubernetes.Interface, error)

CreateKubeClient creates a new Kubernetes client

func CreatePatchBytes

func CreatePatchBytes(op string, path string, value interface{}) ([]byte, error)

CreatePatchBytes creates a kubernetes PATCH block

func CreateTeam

func CreateTeam(ns string, name string, members []string) *v1.Team

CreateTeam creates a new default Team

func CurrentCluster

func CurrentCluster(config *api.Config) (string, *api.Cluster)

CurrentCluster returns the current cluster

func CurrentContext

func CurrentContext(config *api.Config) *api.Context

CurrentContext returns the current context

func CurrentContextName

func CurrentContextName(config *api.Config) string

CurrentContextName returns the current context name

func CurrentNamespace

func CurrentNamespace(config *api.Config) string

CurrentNamespace returns the current namespace in the context

func CurrentServer

func CurrentServer(config *api.Config) string

CurrentServer returns the current context's server

func DefaultModifyConfigMap

func DefaultModifyConfigMap(kubeClient kubernetes.Interface, ns string, name string, fn func(env *v1.ConfigMap) error, defaultConfigMap *v1.ConfigMap) (*v1.ConfigMap, error)

DefaultModifyConfigMap default implementation of a function to modify

func DefaultModifySecret

func DefaultModifySecret(kubeClient kubernetes.Interface, ns string, name string, fn func(env *v1.Secret) error, defaultSecret *v1.Secret) (*v1.Secret, error)

DefaultModifySecret default implementation of a function to modify

func DeleteClusterRole

func DeleteClusterRole(kubeClient kubernetes.Interface, name string) error

DeleteClusterRole deletes a cluster role if exists

func DeleteClusterRoleBinding

func DeleteClusterRoleBinding(kubeClient kubernetes.Interface, name string) error

DeleteClusterRoleBinding deltes a cluster role binding

func DeleteIngress

func DeleteIngress(client kubernetes.Interface, ns, name string) error

DeleteIngress removes an ingress by name

func DeleteJob

func DeleteJob(client kubernetes.Interface, namespace, name string) error

func DeleteTeam

func DeleteTeam(jxClient versioned.Interface, ns string, teamName string) error

DeleteTeam deletes the team resource but does not uninstall the underlying namespaces

func DeploymentPodCount

func DeploymentPodCount(client kubernetes.Interface, name, namespace string) (int, error)

func EmailToK8sID

func EmailToK8sID(email string) string

EmailToK8sID converts the provided email address to a valid Kubernetes resource name, converting the @ to a .

func EnableInsecureRegistry

func EnableInsecureRegistry(iqJson string, dockerRegistry string) (string, error)

EnableInsecureRegistry appends the Docker Registry

func EnsureDevEnvironmentSetup

func EnsureDevEnvironmentSetup(jxClient versioned.Interface, ns string) (*v1.Environment, error)

EnsureDevEnvironmentSetup ensures that the Environment is created in the given namespace

func EnsureDevNamespaceCreatedWithoutEnvironment

func EnsureDevNamespaceCreatedWithoutEnvironment(kubeClient kubernetes.Interface, ns string) error

EnsureDevNamespaceCreatedWithoutEnvironment ensures that there is a development namespace created

func EnsureEditEnvironmentSetup

func EnsureEditEnvironmentSetup(kubeClient kubernetes.Interface, jxClient versioned.Interface, ns string, username string) (*v1.Environment, error)

EnsureEditEnvironmentSetup ensures that the Environment is created in the given namespace

func EnsureEnvironmentNamespaceSetup

func EnsureEnvironmentNamespaceSetup(kubeClient kubernetes.Interface, jxClient versioned.Interface, env *v1.Environment, ns string) error

func EnsureGitServiceExistsForHost

func EnsureGitServiceExistsForHost(jxClient versioned.Interface, devNs string, kind string, name string, gitUrl string, out io.Writer) error

EnsureGitServiceExistsForHost ensures that there is a GitService CRD for the given host and kind

func EnsureNamespaceCreated

func EnsureNamespaceCreated(kubeClient kubernetes.Interface, name string, labels map[string]string, annotations map[string]string) error

Ensure that the namespace exists for the given name

func EnvironmentMatches

func EnvironmentMatches(env *v1.Environment, filter *v1.EnvironmentFilter) bool

EnvironmentMatches returns true if the environment matches the given filter

func EnvironmentMatchesAny

func EnvironmentMatchesAny(env *v1.Environment, filters []v1.EnvironmentFilter) bool

EnvironmentMatchesAny returns true if the list of filters is empty or one of the filters matches the given environment

func ExtensionOwnerRef

func ExtensionOwnerRef(ext *jenkinsv1.Extension) metav1.OwnerReference

func ExtractDomainValue

func ExtractDomainValue(data map[string]string) (string, error)

ExtractDomainValue returns the domain value

func FailedPromote

func FailedPromote(p *v1.PromoteActivityStep) error

func GenerateBuildNumber

func GenerateBuildNumber(activities typev1.PipelineActivityInterface, pipelines []*v1.PipelineActivity, pn PipelineID) (string, *v1.PipelineActivity, error)

GenerateBuildNumber generates a new build number for the given pipeline

func GetAdminNamespace

func GetAdminNamespace(kubeClient kubernetes.Interface, ns string) (string, error)

GetAdminNamespace tries to find the namespace which is annotated as the global admin namespace for the cluster or returns the current namespace

func GetAppName

func GetAppName(name string, namespaces ...string) string

GetAppName returns the app name

func GetCommitSha

func GetCommitSha(r *metav1.ObjectMeta) string

GetCommitSha returns the git commit sha

func GetCommitURL

func GetCommitURL(r *metav1.ObjectMeta) string

GetCommitURL returns the git commit URL

func GetConfigMap

func GetConfigMap(client kubernetes.Interface, ns string, name string) (*v1.ConfigMap, error)

GetConfigMap gets a named configmap

func GetConfigMapData

func GetConfigMapData(client kubernetes.Interface, name, ns string) (map[string]string, error)

GetConfigMapData gets config map data

func GetConfigMaps

func GetConfigMaps(kubeClient kubernetes.Interface, ns string) (map[string]*v1.ConfigMap, []string, error)

GetConfigMaps returns a map of the ConfigMaps along with a sorted list of names

func GetCurrentDomain

func GetCurrentDomain(client kubernetes.Interface, ns string) (string, error)

GetCurrentDomain gets the current domain

func GetDeploymentByRepo

func GetDeploymentByRepo(client kubernetes.Interface, ns string, repoName string) (*v1beta1.Deployment, error)

func GetDeploymentNames

func GetDeploymentNames(client kubernetes.Interface, ns string, filter string) ([]string, error)

func GetDeploymentPods

func GetDeploymentPods(client kubernetes.Interface, name, namespace string) ([]v1.Pod, error)

func GetDeployments

func GetDeployments(kubeClient kubernetes.Interface, ns string) (map[string]v1beta1.Deployment, error)

func GetDevEnvGitOwner

func GetDevEnvGitOwner(jxClient versioned.Interface) (string, error)

GetDevEnvGitOwner gets the default GitHub owner/organisation to use for Environment repos. This takes the setting from the 'jx' Dev Env to get the one that was selected at installation time.

func GetDevEnvironment

func GetDevEnvironment(jxClient versioned.Interface, ns string) (*v1.Environment, error)

GetDevEnvironment returns the current development environment using the jxClient for the given ns. If the Dev Environment cannot be found, returns nil Environment (rather than an error). A non-nil error is only returned if there is an error fetching the Dev Environment.

func GetDevNamespace

func GetDevNamespace(kubeClient kubernetes.Interface, ns string) (string, string, error)

GetDevNamespace returns the developer environment namespace which is the namespace that contains the Environments and the developer tools like Jenkins

func GetDevPodNames

func GetDevPodNames(client kubernetes.Interface, ns string, username string) ([]string, map[string]*v1.Pod, error)

GetDevPodNames returns the users dev pod names

func GetEditAppName

func GetEditAppName(name string) string

func GetEditEnvironmentNamespace

func GetEditEnvironmentNamespace(jxClient versioned.Interface, ns string) (string, error)

GetEditEnvironmentNamespace returns the namespace of the current users edit environment

func GetEnrichedDevEnvironment

func GetEnrichedDevEnvironment(kubeClient kubernetes.Interface, jxClient versioned.Interface, ns string) (*v1.Environment, error)

GetEnrichedDevEnvironment lazily creates the dev namespace if it does not already exist and auto-detects the webhook engine if its not specified

func GetEnvVar

func GetEnvVar(container *corev1.Container, name string) *corev1.EnvVar

GetEnvVar returns the env var if its defined for the given name

func GetEnvironment

func GetEnvironment(jxClient versioned.Interface, ns string, name string) (*v1.Environment, error)

GetEnvironment find an environment by name

func GetEnvironmentNames

func GetEnvironmentNames(jxClient versioned.Interface, ns string) ([]string, error)

GetEnvironmentNames returns the sorted list of environment names

func GetEnvironmentNamespace

func GetEnvironmentNamespace(jxClient versioned.Interface, ns, environment string) (string, error)

GetEnvironments returns the namespace name for a given environment

func GetEnvironmentRoles

func GetEnvironmentRoles(jxClient versioned.Interface, ns string) (map[string]*v1.EnvironmentRoleBinding, []string, error)

GetEnvironmentRoles returns all the environment role binding names and details

func GetEnvironments

func GetEnvironments(jxClient versioned.Interface, ns string) (map[string]*v1.Environment, []string, error)

GetEnvironments returns a map of the environments along with a sorted list of names

func GetEnvironmentsByPrURL

func GetEnvironmentsByPrURL(jxClient versioned.Interface, ns string, prURL string) (*v1.Environment, error)

GetEnvironmentsByPrURL find an environment by a pull request URL

func GetFilteredEnvironmentNames

func GetFilteredEnvironmentNames(jxClient versioned.Interface, ns string, fn func(environment *v1.Environment) bool) ([]string, error)

GetFilteredEnvironmentNames returns the sorted list of environment names

func GetGitServiceKind

func GetGitServiceKind(jxClient versioned.Interface, kubeClient kubernetes.Interface, devNs string, gitServiceURL string) (string, error)

GetGitServiceKind returns the kind of the given host if one can be found or ""

func GetIngress

func GetIngress(client kubernetes.Interface, ns, name string) (string, error)

func GetName

func GetName(r *metav1.ObjectMeta) string

GetName returns the app name

func GetOrCreateRelease

func GetOrCreateRelease(jxClient versioned.Interface, ns string, release *v1.Release) (*v1.Release, error)

GetOrCreateRelease creates or updates the given release resource

func GetOrCreateStage

func GetOrCreateStage(a *v1.PipelineActivity, stageName string) (*v1.PipelineActivityStep, *v1.StageActivityStep, bool)

GetOrCreateStage gets or creates the step for the given name

func GetOrderedEnvironments

func GetOrderedEnvironments(jxClient versioned.Interface, ns string) (map[string]*v1.Environment, []string, error)

GetOrderedEnvironments returns a map of the environments along with the correctly ordered names

func GetOrderedReleases

func GetOrderedReleases(jxClient versioned.Interface, ns string, filter string) ([]v1.Release, error)

GetOrderedReleases returns the releases sorted in newest release first

func GetPendingTeams

func GetPendingTeams(jxClient versioned.Interface, ns string) (map[string]*v1.Team, []string, error)

GetPendingTeams returns the pending teams with the sorted order of names

func GetPodCondition

func GetPodCondition(status *v1.PodStatus, conditionType v1.PodConditionType) (int, *v1.PodCondition)

credit https://github.com/kubernetes/kubernetes/blob/8719b4a/pkg/api/v1/pod/util.go GetPodCondition extracts the provided condition from the given status and returns that. Returns nil and -1 if the condition is not present, and the index of the located condition.

func GetPodNames

func GetPodNames(client kubernetes.Interface, ns string, filter string) ([]string, error)

func GetPodReadyCondition

func GetPodReadyCondition(status v1.PodStatus) *v1.PodCondition

credit https://github.com/kubernetes/kubernetes/blob/8719b4a/pkg/api/v1/pod/util.go Extracts the pod ready condition from the given status and returns that. Returns nil if the condition is not present.

func GetPodRestarts

func GetPodRestarts(pod *v1.Pod) int32

GetPodRestars returns the number of restarts of a POD

func GetPodVersion

func GetPodVersion(pod *corev1.Pod, appName string) string

GetPodVersion returns the version for the given app name

func GetPods

func GetPods(client kubernetes.Interface, ns string, filter string) ([]string, map[string]*v1.Pod, error)

func GetPodsWithLabels

func GetPodsWithLabels(client kubernetes.Interface, ns string, selector string) ([]string, map[string]*v1.Pod, error)

func GetQuickstartLocations

func GetQuickstartLocations(jxClient versioned.Interface, ns string) ([]v1.QuickStartLocation, error)

GetQuickstartLocations returns the current quickstart locations. If no locations are defined yet lets return the defaults

func GetReadyPodNames

func GetReadyPodNames(client kubernetes.Interface, ns string, filter string) ([]string, error)

func GetSecrets

func GetSecrets(kubeClient kubernetes.Interface, ns string) (map[string]*v1.Secret, []string, error)

GetSecrets returns a map of the Secrets along with a sorted list of names

func GetServiceKindFromSecrets

func GetServiceKindFromSecrets(kubeClient kubernetes.Interface, ns string, gitServiceURL string) (string, error)

GetServiceKindFromSecrets gets the kind of service from secrets

func GetTeamRoles

func GetTeamRoles(kubeClient kubernetes.Interface, ns string) (map[string]*rbacv1.Role, []string, error)

GetTeamRoles returns the roles for the given team dev namespace

func GetTeams

func GetTeams(kubeClient kubernetes.Interface) ([]*corev1.Namespace, []string, error)

GetTeams returns the Teams the user is a member of

func GetUserRoles

func GetUserRoles(jxClient versioned.Interface, ns string, userKind string, userName string) ([]string, error)

UpdateUserRoles updates the EnvironmentRoleBinding values based on the given userRoles userKind is "User" or "ServiceAccount"

func GetVersion

func GetVersion(r *metav1.ObjectMeta) string

GetVersion returns the version from the labels on the deployment if it can be deduced

func GetVolume

func GetVolume(volumes *[]corev1.Volume, name string) *corev1.Volume

func GetVolumeMount

func GetVolumeMount(volumenMounts *[]corev1.VolumeMount, name string) *corev1.VolumeMount

func HasInitContainerStarted

func HasInitContainerStarted(pod *v1.Pod) bool

HasInitContainerStarted returns true if one of the init containers has started running

func IsClusterRole

func IsClusterRole(kubeClient kubernetes.Interface, name string) bool

IsClusterRole checks if a cluster role exists

func IsClusterRoleBinding

func IsClusterRoleBinding(kubeClient kubernetes.Interface, name string) bool

IsClusterRoleBinding checks if the cluster role binding exists

func IsDaemonSetExists

func IsDaemonSetExists(client kubernetes.Interface, name, namespace string) (bool, error)

func IsDeploymentRunning

func IsDeploymentRunning(client kubernetes.Interface, name, namespace string) (bool, error)

func IsJobFinished

func IsJobFinished(job *batchv1.Job) bool

IsJobFinished returns true if the job has completed

func IsJobSucceeded

func IsJobSucceeded(job *batchv1.Job) bool

IsJobSucceeded returns true if the job completed and did not fail

func IsPodReady

func IsPodReady(pod *v1.Pod) bool

credit https://github.com/kubernetes/kubernetes/blob/8719b4a/pkg/api/v1/pod/util.go IsPodReady returns true if a pod is ready; false otherwise.

func IsPodReadyConditionTrue

func IsPodReadyConditionTrue(status v1.PodStatus) bool

credit https://github.com/kubernetes/kubernetes/blob/8719b4a/pkg/api/v1/pod/util.go IsPodReady retruns true if a pod is ready; false otherwise.

func IsPreviewEnvironment

func IsPreviewEnvironment(env *v1.Environment) bool

func IsProwEnabled

func IsProwEnabled(kubeClient kubernetes.Interface, ns string) (bool, error)

IsProwEnabled returns true if Prow is enabled in the given development namespace

func IsResourceVersionNewer

func IsResourceVersionNewer(v1 string, v2 string) bool

IsResourceVersionNewer returns true if the first resource version is newer than the second

func ModifyNamespace

func ModifyNamespace(out io.Writer, dir string, env *v1.Environment, git gits.Gitter) error

ModifyNamespace modifies the namespace

func NewPermanentEnvironment

func NewPermanentEnvironment(name string) *v1.Environment

NewPermanentEnvironment creates a new permanent environment for testing

func NewPermanentEnvironmentWithGit

func NewPermanentEnvironmentWithGit(name string, gitUrl string) *v1.Environment

NewPermanentEnvironment creates a new permanent environment for testing

func NewPreviewEnvironment

func NewPreviewEnvironment(name string) *v1.Environment

NewPreviewEnvironment creates a new preview environment for testing

func ParseXml

func ParseXml(xml string) (*etree.Document, string, error)

ParseXml parses XML

func PickEnvironment

func PickEnvironment(envNames []string, defaultEnv string, in terminal.FileReader, out terminal.FileWriter, errOut io.Writer) (string, error)

func PodOwnerRef

func PodOwnerRef(pod *corev1.Pod) metav1.OwnerReference

func PodRequestsAndLimits

func PodRequestsAndLimits(pod *v1.Pod) (reqs map[v1.ResourceName]resource.Quantity, limits map[v1.ResourceName]resource.Quantity)

func PodStatus

func PodStatus(pod *v1.Pod) string

func RegisterAllCRDs

func RegisterAllCRDs(apiClient apiextensionsclientset.Interface) error

RegisterAllCRDs ensures that all Jenkins-X CRDs are registered

func RegisterAppCRD

func RegisterAppCRD(apiClient apiextensionsclientset.Interface) error

RegisterAppCRD ensures that the CRD is registered for App

func RegisterBuildPackCRD

func RegisterBuildPackCRD(apiClient apiextensionsclientset.Interface) error

RegisterBuildPackCRD ensures that the CRD is registered for BuildPack

func RegisterCRD

RegisterCRD allows new custom resources to be registered using apiClient under a particular name. Various forms of the name are provided using names. In Kubernetes 1.11 and later a custom display format for kubectl is used, which is specified using columns.

func RegisterCommitStatusCRD

func RegisterCommitStatusCRD(apiClient apiextensionsclientset.Interface) error

RegisterCommitStatusCRD ensures that the CRD is registered for CommitStatus

func RegisterEnvironmentCRD

func RegisterEnvironmentCRD(apiClient apiextensionsclientset.Interface) error

RegisterEnvironmentCRD ensures that the CRD is registered for Environments

func RegisterEnvironmentRoleBindingCRD

func RegisterEnvironmentRoleBindingCRD(apiClient apiextensionsclientset.Interface) error

RegisterEnvironmentRoleBindingCRD ensures that the CRD is registered for Environments

func RegisterExtensionCRD

func RegisterExtensionCRD(apiClient apiextensionsclientset.Interface) error

RegisterExtensionCRD ensures that the CRD is registered for Extension

func RegisterGitServiceCRD

func RegisterGitServiceCRD(apiClient apiextensionsclientset.Interface) error

RegisterGitServiceCRD ensures that the CRD is registered for GitServices

func RegisterPipelineActivityCRD

func RegisterPipelineActivityCRD(apiClient apiextensionsclientset.Interface) error

RegisterPipelineActivityCRD ensures that the CRD is registered for PipelineActivity

func RegisterPluginCRD

func RegisterPluginCRD(apiClient apiextensionsclientset.Interface) error

RegisterPluginCRD ensures that the CRD is registered for Plugin

func RegisterReleaseCRD

func RegisterReleaseCRD(apiClient apiextensionsclientset.Interface) error

RegisterReleaseCRD ensures that the CRD is registered for Release

func RegisterSourceRepositoryCRD

func RegisterSourceRepositoryCRD(apiClient apiextensionsclientset.Interface) error

RegisterSourceRepositoryCRD ensures that the CRD is registered for Applications

func RegisterTeamCRD

func RegisterTeamCRD(apiClient apiextensionsclientset.Interface) error

RegisterTeamCRD ensures that the CRD is registered for Team

func RegisterUserCRD

func RegisterUserCRD(apiClient apiextensionsclientset.Interface) error

RegisterUserCRD ensures that the CRD is registered for User

func RegisterWorkflowCRD

func RegisterWorkflowCRD(apiClient apiextensionsclientset.Interface) error

RegisterWorkflowCRD ensures that the CRD is registered for Environments

func ReplaceMakeVariable

func ReplaceMakeVariable(lines []string, name string, value string) error

ReplaceMakeVariable needs a description

func RoleBindingKubeSystemYaml

func RoleBindingKubeSystemYaml(user string) string

func RoleBindings

func RoleBindings(client kubernetes.Interface, namespace string) (string, error)

func RoleKubeSystemYaml

func RoleKubeSystemYaml(user string) string

func SaveAsConfigMap

func SaveAsConfigMap(c kubernetes.Interface, configMapName string, ns string, obj interface{}) (*v1.ConfigMap, error)

SaveAsConfigMap to the specified namespace as a config map.

func Server

func Server(config *api.Config, context *api.Context) string

Server returns the server of the given context

func ServiceOwnerRef

func ServiceOwnerRef(svc *corev1.Service) metav1.OwnerReference

func SortEnvironments

func SortEnvironments(environments []v1.Environment)

func SortListWatchByName

func SortListWatchByName(listWatch *cache.ListWatch)

func SortReleases

func SortReleases(releases []v1.Release)

SortReleases sorts the releases in name order then latest version first

func SortRuntimeObjectsByName

func SortRuntimeObjectsByName(objects []runtime.Object)

func StartPromote

func StartPromote(p *v1.PromoteActivityStep) error

func ToMetaTime

func ToMetaTime(t *time.Time) *metav1.Time

ToMetaTime converts the go time pointer to a meta time

func ToValidName

func ToValidName(name string) string

ToValidName converts the given string into a valid Kubernetes resource name

func ToValidNameWithDots

func ToValidNameWithDots(name string) string

ToValidNameWithDots converts the given string into a valid Kubernetes resource name

func UpdateJenkinsGitServers

func UpdateJenkinsGitServers(cm *corev1.ConfigMap, server *auth.AuthServer, userAuth *auth.UserAuth, credentials string) (bool, error)

UpdateJenkinsGitServers update the Jenkins ConfigMap with any missing Git server configurations for the given server and token

func UpdateUserRoles

func UpdateUserRoles(kubeClient kubernetes.Interface, jxClient versioned.Interface, ns string, userKind string, userName string, userRoles []string, roles map[string]*rbacv1.Role) error

UpdateUserRoles updates the EnvironmentRoleBinding values based on the given userRoles. userKind is "User" or "ServiceAccount"

func ValidNameOption

func ValidNameOption(option string, value string) error

func ValidSubDomainOption

func ValidSubDomainOption(option string, value string) error

func ValidateEnvironmentDoesNotExist

func ValidateEnvironmentDoesNotExist(jxClient versioned.Interface, ns string, str string) error

func ValidateName

func ValidateName(val interface{}) error

func ValidateSubDomain

func ValidateSubDomain(val interface{}) error

func WaitForAllDeploymentsToBeReady

func WaitForAllDeploymentsToBeReady(client kubernetes.Interface, namespace string, timeoutPerDeploy time.Duration) error

func WaitForDeploymentToBeCreatedAndReady

func WaitForDeploymentToBeCreatedAndReady(client kubernetes.Interface, name, namespace string, timeoutPerDeploy time.Duration) error

func WaitForDeploymentToBeReady

func WaitForDeploymentToBeReady(client kubernetes.Interface, name, namespace string, timeout time.Duration) error

WaitForDeploymentToBeReady waits for the pods of a deployment to become ready

func WaitForJobToSucceeded

func WaitForJobToSucceeded(client kubernetes.Interface, namespace, jobName string, timeout time.Duration) error

waits for the job to complete

func WaitForJobToTerminate

func WaitForJobToTerminate(client kubernetes.Interface, namespace, jobName string, timeout time.Duration) error

waits for the job to terminate

func WaitForPodNameToBeReady

func WaitForPodNameToBeReady(client kubernetes.Interface, namespace string, name string, timeout time.Duration) error

waits for the pod to become ready using the pod name

func WaitForPodToBeReady

func WaitForPodToBeReady(client kubernetes.Interface, selector labels.Selector, namespace string, timeout time.Duration) error

waits for the pod to become ready using label selector to match the pod

Types

type ByName

type ByName []runtime.Object

func (ByName) Len

func (a ByName) Len() int

func (ByName) Less

func (a ByName) Less(i, j int) bool

func (ByName) Swap

func (a ByName) Swap(i, j int)

type ByOrder

type ByOrder []v1.Environment

func (ByOrder) Len

func (a ByOrder) Len() int

func (ByOrder) Less

func (a ByOrder) Less(i, j int) bool

func (ByOrder) Swap

func (a ByOrder) Swap(i, j int)

type ClusterStatus

type ClusterStatus struct {
	Name string
	// contains filtered or unexported fields
}

func GetClusterStatus

func GetClusterStatus(client kubernetes.Interface, namespace string) (ClusterStatus, error)

func (*ClusterStatus) AverageCpuPercent

func (clusterStatus *ClusterStatus) AverageCpuPercent() int

func (*ClusterStatus) AverageMemPercent

func (clusterStatus *ClusterStatus) AverageMemPercent() int

func (*ClusterStatus) CheckResource

func (clusterStatus *ClusterStatus) CheckResource() string

func (*ClusterStatus) Info

func (clusterStatus *ClusterStatus) Info() string

func (*ClusterStatus) MinimumResourceLimit

func (clusterStatus *ClusterStatus) MinimumResourceLimit() int

func (*ClusterStatus) NodeCount

func (clusterStatus *ClusterStatus) NodeCount() int

type EnvironmentNamespaceCache

type EnvironmentNamespaceCache struct {
	// contains filtered or unexported fields
}

EnvironmentNamespaceCache caches the Environments for a single namespace

func CreateEnvironmentCache

func CreateEnvironmentCache(jxClient versioned.Interface, ns string) *EnvironmentNamespaceCache

CreateEnvironmentCache creates a cache for the given namespace of Environments

func (*EnvironmentNamespaceCache) Item

Item returns the Environment for the tiven name

func (*EnvironmentNamespaceCache) Items

Items returns the Environments in this namespace sorted in name order

type HeapterConfig

type HeapterConfig struct {
	KubeClient        kubernetes.Interface
	HeapsterNamespace string
	HeapsterScheme    string
	HeapsterPort      string
	HeapsterService   string
	// contains filtered or unexported fields
}

func (*HeapterConfig) GetPodMetrics

func (q *HeapterConfig) GetPodMetrics(ns string, pod string, selector string, metric string, start string, end string) ([]byte, error)

type IngressConfig

type IngressConfig struct {
	Email   string `structs:"email" yaml:"email" json:"email"`
	Domain  string `structs:"domain" yaml:"domain" json:"domain"`
	Issuer  string `structs:"issuer" yaml:"issuer" json:"issuer"`
	Exposer string `structs:"exposer" yaml:"exposer" json:"exposer"`
	TLS     bool   `structs:"tls" yaml:"tls" json:"tls"`
}

func GetIngressConfig

func GetIngressConfig(c kubernetes.Interface, ns string) (IngressConfig, error)

type JXInstallConfig

type JXInstallConfig struct {
	Server string `structs:"server" yaml:"server" json:"server"`
	CA     []byte `structs:"ca.crt" yaml:"ca.crt" json:"ca.crt"`
}

JXInstallConfig is the struct used to create the jx-install-config configmap

type KubeConfig

type KubeConfig struct{}

KubeConfig implements kube interactions

func (*KubeConfig) LoadConfig

func (k *KubeConfig) LoadConfig() (*api.Config, *clientcmd.PathOptions, error)

LoadConfig loads the Kubernetes configuration

func (*KubeConfig) UpdateConfig

func (k *KubeConfig) UpdateConfig(namespace string, server string, caData string, user string, token string) error

UpdateConfig defines new config entries for jx

type Kuber

type Kuber interface {
	// LoadConfig loads the Kubernetes configuration
	LoadConfig() (*api.Config, *clientcmd.PathOptions, error)

	// UpdateConfig defines new config entries for jx
	UpdateConfig(namespace string, server string, caData string, user string, token string) error
}

Kuber defines common kube actions used within Jenkins X

func NewKubeConfig

func NewKubeConfig() Kuber

NewKubeConfig creates a new KubeConfig struct to be used to interact with the underlying kube system

type NodeStatus

type NodeStatus struct {
	Name            string
	AllocatedMemory *resource.Quantity
	AllocatedCPU    *resource.Quantity
	CpuReqs         resource.Quantity
	CpuLimits       resource.Quantity

	MemReqs   resource.Quantity
	MemLimits resource.Quantity
	// contains filtered or unexported fields
}

func Status

func Status(client kubernetes.Interface, namespace string, node v1.Node) (NodeStatus, error)

type PatchRow

type PatchRow struct {
	Op    string      `json:"op"`
	Path  string      `json:"path"`
	Value interface{} `json:"value"`
}

PatchRow used to generate the patch JSON for patching

type PipelineActivityKey

type PipelineActivityKey struct {
	Name              string
	Pipeline          string
	Build             string
	Version           string
	BuildURL          string
	BuildLogsURL      string
	ReleaseNotesURL   string
	LastCommitSHA     string
	LastCommitMessage string
	LastCommitURL     string
	GitInfo           *gits.GitRepository
}

func (*PipelineActivityKey) GetOrCreate

GetOrCreate gets or creates the pipeline activity

func (*PipelineActivityKey) IsValid

func (k *PipelineActivityKey) IsValid() bool

type PipelineDetails

type PipelineDetails struct {
	GitOwner      string
	GitRepository string
	BranchName    string
	Pipeline      string
	Build         string
}

func CreatePipelineDetails

func CreatePipelineDetails(activity *v1.PipelineActivity) *PipelineDetails

CreatePipelineDetails creates a PipelineDetails object populated from the activity

type PipelineID

type PipelineID struct {
	ID   string
	Name string
}

PipelineID is an identifier for a Pipeline. A pipeline is typically identified by its owner, repository, and branch with the ID field taking the form `<owner>/>repository>/<branch>`

func NewPipelineID

func NewPipelineID(owner string, repository string, branch string) PipelineID

NewPipelineID creates a new PipelineID for a given owner, repository, and branch.

func NewPipelineIDFromString

func NewPipelineIDFromString(id string) PipelineID

NewPipelineIDFromString creates a new PipelineID, given a pre-built string identifier. The string identifier is expected to follow the format `<owner>/>repository>/<branch>`, though this isn't actually validated/mandated here.

func (*PipelineID) GetActivityName

func (p *PipelineID) GetActivityName(activity string) string

GetActivityName Builds a Kubernetes-friendly (i.e. a-z,-,. only) name for a specific activity, within a pipeline.

type PipelineNamespaceCache

type PipelineNamespaceCache struct {
	// contains filtered or unexported fields
}

PipelineNamespaceCache caches the pipelines for a single namespace

func NewPipelineCache

func NewPipelineCache(jxClient versioned.Interface, ns string) *PipelineNamespaceCache

NewPipelineCache creates a cache of pipelines for a namespace

func (*PipelineNamespaceCache) Pipelines

func (c *PipelineNamespaceCache) Pipelines() []*v1.PipelineActivity

Pipelines returns the pipelines in this namespace sorted in name order

func (*PipelineNamespaceCache) Stop

func (c *PipelineNamespaceCache) Stop()

Stop closes the underlying chanel processing events which stops consuming watch events

type PromoteStepActivityKey

type PromoteStepActivityKey struct {
	PipelineActivityKey

	Environment    string
	ApplicationURL string
}

func (*PromoteStepActivityKey) GetOrCreatePreview

GetOrCreatePreview gets or creates the Preview step for the key

func (*PromoteStepActivityKey) GetOrCreatePromote

GetOrCreatePromote gets or creates the Promote step for the key

func (*PromoteStepActivityKey) GetOrCreatePromotePullRequest

GetOrCreatePromotePullRequest gets or creates the PromotePullRequest for the key

func (*PromoteStepActivityKey) GetOrCreatePromoteUpdate

GetOrCreatePromoteUpdate gets or creates the Promote for the key

func (*PromoteStepActivityKey) OnPromotePullRequest

func (k *PromoteStepActivityKey) OnPromotePullRequest(activities typev1.PipelineActivityInterface, fn PromotePullRequestFn) error

func (*PromoteStepActivityKey) OnPromoteUpdate

type ReleaseOrder

type ReleaseOrder []v1.Release

func (ReleaseOrder) Len

func (a ReleaseOrder) Len() int

func (ReleaseOrder) Less

func (a ReleaseOrder) Less(i, j int) bool

func (ReleaseOrder) Swap

func (a ReleaseOrder) Swap(i, j int)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL