Skip to content

Commit 72c66d0

Browse files
ycliuhwmitechie
authored andcommitted
Move vSphere vmdk tempalte to <controller-folder>/templates/bionic/ path;
1 parent 05d5dd1 commit 72c66d0

File tree

3 files changed

+16
-23
lines changed

3 files changed

+16
-23
lines changed

provider/vsphere/environ_broker.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ func modelFolderName(modelUUID, modelName string) string {
5757

5858
// vmdkDirectoryName returns the name of the datastore directory in which
5959
// the base VMDKs are stored for the controller.
60-
func vmdkDirectoryName(parentfolder string, controllerUUID string) string {
61-
dName := path.Join("juju-vmdks", controllerUUID)
60+
func vmdkDirectoryName(parentfolder string, controllerFolderName string) string {
61+
dName := path.Join(controllerFolderName, "templates")
6262
if parentfolder != "" {
6363
dName = path.Join(parentfolder, dName)
6464
}
@@ -224,7 +224,7 @@ func (env *sessionEnviron) newRawInstance(
224224
Series: series,
225225
ReadOVA: readOVA,
226226
OVASHA256: img.Sha256,
227-
VMDKDirectory: vmdkDirectoryName("", args.ControllerUUID),
227+
VMDKDirectory: vmdkDirectoryName(env.getVMFolder(), controllerFolderName(args.ControllerUUID)),
228228
UserData: string(userData),
229229
Metadata: args.InstanceConfig.Tags,
230230
Constraints: cons,

provider/vsphere/internal/vsphereclient/client.go

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -302,12 +302,11 @@ func (c *Client) ResourcePools(ctx context.Context, path string) ([]*object.Reso
302302
return items, nil
303303
}
304304

305-
// EnsureVMFolder creates the a VM folder with the given path if it doesn't
306-
// already exist.
307-
// LP: #1849194
308-
// Two string arguments needed: folderPath will be split on "/"
309-
// whereas credAttrFolder is added as subfolder structure from DC's root-folder
310-
func (c *Client) EnsureVMFolder(ctx context.Context, credAttrFolder string, folderPath string) (*object.Folder, error) {
305+
// EnsureVMFolder creates the a VM folder with the given path if it doesn't already exist.
306+
// Two string arguments needed: relativeFolderPath will be split on "/"
307+
// whereas parentFolderName is the subfolder in DC's root-folder.
308+
// The parentFolderName will fallback to DC's root-folder if it's an empty string.
309+
func (c *Client) EnsureVMFolder(ctx context.Context, parentFolderName string, relativeFolderPath string) (*object.Folder, error) {
311310

312311
finder, _, err := c.finder(ctx)
313312
if err != nil {
@@ -335,18 +334,12 @@ func (c *Client) EnsureVMFolder(ctx context.Context, credAttrFolder string, fold
335334
return nil, errors.Trace(err)
336335
}
337336

338-
// LP: #1849194
339-
// User do not necessarily own permission to create credAttrFolder
340-
// since that demands Add_folder permissions from the root-folder's DC.
341-
// Join paths folders.VMFolder and credentials attribute.
342-
parentFolder, err := c.FindFolder(ctx, credAttrFolder)
343-
// Consider the case where folder from credential attribute comes empty:
344-
// path.Join ignores empty entries.
337+
parentFolder, err := c.FindFolder(ctx, parentFolderName)
345338
if err != nil {
346339
return nil, errors.Trace(err)
347340
}
348341
// Creating "Juju Controller (...)" folder and then model folder, for example.
349-
for _, name := range strings.Split(folderPath, "/") {
342+
for _, name := range strings.Split(relativeFolderPath, "/") {
350343
folder, err := createFolder(parentFolder, name)
351344
if err != nil {
352345
return nil, errors.Annotatef(err, "creating folder %q in %q", name, parentFolder.InventoryPath)

provider/vsphere/internal/vsphereclient/createvm.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -166,18 +166,18 @@ func (c *Client) ensureTemplateVM(
166166
datastore *object.Datastore,
167167
args CreateVirtualMachineParams,
168168
) (vm *object.VirtualMachine, err error) {
169-
finder, _, err := c.finder(ctx)
170-
if err != nil {
171-
return nil, errors.Trace(err)
172-
}
173169

174-
templateFolder, err := c.FindFolder(ctx, path.Join(args.Folder, vmTemplatePath(args)))
170+
templateFolder, err := c.FindFolder(ctx, vmTemplatePath(args))
175171
if err != nil && !errors.IsNotFound(err) {
176172
return nil, errors.Trace(err)
177173
}
178174
// Consider only the case without error: it means folder already exists
179175
// and we can look if there is a template inside.
180176
if err == nil {
177+
finder, _, err := c.finder(ctx)
178+
if err != nil {
179+
return nil, errors.Trace(err)
180+
}
181181
templateVM, err := finder.VirtualMachine(ctx, path.Join(templateFolder.InventoryPath, vmTemplateName(args)))
182182
if err == nil && templateVM != nil {
183183
return templateVM, nil
@@ -192,7 +192,7 @@ func (c *Client) ensureTemplateVM(
192192
return nil, errors.Annotate(err, "creating import spec")
193193
}
194194

195-
vmFolder, err := c.EnsureVMFolder(ctx, args.Folder, vmTemplatePath(args))
195+
vmFolder, err := c.EnsureVMFolder(ctx, "", vmTemplatePath(args))
196196
if err != nil {
197197
return nil, errors.Trace(err)
198198
}

0 commit comments

Comments
 (0)