Skip to content

Commit

Permalink
Add socket/cores per socket support to instances
Browse files Browse the repository at this point in the history
  • Loading branch information
Xiol committed Nov 9, 2023
1 parent 6890328 commit ccfa91a
Show file tree
Hide file tree
Showing 5 changed files with 37 additions and 13 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ cover.out
dist/
__debug_bin
cli
/.idea
41 changes: 32 additions & 9 deletions cmd/ecloud/ecloud_instance.go
Original file line number Diff line number Diff line change
Expand Up @@ -116,16 +116,18 @@ func ecloudInstanceCreateCmd(f factory.ClientFactory) *cobra.Command {
Use: "create",
Short: "Creates an instance",
Long: "This command creates an instance",
Example: "ans ecloud instance create --vpc vpc-abcdef12 --network net-abcdef12 --vcpu 2 --ram 2048 --volume 20 --image \"CentOS 7\"",
Example: "ans ecloud instance create --vpc vpc-abcdef12 --network net-abcdef12 --vcpu-sockets 2 --vcpu-cores-per-socket 2 --ram 2048 --volume 20 --image \"CentOS 7\"",
RunE: ecloudCobraRunEFunc(f, ecloudInstanceCreate),
}

// Setup flags
cmd.Flags().String("name", "", "Name of instance")
cmd.Flags().String("vpc", "", "ID of VPC")
cmd.MarkFlagRequired("vpc")
cmd.Flags().Int("vcpu", 0, "Number of vCPU cores to allocate")
cmd.MarkFlagRequired("vcpu")
cmd.Flags().Int("vcpu", 0, "Number of vCPU sockets to allocate")
cmd.Flags().MarkDeprecated("vcpu", "use --vcpu-sockets / --vcpu-cores-per-socket flags instead")
cmd.Flags().Int("vcpu-sockets", 1, "Number of vCPU sockets to allocate")
cmd.Flags().Int("vcpu-cores-per-socket", 1, "Number of vCPU cores to allocate per socket")
cmd.Flags().Int("ram", 0, "Amount of RAM (in MB) to allocate")
cmd.MarkFlagRequired("ram")
cmd.Flags().Int("volume", 0, "Size of volume to allocate")
Expand All @@ -146,14 +148,23 @@ func ecloudInstanceCreateCmd(f factory.ClientFactory) *cobra.Command {
func ecloudInstanceCreate(service ecloud.ECloudService, cmd *cobra.Command, args []string) error {
createRequest := ecloud.CreateInstanceRequest{}
createRequest.VPCID, _ = cmd.Flags().GetString("vpc")
createRequest.VCPUCores, _ = cmd.Flags().GetInt("vcpu")
createRequest.RAMCapacity, _ = cmd.Flags().GetInt("ram")
createRequest.VolumeCapacity, _ = cmd.Flags().GetInt("volume")
createRequest.NetworkID, _ = cmd.Flags().GetString("network")
createRequest.HostGroupID, _ = cmd.Flags().GetString("host-group")
createRequest.ResourceTierID, _ = cmd.Flags().GetString("resource-tier")
createRequest.Name, _ = cmd.Flags().GetString("name")

if cmd.Flags().Changed("vcpu") {
if cmd.Flags().Changed("vcpu-sockets") || cmd.Flags().Changed("vcpu-cores-per-socket") {
return fmt.Errorf("Flag --vcpu is mutually exclusive with --vcpu-sockets and --vcpu-cores-per-socket")
}
createRequest.VCPUCores, _ = cmd.Flags().GetInt("vcpu")
} else {
createRequest.VCPUSockets, _ = cmd.Flags().GetInt("vcpu-sockets")
createRequest.VCPUCoresPerSocket, _ = cmd.Flags().GetInt("vcpu-cores-per-socket")
}

if cmd.Flags().Changed("ssh-key-pair") {
createRequest.SSHKeyPairIDs, _ = cmd.Flags().GetStringSlice("ssh-key-pair")
}
Expand Down Expand Up @@ -233,7 +244,10 @@ func ecloudInstanceUpdateCmd(f factory.ClientFactory) *cobra.Command {
}

cmd.Flags().String("name", "", "Name of instance")
cmd.Flags().Int("vcpu", 0, "Number of vCPU cores to allocate")
cmd.Flags().Int("vcpu", 0, "Number of vCPU sockets to allocate")
cmd.Flags().MarkDeprecated("vcpu", "use --vcpu-sockets / --vcpu-cores-per-socket flags instead")
cmd.Flags().Int("vcpu-sockets", 0, "Number of vCPU sockets to allocate")
cmd.Flags().Int("vcpu-cores-per-socket", 0, "Number of vCPU cores to allocate per socket")
cmd.Flags().Int("ram", 0, "Amount of RAM (in MB) to allocate")
cmd.Flags().String("volume-group", "", "ID of volume-group to use for instance")
cmd.Flags().Bool("wait", false, "Specifies that the command should wait until the instance has been completely updated")
Expand All @@ -249,13 +263,22 @@ func ecloudInstanceUpdate(service ecloud.ECloudService, cmd *cobra.Command, args
}

if cmd.Flags().Changed("vcpu") {
vcpu, _ := cmd.Flags().GetInt("vcpu")
patchRequest.VCPUCores = vcpu
if cmd.Flags().Changed("vcpu-sockets") || cmd.Flags().Changed("vcpu-cores-per-socket") {
return fmt.Errorf("Flag --vcpu is mutually exclusive with --vcpu-sockets and --vcpu-cores-per-socket")
}
patchRequest.VCPUCores, _ = cmd.Flags().GetInt("vcpu")
} else {
if cmd.Flags().Changed("vcpu-sockets") {
patchRequest.VCPUSockets, _ = cmd.Flags().GetInt("vcpu-sockets")
}

if cmd.Flags().Changed("vcpu-cores-per-socket") {
patchRequest.VCPUCoresPerSocket, _ = cmd.Flags().GetInt("vcpu-cores-per-socket")
}
}

if cmd.Flags().Changed("ram") {
ram, _ := cmd.Flags().GetInt("ram")
patchRequest.RAMCapacity = ram
patchRequest.RAMCapacity, _ = cmd.Flags().GetInt("ram")
}

if cmd.Flags().Changed("volume-group") {
Expand Down
2 changes: 1 addition & 1 deletion cmd/ecloud/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -325,7 +325,7 @@ func OutputECloudVPCsProvider(vpcs []ecloud.VPC) output.OutputHandlerDataProvide
}

func OutputECloudInstancesProvider(instances []ecloud.Instance) output.OutputHandlerDataProvider {
return output.NewSerializedOutputHandlerDataProvider(instances).WithDefaultFields([]string{"id", "name", "vpc_id", "vcpu_cores", "ram_capacity", "sync_status"})
return output.NewSerializedOutputHandlerDataProvider(instances).WithDefaultFields([]string{"id", "name", "vpc_id", "vcpu_sockets", "vcpu_cores_per_socket", "ram_capacity", "sync_status"})
}

func OutputECloudFloatingIPsProvider(fips []ecloud.FloatingIP) output.OutputHandlerDataProvider {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ module github.com/ans-group/cli
go 1.18

require (
github.com/ans-group/sdk-go v1.16.10
github.com/ans-group/sdk-go v1.16.11
github.com/blang/semver v3.5.1+incompatible
github.com/golang/mock v1.6.0
github.com/iancoleman/strcase v0.0.0-20191112232945-16388991a334
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
github.com/ans-group/go-durationstring v1.2.0 h1:UJIuQATkp0t1rBvZsHRwki33YHV9E+Ulro+3NbMB7MM=
github.com/ans-group/go-durationstring v1.2.0/go.mod h1:QGF9Mdpq9058QXaut8r55QWu6lcHX6i/GvF1PZVkV6o=
github.com/ans-group/sdk-go v1.16.10 h1:zdxXN/gqxFQWFCoIeQahPnz/Nj9OfGyuJ7RGJYFBDr8=
github.com/ans-group/sdk-go v1.16.10/go.mod h1:p1vrXBxHPvMOGlS4sFUSgeLeKAl9vIe/lJ6UaExe49A=
github.com/ans-group/sdk-go v1.16.11 h1:xc064+wx8RI/vcoRHKkM9iMrBjOtt9y3KChXpme0ZaI=
github.com/ans-group/sdk-go v1.16.11/go.mod h1:p1vrXBxHPvMOGlS4sFUSgeLeKAl9vIe/lJ6UaExe49A=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ=
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
Expand Down

0 comments on commit ccfa91a

Please sign in to comment.