63 lines
1.1 KiB
Go
63 lines
1.1 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"esxlib/api/cloud"
|
||
|
|
||
|
"github.com/urfave/cli/v2"
|
||
|
)
|
||
|
|
||
|
var (
|
||
|
apiAddressFlag = cli.StringFlag{
|
||
|
Name: "api.address",
|
||
|
Value: "127.0.0.1:1213",
|
||
|
Usage: "The address of the API server",
|
||
|
}
|
||
|
|
||
|
apiTokenFlag = cli.StringFlag{
|
||
|
Name: "api.token",
|
||
|
Value: "",
|
||
|
Usage: "The api token for the api if required",
|
||
|
}
|
||
|
)
|
||
|
|
||
|
var globalFlags = []cli.Flag{
|
||
|
&apiAddressFlag,
|
||
|
&apiTokenFlag,
|
||
|
}
|
||
|
|
||
|
var commands = []*cli.Command{
|
||
|
{
|
||
|
Name: "vm",
|
||
|
Aliases: []string{"vm"},
|
||
|
Usage: "vm commands",
|
||
|
Description: "vm commands",
|
||
|
Subcommands: vmCommands,
|
||
|
},
|
||
|
{
|
||
|
Name: "zones",
|
||
|
Aliases: []string{"zone"},
|
||
|
Usage: "zone commands",
|
||
|
Description: "zone commands",
|
||
|
Subcommands: zoneCommands,
|
||
|
},
|
||
|
{
|
||
|
Name: "networks",
|
||
|
Aliases: []string{"net", "nets"},
|
||
|
Usage: "network commands",
|
||
|
Description: "network commands",
|
||
|
Subcommands: netCommands,
|
||
|
},
|
||
|
}
|
||
|
|
||
|
func mustGetClient(ctx *cli.Context) *cloud.Client {
|
||
|
apiAddress := ctx.String(apiAddressFlag.Name)
|
||
|
apiToken := ctx.String(apiTokenFlag.Name)
|
||
|
|
||
|
client, err := cloud.NewClient(apiAddress, apiToken, true)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
|
||
|
return client
|
||
|
}
|