common

package
v0.3.0-alpha.2 Latest Latest
Warning

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

Go to latest
Published: Aug 5, 2021 License: Apache-2.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// DefaultProjectName represents the short app name
	DefaultProjectName = "myproject"
	// VolumePrefix defines the prefix to be used for volumes
	VolumePrefix = "vol"
	// DefaultStorageClassName defines the default storage class to be used
	DefaultStorageClassName = "default"
	// DefaultDirectoryPermission defines the default permission used when a directory is created
	DefaultDirectoryPermission os.FileMode = 0755
	// DefaultExecutablePermission defines the default permission used when an executable file is created
	DefaultExecutablePermission os.FileMode = 0744
	// DefaultFilePermission defines the default permission used when a non-executable file is created
	DefaultFilePermission os.FileMode = 0644
	// DefaultRegistryURL points to the default registry url that will be used
	DefaultRegistryURL = "quay.io"
	// ImagePullSecretPrefix is the prefix that will be prepended to pull secret name
	ImagePullSecretPrefix = "imagepullsecret"
	// QACacheFile defines the location of the QA cache file
	QACacheFile = types.AppNameShort + "qacache.yaml"
	// ConfigFile defines the location of the config file
	ConfigFile = types.AppNameShort + "config.yaml"
	// DefaultClusterType defines the default cluster type chosen by plan
	DefaultClusterType = "Kubernetes"
	// IgnoreFilename is the name of the file containing the ignore rules and exceptions
	IgnoreFilename = "." + types.AppNameShort + "ignore"
	// ExposeSelector tag is used to annotate services that are externally exposed
	ExposeSelector = types.GroupName + "/service.expose"
	// WindowsAnnotation tag is used tag a service to run on windows nodes
	WindowsAnnotation = types.GroupName + "/containertype.windows"
	// AnnotationLabelValue represents the value when an annotation is valid
	AnnotationLabelValue = "true"
	// DefaultServicePort is the default port that will be added to a service.
	DefaultServicePort int32 = 8080
	// TODOAnnotation is used to annotate with TODO tasks
	TODOAnnotation = types.GroupName + "/todo."
)
View Source
const (
	// Delim is the delimiter used to separate key segments
	Delim = "."
	// Special is the special case indicator of the multi-select problems
	Special = "[]"
	// MatchAll is used to set the default for a set of keys. Example: move2kube.services.*.ports=[8080]
	MatchAll = "*"

	// BaseKey is the prefix for every key
	BaseKey = types.AppName
	//ConfigServicesKey represents Services Key
	ConfigServicesKey = BaseKey + d + "services"
	//ConfigStoragesKey represents Storages Key
	ConfigStoragesKey = BaseKey + d + "storages"
	//ConfigMinReplicasKey represents Ingress host Key
	ConfigMinReplicasKey = BaseKey + d + "minreplicas"
	//ConfigPortsForServiceKeySegment represents the ports used for service
	ConfigPortsForServiceKeySegment = "ports"
	//ConfigPortForServiceKeySegment represents the port used for service
	ConfigPortForServiceKeySegment = "port"
	//ConfigAdditionalPortsForServiceKeySegment represents the ports used for service
	ConfigAdditionalPortsForServiceKeySegment = "additionalports"
	//ConfigAdditionalPortForServiceKeySegment represents the port used for service
	ConfigAdditionalPortForServiceKeySegment = "additionalport"
	//ConfigApacheConfFileForServiceKeySegment represents the conf file used for service
	ConfigApacheConfFileForServiceKeySegment = "apacheconfig"
	//ConfigModesKey represents modes Key
	ConfigModesKey = BaseKey + d + "modes"
	//ConfigSpawmContainersKey represents modes Key
	ConfigSpawmContainersKey = BaseKey + d + "spawncontainers"
	//ConfigTransformersKey represents transformers Key
	ConfigTransformersKey = BaseKey + d + "transformers"
	//ConfigTargetKey represents Target Key
	ConfigTargetKey = BaseKey + d + "target"
	//ConfigRepoKey represents Repo Key
	ConfigRepoKey = BaseKey + d + "repo"
	//ConfigContainerizationKeySegment represents Containerization Key segment
	ConfigContainerizationKeySegment = BaseKey + d + "containerization"
	//ConfigRepoKeysKey represents Repo Key
	ConfigRepoKeysKey = ConfigRepoKey + d + "keys"
	//ConfigRepoPubKey represents allow load of public key of repos Key
	ConfigRepoPubKey = ConfigRepoKeysKey + d + "pub"
	//ConfigRepoLoadPubDomainsKey represents allow load of public key per domain of repos Key
	ConfigRepoLoadPubDomainsKey = ConfigRepoPubKey + d + "domain"
	//ConfigRepoLoadPubKey represents allow load of public key of repos Key
	ConfigRepoLoadPubKey = ConfigRepoPubKey + d + "load"
	//ConfigRepoPrivKey represents allow load of private key of repos Key
	ConfigRepoPrivKey = ConfigRepoKeysKey + d + "priv"
	//ConfigRepoLoadPrivKey represents allow load of private key of repos Key
	ConfigRepoLoadPrivKey = ConfigRepoKeysKey + d + "load"
	//ConfigRepoKeyPathsKey represents paths of keyfiles
	ConfigRepoKeyPathsKey = ConfigRepoKeysKey + d + "paths"
	//ConfigTransformerTypesKey represents Transformers type Key
	ConfigTransformerTypesKey = ConfigTransformersKey + d + "types"
	//ConfigIngressKey represents Ingress Key
	ConfigIngressKey = ConfigTargetKey + d + "ingress"
	//ConfigIngressHostKey represents Ingress host Key
	ConfigIngressHostKey = ConfigIngressKey + d + "host"
	//ConfigIngressTLSKey represents ingress tls Key
	ConfigIngressTLSKey = ConfigIngressKey + d + "tls"
	//ConfigTargetClusterTypeKey represents target cluster type key
	ConfigTargetClusterTypeKey = ConfigTargetKey + d + "clustertype"
	//ConfigImageRegistryKey represents image registry Key
	ConfigImageRegistryKey = ConfigTargetKey + d + "imageregistry"
	//ConfigTargetExistingVersionUpdate represents key which how to update versions
	ConfigTargetExistingVersionUpdate = ConfigTargetKey + d + "existingversionupdate"
	//ConfigImageRegistryURLKey represents image registry url Key
	ConfigImageRegistryURLKey = ConfigImageRegistryKey + d + "url"
	//ConfigImageRegistryNamespaceKey represents image registry namespace Key
	ConfigImageRegistryNamespaceKey = ConfigImageRegistryKey + d + "namespace"
	//ConfigImageRegistryLoginTypeKey represents image registry login type Key
	ConfigImageRegistryLoginTypeKey = ConfigImageRegistryKey + d + "logintype"
	//ConfigImageRegistryPullSecretKey represents image registry pull secret Key
	ConfigImageRegistryPullSecretKey = ConfigImageRegistryKey + d + "pullsecret"
	//ConfigImageRegistryUserNameKey represents image registry login Username Key
	ConfigImageRegistryUserNameKey = ConfigImageRegistryKey + d + "username"
	//ConfigImageRegistryPasswordKey represents image registry login Password Key
	ConfigImageRegistryPasswordKey = ConfigImageRegistryKey + d + "password"
	//ConfigStoragesPVCForHostPathKey represents key for PVC for Host Path
	ConfigStoragesPVCForHostPathKey = ConfigStoragesKey + d + "pvcforhostpath"
	//ConfigStoragesPerClaimStorageClassKey represents key for having different storage class for claim
	ConfigStoragesPerClaimStorageClassKey = ConfigStoragesKey + d + "perclaimstorageclass"
	//ConfigServicesNamesKey represents Storages Key
	ConfigServicesNamesKey = ConfigServicesKey + d + Special + d + "enable"
	//ConfigContainerizationTypesKey represents source type Key
	ConfigContainerizationTypesKey = ConfigContainerizationKeySegment + d + "types"
	//ConfigServicesExposeKey represents Services Expose Key
	ConfigServicesExposeKey = ConfigServicesKey + d + Special + d + "expose"
)
View Source
const (
	// ServiceKind defines Service Kind
	ServiceKind = "Service"
	// DeploymentKind defines Deployment Kind
	DeploymentKind = "Deployment"
	// IngressKind defines Ingress Kind
	IngressKind = "Ingress"
)
View Source
const (
	// DefaultPlanFile defines default name for plan file
	DefaultPlanFile = types.AppNameShort + ".plan"
	// TempDirPrefix defines the prefix of the temp directory
	TempDirPrefix = types.AppNameShort + "-"
	// AssetsDir defines the dir of the assets temp directory
	AssetsDir = types.AppNameShort + "assets"
	// TransformDir defines the dir of the assets temp directory
	TransformDir = "transform"

	// ScriptsDir defines the directory where the output scripts are placed
	ScriptsDir = "scripts"
	// DefaultSourceDir defines the directory where the source files and folders are placed along with build scripts for each individual image
	DefaultSourceDir = "source"
	// DeployDir defines the directory where the deployment artifacts are placed
	DeployDir = "deploy"
	// CICDDir defines the directory where the deployment artifacts are placed
	CICDDir = "cicd"
	// HelmDir defines the directory where the helm charts are placed
	HelmDir = "helm-charts"
	// OCTemplatesDir defines the directory where the openshift templates are placed
	OCTemplatesDir = "openshift-templates"
)
View Source
const (
	// InfoLevelStr stores the info loggin level in string
	InfoLevelStr = "info"
)

Variables

View Source
var (
	// DefaultPVCSize stores the default PVC size
	DefaultPVCSize, _ = resource.ParseQuantity("100Mi")
	// IgnoreEnvironment indicates whether to ignore the current environment or not
	IgnoreEnvironment = false
)
View Source
var (
	// TempPath defines where all app data get stored during execution
	TempPath = TempDirPrefix + "temp"
	// AssetsPath defines where all assets get stored during execution
	AssetsPath = filepath.Join(TempPath, AssetsDir)
)

Functions

func CheckAndCopyCustomizations

func CheckAndCopyCustomizations(customizationsPath string)

CheckAndCopyCustomizations checks if the customizations path is an existing directory and copies to assets

func CleanAndFindCommonDirectory

func CleanAndFindCommonDirectory(paths []string) string

CleanAndFindCommonDirectory finds the common ancestor directory among a list of absolute paths. Cleans the paths you give it before finding the directory. Also see FindCommonDirectory

func ConvertInterfaceToSliceOfStrings added in v0.2.0

func ConvertInterfaceToSliceOfStrings(xI interface{}) ([]string, error)

ConvertInterfaceToSliceOfStrings converts an interface{} to a []string type. It can handle []interface{} as long as all the values are strings.

func CopyCustomizationsAssetsData

func CopyCustomizationsAssetsData(customizationsPath string) (err error)

CopyCustomizationsAssetsData copies an customizations to the assets directory

func CopyEmbedFSToDir

func CopyEmbedFSToDir(embedFS embed.FS, source, dest string, permissions map[string]int) (err error)

CopyEmbedFSToDir converts a string into a directory

func CopyFile

func CopyFile(dst, src string) error

CopyFile copies a file from src to dst. The dst file will be truncated if it exists. Returns an error if it failed to copy all the bytes.

func CreateAssetsData

func CreateAssetsData(assetsFS embed.FS, permissions map[string]int) (assetsPath string, tempPath string, err error)

CreateAssetsData creates an assets directory and dumps the assets data into it

func FindCommonDirectory

func FindCommonDirectory(paths []string) string

FindCommonDirectory finds the common ancestor directory among a list of cleaned absolute paths. Will not clean the paths you give it before trying to find the directory. Also see CleanAndFindCommonDirectory

func GatherGitInfo

func GatherGitInfo(path string) (repoName, repoDir, repoHostName, repoURL, repoBranch string, err error)

GatherGitInfo tries to find the git repo for the path if one exists.

func GetClosestMatchingString

func GetClosestMatchingString(options []string, searchstring string) string

GetClosestMatchingString returns the closest matching string for a given search string

func GetFilesByExt

func GetFilesByExt(inputPath string, exts []string) ([]string, error)

GetFilesByExt returns files by extension

func GetFilesByName

func GetFilesByName(inputPath string, names []string) ([]string, error)

GetFilesByName returns files by name

func GetImageNameAndTag

func GetImageNameAndTag(image string) (string, string)

GetImageNameAndTag splits an image full name and returns the image name and tag

func GetLogLevel

func GetLogLevel(loglevel string) logrus.Level

GetLogLevel converts from string logging level to logrus logging level

func GetMapInterfaceFromObj

func GetMapInterfaceFromObj(obj interface{}) (mapobj interface{}, err error)

GetMapInterfaceFromObj converts a struct to map[string]interface{} using yaml marshaller

func GetObjFromInterface

func GetObjFromInterface(obj interface{}, loadinto interface{}) error

GetObjFromInterface loads from map[string]interface{} to struct

func GetRuntimeObjectMetadata added in v0.2.0

func GetRuntimeObjectMetadata(obj runtime.Object) metav1.ObjectMeta

GetRuntimeObjectMetadata returns the metadata field from a k8s object.

func GetSHA256Hash

func GetSHA256Hash(s string) string

GetSHA256Hash returns the SHA256 hash of the string. The hash is 256 bits/32 bytes and encoded as a 64 char hexadecimal string.

func GetStringFromTemplate

func GetStringFromTemplate(tpl string, config interface{}) (string, error)

GetStringFromTemplate returns string for a template

func GetUnixPath

func GetUnixPath(path string) string

GetUnixPath return Unix Path for any path

func GetWindowsPath

func GetWindowsPath(path string) string

GetWindowsPath return Windows Path for any path

func Interrupt

func Interrupt() error

Interrupt creates SIGINT signal

func IsInt32Present

func IsInt32Present(list []int32, value int32) bool

IsInt32Present checks if a value is present in a slice

func IsIntPresent

func IsIntPresent(list []int, value int) bool

IsIntPresent checks if a value is present in a slice

func IsParent added in v0.2.0

func IsParent(child, parent string) bool

IsParent can be used to check if a path is one of the parent directories of another path. Also returns true if the paths are the same.

func IsSameRuntimeObject added in v0.2.0

func IsSameRuntimeObject(obj1, obj2 runtime.Object) bool

IsSameRuntimeObject returns true if the 2 k8s resources are same. 2 resources are the same if they have the same group, version, kind, namespace and name. Also prints an error if the 2 objects have the same kind, namespace and name but different group versions.

func IsStringPresent

func IsStringPresent(list []string, value string) bool

IsStringPresent checks if a value is present in a slice

func MakeFileNameCompliant

func MakeFileNameCompliant(name string) string

MakeFileNameCompliant returns a DNS-1123 standard string Motivated by https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#syntax-and-character-set Also see page 1 "ASSUMPTIONS" heading of https://tools.ietf.org/html/rfc952 Also see page 13 of https://tools.ietf.org/html/rfc1123#page-13

func MakeStringContainerImageNameCompliant

func MakeStringContainerImageNameCompliant(s string) string

MakeStringContainerImageNameCompliant makes the string into a valid image name.

func MakeStringDNSLabelNameCompliant

func MakeStringDNSLabelNameCompliant(s string) string

MakeStringDNSLabelNameCompliant makes the string a valid DNS label name. See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-label-names 1. contain at most 63 characters 2. contain only lowercase alphanumeric characters or '-' 3. start with an alphanumeric character 4. end with an alphanumeric character

func MakeStringDNSNameCompliant

func MakeStringDNSNameCompliant(s string) string

MakeStringDNSNameCompliant makes the string into a valid DNS name.

func MakeStringDNSSubdomainNameCompliant

func MakeStringDNSSubdomainNameCompliant(s string) string

MakeStringDNSSubdomainNameCompliant makes the string a valid DNS subdomain name. See https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names 1. contain no more than 253 characters 2. contain only lowercase alphanumeric characters, '-' or '.' 3. start with an alphanumeric character 4. end with an alphanumeric character

func MakeStringEnvNameCompliant

func MakeStringEnvNameCompliant(s string) string

MakeStringEnvNameCompliant makes the string into a valid Environment variable name.

func MarshalObjToYaml added in v0.2.0

func MarshalObjToYaml(obj runtime.Object) ([]byte, error)

MarshalObjToYaml marshals an object to yaml

func MergeInt32Slices

func MergeInt32Slices(slice1 []int32, slice2 []int32) []int32

MergeInt32Slices merges two int slices

func MergeIntSlices

func MergeIntSlices(slice1 []int, slice2 []int) []int

MergeIntSlices merges two int slices

func MergeStringMaps

func MergeStringMaps(map1 map[string]string, map2 map[string]string) map[string]string

MergeStringMaps merges two string maps

func MergeStringSliceMaps

func MergeStringSliceMaps(map1 map[string][]string, map2 map[string][]string) map[string][]string

MergeStringSliceMaps merges two string slice maps

func MergeStringSlices

func MergeStringSlices(slice1 []string, slice2 ...string) []string

MergeStringSlices merges two string slices

func NormalizeForFilename

func NormalizeForFilename(name string) string

NormalizeForFilename normalizes a string to only filename valid characters

func NormalizeForServiceName

func NormalizeForServiceName(svcName string) string

NormalizeForServiceName converts the string to be compatible for service name

func ObjectToYamlBytes added in v0.2.0

func ObjectToYamlBytes(data interface{}) ([]byte, error)

ObjectToYamlBytes encodes an object to yaml

func ReadJSON

func ReadJSON(file string, data interface{}) error

ReadJSON reads an json into an object

func ReadMove2KubeYaml

func ReadMove2KubeYaml(path string, out interface{}) error

ReadMove2KubeYaml reads move2kube specific yaml files (like m2k.plan) into an struct. It checks if apiVersion to see if the group is move2kube and also reports if the version is different from the expected version.

func ReadMove2KubeYamlStrict

func ReadMove2KubeYamlStrict(path string, out interface{}, kind string) error

ReadMove2KubeYamlStrict is like ReadMove2KubeYaml but returns an error when it finds unknown fields in the yaml

func ReadYaml

func ReadYaml(file string, data interface{}) error

ReadYaml reads an yaml into an object

func ReverseInPlace added in v0.2.0

func ReverseInPlace(xs []string)

ReverseInPlace reverses a slice of strings in place.

func SplitOnDotExpectInsideQuotes added in v0.2.0

func SplitOnDotExpectInsideQuotes(s string) []string

SplitOnDotExpectInsideQuotes splits a string on dot. Stuff inside double or single quotes will not be split.

func SplitYAML added in v0.2.0

func SplitYAML(rawYAML []byte) ([][]byte, error)

SplitYAML splits a file into multiple YAML documents.

func StripQuotes added in v0.2.0

func StripQuotes(s string) string

StripQuotes strips a single layer of double or single quotes from the left and right ends Example: "github.com" -> github.com Example: 'github.com' -> github.com Example: "'github.com'" -> 'github.com'

func UniqueStrings

func UniqueStrings(xs []string) []string

UniqueStrings returns a new slice with only the unique strings from the input slice.

func WriteJSON

func WriteJSON(outputPath string, data interface{}) error

WriteJSON writes an json to disk

func WriteYaml

func WriteYaml(outputPath string, data interface{}) error

WriteYaml writes encodes object as yaml and writes it to a file

func YamlAttrPresent

func YamlAttrPresent(path string, attr string) (bool, interface{})

YamlAttrPresent returns YAML attributes

Types

type CleanupHook

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

CleanupHook calls the cleanup functions on fatal and panic errors

func NewCleanupHook

func NewCleanupHook(ctxContextFn context.CancelFunc) *CleanupHook

NewCleanupHook creates a cleanup hook

func (*CleanupHook) Fire

func (hook *CleanupHook) Fire(entry *logrus.Entry) error

Fire calls the clean up

func (*CleanupHook) Levels

func (hook *CleanupHook) Levels() []logrus.Level

Levels returns the levels on which the cleanup hook gets called

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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