Documentation ¶
Index ¶
Constants ¶
const SaveExpandedWriterKey = "expanded-writer"
SaveExpandedWriterKey define the key name for saving the expanded writer config
const SaveInputPropertiesKey = "input-properties"
SaveInputPropertiesKey define the key name for saving the input properties in the secret.
const SaveObjectReferenceKey = "objects-reference"
SaveObjectReferenceKey define the key name for saving the outputs objects reference metadata in the secret.
const SaveSchemaKey = "schema"
SaveSchemaKey define the key name for saving the API schema
const SaveTemplateKey = "template"
SaveTemplateKey define the key name for saving the config-template
const TemplateConfigMapNamePrefix = "config-template-"
TemplateConfigMapNamePrefix the prefix of the configmap name.
Variables ¶
var ErrChangeSecretType = errors.New("the secret type of the config can not be change")
ErrChangeSecretType means the secret type of the config can not be change
var ErrChangeTemplate = errors.New("the template of the config can not be change")
ErrChangeTemplate means the template of the config can not be change
var ErrConfigExist = errors.New("the config is exist")
ErrConfigExist means the config is exist.
var ErrConfigNotFound = errors.New("the config is not exist")
ErrConfigNotFound means the config is not exist
var ErrNoConfigOrTarget = errors.New("you must specify the config name and destination to distribute")
ErrNoConfigOrTarget means the config or the target is empty.
var ErrNotFoundDistribution = errors.New("the distribution is not found")
ErrNotFoundDistribution means the app of the distribution is not exist.
var ErrSensitiveConfig = errors.New("the config is sensitive")
ErrSensitiveConfig means this config can not be read directly.
var ErrTemplateNotFound = errors.New("the template is not exist")
ErrTemplateNotFound means the template is not exist
Functions ¶
func DefaultDistributionName ¶
DefaultDistributionName generate the distribution name by a config name
func IsFieldNotExist ¶
IsFieldNotExist check whether the error type is the field not found
Types ¶
type ClusterTarget ¶
type ClusterTarget struct { ClusterName string `json:"clusterName"` Namespace string `json:"namespace"` }
ClusterTarget kubernetes delivery target
type ClusterTargetStatus ¶
type ClusterTargetStatus struct { ClusterTarget Status string `json:"status"` Application NamespacedName `json:"application"` Message string `json:"message"` }
ClusterTargetStatus merge the status of the distribution
type Config ¶
type Config struct { Metadata CreateTime time.Time Template Template `json:"template"` // Secret this is default output way. Secret *v1.Secret `json:"secret"` // ExpandedWriterData ExpandedWriterData *writer.ExpandedWriterData `json:"expandedWriterData"` // OutputObjects this means users could define other objects. // This field assign value only on config render stage. OutputObjects map[string]*unstructured.Unstructured // ObjectReferences correspond OutputObjects ObjectReferences []v1.ObjectReference Targets []*ClusterTargetStatus }
Config this is the config model, generated from the template and properties.
type CreateDistributionSpec ¶
type CreateDistributionSpec struct { Configs []*NamespacedName Targets []*ClusterTarget }
CreateDistributionSpec the spec of the distribution
type Dispatcher ¶ added in v1.7.1
type Dispatcher func(context.Context, []*unstructured.Unstructured, []apply.ApplyOption) error
Dispatcher is a client for apply resources.
type Distribution ¶
type Distribution struct { Name string `json:"name"` Namespace string `json:"namespace"` CreatedTime time.Time `json:"createdTime"` Configs []*NamespacedName `json:"configs"` Targets []*ClusterTarget `json:"targets"` Application pkgtypes.NamespacedName `json:"application"` Status common.AppStatus `json:"status"` }
Distribution the config distribution model
type Factory ¶
type Factory interface { ParseTemplate(defaultName string, content []byte) (*Template, error) ParseConfig(ctx context.Context, template NamespacedName, meta Metadata) (*Config, error) LoadTemplate(ctx context.Context, name, ns string) (*Template, error) CreateOrUpdateConfigTemplate(ctx context.Context, ns string, it *Template) error DeleteTemplate(ctx context.Context, ns, name string) error ListTemplates(ctx context.Context, ns, scope string) ([]*Template, error) ReadConfig(ctx context.Context, namespace, name string) (map[string]interface{}, error) GetConfig(ctx context.Context, namespace, name string, withStatus bool) (*Config, error) ListConfigs(ctx context.Context, namespace, template, scope string, withStatus bool) ([]*Config, error) DeleteConfig(ctx context.Context, namespace, name string) error CreateOrUpdateConfig(ctx context.Context, i *Config, ns string) error IsExist(ctx context.Context, namespace, name string) (bool, error) CreateOrUpdateDistribution(ctx context.Context, ns, name string, ads *CreateDistributionSpec) error ListDistributions(ctx context.Context, ns string) ([]*Distribution, error) DeleteDistribution(ctx context.Context, ns, name string) error MergeDistributionStatus(ctx context.Context, config *Config, namespace string) error }
Factory handle the config
func NewConfigFactory ¶
NewConfigFactory create a config factory instance
func NewConfigFactoryWithDispatcher ¶ added in v1.7.1
func NewConfigFactoryWithDispatcher(cli client.Client, ds Dispatcher) Factory
NewConfigFactoryWithDispatcher create a config factory instance with a specified dispatcher
type Metadata ¶
type Metadata struct { NamespacedName Alias string `json:"alias,omitempty"` Description string `json:"description,omitempty"` Properties map[string]interface{} `json:"properties"` }
Metadata users should provide this model.
type NamespacedName ¶
NamespacedName the namespace and name model
type Template ¶
type Template struct { NamespacedName Alias string `json:"alias,omitempty"` Description string `json:"description,omitempty"` // Scope defines the usage scope of the configuration template. Provides two options: System or Namespace // System: The system users could use this template, and the config secret will save in the vela-system namespace. // Namespace: The config secret will save in the target namespace, such as this namespace belonging to one project. Scope string `json:"scope"` // Sensitive means this config config can not be read from the API or the workflow step, only support the safe way, such as Secret. Sensitive bool `json:"sensitive"` CreateTime time.Time `json:"createTime"` Template script.CUE `json:"template"` ExpandedWriter writer.ExpandedWriterConfig `json:"expandedWriter"` Schema *openapi3.Schema `json:"schema"` ConfigMap *v1.ConfigMap `json:"-"` }
Template This is the spec of the config template, parse from the cue script.