utils

package
v0.0.0-...-2c539bb Latest Latest
Warning

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

Go to latest
Published: Mar 10, 2022 License: Apache-2.0 Imports: 48 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TerraformVariableString string = "string"
	TerraformVariableNumber string = "number"
	TerraformVariableBool   string = "bool"
	TerraformVariableList   string = "list"
	TerraformVariableTuple  string = "tuple"
	TerraformVariableMap    string = "map"
	TerraformVariableObject string = "object"
	TerraformVariableNull   string = ""
	TerraformVariableAny    string = "any"

	TerraformListTypePrefix   string = "list("
	TerraformTupleTypePrefix  string = "tuple("
	TerraformMapTypePrefix    string = "map("
	TerraformObjectTypePrefix string = "object("
	TerraformSetTypePrefix    string = "set("
)

data types of parameter value

View Source
const LabelPodSpecable = "workload.oam.dev/podspecable"

LabelPodSpecable defines whether a workload has podSpec or not.

Variables

View Source
var DefaultBackoff = wait.Backoff{
	Duration: 1 * time.Second,
	Factor:   2,
	Steps:    5,
	Jitter:   0.1,
}

DefaultBackoff is the backoff we use in controller

View Source
var ExtractComponentName = util.ExtractComponentName

ExtractComponentName will extract the componentName from a revisionName

Functions

func CheckDisabledCapabilities

func CheckDisabledCapabilities(disableCaps string) error

CheckDisabledCapabilities checks whether the disabled capability controllers are valid

func CompareWithRevision

func CompareWithRevision(ctx context.Context, c client.Client, componentName, nameSpace,
	latestRevision string, curCompSpec *v1alpha2.ComponentSpec) (bool, error)

CompareWithRevision compares a component's spec with the component's latest revision content

func ComputeSpecHash

func ComputeSpecHash(spec interface{}) (string, error)

ComputeSpecHash computes the hash value of a k8s resource spec

func ConstructRevisionName

func ConstructRevisionName(componentName string, revision int64) string

ConstructRevisionName will generate a revisionName given the componentName and revision will be <componentName>-v<RevisionNumber>, for example: comp-v1

func ConvertOpenAPISchema2SwaggerObject

func ConvertOpenAPISchema2SwaggerObject(data []byte) (*openapi3.Schema, error)

ConvertOpenAPISchema2SwaggerObject converts OpenAPI v2 JSON schema to Swagger Object

func DiscoveryFromPodSpec

func DiscoveryFromPodSpec(w *unstructured.Unstructured, fieldPath string) ([]intstr.IntOrString, error)

DiscoveryFromPodSpec will discover pods from podSpec

func DiscoveryFromPodTemplate

func DiscoveryFromPodTemplate(w *unstructured.Unstructured, fields ...string) ([]intstr.IntOrString, map[string]string, error)

DiscoveryFromPodTemplate not only discovery port, will also use labels in podTemplate

func ExtractRevision

func ExtractRevision(revisionName string) (int, error)

ExtractRevision will extract the revision from a revisionName

func FixOpenAPISchema

func FixOpenAPISchema(name string, schema *openapi3.Schema)

FixOpenAPISchema fixes tainted `description` filed, missing of title `field`.

func GenerateOpenAPISchemaFromDefinition

func GenerateOpenAPISchemaFromDefinition(definitionName, cueTemplate string) ([]byte, error)

GenerateOpenAPISchemaFromDefinition returns the parameter of a definition

func GetAppNextRevision

func GetAppNextRevision(app *v1beta1.Application) (string, int64)

GetAppNextRevision will generate the next revision name and revision number for application

func GetKubeSchematicOpenAPISchema

func GetKubeSchematicOpenAPISchema(params []commontypes.KubeParameter) ([]byte, error)

GetKubeSchematicOpenAPISchema gets OpenAPI v3 schema based on kube schematic parameters for component and trait definition

func GetOpenAPISchemaFromTerraformComponentDefinition

func GetOpenAPISchemaFromTerraformComponentDefinition(configuration string) ([]byte, error)

GetOpenAPISchemaFromTerraformComponentDefinition gets OpenAPI v3 schema by WorkloadDefinition name

func GetPodSpecPath

func GetPodSpecPath(workloadDef *v1alpha2.WorkloadDefinition) (string, bool)

GetPodSpecPath get podSpec field and label

func GetTerraformConfigurationFromRemote

func GetTerraformConfigurationFromRemote(name, remoteURL, remotePath string) (string, error)

GetTerraformConfigurationFromRemote gets Terraform Configuration(HCL)

func GetUnstructuredObjectStatusCondition

func GetUnstructuredObjectStatusCondition(obj *unstructured.Unstructured, condType string) (*condition.Condition, bool, error)

GetUnstructuredObjectStatusCondition returns the status.condition with matching condType from an unstructured object.

func PrepareParameterCue

func PrepareParameterCue(capabilityName, capabilityTemplate string) (string, error)

PrepareParameterCue cuts `parameter` section form definition .cue file

func RefreshPackageDiscover

func RefreshPackageDiscover(ctx context.Context, k8sClient client.Client, dm discoverymapper.DiscoveryMapper,
	pd *packages.PackageDiscover, definition runtime.Object) error

RefreshPackageDiscover help refresh package discover

func SelectOAMAppLabelsWithoutRevision

func SelectOAMAppLabelsWithoutRevision(labels map[string]string) map[string]string

SelectOAMAppLabelsWithoutRevision will filter and return OAM app labels only, if no labels, return the original one.

func StoreInSet

func StoreInSet(disableCaps string) mapset.Set

StoreInSet stores items in Set

Types

type CapabilityBaseDefinition

type CapabilityBaseDefinition struct {
}

CapabilityBaseDefinition is the base struct for CapabilityWorkloadDefinition and CapabilityTraitDefinition

func (*CapabilityBaseDefinition) CreateOrUpdateConfigMap

func (def *CapabilityBaseDefinition) CreateOrUpdateConfigMap(ctx context.Context, k8sClient client.Client, namespace,
	definitionName, definitionType string, labels map[string]string, appliedWorkloads []string, jsonSchema []byte, ownerReferences []metav1.OwnerReference) (string, error)

CreateOrUpdateConfigMap creates ConfigMap to store OpenAPI v3 schema or or updates data in ConfigMap

type CapabilityComponentDefinition

type CapabilityComponentDefinition struct {
	Name                string                      `json:"name"`
	ComponentDefinition v1beta1.ComponentDefinition `json:"componentDefinition"`

	WorkloadType    util.WorkloadType `json:"workloadType"`
	WorkloadDefName string            `json:"workloadDefName"`

	Helm      *commontypes.Helm      `json:"helm"`
	Kube      *commontypes.Kube      `json:"kube"`
	Terraform *commontypes.Terraform `json:"terraform"`
	CapabilityBaseDefinition
}

CapabilityComponentDefinition is the struct for ComponentDefinition

func NewCapabilityComponentDef

func NewCapabilityComponentDef(componentDefinition *v1beta1.ComponentDefinition) CapabilityComponentDefinition

NewCapabilityComponentDef will create a CapabilityComponentDefinition

func (*CapabilityComponentDefinition) GetOpenAPISchema

func (def *CapabilityComponentDefinition) GetOpenAPISchema(pd *packages.PackageDiscover, name string) ([]byte, error)

GetOpenAPISchema gets OpenAPI v3 schema by WorkloadDefinition name

func (*CapabilityComponentDefinition) StoreOpenAPISchema

func (def *CapabilityComponentDefinition) StoreOpenAPISchema(ctx context.Context, k8sClient client.Client,
	pd *packages.PackageDiscover, namespace, name, revName string) (string, error)

StoreOpenAPISchema stores OpenAPI v3 schema in ConfigMap from WorkloadDefinition

type CapabilityDefinitionInterface

type CapabilityDefinitionInterface interface {
	GetCapabilityObject(ctx context.Context, k8sClient client.Client, namespace, name string) (*types.Capability, error)
	GetOpenAPISchema(ctx context.Context, k8sClient client.Client, namespace, name string) ([]byte, error)
}

CapabilityDefinitionInterface is the interface for Capability (WorkloadDefinition and TraitDefinition)

type CapabilityStepDefinition

type CapabilityStepDefinition struct {
	Name           string                         `json:"name"`
	StepDefinition v1beta1.WorkflowStepDefinition `json:"stepDefinition"`

	CapabilityBaseDefinition
}

CapabilityStepDefinition is the Capability struct for WorkflowStepDefinition

func NewCapabilityStepDef

func NewCapabilityStepDef(stepdefinition *v1beta1.WorkflowStepDefinition) CapabilityStepDefinition

NewCapabilityStepDef will create a CapabilityStepDefinition

func (*CapabilityStepDefinition) GetOpenAPISchema

func (def *CapabilityStepDefinition) GetOpenAPISchema(pd *packages.PackageDiscover, name string) ([]byte, error)

GetOpenAPISchema gets OpenAPI v3 schema by StepDefinition name

func (*CapabilityStepDefinition) StoreOpenAPISchema

func (def *CapabilityStepDefinition) StoreOpenAPISchema(ctx context.Context, k8sClient client.Client, pd *packages.PackageDiscover, namespace, name string, revName string) (string, error)

StoreOpenAPISchema stores OpenAPI v3 schema from StepDefinition in ConfigMap

type CapabilityTraitDefinition

type CapabilityTraitDefinition struct {
	Name            string                  `json:"name"`
	TraitDefinition v1beta1.TraitDefinition `json:"traitDefinition"`

	DefCategoryType util.WorkloadType `json:"defCategoryType"`

	Kube *commontypes.Kube `json:"kube"`

	CapabilityBaseDefinition
}

CapabilityTraitDefinition is the Capability struct for TraitDefinition

func NewCapabilityTraitDef

func NewCapabilityTraitDef(traitdefinition *v1beta1.TraitDefinition) CapabilityTraitDefinition

NewCapabilityTraitDef will create a CapabilityTraitDefinition

func (*CapabilityTraitDefinition) GetOpenAPISchema

func (def *CapabilityTraitDefinition) GetOpenAPISchema(pd *packages.PackageDiscover, name string) ([]byte, error)

GetOpenAPISchema gets OpenAPI v3 schema by TraitDefinition name

func (*CapabilityTraitDefinition) StoreOpenAPISchema

func (def *CapabilityTraitDefinition) StoreOpenAPISchema(ctx context.Context, k8sClient client.Client, pd *packages.PackageDiscover, namespace, name string, revName string) (string, error)

StoreOpenAPISchema stores OpenAPI v3 schema from TraitDefinition in ConfigMap

type ErrNoSectionParameterInCue

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

ErrNoSectionParameterInCue means there is not parameter section in Cue template of a workload

func (ErrNoSectionParameterInCue) Error

Jump to

Keyboard shortcuts

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