Ejemplo n.º 1
0
 /**
  * Swap deployment slots (perform VIP swap).
  * 
  * @command-name Swap
  * @command-description Swap deployment slots (perform VIP swap).
  * @command-parameter-for $subscriptionId Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --SubscriptionId|-sid Required. This is the Windows Azure Subscription Id to operate on.
  * @command-parameter-for $certificate Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Certificate|-cert Required. This is the .pem certificate that user has uploaded to Windows Azure subscription as Management Certificate.
  * @command-parameter-for $certificatePassphrase Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Prompt --Passphrase|-p Required. The certificate passphrase. If not specified, a prompt will be displayed.
  * @command-parameter-for $serviceName Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile|Zend_Service_Console_Command_ParameterSource_Env --Name Required. The hosted service account name to operate on.
  * @command-parameter-for $waitForOperation Zend_Service_Console_Command_ParameterSource_Argv|Zend_Service_Console_Command_ParameterSource_ConfigFile --WaitFor|-w Optional. Wait for the operation to complete?
  * @command-example Swap deployment slots:
  * @command-example Swap -sid:"<your_subscription_id>" -cert:"mycert.pem" --Name:"servicename"
  */
 public function swapCommand($subscriptionId, $certificate, $certificatePassphrase, $serviceName, $waitForOperation = false)
 {
     $client = new Zend_Service_WindowsAzure_Management_Client($subscriptionId, $certificate, $certificatePassphrase);
     $productionDeploymentName = null;
     try {
         $productionDeploymentName = $client->getDeploymentBySlot($serviceName, 'production')->Name;
     } catch (Exception $ex) {
     }
     $stagingDeploymentName = null;
     try {
         $stagingDeploymentName = $client->getDeploymentBySlot($serviceName, 'staging')->Name;
     } catch (Exception $ex) {
     }
     if (is_null($productionDeploymentName)) {
         $productionDeploymentName = $stagingDeploymentName;
     }
     if (is_null($stagingDeploymentName)) {
         require_once 'Zend/Service/Console/Exception.php';
         throw new Zend_Service_Console_Exception('Swapping deployment slots is only possible when both slots have an active deployment or when production slot is empty.');
     }
     $client->swapDeployment($serviceName, $productionDeploymentName, $stagingDeploymentName);
     if ($waitForOperation) {
         $client->waitForOperation();
     }
     echo $client->getLastRequestId();
 }