util

package
v0.3.13 Latest Latest
Warning

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

Go to latest
Published: Jan 8, 2022 License: Apache-2.0 Imports: 58 Imported by: 0

Documentation

Index

Constants

View Source
const (
	GIT_WORKING_DIR       = "/tmp/gitops/"
	GetRepoUrlStage       = "Get Repo Url"
	CreateRepoStage       = "Create Repo"
	CloneHttpStage        = "Clone Http"
	CreateReadmeStage     = "Create Readme"
	CloneSshStage         = "Clone Ssh"
	GITLAB_PROVIDER       = "GITLAB"
	GITHUB_PROVIDER       = "GITHUB"
	AZURE_DEVOPS_PROVIDER = "AZURE_DEVOPS"
	BITBUCKET_PROVIDER    = "BITBUCKET_CLOUD"
	GITHUB_API_V3         = "api/v3"
	GITHUB_HOST           = "github.com"
)
View Source
const (
	BITBUCKET_CLONE_BASE_URL       = "https://bitbucket.org/"
	BITBUCKET_GITOPS_DIR           = "bitbucketGitOps"
	BITBUCKET_REPO_NOT_FOUND_ERROR = "404 Not Found"
)
View Source
const GIT_ASK_PASS = "/git-ask-pass.sh"
View Source
const Running = "Running"

Variables

This section is empty.

Functions

func CompareUnOrdered

func CompareUnOrdered(a, b []int) bool

func CreateEcrRepo

func CreateEcrRepo(repoName string, reg string, accessKey string, secretKey string) error

FIXME: this code is temp

func GetLogger deprecated

func GetLogger() *zap.SugaredLogger

Deprecated: instead calling this method inject logger from wire

func IntValidator

func IntValidator() (*validator.Validate, error)

func IsErrNoRows

func IsErrNoRows(err error) bool

func IsValidUrl added in v0.2.33

func IsValidUrl(input string) bool

func NewHttpClient

func NewHttpClient() *http.Client

func NewSugardLogger

func NewSugardLogger() *zap.SugaredLogger

func TopoSort

func TopoSort(graph map[int][]int) []int

func Tprintf

func Tprintf(tmpl string, data interface{}) (string, error)

Tprintf passed template string is formatted usign its operands and returns the resulting string. Spaces are added between operands when neither is a string.

func ValidateCheckoutPath

func ValidateCheckoutPath(fl validator.FieldLevel) bool

func ValidateName

func ValidateName(fl validator.FieldLevel) bool

Types

type ApiError

type ApiError struct {
	HttpStatusCode    int         `json:"-"`
	Code              string      `json:"code,omitempty"`
	InternalMessage   string      `json:"internalMessage,omitempty"`
	UserMessage       interface{} `json:"userMessage,omitempty"`
	UserDetailMessage string      `json:"userDetailMessage,omitempty"`
}

func (*ApiError) Error

func (e *ApiError) Error() string

func (*ApiError) ErrorfInternal

func (e *ApiError) ErrorfInternal(format string, a ...interface{}) error

default internal will be set

func (ApiError) ErrorfUser

func (e ApiError) ErrorfUser(format string, a ...interface{}) error

default user message will be set

type BadRequestError added in v0.3.6

type BadRequestError struct {
	E error
}

func (*BadRequestError) Error added in v0.3.6

func (err *BadRequestError) Error() string

type ChartConfig

type ChartConfig struct {
	ChartName      string
	ChartLocation  string
	FileName       string //filename
	FileContent    string
	ReleaseMessage string
}

type ChartGitAttribute

type ChartGitAttribute struct {
	RepoUrl, ChartLocation string
}

type ChartTemplateService

type ChartTemplateService interface {
	CreateChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string) (*ChartValues, *ChartGitAttribute, error)
	GetChartVersion(location string) (string, error)
	CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, appName string) (string, *ChartGitAttribute, error)
	GitPull(clonedDir string, repoUrl string, appStoreName string) error
}

type ChartTemplateServiceImpl

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

func NewChartTemplateServiceImpl

func NewChartTemplateServiceImpl(logger *zap.SugaredLogger,
	chartWorkingDir ChartWorkingDir,
	client *http.Client,
	gitFactory *GitFactory) *ChartTemplateServiceImpl

func (ChartTemplateServiceImpl) CleanDir

func (impl ChartTemplateServiceImpl) CleanDir(dir string)

func (ChartTemplateServiceImpl) CreateChart

func (impl ChartTemplateServiceImpl) CreateChart(chartMetaData *chart.Metadata, refChartLocation string, templateName string) (*ChartValues, *ChartGitAttribute, error)

func (ChartTemplateServiceImpl) CreateChartProxy

func (impl ChartTemplateServiceImpl) CreateChartProxy(chartMetaData *chart.Metadata, refChartLocation string, templateName string, version string, envName string, appName string) (string, *ChartGitAttribute, error)

func (ChartTemplateServiceImpl) GetChartVersion

func (ChartTemplateServiceImpl) GetChartVersion(location string) (string, error)

func (ChartTemplateServiceImpl) GitPull

func (impl ChartTemplateServiceImpl) GitPull(clonedDir string, repoUrl string, appStoreName string) error

type ChartValues

type ChartValues struct {
	Values                  string `json:"values"`            //yaml
	AppOverrides            string `json:"appOverrides"`      //json
	EnvOverrides            string `json:"envOverrides"`      //json
	ReleaseOverrides        string `json:"releaseOverrides"`  //json
	PipelineOverrides       string `json:"pipelineOverrides"` //json
	ImageDescriptorTemplate string `json:"-"`
}

type ChartWorkingDir

type ChartWorkingDir string

type ClusterConfig

type ClusterConfig struct {
	Host        string
	BearerToken string
}

type DetailedErrorGitOpsConfigActions added in v0.2.27

type DetailedErrorGitOpsConfigActions struct {
	SuccessfulStages []string         `json:"successfulStages"`
	StageErrorMap    map[string]error `json:"stageErrorMap"`
	ValidatedOn      time.Time        `json:"validatedOn"`
	DeleteRepoFailed bool             `json:"deleteRepoFailed"`
}

type ForbiddenError added in v0.3.6

type ForbiddenError struct {
	E error
}

func (*ForbiddenError) Error added in v0.3.6

func (err *ForbiddenError) Error() string

type GitAzureClient added in v0.2.11

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

func NewGitAzureClient added in v0.2.11

func NewGitAzureClient(token string, host string, project string, logger *zap.SugaredLogger, gitService GitService) (GitAzureClient, error)

func (GitAzureClient) CommitValues added in v0.2.11

func (impl GitAzureClient) CommitValues(config *ChartConfig, bitbucketWorkspaceId string) (commitHash string, err error)

func (GitAzureClient) CreateRepository added in v0.2.11

func (impl GitAzureClient) CreateRepository(name, description, bitbucketWorkspaceId, bitbucketProjectKey string) (url string, isNew bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions)

func (GitAzureClient) DeleteRepository added in v0.2.27

func (impl GitAzureClient) DeleteRepository(name, userName, gitHubOrgName, azureProjectName string, repoOptions *bitbucket.RepositoryOptions) error

func (GitAzureClient) GetRepoUrl added in v0.2.11

func (impl GitAzureClient) GetRepoUrl(repoName string, repoOptions *bitbucket.RepositoryOptions) (repoUrl string, err error)

type GitBitbucketClient added in v0.2.33

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

func NewGitBitbucketClient added in v0.2.33

func NewGitBitbucketClient(username, token, host string, logger *zap.SugaredLogger, gitService GitService) GitBitbucketClient

func (GitBitbucketClient) CommitValues added in v0.2.33

func (impl GitBitbucketClient) CommitValues(config *ChartConfig, bitbucketWorkspaceId string) (commitHash string, err error)

func (GitBitbucketClient) CreateRepository added in v0.2.33

func (impl GitBitbucketClient) CreateRepository(name, description, workSpaceId, projectKey string) (url string, isNew bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions)

func (GitBitbucketClient) DeleteRepository added in v0.2.33

func (impl GitBitbucketClient) DeleteRepository(name, userName, gitHubOrgName, azureProjectName string, repoOptions *bitbucket.RepositoryOptions) error

func (GitBitbucketClient) GetRepoUrl added in v0.2.33

func (impl GitBitbucketClient) GetRepoUrl(repoName string, repoOptions *bitbucket.RepositoryOptions) (repoUrl string, err error)

type GitCliUtil added in v0.2.11

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

func NewGitCliUtil added in v0.2.11

func NewGitCliUtil(logger *zap.SugaredLogger) *GitCliUtil

func (*GitCliUtil) Checkout added in v0.2.11

func (impl *GitCliUtil) Checkout(rootDir string, branch string) (response, errMsg string, err error)

func (*GitCliUtil) Clone added in v0.2.11

func (impl *GitCliUtil) Clone(rootDir string, remoteUrl string, username string, password string) (response, errMsg string, err error)

func (*GitCliUtil) Fetch added in v0.2.11

func (impl *GitCliUtil) Fetch(rootDir string, username string, password string) (response, errMsg string, err error)

func (*GitCliUtil) Init added in v0.2.11

func (impl *GitCliUtil) Init(rootDir string, remoteUrl string, isBare bool) error

func (*GitCliUtil) Pull added in v0.2.11

func (impl *GitCliUtil) Pull(rootDir string, username string, password string, branch string) (response, errMsg string, err error)

type GitClient

type GitClient interface {
	CreateRepository(name, description, bitbucketWorkspaceId, bitbucketProjectKey string) (url string, isNew bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions)
	CommitValues(config *ChartConfig, bitbucketWorkspaceId string) (commitHash string, err error)
	GetRepoUrl(projectName string, repoOptions *bitbucket.RepositoryOptions) (repoUrl string, err error)
	DeleteRepository(name, userName, gitHubOrgName, azureProjectName string, repoOptions *bitbucket.RepositoryOptions) error
}

func NewGitLabClient

func NewGitLabClient(config *GitConfig, logger *zap.SugaredLogger, gitService GitService) (GitClient, error)

func NewGitOpsClient added in v0.2.33

func NewGitOpsClient(config *GitConfig, logger *zap.SugaredLogger, gitService GitService) (GitClient, error)

type GitConfig

type GitConfig struct {
	GitlabGroupId        string //local
	GitlabGroupPath      string //local
	GitToken             string //not null  // public
	GitUserName          string //not null  // public
	GitWorkingDir        string //working directory for git. might use pvc
	GithubOrganization   string
	GitProvider          string // SUPPORTED VALUES  GITHUB, GITLAB
	GitHost              string
	AzureToken           string
	AzureProject         string
	BitbucketWorkspaceId string
	BitbucketProjectKey  string
}

func GetGitConfig

func GetGitConfig(gitOpsRepository repository.GitOpsConfigRepository) (*GitConfig, error)

type GitFactory

type GitFactory struct {
	Client GitClient

	GitWorkingDir string
	// contains filtered or unexported fields
}

func NewGitFactory

func NewGitFactory(logger *zap.SugaredLogger, gitOpsRepository repository.GitOpsConfigRepository, gitCliUtil *GitCliUtil) (*GitFactory, error)

func (*GitFactory) GetGitLabGroupPath added in v0.2.29

func (factory *GitFactory) GetGitLabGroupPath(gitOpsConfig *bean2.GitOpsConfigDto) (string, error)

func (*GitFactory) NewClientForValidation added in v0.2.27

func (factory *GitFactory) NewClientForValidation(gitOpsConfig *bean2.GitOpsConfigDto) (GitClient, *GitServiceImpl, error)

func (*GitFactory) Reload

func (factory *GitFactory) Reload() error

type GitHubClient

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

func NewGithubClient

func NewGithubClient(host string, token string, org string, logger *zap.SugaredLogger, gitService GitService) (GitHubClient, error)

func (GitHubClient) CommitValues

func (impl GitHubClient) CommitValues(config *ChartConfig, bitbucketWorkspaceId string) (commitHash string, err error)

func (GitHubClient) CreateRepository

func (impl GitHubClient) CreateRepository(name, description, bitbucketWorkspaceId, bitbucketProjectKey string) (url string, isNew bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions)

func (GitHubClient) DeleteRepository added in v0.2.27

func (impl GitHubClient) DeleteRepository(name, userName, gitHubOrgName, azureProjectName string, repoOptions *bitbucket.RepositoryOptions) error

func (GitHubClient) GetRepoUrl

func (impl GitHubClient) GetRepoUrl(projectName string, repoOptions *bitbucket.RepositoryOptions) (repoUrl string, err error)

type GitLabClient

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

func (GitLabClient) CommitValues

func (impl GitLabClient) CommitValues(config *ChartConfig, bitbucketWorkspaceId string) (commitHash string, err error)

func (GitLabClient) CreateRepository

func (impl GitLabClient) CreateRepository(name, description, bitbucketWorkspaceId, bitbucketProjectKey string) (url string, isNew bool, detailedErrorGitOpsConfigActions DetailedErrorGitOpsConfigActions)

func (GitLabClient) DeleteProject

func (impl GitLabClient) DeleteProject(projectName string) (err error)

func (GitLabClient) DeleteRepository added in v0.2.27

func (impl GitLabClient) DeleteRepository(name, userName, gitHubOrgName, azureProjectName string, repoOptions *bitbucket.RepositoryOptions) error

func (GitLabClient) GetRepoUrl

func (impl GitLabClient) GetRepoUrl(projectName string, repoOptions *bitbucket.RepositoryOptions) (repoUrl string, err error)

type GitService

type GitService interface {
	Clone(url, targetDir string) (clonedDir string, err error)
	CommitAndPushAllChanges(repoRoot, commitMsg string) (commitHash string, err error)
	ForceResetHead(repoRoot string) (err error)
	CommitValues(config *ChartConfig) (commitHash string, err error)

	GetCloneDirectory(targetDir string) (clonedDir string)
	Pull(repoRoot string) (err error)
}

-------------------- go-git integration -------------------

type GitServiceImpl

type GitServiceImpl struct {
	Auth *http.BasicAuth
	// contains filtered or unexported fields
}

func NewGitServiceImpl

func NewGitServiceImpl(config *GitConfig, logger *zap.SugaredLogger, GitCliUtil *GitCliUtil) *GitServiceImpl

func (GitServiceImpl) Clone

func (impl GitServiceImpl) Clone(url, targetDir string) (clonedDir string, err error)

func (GitServiceImpl) CommitAndPushAllChanges

func (impl GitServiceImpl) CommitAndPushAllChanges(repoRoot, commitMsg string) (commitHash string, err error)

func (GitServiceImpl) CommitValues

func (impl GitServiceImpl) CommitValues(config *ChartConfig) (commitHash string, err error)

func (GitServiceImpl) ForceResetHead

func (impl GitServiceImpl) ForceResetHead(repoRoot string) (err error)

func (GitServiceImpl) GetCloneDirectory

func (impl GitServiceImpl) GetCloneDirectory(targetDir string) (clonedDir string)

func (GitServiceImpl) Pull

func (impl GitServiceImpl) Pull(repoRoot string) (err error)

type InternalServerError added in v0.3.6

type InternalServerError struct {
	E error
}

func (*InternalServerError) Error added in v0.3.6

func (err *InternalServerError) Error() string

type JsonPatchType

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

type K8sUtil

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

func NewK8sUtil

func NewK8sUtil(logger *zap.SugaredLogger) *K8sUtil

func (K8sUtil) CreateConfigMap added in v0.2.14

func (impl K8sUtil) CreateConfigMap(namespace string, cm *v1.ConfigMap, client *v12.CoreV1Client) (*v1.ConfigMap, error)

func (K8sUtil) CreateJob added in v0.3.7

func (impl K8sUtil) CreateJob(namespace string, name string, clusterConfig *ClusterConfig, job *batchV1.Job) error

func (K8sUtil) CreateNsIfNotExists

func (impl K8sUtil) CreateNsIfNotExists(namespace string, clusterConfig *ClusterConfig) (err error)

func (K8sUtil) CreateSecret added in v0.2.14

func (impl K8sUtil) CreateSecret(namespace string, data map[string][]byte, secretName string, client *v12.CoreV1Client) (*v1.Secret, error)

func (K8sUtil) DeleteAndCreateJob added in v0.3.7

func (impl K8sUtil) DeleteAndCreateJob(content []byte, namespace string, clusterConfig *ClusterConfig) error

DeleteAndCreateJob Deletes and recreates if job exists else creates the job

func (K8sUtil) DeleteJob added in v0.3.7

func (impl K8sUtil) DeleteJob(namespace string, name string, clusterConfig *ClusterConfig) error

func (K8sUtil) DeletePodByLabel added in v0.3.7

func (impl K8sUtil) DeletePodByLabel(namespace string, labels string, clusterConfig *ClusterConfig) error

func (K8sUtil) GetClient

func (impl K8sUtil) GetClient(clusterConfig *ClusterConfig) (*v12.CoreV1Client, error)

func (K8sUtil) GetClientForInCluster added in v0.2.14

func (impl K8sUtil) GetClientForInCluster() (*v12.CoreV1Client, error)

func (K8sUtil) GetClientSet added in v0.3.7

func (impl K8sUtil) GetClientSet(clusterConfig *ClusterConfig) (*kubernetes.Clientset, error)

func (K8sUtil) GetConfigMap

func (impl K8sUtil) GetConfigMap(namespace string, name string, client *v12.CoreV1Client) (*v1.ConfigMap, error)

func (K8sUtil) GetK8sDiscoveryClient added in v0.2.8

func (impl K8sUtil) GetK8sDiscoveryClient(clusterConfig *ClusterConfig) (*discovery.DiscoveryClient, error)

func (K8sUtil) GetK8sDiscoveryClientInCluster added in v0.2.14

func (impl K8sUtil) GetK8sDiscoveryClientInCluster() (*discovery.DiscoveryClient, error)

func (K8sUtil) GetSecret added in v0.2.14

func (impl K8sUtil) GetSecret(namespace string, name string, client *v12.CoreV1Client) (*v1.Secret, error)

func (K8sUtil) PatchConfigMap

func (impl K8sUtil) PatchConfigMap(namespace string, clusterConfig *ClusterConfig, name string, data map[string]interface{}) (*v1.ConfigMap, error)

func (K8sUtil) PatchConfigMapJsonType

func (impl K8sUtil) PatchConfigMapJsonType(namespace string, clusterConfig *ClusterConfig, name string, data interface{}, path string) (*v1.ConfigMap, error)

func (K8sUtil) UpdateConfigMap

func (impl K8sUtil) UpdateConfigMap(namespace string, cm *v1.ConfigMap, client *v12.CoreV1Client) (*v1.ConfigMap, error)

func (K8sUtil) UpdateSecret added in v0.2.14

func (impl K8sUtil) UpdateSecret(namespace string, secret *v1.Secret, client *v12.CoreV1Client) (*v1.Secret, error)

type LogConfig

type LogConfig struct {
	Level int `env:"LOG_LEVEL" envDefault:"0"`
}

type MergeUtil

type MergeUtil struct {
	Logger *zap.SugaredLogger
}

func (MergeUtil) ConfigMapMerge

func (m MergeUtil) ConfigMapMerge(appLevelConfigMapJson string, envLevelConfigMapJson string) (data string, err error)

func (MergeUtil) ConfigSecretMerge

func (m MergeUtil) ConfigSecretMerge(appLevelSecretJson string, envLevelSecretJson string, chartMajorVersion int, chartMinorVersion int) (data string, err error)

func (MergeUtil) JsonPatch

func (m MergeUtil) JsonPatch(target, patch []byte) (data []byte, err error)

//returns json representation of merged values

func (m MergeUtil) MergeOverride(helmValues string, override []byte) ([]byte, error) {
	cf, err := conflate.FromData([]byte(helmValues), override)
	if err != nil {
		m.Logger.Errorw("error in merging config",
			"original", helmValues,
			"override", override,
			"error", err)
		return nil, err
	}
	jsonBytes, err := cf.MarshalJSON()
	if err != nil {
		m.Logger.Errorw("error in marshaling yaml ",
			"cf", cf,
			"error", err)
		return nil, err
	}
	dst := new(bytes.Buffer)
	err = json.Compact(dst, jsonBytes)
	if err != nil {
		return nil, err
	}
	jsonBytes = dst.Bytes()
	m.Logger.Infow("merged config ",
		"original", helmValues,
		"override", override,
		"yaml", jsonBytes,
	)
	return jsonBytes, nil
}
func (m MergeUtil) MergeOverrideVal(data ...[]byte) ([]byte, error) {
	cf, err := conflate.FromData(data...)
	if err != nil {
		m.Logger.Errorw("error in merging config",
			"val", data,
			"error", err)
		return nil, err
	}
	jsonBytes, err := cf.MarshalJSON()
	if err != nil {
		m.Logger.Errorw("error in marshaling yaml ",
			"cf", cf,
			"error", err)
		return nil, err
	}
	dst := new(bytes.Buffer)
	err = json.Compact(dst, jsonBytes)
	if err != nil {
		return nil, err
	}
	jsonBytes = dst.Bytes()
	return jsonBytes, nil
}

merges two json objects

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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