Documentation
¶
Index ¶
- Constants
- type ArceusResourceDefinition
- type ArceusResourceDefinitionNames
- type ArceusResourceDefinitionSpec
- type ArceusResourceDefinitionVersion
- type ArceusResourceValidation
- type ExternalDocumentation
- type JSONOperation
- type JSONSchemaDefinitions
- type JSONSchemaDependencies
- type JSONSchemaProps
- type JSONSchemaPropsOrBool
- type JSONSchemaPropsOrStringArray
- type KValuePair
- type KValuePairs
- type Locale
- type ObjectMeta
- type PatchItem
- type QuickStart
- type QuickStartRule
- type QuickStartRuleSpec
- type QuickStartSpec
- type QuickStartSpecRule
- type Resource
- type RuleDefine
- type RuleRelate
- type RuleRelateFrom
- type RuleRelateTo
- type RuleSetting
- type RuleTemplateDefine
- type RuleTemplateResourceDefine
- type SettingTarget
- type SettingTargetField
- type TNode
- type TNodeDesc
- type Template
- type TemplateSpec
- type TemplateSpecTemplate
- type TypeMeta
Constants ¶
View Source
const ( NodeRoot = "root" NodeAPIVersion = "apiVersion" NodeKind = "kind" NodeMetadata = "metadata" )
View Source
const ( TypeObject = "object" TypeArray = "array" TypeString = "string" TypeNumber = "number" TypeBoolean = "boolean" )
View Source
const ( Group = "arceus" CustomGroup = "custom." + Group Version = "v1" Kind = "CustomResourceDefine" TemplateKind = "Template" QuickStartKind = "QuickStart" )
View Source
const TreeNodeArray = "-"
TODO change to #
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ArceusResourceDefinition ¶
type ArceusResourceDefinition struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
// spec describes how the user wants the resources to appear
Spec ArceusResourceDefinitionSpec `json:"spec"`
}
type ArceusResourceDefinitionNames ¶
type ArceusResourceDefinitionNames struct {
// plural is the plural name of the resource to serve.
// The custom resources are served under `/apis/<group>/<version>/.../<plural>`.
// Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).
// Must be all lowercase.
Plural string `json:"plural,omitempty"`
// singular is the singular name of the resource. It must be all lowercase. Defaults to lowercased `kind`.
// +optional
Singular string `json:"singular,omitempty"`
// shortNames are short names for the resource, exposed in API discovery documents,
// and used by clients to support invocations like `kubectl get <shortname>`.
// It must be all lowercase.
// +optional
ShortNames []string `json:"shortNames,omitempty"`
// kind is the serialized kind of the resource. It is normally CamelCase and singular.
// Custom resource instances will use this value as the `kind` attribute in API calls.
Kind string `json:"kind"`
// listKind is the serialized kind of the list for this resource. Defaults to "`kind`List".
// +optional
ListKind string `json:"listKind,omitempty" protobuf:"bytes,5,opt,name=listKind"`
// categories is a list of grouped resources this custom resource belongs to (e.g. 'all').
// This is published in API discovery documents, and used by clients to support invocations like
// `kubectl get all`.
// +optional
Categories []string `json:"categories,omitempty"`
}
type ArceusResourceDefinitionSpec ¶
type ArceusResourceDefinitionSpec struct {
// group is the API group of the defined custom resource.
// The custom resources are served under `/apis/<group>/...`.
// Must match the name of the CustomResourceDefinition (in the form `<names.plural>.<group>`).
Group string `json:"group" protobuf:"bytes,1,opt,name=group"`
// names specify the resource and kind names for the custom resource.
Names ArceusResourceDefinitionNames `json:"names" protobuf:"bytes,3,opt,name=names"`
// versions is the list of all API versions of the defined custom resource.
// Version names are used to compute the order in which served versions are listed in API discovery.
// If the version string is "kube-like", it will sort above non "kube-like" version strings, which are ordered
// lexicographically. "Kube-like" versions start with a "v", then are followed by a number (the major version),
// then optionally the string "alpha" or "beta" and another number (the minor version). These are sorted first
// by GA > beta > alpha (where GA is a version with no suffix such as beta or alpha), and then by comparing
// major version, then minor version. An example sorted list of versions:
// v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
Versions []ArceusResourceDefinitionVersion `json:"versions"`
}
type ArceusResourceDefinitionVersion ¶
type ArceusResourceDefinitionVersion struct {
// name is the version name, e.g. “v1”, “v2beta1”, etc.
// The custom resources are served under this version at `/apis/<group>/<version>/...` if `served` is true.
Name string `json:"name"`
// schema describes the schema used for validation, pruning, and defaulting of this version of the custom resource.
Schema *ArceusResourceValidation `json:"schema,omitempty"`
}
type ArceusResourceValidation ¶
type ArceusResourceValidation struct {
// openAPIV3Schema is the OpenAPI v3 schema to use for validation and pruning.
OpenAPIV3Schema *JSONSchemaProps `json:"openAPIV3Schema,omitempty"`
}
type ExternalDocumentation ¶
type ExternalDocumentation struct {
Description string `json:"description,omitempty" protobuf:"bytes,1,opt,name=description"`
URL string `json:"url,omitempty" protobuf:"bytes,2,opt,name=url"`
}
ExternalDocumentation allows referencing an external resource for extended documentation.
type JSONOperation ¶
type JSONSchemaDefinitions ¶
type JSONSchemaDefinitions map[string]JSONSchemaProps
JSONSchemaDefinitions contains the models explicitly defined in this spec.
type JSONSchemaDependencies ¶
type JSONSchemaDependencies map[string]JSONSchemaPropsOrStringArray
JSONSchemaDependencies represent a dependencies property.
type JSONSchemaProps ¶
type JSONSchemaProps struct {
ID string `json:"id,omitempty"`
// Schema represents a schema url.
Schema string `json:"$schema,omitempty"`
Ref *string `json:"$ref,omitempty"`
Description string `json:"description"`
Descriptions map[Locale]string `json:"descriptions,omitempty"`
Type string `json:"type,omitempty"`
// format is an OpenAPI v3 format string. Unknown formats are ignored. The following formats are validated:
//
// - bsonobjectid: a bson object ID, i.e. a 24 characters hex string
// - uri: an URI as parsed by Golang net/url.ParseRequestURI
// - email: an email address as parsed by Golang net/mail.ParseAddress
// - hostname: a valid representation for an Internet host name, as defined by RFC 1034, section 3.1 [RFC1034].
// - ipv4: an IPv4 IP as parsed by Golang net.ParseIP
// - ipv6: an IPv6 IP as parsed by Golang net.ParseIP
// - cidr: a CIDR as parsed by Golang net.ParseCIDR
// - mac: a MAC address as parsed by Golang net.ParseMAC
// - uuid: an UUID that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
// - uuid3: an UUID3 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
// - uuid4: an UUID4 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
// - uuid5: an UUID5 that allows uppercase defined by the regex (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
// - isbn: an ISBN10 or ISBN13 number string like "0321751043" or "978-0321751041"
// - isbn10: an ISBN10 number string like "0321751043"
// - isbn13: an ISBN13 number string like "978-0321751041"
// - creditcard: a credit card number defined by the regex ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11})$ with any non digit characters mixed in
// - ssn: a U.S. social security number following the regex ^\\d{3}[- ]?\\d{2}[- ]?\\d{4}$
// - hexcolor: an hexadecimal color code like "#FFFFFF: following the regex ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
// - rgbcolor: an RGB color code like rgb like "rgb(255,255,2559"
// - byte: base64 encoded binary data
// - password: any kind of string
// - date: a date string like "2006-01-02" as defined by full-date in RFC3339
// - duration: a duration string like "22 ns" as parsed by Golang time.ParseDuration or compatible with Scala duration format
// - datetime: a date time string like "2014-12-15T19:30:20.000Z" as defined by date-time in RFC3339.
Format string `json:"format,omitempty"`
Title string `json:"title,omitempty"`
// default is a default value for undefined object fields.
Default *string `json:"default,omitempty"`
Maximum *float64 `json:"maximum,omitempty"`
ExclusiveMaximum bool `json:"exclusiveMaximum,omitempty"`
Minimum *float64 `json:"minimum,omitempty"`
ExclusiveMinimum bool `json:"exclusiveMinimum,omitempty"`
MaxLength *int64 `json:"maxLength,omitempty"`
MinLength *int64 `json:"minLength,omitempty"`
Pattern string `json:"pattern,omitempty"`
MaxItems *int64 `json:"maxItems,omitempty"`
MinItems *int64 `json:"minItems,omitempty"`
UniqueItems bool `json:"uniqueItems,omitempty"`
MultipleOf *float64 `json:"multipleOf,omitempty"`
Enum []string `json:"enum,omitempty"`
MaxProperties *int64 `json:"maxProperties,omitempty"`
MinProperties *int64 `json:"minProperties,omitempty"`
Required []string `json:"required,omitempty"`
Items *JSONSchemaProps `json:"items,omitempty"`
AllOf []JSONSchemaProps `json:"allOf,omitempty"`
OneOf []JSONSchemaProps `json:"oneOf,omitempty"`
AnyOf []JSONSchemaProps `json:"anyOf,omitempty"`
Not *JSONSchemaProps `json:"not,omitempty"`
Properties map[string]JSONSchemaProps `json:"properties,omitempty"`
AdditionalProperties *JSONSchemaPropsOrBool `json:"additionalProperties,omitempty"`
PatternProperties map[string]JSONSchemaProps `json:"patternProperties,omitempty"`
Dependencies JSONSchemaDependencies `json:"dependencies,omitempty"`
AdditionalItems *JSONSchemaPropsOrBool `json:"additionalItems,omitempty"`
Definitions JSONSchemaDefinitions `json:"definitions,omitempty"`
ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"`
Example *string `json:"example,omitempty"`
Nullable bool `json:"nullable,omitempty"`
}
JSONSchemaProps is a JSON-Schema following Specification Draft 4 (http://json-schema.org/).
type JSONSchemaPropsOrBool ¶
type JSONSchemaPropsOrBool struct {
Allows bool `protobuf:"varint,1,opt,name=allows"`
Schema *JSONSchemaProps `protobuf:"bytes,2,opt,name=schema"`
}
JSONSchemaPropsOrBool represents JSONSchemaProps or a boolean value. Defaults to true for the boolean property.
type JSONSchemaPropsOrStringArray ¶
type JSONSchemaPropsOrStringArray struct {
Schema *JSONSchemaProps `protobuf:"bytes,1,opt,name=schema"`
Property []string `protobuf:"bytes,2,rep,name=property"`
}
JSONSchemaPropsOrStringArray represents a JSONSchemaProps or a string array.
type KValuePair ¶
type KValuePairs ¶
type KValuePairs []KValuePair
func ParseKValuePairs ¶
func ParseKValuePairs(values []string) KValuePairs
func (KValuePairs) Filter ¶
func (ps KValuePairs) Filter() KValuePairs
type ObjectMeta ¶
type QuickStart ¶
type QuickStart struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
// spec describes how the user wants the resources to appear
Spec QuickStartSpec `json:"spec"`
}
type QuickStartRule ¶
type QuickStartRule struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
// spec describes how the user wants the resources to appear
Spec QuickStartRuleSpec `json:"spec"`
}
type QuickStartRuleSpec ¶
type QuickStartRuleSpec struct {
Group string `json:"group"`
Version string `json:"version"`
Input JSONSchemaProps `json:"input"`
Templates []RuleTemplateDefine `json:"templates"`
Relate []RuleRelate `json:"relate"`
Defines []RuleDefine `json:"defines"`
Settings []RuleSetting `json:"settings"`
}
type QuickStartSpec ¶
type QuickStartSpec struct {
Rule []QuickStartSpecRule `json:"rule"`
Data string `json:"data"`
}
type QuickStartSpecRule ¶
type Resource ¶
type RuleDefine ¶
type RuleRelate ¶
type RuleRelate struct {
From RuleRelateFrom `json:"from"`
To RuleRelateTo `json:"to"`
}
type RuleRelateFrom ¶
type RuleRelateTo ¶
type RuleSetting ¶
type RuleSetting struct {
Path string `json:"path"`
Targets []SettingTarget `json:"targets"`
}
type RuleTemplateDefine ¶
type RuleTemplateDefine struct {
Name string `json:"name"`
Template RuleTemplateResourceDefine `json:"template"`
}
type SettingTarget ¶
type SettingTarget struct {
Name string `json:"name"` // template name
Sub string `json:"sub"` // template sub resource name
Fields []SettingTargetField `json:"fields"` // field path
}
type SettingTargetField ¶
type TNode ¶
type TNode struct {
Key string `json:"key"` // 全局唯一,格式为 index.path 如 pod.spec.containers.0.name
Name string `json:"name"` // 名称
Title string `json:"title"` // 节点标题
Type string `json:"type"` // 值类型
Value string `json:"value"` // 默认值
Descs []TNodeDesc `json:"descs"` // 描述(默认描述、中文描述)
Required []string `json:"required"` // 关联,仅在object节点定义
Enums []string `json:"enums"` // 枚举
Children []TNode `json:"children"` // 子节点
}
func BuildNode ¶
func BuildNode( patchSet map[string]*PatchItem, prop *apiextensionsV1.JSONSchemaProps, node *TNode, extras ...string, ) *TNode
type Template ¶
type Template struct {
TypeMeta `json:",inline"`
ObjectMeta `json:"metadata,omitempty"`
Spec TemplateSpec `json:"spec"`
}
type TemplateSpec ¶
type TemplateSpec struct {
Group string `json:"group"`
Version string `json:"version"`
Template []TemplateSpecTemplate `json:"template"`
}
type TemplateSpecTemplate ¶
Click to show internal directories.
Click to hide internal directories.