Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Field ¶
type Field struct { // Path is a "field path" that indicates where the field's value can be // found within the Resource. Path *fieldpath.Path `json:"-"` // ignored in JSON as map keys are paths // Config contains the configuration options for this field Config *config.FieldConfig `json:"-"` // Definition contains metadata about the field's type Definition *FieldDefinition }
Field represents a single field in the Resource's Schema.
func NewField ¶
func NewField( path *fieldpath.Path, cfg *config.FieldConfig, def *FieldDefinition, ) *Field
NewField returns an initialized Field from a field path, configuration and FieldDefinition. We normalize each part of the supplied field path, so for example, "RegistryId" becomes "RegistryID" and "EncryptionConfig.KmsKeyId" becomes "EncryptionConfig.KMSKeyID".
type FieldDefinition ¶
type FieldDefinition struct { // Type is the underlying type of the field. Type schema.FieldType `json:"type"` // ElementType is the type of the list's elements. // // If Type is FieldTypeList, the ElementType() method is guaranteed to // return the type of the list element. If Type is not FieldTypeList, // ElementType is guaranteed to be FieldTypeNil. ElementType schema.FieldType `json:"element_type,omitempty"` // ValueType is the type of the map's values. // // If Type is FieldTypeMap, the ValueType() method is guaranteed to return // the type of the map values. If Type is not FieldTypeMap, ValueType will // always return FieldTypeNil ValueType schema.FieldType `json:"value_type,omitempty"` // KeyType is the type of the map's keys. // // If Type is FieldTypeMap, the KeyType() method is guaranteed to return // the type of the map keys. If Type is not FieldTypeMap, KeyType will // always return FieldTypeNil KeyType schema.FieldType `json:"key_type,omitempty"` // MemberFieldDefinitions is a map, keyed by member field name, of nested // FieldDefinitions when this Field has a Type of FieldTypeStruct. Returns // nil when Type is not FieldTypeStruct. MemberFieldDefinitions map[string]*FieldDefinition `json:"member_field_definitions,omitempty"` // IsRequired is true if the field is required to be set by the user IsRequired bool `json:"is_required,omitempty"` // IsReadOnly is true if the field is not settable by the user IsReadOnly bool `json:"is_read_only,omitempty"` // IsImmutable is true if the field cannot be changed once set IsImmutable bool `json:"is_immutable,omitempty"` // IsLateInitialized is true if the field is "late initialized" // with a service-side default value IsLateInitialized bool `json:"is_late_initialized,omitempty"` // IsSecret is true if the field contains secret information IsSecret bool `json:"is_secret,omitempty"` // References contains the Kind for a referred type if the field contains a // reference to another resource, or nil otherwise. // // For example, consider a Resource `rds.aws/DBInstance` with a field // `Subnets`. This field contains EC2 VPC Subnet identifiers. The Type() of // this field would be FieldTypeList. The ElementType() of this field would // be FieldTypeString. The References() of this field would return a Kind // containing "ec2.aws/Subnet". References *Kind `json:"references,omitempty"` }
FieldDefinition represents a type of Field in a Resource's Schema. Note that multiple Fields can have the same FieldDefinition but will never have the same FieldDefinition *and* Path.
type Kind ¶
type Kind struct { // CloudProvider contains the short name of the cloud provider exposing // this type of Resource CloudProvider string // ServiceName contains the short name of the service exposing this type of // Resource Service string // Name contains the camel-cased name of the resource (i.e. the Kind, in // Kubernetes speak). // // Note that the combination of CloudProvider, Service and Name is a unique // identifier for this type of Resource. Name string // PluralName contains the camel-cased name of the pluralized resource. // // Note that the combination of CloudProvider, Service and PluralName is a // unique identifier for this type of Resource. PluralName string }
Kind describes a provider-specific, service-specific type of Resource
type ResourceDefinition ¶
type ResourceDefinition struct { // Config contains the resource-specific configuration options Config *config.ResourceConfig `json:"-"` // Kind is the type of Resource Kind Kind // Fields is a map, keyed by the **field path**, of Field objects // representing a field in the Resource. Fields map[string]*Field }
ResourceDefinition describes a single top-level resource in a cloud service API
func NewResourceDefinition ¶
func NewResourceDefinition( cfg *config.ResourceConfig, kind Kind, ) *ResourceDefinition
NewResourceDefinition returns a pointer to a new ResourceDefinition that describes a single top-level resource in a cloud service API. Add fields to the ResourceDefinition by calling the AddField method.
func (*ResourceDefinition) AddField ¶
func (d *ResourceDefinition) AddField(f *Field)
AddField adds a new Field to the resource definition at the supplied field path
func (*ResourceDefinition) GetField ¶
func (d *ResourceDefinition) GetField(path *fieldpath.Path) *Field
GetField returns a Field given a field path. The search is case-insensitive
func (*ResourceDefinition) GetFieldPaths ¶
func (d *ResourceDefinition) GetFieldPaths() []*fieldpath.Path
FieldPaths returns a sorted list of field paths for this resource.