From 8fd869123fb3e2443155a84713b6f938e48522f6 Mon Sep 17 00:00:00 2001 From: Doug MacEachern Date: Wed, 4 Sep 2024 10:53:17 -0700 Subject: [PATCH] govc: add disk.create '-profile' flag --- govc/disk/create.go | 17 +++++++++++++++-- govc/test/disk.bats | 7 +++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/govc/disk/create.go b/govc/disk/create.go index e7f8958ab..49db23432 100644 --- a/govc/disk/create.go +++ b/govc/disk/create.go @@ -1,11 +1,11 @@ /* -Copyright (c) 2018 VMware, Inc. All Rights Reserved. +Copyright (c) 2018-2024 VMware, Inc. All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 +http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, @@ -34,6 +34,7 @@ type disk struct { *flags.DatastoreFlag *flags.ResourcePoolFlag *flags.StoragePodFlag + *flags.StorageProfileFlag size units.ByteSize keep *bool @@ -50,6 +51,9 @@ func (cmd *disk) Register(ctx context.Context, f *flag.FlagSet) { cmd.StoragePodFlag, ctx = flags.NewStoragePodFlag(ctx) cmd.StoragePodFlag.Register(ctx, f) + cmd.StorageProfileFlag, ctx = flags.NewStorageProfileFlag(ctx) + cmd.StorageProfileFlag.Register(ctx, f) + cmd.ResourcePoolFlag, ctx = flags.NewResourcePoolFlag(ctx) cmd.ResourcePoolFlag.Register(ctx, f) @@ -65,6 +69,9 @@ func (cmd *disk) Process(ctx context.Context) error { if err := cmd.StoragePodFlag.Process(ctx); err != nil { return err } + if err := cmd.StorageProfileFlag.Process(ctx); err != nil { + return err + } return cmd.ResourcePoolFlag.Process(ctx) } @@ -108,12 +115,18 @@ func (cmd *disk) Run(ctx context.Context, f *flag.FlagSet) error { } } + profile, err := cmd.StorageProfileSpec(ctx) + if err != nil { + return err + } + m := vslm.NewObjectManager(c) spec := types.VslmCreateSpec{ Name: name, CapacityInMB: int64(cmd.size) / units.MB, KeepAfterDeleteVm: cmd.keep, + Profile: profile, BackingSpec: &types.VslmCreateSpecDiskFileBackingSpec{ VslmCreateSpecBackingSpec: types.VslmCreateSpecBackingSpec{ Datastore: ds.Reference(), diff --git a/govc/test/disk.bats b/govc/test/disk.bats index 288dc193f..530487867 100755 --- a/govc/test/disk.bats +++ b/govc/test/disk.bats @@ -39,6 +39,13 @@ load test_helper run govc disk.rm "$id" assert_failure + + name=$(new_id) + run govc disk.create -profile enoent "$name" + assert_failure # profile does not exist + + run govc disk.create -profile "vSAN Default Storage Policy" "$name" + assert_success } @test "disk.create -datastore-cluster" {