Skip to content

Commit

Permalink
Implement gscloud server assign ID ADDR
Browse files Browse the repository at this point in the history
See also issue #85.
  • Loading branch information
bkircher committed Nov 21, 2020
1 parent 863a286 commit 8e57173
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 1 deletion.
33 changes: 32 additions & 1 deletion cmd/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"bytes"
"context"
"fmt"
"net"
"strconv"
"time"

Expand Down Expand Up @@ -206,6 +207,36 @@ var serverSetCmd = &cobra.Command{
},
}

var serverAssignCmd = &cobra.Command{
Use: "assign ID ADDR",
Example: `gscloud server assign 37d53278-8e5f-47e1-a63f-54513e4b4d53 2a06:2380:0:1::1c8`,
Short: "Assign an IP address",
Long: `Assign an existing IP address to the server given by ID.`,
Args: cobra.ExactArgs(2),
Run: func(cmd *cobra.Command, args []string) {
var serverID string
var addrID string
var err error

serverID = args[0]
ctx := context.Background()
ipOp := rt.IPOperator()
addr := net.ParseIP(args[1])
if addr != nil {
addrID, err = idForAddress(ctx, addr, ipOp)
if err != nil {
log.Fatal(err)
}
} else {
addrID = args[1]
}
err = rt.Client().LinkIP(ctx, serverID, addrID)
if err != nil {
log.Fatalf("Failed: %s", err)
}
},
}

func init() {
serverOffCmd.PersistentFlags().BoolVarP(&serverFlags.forceShutdown, "force", "f", false, "Force shutdown (no ACPI)")

Expand All @@ -221,6 +252,6 @@ func init() {
serverSetCmd.PersistentFlags().IntVar(&serverFlags.cores, "cores", 0, "No. of cores")
serverSetCmd.PersistentFlags().StringVar(&serverFlags.serverName, "name", "", "Name of the server")

serverCmd.AddCommand(serverLsCmd, serverOnCmd, serverOffCmd, serverRmCmd, serverCreateCmd, serverSetCmd)
serverCmd.AddCommand(serverLsCmd, serverOnCmd, serverOffCmd, serverRmCmd, serverCreateCmd, serverSetCmd, serverAssignCmd)
rootCmd.AddCommand(serverCmd)
}
5 changes: 5 additions & 0 deletions runtime/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,11 @@ func (r *Runtime) Account() string {
return r.accountName
}

// Client provides access to the API client.
func (r *Runtime) Client() *gsclient.Client {
return r.client.(*gsclient.Client)
}

// StorageOperator return an operation to remove a storage.
func (r *Runtime) StorageOperator() gsclient.StorageOperator {
if UnderTest() {
Expand Down

0 comments on commit 8e57173

Please sign in to comment.