Skip to content

Commit 285a06b

Browse files
authored
Update deploy_ovf_template.py
1 parent 00fd5eb commit 285a06b

File tree

1 file changed

+38
-14
lines changed

1 file changed

+38
-14
lines changed

samples/vmc/sddc/deploy_ovf_template.py

Lines changed: 38 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
from com.vmware.content.library_client import Item
2020
from com.vmware.vcenter.ovf_client import LibraryItem
21-
from com.vmware.vcenter_client import ResourcePool
21+
from com.vmware.vcenter_client import ResourcePool, Folder
2222
from vmware.vapi.vsphere.client import create_vsphere_client
2323

2424
from samples.vsphere.common import sample_cli, sample_util
@@ -34,24 +34,37 @@ class DeployOvfTemplate:
3434
"""
3535

3636
def __init__(self):
37-
parser = sample_cli.build_arg_parser()
3837

39-
parser.add_argument('--resourcepoolname',
40-
default='Compute-ResourcePool',
41-
help='The name of the resource pool to be used.')
38+
self.vm_name = 'deployed-vm-' + str(generate_random_uuid())
4239

40+
parser = sample_cli.build_arg_parser()
4341
parser.add_argument('--libitemname',
4442
required=True,
45-
help='The name of the library item to deploy.'
43+
help='(Required) The name of the library item to deploy. '
4644
'The library item should contain an OVF package.')
4745

46+
parser.add_argument('--vmname',
47+
default=self.vm_name,
48+
help='(Optional) The name of the Virtual Machine to be deployed. '
49+
'Default: "{}"'.format(self.vm_name))
50+
51+
parser.add_argument('--resourcepoolname',
52+
default='Compute-ResourcePool',
53+
help='(Optional) The name of the resource pool to be used. '
54+
'Default: "Compute-ResourcePool"')
55+
56+
parser.add_argument('--foldername',
57+
default='Workloads',
58+
help='(Optional) The name of the folder to be used. '
59+
'Default: "Workloads"')
60+
4861
args = sample_util.process_cli_args(parser.parse_args())
4962

5063
self.vm_id = None
51-
self.vm_name = 'deployed-vm-' + str(generate_random_uuid())
52-
5364
self.lib_item_name = args.libitemname
65+
self.vm_name = args.vmname
5466
self.resourcepoolname = args.resourcepoolname
67+
self.foldername = args.foldername
5568
self.cleardata = args.cleardata
5669

5770
# Connect to vAPI Endpoint on vCenter Server
@@ -61,16 +74,27 @@ def __init__(self):
6174

6275
def deploy_ovf_template(self):
6376

64-
# Build the deployment target with resource pool ID
65-
filter_spec = ResourcePool.FilterSpec(names=set([self.resourcepoolname]))
66-
resource_pool_summaries = self.client.vcenter.ResourcePool.list(filter_spec)
77+
# Build the deployment target with resource pool ID and folder ID
78+
rp_filter_spec = ResourcePool.FilterSpec(names=set([self.resourcepoolname]))
79+
resource_pool_summaries = self.client.vcenter.ResourcePool.list(rp_filter_spec)
6780
if not resource_pool_summaries:
6881
raise ValueError("Resource pool with name '{}' not found".
6982
format(self.resourcepoolname))
7083
resource_pool_id = resource_pool_summaries[0].resource_pool
7184
print('Resource pool ID: {}'.format(resource_pool_id))
85+
86+
folder_filter_spec = Folder.FilterSpec(names=set([self.foldername]))
87+
folder_summaries = self.client.vcenter.Folder.list(folder_filter_spec)
88+
if not folder_summaries:
89+
raise ValueError("Folder with name '{}' not found".
90+
format(self.foldername))
91+
folder_id = folder_summaries[0].folder
92+
print('Folder ID: {}'.format(folder_id))
93+
7294
deployment_target = LibraryItem.DeploymentTarget(
73-
resource_pool_id=resource_pool_id)
95+
resource_pool_id=resource_pool_id,
96+
folder_id=folder_id
97+
)
7498

7599
# Find the library item
76100
find_spec = Item.FindSpec(name=self.lib_item_name)
@@ -108,8 +132,8 @@ def deploy_ovf_template(self):
108132

109133
# The type and ID of the target deployment is available in the deployment result.
110134
if result.succeeded:
111-
print('Deployment successful. Result resource: {}, ID: {}'
112-
.format(result.resource_id.type, result.resource_id.id))
135+
print('Deployment successful. VM Name: "{}", ID: "{}"'
136+
.format(self.vm_name, result.resource_id.id))
113137
self.vm_id = result.resource_id.id
114138
error = result.error
115139
if error is not None:

0 commit comments

Comments
 (0)