import ( "fmt" "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/keypairs" "github.com/jrperritt/rack/util" ) var remove = cli.Command{ Name: "delete", Usage: util.Usage(commandPrefix, "delete", "[--name <keypairName> | --stdin name]"), Description: "Deletes a keypair", Action: actionDelete, Flags: commandoptions.CommandFlags(flagsDelete, keysDelete), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsDelete, keysDelete)) }, } func flagsDelete() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "[optional; required if `stdin` isn't provided] The name of the keypair", }, cli.StringFlag{ Name: "stdin", Usage: "[optional; required if `name` isn't provided] The field being piped into STDIN. Valid values are: name", },
"github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/fatih/structs" osKeypairs "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/compute/v2/extensions/keypairs" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/keypairs" "github.com/jrperritt/rack/util" ) var generate = cli.Command{ Name: "generate", Usage: util.Usage(commandPrefix, "generate", "[--name <keypairName> | --stdin name]"), Description: "Generates a keypair", Action: actionGenerate, Flags: commandoptions.CommandFlags(flagsGenerate, keysGenerate), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsGenerate, keysGenerate)) }, } func flagsGenerate() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "[optional; required if `stdin` isn't provided] The name of the keypair", }, cli.StringFlag{ Name: "stdin", Usage: "[optional; required if `name` isn't provided] The field being piped into STDIN. Valid values are: name", },
"io" "io/ioutil" "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/objectstorage/v1/objects" "github.com/jrperritt/rack/util" ) var download = cli.Command{ Name: "download", Usage: util.Usage(commandPrefix, "download", "--container <containerName> --name <objectName>"), Description: "Downloads an object", Action: actionDownload, Flags: commandoptions.CommandFlags(flagsDownload, keysDownload), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsDownload, keysDownload)) }, } func flagsDownload() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "container", Usage: "[required] The name of the container containing the object to download", }, cli.StringFlag{ Name: "name", Usage: "[required] The name of the object to download", },
package containercommands import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/objectstorage/v1/containers" "github.com/jrperritt/rack/util" ) var getMetadata = cli.Command{ Name: "get-metadata", Usage: util.Usage(commandPrefix, "get-metadata", "--name <containerName>"), Description: "Get metadata for the given container.", Action: actionGetMetadata, Flags: commandoptions.CommandFlags(flagsGetMetadata, keysGetMetadata), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsGetMetadata, keysGetMetadata)) }, } func flagsGetMetadata() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "[required] The container name with the metadata.", }, } } var keysGetMetadata = []string{"Metadata"}
import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osVolumes "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/blockstorage/v1/volumes" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/pagination" "github.com/jrperritt/rack/util" ) var list = cli.Command{ Name: "list", Usage: util.Usage(commandPrefix, "list", ""), Description: "Lists existing volumes", Action: actionList, Flags: commandoptions.CommandFlags(flagsList, keysList), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsList, keysList)) }, } func flagsList() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "Only list volumes with this name.", }, cli.StringFlag{ Name: "status", Usage: "Only list volumes that have this status.", },
"strings" "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osSubnets "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/networking/v2/subnets" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/networking/v2/subnets" "github.com/jrperritt/rack/util" ) var create = cli.Command{ Name: "create", Usage: util.Usage(commandPrefix, "create", "--network-id <networkID> --cidr <CIDR> --ip-version <4|6>"), Description: "Creates a subnet", Action: actionCreate, Flags: commandoptions.CommandFlags(flagsCreate, keysCreate), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsCreate, keysCreate)) }, } func flagsCreate() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "network-id", Usage: "[required] The network ID under which to create this subnet.", }, cli.StringFlag{ Name: "cidr", Usage: "[required] The CIDR of this subnet.", },
import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osSubnets "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/networking/v2/subnets" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/networking/v2/subnets" "github.com/jrperritt/rack/util" ) var get = cli.Command{ Name: "get", Usage: util.Usage(commandPrefix, "get", ""), Description: "Gets an existing subnet", Action: actionGet, Flags: commandoptions.CommandFlags(flagsGet, keysGet), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsGet, keysGet)) }, } func flagsGet() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "id", Usage: "[optional; required if `name` or `stdin` isn't provided] The ID of the subnet", }, cli.StringFlag{ Name: "name", Usage: "[optional; required if `id` or `stdin` isn't provided] The name of the subnet.", },
import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osServers "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/compute/v2/servers" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/pagination" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/servers" "github.com/jrperritt/rack/util" ) var listAddresses = cli.Command{ Name: "list-addresses", Usage: util.Usage(commandPrefix, "list-addresses", "[--id <serverID> | --name <serverName> | --stdin id]"), Description: "Lists existing IP addresses for the server", Action: actionListAddresses, Flags: commandoptions.CommandFlags(flagsListAddresses, keysListAddresses), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsListAddresses, keysListAddresses)) }, } func flagsListAddresses() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "id", Usage: "[optional; required if `name` or `stdin` isn't provided] The server ID from which to list the IP addresses.", }, cli.StringFlag{ Name: "name", Usage: "[optional; required if `id` or `stdin` isn't provided] The server name from which to list the IP addresses.", },
import ( "strings" "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/objectstorage/v1/containers" "github.com/jrperritt/rack/util" ) var updateMetadata = cli.Command{ Name: "update-metadata", Usage: util.Usage(commandPrefix, "update-metadata", "--name <containerName> --metadata <metadata>"), Description: "Create or replace metadata for the given container. Any existing metadata will remain in tact.", Action: actionUpdateMetadata, Flags: commandoptions.CommandFlags(flagsUpdateMetadata, keysUpdateMetadata), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsUpdateMetadata, keysUpdateMetadata)) }, } func flagsUpdateMetadata() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "[required] The container name with the metadata.", }, cli.StringFlag{ Name: "metadata", Usage: "[required] A comma-separated string of 'key=value' pairs to create of update as metadata for the container.", },
"github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/cenkalti/backoff" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/internal/github.com/dustin/go-humanize" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/objectstorage/v1/objects" "github.com/jrperritt/rack/util" ) var uploadDir = cli.Command{ Name: "upload-dir", Usage: util.Usage(commandPrefix, "upload-dir", "--container <containerName> [--dir <dirName> | --stdin dir]"), Description: "Uploads the contents of a local directory to a container", Action: actionUploadDir, Flags: commandoptions.CommandFlags(flagsUploadDir, keysUploadDir), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsUploadDir, keysUploadDir)) }, } func flagsUploadDir() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "container", Usage: "[required] The name of the container to upload the objects.", }, cli.StringFlag{ Name: "dir", Usage: "[optional; required if `stdin` isn't provided] The name the local directory which will be uploaded.", },
package containercommands import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" "github.com/jrperritt/rack/util" ) var empty = cli.Command{ Name: "empty", Usage: util.Usage(commandPrefix, "empty", "[--name <containerName> | --stdin name]"), Description: "Deletes all objects in a container, but not the container itself.", Action: actionEmpty, Flags: commandoptions.CommandFlags(flagsEmpty, keysEmpty), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsEmpty, keysEmpty)) }, } func flagsEmpty() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "name", Usage: "[optional; required if `stdin` isn't provided] The name of the container", }, cli.StringFlag{ Name: "stdin", Usage: "[optional; required if `name` isn't provided] The field being piped into STDIN. Valid values are: name", }, cli.IntFlag{
import ( "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osServers "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/compute/v2/servers" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/pagination" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/servers" "github.com/jrperritt/rack/util" ) var listAddressesByNetwork = cli.Command{ Name: "list-addresses-by-network", Usage: util.Usage(commandPrefix, "list-addresses-by-network", "--network <networkType> [--id <serverID> | --name <serverName> | --stdin id]"), Description: "Lists existing IP addresses for the given server and network", Action: actionListAddressesByNetwork, Flags: commandoptions.CommandFlags(flagsListAddressesByNetwork, keysListAddressesByNetwork), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsListAddressesByNetwork, keysListAddressesByNetwork)) }, } func flagsListAddressesByNetwork() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "network", Usage: "[required] The network for which to list the IP addresses.", }, cli.StringFlag{ Name: "id", Usage: "[optional; required if `name` or `stdin` isn't provided] The server ID from which to list the IP addresses.", },
"github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osServers "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/compute/v2/servers" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/servers" "github.com/jrperritt/rack/output" "github.com/jrperritt/rack/util" ) var reboot = cli.Command{ Name: "reboot", Usage: util.Usage(commandPrefix, "reboot", "[--id <serverID> | --name <serverName> | --stdin id] [--soft | --hard]"), Description: "Reboots an existing server", Action: actionReboot, Flags: commandoptions.CommandFlags(flagsReboot, keysReboot), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsReboot, keysReboot)) }, } func flagsReboot() []cli.Flag { return []cli.Flag{ cli.BoolFlag{ Name: "soft", Usage: "[optional; required if 'hard' is not provided] Ask the OS to restart under its own procedures.", }, cli.BoolFlag{ Name: "hard", Usage: "[optional; required if 'soft' is not provided] Physically cut power to the machine and then restore it after a brief while.", },
"fmt" "github.com/jrperritt/rack/commandoptions" "github.com/jrperritt/rack/handler" "github.com/jrperritt/rack/internal/github.com/codegangsta/cli" osServers "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/openstack/compute/v2/servers" "github.com/jrperritt/rack/internal/github.com/rackspace/gophercloud/rackspace/compute/v2/servers" "github.com/jrperritt/rack/util" ) var resize = cli.Command{ Name: "resize", Usage: util.Usage(commandPrefix, "resize", "[--id <serverID>|--name <serverName>|--stdin id] --flavor-id <flavor-id>"), Description: "Resizes an existing server", Action: actionResize, Flags: commandoptions.CommandFlags(flagsResize, keysResize), BashComplete: func(c *cli.Context) { commandoptions.CompleteFlags(commandoptions.CommandFlags(flagsResize, keysResize)) }, } func flagsResize() []cli.Flag { return []cli.Flag{ cli.StringFlag{ Name: "flavor-id", Usage: "[required] The ID of the flavor that the resized server should have.", }, cli.StringFlag{ Name: "id", Usage: "[optional; required if `stdin` or `name` isn't provided] The ID of the server.", },