v0

package
v0.0.9 Latest Latest
Warning

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

Go to latest
Published: May 31, 2021 License: Apache-2.0 Imports: 7 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AwsBIParamsValidation

func AwsBIParamsValidation(sl validator.StructLevel)

Types

type Config

type Config struct {
	Kind    *string  `json:"kind" validate:"required,eq=awsbi"`
	Version *string  `json:"version" validate:"required,version=~0"`
	Params  *Params  `json:"params" validate:"required,dive"`
	Unused  []string `json:"-"`
}

func NewConfig

func NewConfig() *Config

TODO test

func (*Config) Marshal

func (c *Config) Marshal() ([]byte, error)

func (*Config) Unmarshal

func (c *Config) Unmarshal(b []byte) (err error)

type DataDisk

type DataDisk struct {
	DeviceName *string `json:"device_name" validate:"required,min=1"` // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/volume_attachment#device_name
	GbSize     *int    `json:"disk_size_gb" validate:"required,min=1"`
	Type       *string `json:"type" validate:"required,eq=standard|eq=gp2|eq=gp3|eq=io1|eq=io2|eq=sc1|eq=st1"` // https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ebs_volume#type
}

type Output

type Output struct {
	VpcId             *string         `json:"vpc_id"`
	PrivateSubnetIds  []string        `json:"private_subnet_ids"`
	PublicSubnetIds   []string        `json:"public_subnet_ids"`
	PrivateRouteTable *string         `json:"private_route_table"`
	VmGroups          []OutputVmGroup `json:"vm_groups"`
}

type OutputDataDisk

type OutputDataDisk struct {
	Size       *int    `json:"size"`
	DeviceName *string `json:"device_name"`
}

type OutputVm

type OutputVm struct {
	Name      *string          `json:"name"`
	PublicIp  *string          `json:"public_ip"`
	PrivateIp *string          `json:"private_ip"`
	DataDisks []OutputDataDisk `json:"data_disks"`
}

type OutputVmGroup

type OutputVmGroup struct {
	Name *string    `json:"name"`
	Vms  []OutputVm `json:"vms"`
}

type Params

type Params struct {
	Name                  *string `json:"name" validate:"required,min=1"`
	Region                *string `json:"region" validate:"required,min=1"`
	NatGatewayCount       *int    `json:"nat_gateway_count" validate:"required,min=0"`
	VirtualPrivateGateway *bool   `json:"virtual_private_gateway" validate:"required"`

	RsaPublicKeyPath *string `json:"rsa_pub_path" validate:"required,min=1"`

	VpcAddressSpace *string         `json:"vpc_address_space" validate:"required,min=1,cidr"`
	Subnets         *Subnets        `json:"subnets" validate:"required,dive,omitempty"`
	SecurityGroups  []SecurityGroup `json:"security_groups" validate:"required,dive"`
	VmGroups        []VmGroup       `json:"vm_groups" validate:"required,dive"`
}

type Rules

type Rules struct {
	Ingress []SecurityRule `json:"ingress" validate:"omitempty,min=1,dive,required"`
	Egress  []SecurityRule `json:"egress" validate:"omitempty,min=1,dive,required"`
}

type SecurityGroup

type SecurityGroup struct {
	Name  *string `json:"name" validate:"required,min=1"`
	Rules *Rules  `json:"rules" validate:"required,dive"`
}

type SecurityRule

type SecurityRule struct {
	Protocol   *string  `json:"protocol" validate:"required,min=1"`
	FromPort   *int     `json:"from_port" validate:"required,min=0"`
	ToPort     *int     `json:"to_port" validate:"required,min=0"`
	CidrBlocks []string `json:"cidr_blocks" validate:"omitempty,min=1,dive,required,cidr"`
}

type Subnet

type Subnet struct {
	Name             *string `json:"name" validate:"required,min=1"`
	AvailabilityZone *string `json:"availability_zone" validate:"required,min=1"`
	AddressPrefixes  *string `json:"address_prefixes" validate:"required,min=1,cidr"`
}

type Subnets

type Subnets struct {
	Private []Subnet `json:"private" validate:"required_without=Public"`
	Public  []Subnet `json:"public" validate:"required_without=Private"`
}

type VmGroup

type VmGroup struct {
	Name               *string    `json:"name" validate:"required,min=1"`
	VmCount            *int       `json:"vm_count" validate:"required,min=1"`
	VmSize             *string    `json:"vm_size" validate:"required,min=1"`
	UsePublicIp        *bool      `json:"use_public_ip" validate:"required"`
	SubnetNames        []string   `json:"subnet_names" validate:"omitempty,min=1,dive,required"`
	SecurityGroupNames []string   `json:"sg_names" validate:"omitempty,min=1,dive,required"`
	VmImage            *VmImage   `json:"vm_image" validate:"required,dive"`
	RootVolumeGbSize   *int       `json:"root_volume_size" validate:"required,min=1"`
	DataDisks          []DataDisk `json:"data_disks" validate:"omitempty,dive"`
}

type VmImage

type VmImage struct {
	AMI   *string `json:"ami" validate:"required,min=1"`
	Owner *string `json:"owner" validate:"required,min=1"`
}

Jump to

Keyboard shortcuts

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