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 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 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 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"` }
Click to show internal directories.
Click to hide internal directories.