config

package
v0.0.0-...-9dcacef Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2023 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func WithPath

func WithPath(path string) option

func WithYAML

func WithYAML(yaml string) option

Types

type AWSFieldConfig

type AWSFieldConfig struct {
}

AWSFieldConfig contains AWS-specific configuration options for this resource

type AWSResourceConfig

type AWSResourceConfig struct {
	// Operations contains a list of overrides for this resource's operations
	Operations []*AWSResourceOperationConfig `json:"operations"`
}

AWSResourceConfig contains AWS-specific configuration options for this resource

type AWSResourceOperationConfig

type AWSResourceOperationConfig struct {
	// Type contains the stringified OpType, e.g. "create" or "READ_ONE"
	Type string `json:"type"`
	// ID contains the ID/name of the AWS SDK Operation that will serve as the
	// OpType for this resource.
	ID string `json:"id"`
}

AWSResourceOperationConfig instructs the generator which AWS SDK Operation to use for which type of operation for this resource.

type Config

type Config struct {
	// Cloud specifies the cloud service that publishes this resource.
	Cloud string `json:"cloud"`
	// Resources contains generator instructions for individual CRDs within an
	// API
	Resources map[string]*ResourceConfig `json:"resources"`
}

Config represents instructions to grm-generate on how to inspect a cloud service API model, how to generate the consistent grm model for that API and how to generate a resource manager that can manage resources in that API.

func New

func New(
	opts ...option,
) *Config

New returns a new Config object given a supplied path to a config file

func (*Config) GetResourceConfig

func (c *Config) GetResourceConfig(search string) *ResourceConfig

GetResourceConfig returns a ResourceConfig matching the supplied resource name, using case-insensitive matching.

func (*Config) GetResourceConfigs

func (c *Config) GetResourceConfigs() map[string]*ResourceConfig

GetResourceConfigs returns the map, keyed by resource name, of ResourceConfigs, or an empty map if the config is nil

type FieldConfig

type FieldConfig struct {
	// Renames instructs the code generator to consider the field to be a
	// rename of one or more names.
	//
	// For example, suppose we are writing a configuration block for the S3
	// Bucket resource. The CreateBucket's Input shape has a Bucket member and
	// through the normal course of API discovery/inference, the Bucket
	// resource would get a field called "Bucket" added to it. If we wanted to
	// rename that to just "Name", we could do the following:
	//
	// “`yaml
	// resources:
	//   Bucket:
	//     fields:
	//       Name:
	//         renames:
	//           - Bucket
	// “`
	//
	// Any time the generator sees the name "Bucket", it will automatically
	// know that the "Name" field is what should be referred to.
	Renames []string `json:"renames,omitempty"`
	// Type *overrides* the type of the field. This is required for custom
	// fields that are not inferred either as a Create Input/Output shape or
	// via the SourceFieldConfig attribute.
	//
	// As an example, assume you have a Role resource where you want to add a
	// custom field called Policies that is a slice of string pointers.
	//
	// The config snippet might look like this:
	//
	// “`yaml
	// resources:
	//   Role:
	//     fields:
	//       Policies:
	//         type: list
	//         element_type: string
	// “`
	Type *string `json:"type,omitempty"`
	// ElementType *overrides* the element type of the field when the field is
	// of type FieldTypeList.
	ElementType *string `json:"element_type,omitempty"`
	// KeyType *overrides* the key type of the field when the field is
	// of type FieldTypeMap.
	KeyType *string `json:"key_type,omitempty"`
	// ValueType *overrides* the value type of the field when the field is
	// of type FieldTypeMap.
	ValueType *string `json:"value_type,omitempty"`
	// IsReadOnly indicates the field's value can not be set by a user
	IsReadOnly *bool `json:"is_read_only,omitempty"`
	// Required indicates whether this field is a required member or not.
	IsRequired *bool `json:"is_required,omitempty"`
	// IsSecret instructs the code generator that this field's value should be
	// considered a secret
	IsSecret *bool `json:"is_secret,omitempty"`
	// IsImmutable instructs the code generator to treat the field as immutable
	// after resource is initially created.
	IsImmutable *bool `json:"is_immutable,omitempty"`
	// AWS returns the AWS-specific field configuration
	AWS *AWSFieldConfig `json:"aws,omitempty"`
}

FieldConfig represents instructions to grm-generate on how to deal with a particular resource field.

func (*FieldConfig) ForAWS

func (c *FieldConfig) ForAWS() *AWSFieldConfig

ForAWS returns the AWS-specific field configuration

type ResourceConfig

type ResourceConfig struct {
	// Fields contains a map, keyed by field path, of field configurations
	Fields map[string]*FieldConfig `json:"fields"`
	// AWS returns the AWS-specific resource configuration
	AWS *AWSResourceConfig `json:"aws,omitempty"`
}

ResourceConfig represents instructions to grm-generate on how to deal with a particular resource.

func (*ResourceConfig) ForAWS

func (c *ResourceConfig) ForAWS() *AWSResourceConfig

ForAWS returns the AWS-specific resource configuration

func (*ResourceConfig) GetFieldConfig

func (c *ResourceConfig) GetFieldConfig(
	path *fieldpath.Path,
) (*FieldConfig, *fieldpath.Path)

GetFieldConfig returns the FieldConfig for a specified field path. This method uses case-insensitive matching AND takes into account any renames that a field might have. If the supplied path matched a renamed field, returns the *renamed* field path as the second return value. If the field is not renamed, nil is returned for the second return value.

For example, assume the following configuration snippet:

```yaml resources:

Bucket:
  fields:
    Name:
      renames:
        - Bucket

```

Calling Bucket ResourceConfig's GetFieldConfig("Bucket") would return the FieldConfig struct for the "Name" field, since it has renames for "Bucket" along with a fieldpath.FromString("Name")

func (*ResourceConfig) GetFieldConfigs

func (c *ResourceConfig) GetFieldConfigs() map[string]*FieldConfig

GetFieldConfigs returns a map, keyed by field path, of field configurations

Jump to

Keyboard shortcuts

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