1- from cloudshell .cp .vcenter .models .DeployFromTemplateDetails import DeployFromTemplateDetails
1+ from cloudshell .cp .vcenter .models .DeployFromImageDetails import DeployFromImageDetails
2+
3+ from cloudshell .cp .vcenter .common .vcenter .vm_location import VMLocation
4+ from cloudshell .cp .vcenter .models .DeployFromTemplateDetails import DeployFromTemplateDetails
5+ from os .path import normpath
6+
7+ DEPLOYED_APPS = 'Deployed Apps'
8+
29
310
411class DeployCommand (object ):
@@ -11,35 +18,67 @@ def __init__(self, deployer):
1118 """
1219 self .deployer = deployer
1320
14- def execute_deploy_from_linked_clone (self , si , logger , vcenter_data_model , reservation_id , deployment_params ):
21+ def execute_deploy_from_linked_clone (self , si , logger , vcenter_data_model , reservation_id , deployment_params , cancellation_context , folder_manager ):
1522 """
1623 Calls the deployer to deploy vm from snapshot
24+ :param cancellation_context:
1725 :param str reservation_id:
1826 :param si:
1927 :param logger:
2028 :type deployment_params: DeployFromLinkedClone
2129 :param vcenter_data_model:
2230 :return:
2331 """
32+ self ._prepare_deployed_apps_folder (deployment_params , si , logger , folder_manager , vcenter_data_model )
33+
2434 deploy_result = self .deployer .deploy_from_linked_clone (si , logger , deployment_params , vcenter_data_model ,
25- reservation_id )
35+ reservation_id , cancellation_context )
2636 return deploy_result
2737
28- def execute_deploy_clone_from_vm (self , si , logger , vcenter_data_model , reservation_id , deployment_params ):
38+ def execute_deploy_clone_from_vm (self , si , logger , vcenter_data_model , reservation_id , deployment_params , cancellation_context , folder_manager ):
2939 """
3040 Calls the deployer to deploy vm from another vm
41+ :param cancellation_context:
3142 :param str reservation_id:
3243 :param si:
3344 :param logger:
3445 :type deployment_params: DeployFromTemplateDetails
3546 :param vcenter_data_model:
3647 :return:
3748 """
49+ self ._prepare_deployed_apps_folder (deployment_params , si , logger , folder_manager , vcenter_data_model )
3850 deploy_result = self .deployer .deploy_clone_from_vm (si , logger , deployment_params , vcenter_data_model ,
39- reservation_id )
51+ reservation_id , cancellation_context )
4052 return deploy_result
4153
42- def execute_deploy_from_template (self , si , logger , vcenter_data_model , reservation_id , deployment_params ):
54+ def _prepare_deployed_apps_folder (self , data_holder , si , logger , folder_manager , vcenter_resource_model ):
55+ if isinstance (data_holder , DeployFromImageDetails ):
56+ self ._update_deploy_from_image_vm_location (data_holder , folder_manager , logger , si , vcenter_resource_model )
57+ else :
58+ self ._update_deploy_from_template_vm_location (data_holder , folder_manager , logger , si ,
59+ vcenter_resource_model )
60+
61+ def _update_deploy_from_template_vm_location (self , data_holder , folder_manager , logger , si , vcenter_resource_model ):
62+ vm_location = data_holder .template_resource_model .vm_location or vcenter_resource_model .vm_location
63+ folder_path = VMLocation .combine ([vcenter_resource_model .default_datacenter , vm_location ])
64+ folder_manager .get_or_create_vcenter_folder (si ,
65+ logger ,
66+ folder_path ,
67+ DEPLOYED_APPS )
68+ data_holder .template_resource_model .vm_location = VMLocation .combine ([vm_location , DEPLOYED_APPS ])
69+ logger .info ('VM will be deployed to {0}' .format (data_holder .template_resource_model .vm_location ))
70+
71+ def _update_deploy_from_image_vm_location (self , data_holder , folder_manager , logger , si , vcenter_resource_model ):
72+ vm_location = data_holder .image_params .vm_location or vcenter_resource_model .vm_location
73+ folder_path = VMLocation .combine ([vcenter_resource_model .default_datacenter , vm_location ])
74+ folder_manager .get_or_create_vcenter_folder (si ,
75+ logger ,
76+ folder_path ,
77+ DEPLOYED_APPS )
78+ data_holder .image_params .vm_location = VMLocation .combine ([vm_location , DEPLOYED_APPS ])
79+ logger .info ('VM will be deployed to {0}' .format (data_holder .image_params .vm_location ))
80+
81+ def execute_deploy_from_template (self , si , logger , vcenter_data_model , reservation_id , deployment_params , cancellation_context , folder_manager ):
4382 """
4483
4584 :param str reservation_id:
@@ -49,14 +88,17 @@ def execute_deploy_from_template(self, si, logger, vcenter_data_model, reservati
4988 :param vcenter_data_model:
5089 :return:
5190 """
91+ self ._prepare_deployed_apps_folder (deployment_params , si , logger , folder_manager , vcenter_data_model )
92+
5293 deploy_result = self .deployer .deploy_from_template (si , logger , deployment_params , vcenter_data_model ,
53- reservation_id )
94+ reservation_id , cancellation_context )
5495 return deploy_result
5596
5697 def execute_deploy_from_image (self , si , logger , session , vcenter_data_model , reservation_id , deployment_params ,
57- resource_context ):
98+ resource_context , cancellation_context , folder_manager ):
5899 """
59100
101+ :param cancellation_context:
60102 :param str reservation_id:
61103 :param si:
62104 :param logger:
@@ -66,11 +108,14 @@ def execute_deploy_from_image(self, si, logger, session, vcenter_data_model, res
66108 :param resource_context:
67109 :return:
68110 """
111+ self ._prepare_deployed_apps_folder (deployment_params , si , logger , folder_manager , vcenter_data_model )
112+
69113 deploy_result = self .deployer .deploy_from_image (si = si ,
70114 logger = logger ,
71115 session = session ,
72116 vcenter_data_model = vcenter_data_model ,
73117 data_holder = deployment_params ,
74118 resource_context = resource_context ,
75- reservation_id = reservation_id )
119+ reservation_id = reservation_id ,
120+ cancellation_context = cancellation_context )
76121 return deploy_result
0 commit comments