@@ -12,6 +12,7 @@ def execute_app_orchestration():
1212 helpers .get_resource_context_details ()
1313 app_name = resource_details ["name" ]
1414 deployment_service = resource_details ["appData" ]["deploymentService" ]["name" ]
15+ installation_service_data = resource_details ["appData" ]["installationService" ]
1516
1617 # Start api session
1718 api = helpers .get_api_session ()
@@ -29,18 +30,75 @@ def execute_app_orchestration():
2930 [AttributeNameValue ("VM_UUID" , deployment_result .VmUuid ),
3031 AttributeNameValue ("Cloud Provider" , deployment_result .CloudProviderResourceName )])])
3132
32- # logical resource execute "Power On"
33+ # connect all
34+ connect_all (api , reservation_id )
35+
36+ # "Power On"
3337 power_on_deployed_app (api , app_name , deployment_result , reservation_id )
3438
3539 # if install service exists on app execute it
36- # TODO
40+ execute_installation_if_exist (api , deployment_result , installation_service_data , reservation_id )
41+
42+ # refresh ip
43+ #refresh_ip(api, deployment_result, reservation_id)
3744
3845 # Set live status - deployment done
3946 api .SetResourceLiveStatus (deployment_result .LogicalResourceName , "Online" , "Active" )
4047
4148 logger .info ("Deployed {0} Successfully" .format (app_name ))
4249
4350
51+ def connect_all (api , reservation_id ):
52+ try :
53+ api .ExecuteEnvironmentCommand (reservation_id , "Connect All" )
54+ except CloudShellAPIError as exc :
55+ logger .error ("Error executing connect all. Error: {0}" .format (exc .rawxml ))
56+ exit (1 )
57+ except Exception as exc :
58+ logger .error ("Error executing connect all. Error: {0}" .format (str (exc )))
59+ exit (1 )
60+
61+
62+ def refresh_ip (api , deployment_result , reservation_id ):
63+ logger .info ("Waiting to get IP for deployed app resource {0}..." .format (deployment_result .LogicalResourceName ))
64+ try :
65+ # TODO update the script inputs with data from the installation service
66+ api .ExecuteCommand (reservation_id , deployment_result .CloudProviderResourceName ,
67+ "Resource" "Refresh IP" , [InputNameValue ('VM_UUID' ,
68+ deployment_result .VmUuid ),
69+ InputNameValue ('RESOURCE_NAME' ,
70+ deployment_result .LogicalResourceName )])
71+ except CloudShellAPIError as exc :
72+ logger .error ("Error refreshing ip for deployed app {0}. Error: {1}"
73+ .format (deployment_result .LogicalResourceName , exc .rawxml ))
74+ exit (1 )
75+ except Exception as exc :
76+ logger .error ("Error refreshing ip for deployed app {0}. Error: {1}"
77+ .format (deployment_result .LogicalResourceName , str (exc )))
78+ exit (1 )
79+
80+
81+ def execute_installation_if_exist (api , deployment_result , installation_service_data , reservation_id ):
82+ if not installation_service_data :
83+ return
84+ installation_service_name = installation_service_data ["name" ]
85+ logger .info ("Executing installation '{0}' on deployed app resource '{1}'..."
86+ .format (installation_service_name , deployment_result .LogicalResourceName ))
87+ try :
88+ # TODO update the script inputs with data from the installation service
89+ installation_result = api .ExecuteInstallAppCommand (reservation_id , deployment_result .LogicalResourceName ,
90+ "Install" , [InputNameValue ('STAM' , "- its just a demo" )])
91+ logger .debug ("installation_result: " + installation_result .Output )
92+ except CloudShellAPIError as exc :
93+ logger .error ("Error installing deployed app {0}. Error: {1}"
94+ .format (deployment_result .LogicalResourceName , exc .rawxml ))
95+ exit (1 )
96+ except Exception as exc :
97+ logger .error (
98+ "Error installing deployed app {0}. Error: {1}" .format (deployment_result .LogicalResourceName , str (exc )))
99+ exit (1 )
100+
101+
44102def power_on_deployed_app (api , app_name , deployment_result , reservation_id ):
45103 try :
46104 logger .info ("Powering on deployed app {0}" .format (deployment_result .LogicalResourceName ))
0 commit comments