templates

package
v0.0.0-...-2ab8be3 Latest Latest
Warning

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

Go to latest
Published: Apr 25, 2024 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var CreateCmd = &cobra.Command{
	Use:   "create <file>",
	Short: "create from template file",
	Args:  cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		watch, _ := cmd.Flags().GetBool("wait")
		var err error
		createTemplate, err := LoadCreateTemplate(args[0])
		utility.LogError(err, "load template file failed", true)

		for _, server := range createTemplate.Servers {
			if server.Name == "" {
				logging.Fatal("invalid config, server name is empty")
			}
			if server.Flavor.Id == "" && server.Flavor.Name == "" {
				logging.Fatal("invalid config, server flavor is empty")
			}
			if server.Image.Id == "" && server.Image.Name == "" && len(server.BlockDeviceMappingV2) == 0 {
				logging.Fatal("invalid config, server image is empty")
			}
		}
		client := openstack.DefaultClient()
		for _, flavor := range createTemplate.Flavors {
			createFlavor(client, flavor)
		}
		for _, network := range createTemplate.Networks {
			createNetwork(client, network)
		}

		for _, server := range createTemplate.Servers {
			_, err := createServer(client, server, watch)
			utility.LogError(err, "create server failed", true)
		}
	},
}
View Source
var DeleteCmd = &cobra.Command{
	Use:   "delete <file>",
	Short: "delete resources of template file",
	Args:  cobra.ExactArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
		wait, _ := cmd.Flags().GetBool("wait")
		var err error
		createTemplate, err := LoadCreateTemplate(args[0])
		utility.LogError(err, "load template file failed", true)

		client := openstack.DefaultClient()
		for _, server := range createTemplate.Servers {
			deleteServer(client, server, wait)
		}
		for _, network := range createTemplate.Networks {
			deleteNetwork(client, network)
		}
		for _, flavor := range createTemplate.Flavors {
			deleteFlavor(client, flavor)
		}
	},
}

Functions

This section is empty.

Types

type BaseResource

type BaseResource struct {
	Name string
	Id   string
}

type BlockDeviceMappingV2

type BlockDeviceMappingV2 struct {
	BootIndex           int    `yaml:"bootIndex"`
	UUID                string `yaml:"uuid"`
	VolumeSize          uint16 `yaml:"volumeSize"`
	SourceType          string `yaml:"sourceType"`
	DestinationType     string `yaml:"destinationType"`
	VolumeType          string `yaml:"volumeType"`
	DeleteOnTermination bool   `yaml:"deleteOnTermination"`
}

type CreateTemplate

type CreateTemplate struct {
	Default  Default   `yaml:"default"`
	Flavors  []Flavor  `yaml:"flavors"`
	Networks []Network `yaml:"networks"`
	Servers  []Server  `yaml:"servers"`
}

func LoadCreateTemplate

func LoadCreateTemplate(file string) (*CreateTemplate, error)

type Default

type Default struct {
	ServerNamePrefix string `yaml:"serverNamePrefix"`
}

type Flavor

type Flavor struct {
	Id         string            `yaml:"id,omitempty"`
	Name       string            `yaml:"name,omitempty"`
	Vcpus      int               `yaml:"vcpus,omitempty"`
	Ram        int               `yaml:"ram,omitempty"`
	Disk       int               `yaml:"disk,omitempty"`
	Swap       int               `yaml:"swap,omitempty"`
	RXTXFactor float32           `yaml:"rxtx_factor,omitempty"`
	ExtraSpecs map[string]string `yaml:"extra_specs,omitempty"`
}

type Network

type Network struct {
	Name    string   `yaml:"name,omitempty"`
	Subnets []Subnet `yaml:"subnets,omitempty"`
}

type Nic

type Nic struct {
	Name string `yaml:"name"`
	UUID string `yaml:"uuid"`
	Port string `yaml:"port"`
}

type SecurityGroup

type SecurityGroup struct {
	Name string `yaml:"name,omitempty"`
}

type Server

type Server struct {
	Name     string `yaml:"name"`
	Flavor   BaseResource
	Image    BaseResource
	Networks []Nic `yaml:"networks"`

	AvailabilityZone     string                 `yaml:"availabilityZone"`
	Min                  uint16                 `yaml:"min"`
	Max                  uint16                 `yaml:"max"`
	BlockDeviceMappingV2 []BlockDeviceMappingV2 `yaml:"blockDeviceMappingV2,omitempty"`
	UserData             string                 `yaml:"userData"`
	SecurityGroups       []SecurityGroup        `yaml:"securityGroups,omitempty"`
}

type Subnet

type Subnet struct {
	Name      string `yaml:"name,omitempty"`
	Cidr      string `yaml:"cidr,omitempty"`
	IpVersion int    `yaml:"ipVersion,omitempty"`
}

Jump to

Keyboard shortcuts

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