Skip to content

Commit 7614742

Browse files
authored
Merge pull request #3502 from bryanv/bryanv/use-checktesttype-in-check-args
api: use CheckTestType in compat and provisioning checkers
2 parents f05efc4 + 5c0af37 commit 7614742

File tree

6 files changed

+47
-11
lines changed

6 files changed

+47
-11
lines changed

govc/vm/check/compat.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func (cmd *compat) Description() string {
3535
return `Check if VM can be placed on the given HOST in the given resource POOL.
3636
3737
Examples:
38-
govc vm.check.compat -vm my-vm -pool $pool`
38+
govc vm.check.compat -vm my-vm -host $host -pool $pool`
3939
}
4040

4141
func (cmd *compat) Run(ctx context.Context, f *flag.FlagSet) error {
@@ -53,7 +53,7 @@ func (cmd *compat) Run(ctx context.Context, f *flag.FlagSet) error {
5353
return err
5454
}
5555

56-
res, err := checker.CheckCompatibility(ctx, vm.Reference(), cmd.Host, cmd.Pool, cmd.Test...)
56+
res, err := checker.CheckCompatibility(ctx, vm.Reference(), cmd.Host, cmd.Pool, cmd.testTypes...)
5757
if err != nil {
5858
return err
5959
}

govc/vm/check/config.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (cmd *config) Run(ctx context.Context, f *flag.FlagSet) error {
5151
return err
5252
}
5353

54-
res, err := checker.CheckVmConfig(ctx, spec, cmd.Machine, cmd.Host, cmd.Pool, cmd.Test...)
54+
res, err := checker.CheckVmConfig(ctx, spec, cmd.Machine, cmd.Host, cmd.Pool, cmd.testTypes...)
5555
if err != nil {
5656
return err
5757
}

govc/vm/check/flag.go

+25-1
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,36 @@ import (
3333
"github.com/vmware/govmomi/vim25/xml"
3434
)
3535

36+
var checkTestTypesList = []string{
37+
string(types.CheckTestTypeDatastoreTests),
38+
string(types.CheckTestTypeHostTests),
39+
string(types.CheckTestTypeNetworkTests),
40+
string(types.CheckTestTypeResourcePoolTests),
41+
string(types.CheckTestTypeSourceTests),
42+
}
43+
44+
type checkTestTypes []types.CheckTestType
45+
46+
func (c *checkTestTypes) String() string {
47+
return fmt.Sprint(*c)
48+
}
49+
50+
func (c *checkTestTypes) Set(value string) error {
51+
if !slices.Contains(checkTestTypesList, value) {
52+
return fmt.Errorf("invalid CheckTestType value %q", value)
53+
}
54+
*c = append(*c, types.CheckTestType(value))
55+
return nil
56+
}
57+
3658
type checkFlag struct {
3759
*flags.VirtualMachineFlag
3860
*flags.HostSystemFlag
3961
*flags.ResourcePoolFlag
4062

4163
Machine, Host, Pool *types.ManagedObjectReference
4264

43-
Test []string
65+
testTypes checkTestTypes
4466
}
4567

4668
func (cmd *checkFlag) Register(ctx context.Context, f *flag.FlagSet) {
@@ -50,6 +72,8 @@ func (cmd *checkFlag) Register(ctx context.Context, f *flag.FlagSet) {
5072
cmd.HostSystemFlag.Register(ctx, f)
5173
cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx)
5274
cmd.ResourcePoolFlag.Register(ctx, f)
75+
76+
f.Var(&cmd.testTypes, "test", fmt.Sprintf("The set of tests to run (%s)", strings.Join(checkTestTypesList, ",")))
5377
}
5478

5579
func (cmd *checkFlag) Process(ctx context.Context) error {

govc/vm/check/relocate.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ func (cmd *relocate) Run(ctx context.Context, f *flag.FlagSet) error {
5959
return err
6060
}
6161

62-
res, err := checker.CheckRelocate(ctx, vm.Reference(), spec, cmd.Test...)
62+
res, err := checker.CheckRelocate(ctx, vm.Reference(), spec, cmd.testTypes...)
6363
if err != nil {
6464
return err
6565
}

object/vm_compatability_checker.go

+16-4
Original file line numberDiff line numberDiff line change
@@ -45,14 +45,14 @@ func (c VmCompatibilityChecker) CheckCompatibility(
4545
vm types.ManagedObjectReference,
4646
host *types.ManagedObjectReference,
4747
pool *types.ManagedObjectReference,
48-
testTypes ...string) ([]types.CheckResult, error) {
48+
testTypes ...types.CheckTestType) ([]types.CheckResult, error) {
4949

5050
req := types.CheckCompatibility_Task{
5151
This: c.Reference(),
5252
Vm: vm,
5353
Host: host,
5454
Pool: pool,
55-
TestType: testTypes,
55+
TestType: checkTestTypesToStrings(testTypes),
5656
}
5757

5858
res, err := methods.CheckCompatibility_Task(ctx, c.c, &req)
@@ -74,15 +74,15 @@ func (c VmCompatibilityChecker) CheckVmConfig(
7474
vm *types.ManagedObjectReference,
7575
host *types.ManagedObjectReference,
7676
pool *types.ManagedObjectReference,
77-
testTypes ...string) ([]types.CheckResult, error) {
77+
testTypes ...types.CheckTestType) ([]types.CheckResult, error) {
7878

7979
req := types.CheckVmConfig_Task{
8080
This: c.Reference(),
8181
Spec: spec,
8282
Vm: vm,
8383
Host: host,
8484
Pool: pool,
85-
TestType: testTypes,
85+
TestType: checkTestTypesToStrings(testTypes),
8686
}
8787

8888
res, err := methods.CheckVmConfig_Task(ctx, c.c, &req)
@@ -97,3 +97,15 @@ func (c VmCompatibilityChecker) CheckVmConfig(
9797

9898
return ti.Result.(types.ArrayOfCheckResult).CheckResult, nil
9999
}
100+
101+
func checkTestTypesToStrings(testTypes []types.CheckTestType) []string {
102+
if len(testTypes) == 0 {
103+
return nil
104+
}
105+
106+
s := make([]string, len(testTypes))
107+
for i := range testTypes {
108+
s[i] = string(testTypes[i])
109+
}
110+
return s
111+
}

object/vm_provisioning_checker.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@ func (c VmProvisioningChecker) CheckRelocate(
4444
ctx context.Context,
4545
vm types.ManagedObjectReference,
4646
spec types.VirtualMachineRelocateSpec,
47-
testTypes ...string) ([]types.CheckResult, error) {
47+
testTypes ...types.CheckTestType) ([]types.CheckResult, error) {
4848

4949
req := types.CheckRelocate_Task{
5050
This: c.Reference(),
5151
Vm: vm,
5252
Spec: spec,
53-
TestType: testTypes,
53+
TestType: checkTestTypesToStrings(testTypes),
5454
}
5555

5656
res, err := methods.CheckRelocate_Task(ctx, c.c, &req)

0 commit comments

Comments
 (0)