22from datetime import datetime , date
33import jsonpickle
44
5+ from cloudshell .cp .vcenter .commands .vm_details import VmDetailsCommand
56from cloudshell .cp .vcenter .models .DeployFromImageDetails import DeployFromImageDetails
67from cloudshell .shell .core .context import ResourceRemoteCommandContext
8+
79from cloudshell .cp .vcenter .models .OrchestrationSaveResult import OrchestrationSaveResult
810from cloudshell .cp .vcenter .models .OrchestrationSavedArtifactsInfo import OrchestrationSavedArtifactsInfo
911from cloudshell .cp .vcenter .models .OrchestrationSavedArtifact import OrchestrationSavedArtifact
4648from cloudshell .cp .vcenter .vm .dvswitch_connector import VirtualSwitchToMachineConnector
4749from cloudshell .cp .vcenter .vm .ip_manager import VMIPManager
4850from cloudshell .cp .vcenter .vm .portgroup_configurer import VirtualMachinePortGroupConfigurer
51+ from cloudshell .cp .vcenter .vm .vm_details_provider import VmDetailsProvider
4952from cloudshell .cp .vcenter .vm .vnic_to_network_mapper import VnicToNetworkMapper
5053from cloudshell .cp .vcenter .models .DeployFromTemplateDetails import DeployFromTemplateDetails
5154
@@ -67,10 +70,15 @@ def __init__(self):
6770
6871 self .vm_loader = VMLoader (pv_service )
6972
73+ ip_manager = VMIPManager ()
74+ vm_details_provider = VmDetailsProvider (pyvmomi_service = pv_service ,
75+ ip_manager = ip_manager )
76+
7077 vm_deployer = VirtualMachineDeployer (pv_service = pv_service ,
7178 name_generator = generate_unique_name ,
7279 ovf_service = ovf_service ,
73- resource_model_parser = ResourceModelParser ())
80+ resource_model_parser = ResourceModelParser (),
81+ vm_details_provider = vm_details_provider )
7482
7583 dv_port_group_creator = DvPortGroupCreator (pyvmomi_service = pv_service ,
7684 synchronous_task_waiter = synchronous_task_waiter )
@@ -82,6 +90,7 @@ def __init__(self):
8290 name_gen = port_group_name_generator )
8391 virtual_switch_to_machine_connector = VirtualSwitchToMachineConnector (dv_port_group_creator ,
8492 virtual_machine_port_group_configurer )
93+
8594 # Command Wrapper
8695 self .command_wrapper = CommandWrapper (pv_service = pv_service ,
8796 resource_model_parser = self .resource_model_parser ,
@@ -119,13 +128,15 @@ def __init__(self):
119128 VirtualMachinePowerManagementCommand (pyvmomi_service = pv_service ,
120129 synchronous_task_waiter = synchronous_task_waiter )
121130
122- ip_manager = VMIPManager ()
123-
124131 # Refresh IP command
125132 self .refresh_ip_command = RefreshIpCommand (pyvmomi_service = pv_service ,
126133 resource_model_parser = ResourceModelParser (),
127134 ip_manager = ip_manager )
128135
136+ # Get Vm Details command
137+ self .vm_details = VmDetailsCommand (pyvmomi_service = pv_service ,
138+ vm_details_provider = vm_details_provider )
139+
129140 # Save Snapshot
130141 self .snapshot_saver = SaveSnapshotCommand (pyvmomi_service = pv_service ,
131142 task_waiter = synchronous_task_waiter )
@@ -391,20 +402,32 @@ def get_vm_uuid_by_name(self, context, vm_name):
391402 vm_name )
392403 return set_command_result (result = res , unpicklable = False )
393404
394- def save_snapshot (self , context , snapshot_name ):
405+ def get_vm_details (self , context ,cancellation_context , requests_json ):
406+ requests = DeployDataHolder (jsonpickle .decode (requests_json )).items
407+ res = self .command_wrapper .execute_command_with_connection (context ,
408+ self .vm_details .get_vm_details ,
409+ context .resource ,
410+ requests ,
411+ cancellation_context )
412+ return set_command_result (result = res , unpicklable = False )
413+
414+ def save_snapshot (self , context , snapshot_name , save_memory = 'No' ):
395415 """
396416 Saves virtual machine to a snapshot
397417 :param context: resource context of the vCenterShell
398418 :type context: models.QualiDriverModels.ResourceCommandContext
399419 :param snapshot_name: snapshot name to save to
400420 :type snapshot_name: str
421+ :param save_memory: Snapshot the virtual machine's memory. Lookup, Yes / No
422+ :type save_memory: str
401423 :return:
402424 """
403425 resource_details = self ._parse_remote_model (context )
404426 created_snapshot_path = self .command_wrapper .execute_command_with_connection (context ,
405427 self .snapshot_saver .save_snapshot ,
406428 resource_details .vm_uuid ,
407- snapshot_name )
429+ snapshot_name ,
430+ save_memory )
408431 return set_command_result (created_snapshot_path )
409432
410433 def restore_snapshot (self , context , snapshot_name ):
0 commit comments