Skip to content

Commit

Permalink
Merge pull request #984 from QualiSystems/develop
Browse files Browse the repository at this point in the history
1.14.175 release
  • Loading branch information
Costya-Y authored Feb 18, 2020
2 parents 5c39867 + d92dc82 commit 62dae1c
Show file tree
Hide file tree
Showing 7 changed files with 36 additions and 12 deletions.
4 changes: 4 additions & 0 deletions package/cloudshell/cp/vcenter/commands/vm_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,9 @@ def get_vm_details(self, si, logger, resource_context, requests, cancellation_co

try:
vm = self.pyvmomi_service.find_by_uuid(si, request.deployedAppJson.vmdetails.uid)

wait_for_ip = next((p.value for p in request.deployedAppJson.vmdetails.vmCustomParams if p.name == 'wait_for_ip'), 'False')

self._wait_for_vm_to_be_ready(vm, request, logger)

result = self.vm_details_provider.create(
Expand All @@ -30,6 +33,7 @@ def get_vm_details(self, si, logger, resource_context, requests, cancellation_co
reserved_networks=resource_context.attributes.get('Reserved Networks', '').split(';'),
ip_regex=next((p.value for p in request.deployedAppJson.vmdetails.vmCustomParams if p.name=='ip_regex'), None),
deployment_details_provider=DeploymentDetailsProviderFromAppJson(request.appRequestJson.deploymentService),
wait_for_ip=wait_for_ip,
logger=logger)

except Exception as e:
Expand Down
1 change: 1 addition & 0 deletions package/cloudshell/cp/vcenter/vm/deploy.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,7 @@ def _safely_get_vm_details(self, vm, vm_name, vcenter_model, deploy_model, logge
reserved_networks=vcenter_model.reserved_networks,
ip_regex=deploy_model.ip_regex,
deployment_details_provider=DeploymentDetailsProviderFromTemplateModel(deploy_model),
wait_for_ip = deploy_model.wait_for_ip,
logger=logger)
except Exception:
logger.error("Error getting vm details for '{0}': {1}".format(vm_name, traceback.format_exc()))
Expand Down
26 changes: 21 additions & 5 deletions package/cloudshell/cp/vcenter/vm/vm_details_provider.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,23 @@ def __init__(self, pyvmomi_service, ip_manager):
self.pyvmomi_service = pyvmomi_service # type: pyVmomiService
self.ip_manager = ip_manager # type: VMIPManager

def create(self, vm, name, reserved_networks, ip_regex, deployment_details_provider, logger):
""""""
def create(self, vm, name, reserved_networks, ip_regex, deployment_details_provider, wait_for_ip, logger):
"""
creates the details provider
:param vm:
:param name:
:param reserved_networks:
:param ip_regex:
:param deployment_details_provider:
:param wait_for_ip: type: string contains 'True' or 'False'
:param logger:
:return:
"""

logger.info('waiting for ip = {0}'.format(wait_for_ip))

vm_instance_data = self._get_vm_instance_data(vm, deployment_details_provider)
vm_network_data = self._get_vm_network_data(vm, reserved_networks, ip_regex, logger)
vm_network_data = self._get_vm_network_data(vm, reserved_networks, ip_regex, wait_for_ip, logger)

return VmDetailsData(vmInstanceData=vm_instance_data, vmNetworkData=vm_network_data)

Expand All @@ -39,10 +51,14 @@ def _get_vm_instance_data(self, vm, deployment_details_provider):

return data

def _get_vm_network_data(self, vm, reserved_networks, ip_regex, logger):
def _get_vm_network_data(self, vm, reserved_networks, ip_regex, wait_for_ip, logger):
network_interfaces = []

primary_ip = self._get_primary_ip(vm, ip_regex, logger)
if wait_for_ip == 'True':
primary_ip = self._get_primary_ip(vm, ip_regex, logger)
else:
primary_ip = None;

net_devices = [d for d in vm.config.hardware.device if isinstance(d, vim.vm.device.VirtualEthernetCard)]

for device in net_devices:
Expand Down
11 changes: 7 additions & 4 deletions package/cloudshell/tests/test_commands/test_vm_details.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,15 @@ def test(self, get_network_by_device):
si = Mock()
pyvmomi_service = Mock()
pyvmomi_service.find_by_uuid = Mock(return_value=vm)
param = Mock()
param.name = 'ip_regex'
param.value = '.*'
ip_regex_param = Mock()
ip_regex_param.name = 'ip_regex'
ip_regex_param.value = '.*'
wait_for_ip_param = Mock()
wait_for_ip_param.name = 'wait_for_ip'
wait_for_ip_param.value = 'True'
request = Mock()
request.deployedAppJson.name = 'App1'
request.deployedAppJson.vmdetails.vmCustomParams = [param]
request.deployedAppJson.vmdetails.vmCustomParams = [ip_regex_param, wait_for_ip_param]
request.appRequestJson.deploymentService.model = 'vCenter Clone VM From VM'
request.appRequestJson.deploymentService.attributes = [Mock()]
resource_context = Mock()
Expand Down
2 changes: 1 addition & 1 deletion package/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.14.0
1.14.2
2 changes: 1 addition & 1 deletion vcentershell_driver/drivermetadata.xml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<Driver Description="this driver manage all the commands that runs at the vcenter context" MainClass="driver.VCenterShellDriver" Name="VCenter Driver" Version="1.14.0">
<Driver Description="this driver manage all the commands that runs at the vcenter context" MainClass="driver.VCenterShellDriver" Name="VCenter Driver" Version="1.14.1">
<Layout>
<Category Name="Deployment">
<Command Description="" DisplayName="Deploy From Template" EnableCancellation="true" Name="deploy_from_template" Tags="allow_unreserved" />
Expand Down
2 changes: 1 addition & 1 deletion version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.14.0
1.14.1.175

0 comments on commit 62dae1c

Please sign in to comment.