Java tutorial
/** * * Copyright (c) Microsoft and contributors. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. * */ // Warning: This code was generated by a tool. // // Changes to this file may cause incorrect behavior and will be lost if the // code is regenerated. package com.microsoft.windowsazure.management.compute; import com.microsoft.windowsazure.core.LazyCollection; import com.microsoft.windowsazure.core.OperationResponse; import com.microsoft.windowsazure.core.OperationStatus; import com.microsoft.windowsazure.core.OperationStatusResponse; import com.microsoft.windowsazure.core.ServiceOperations; import com.microsoft.windowsazure.core.pipeline.apache.CustomHttpDelete; import com.microsoft.windowsazure.core.utils.BOMInputStream; import com.microsoft.windowsazure.core.utils.Base64; import com.microsoft.windowsazure.core.utils.CollectionStringBuilder; import com.microsoft.windowsazure.core.utils.XmlUtility; import com.microsoft.windowsazure.exception.CloudError; import com.microsoft.windowsazure.exception.ServiceException; import com.microsoft.windowsazure.management.compute.models.AccessControlListRule; import com.microsoft.windowsazure.management.compute.models.AdditionalUnattendContentSettings; import com.microsoft.windowsazure.management.compute.models.ComponentSetting; import com.microsoft.windowsazure.management.compute.models.ConfigurationSet; import com.microsoft.windowsazure.management.compute.models.DataDiskConfiguration; import com.microsoft.windowsazure.management.compute.models.DataVirtualHardDisk; import com.microsoft.windowsazure.management.compute.models.DeploymentChangeConfigurationParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentCreateParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentDeleteRoleInstanceParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentEventListResponse; import com.microsoft.windowsazure.management.compute.models.DeploymentGetPackageParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentGetResponse; import com.microsoft.windowsazure.management.compute.models.DeploymentRollbackUpdateOrUpgradeParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentSlot; import com.microsoft.windowsazure.management.compute.models.DeploymentStatus; import com.microsoft.windowsazure.management.compute.models.DeploymentSwapParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentUpdateStatusParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentUpgradeParameters; import com.microsoft.windowsazure.management.compute.models.DeploymentUpgradeType; import com.microsoft.windowsazure.management.compute.models.DeploymentWalkUpgradeDomainParameters; import com.microsoft.windowsazure.management.compute.models.DnsServer; import com.microsoft.windowsazure.management.compute.models.DnsSettings; import com.microsoft.windowsazure.management.compute.models.DomainJoinCredentials; import com.microsoft.windowsazure.management.compute.models.DomainJoinProvisioning; import com.microsoft.windowsazure.management.compute.models.DomainJoinSettings; import com.microsoft.windowsazure.management.compute.models.EndpointAcl; import com.microsoft.windowsazure.management.compute.models.ExtensionConfiguration; import com.microsoft.windowsazure.management.compute.models.FrontendIPConfiguration; import com.microsoft.windowsazure.management.compute.models.GuestAgentFormattedMessage; import com.microsoft.windowsazure.management.compute.models.GuestAgentMessage; import com.microsoft.windowsazure.management.compute.models.GuestAgentStatus; import com.microsoft.windowsazure.management.compute.models.IPConfiguration; import com.microsoft.windowsazure.management.compute.models.IPConfigurationInstance; import com.microsoft.windowsazure.management.compute.models.InputEndpoint; import com.microsoft.windowsazure.management.compute.models.InstanceEndpoint; import com.microsoft.windowsazure.management.compute.models.LoadBalancer; import com.microsoft.windowsazure.management.compute.models.LoadBalancerProbe; import com.microsoft.windowsazure.management.compute.models.LoadBalancerProbeTransportProtocol; import com.microsoft.windowsazure.management.compute.models.NetworkInterface; import com.microsoft.windowsazure.management.compute.models.NetworkInterfaceInstance; import com.microsoft.windowsazure.management.compute.models.OSDiskConfiguration; import com.microsoft.windowsazure.management.compute.models.OSVirtualHardDisk; import com.microsoft.windowsazure.management.compute.models.PersistentVMDowntime; import com.microsoft.windowsazure.management.compute.models.RebootEvent; import com.microsoft.windowsazure.management.compute.models.ResourceExtensionConfigurationStatus; import com.microsoft.windowsazure.management.compute.models.ResourceExtensionParameterValue; import com.microsoft.windowsazure.management.compute.models.ResourceExtensionReference; import com.microsoft.windowsazure.management.compute.models.ResourceExtensionStatus; import com.microsoft.windowsazure.management.compute.models.ResourceExtensionSubStatus; import com.microsoft.windowsazure.management.compute.models.Role; import com.microsoft.windowsazure.management.compute.models.RoleInstance; import com.microsoft.windowsazure.management.compute.models.RoleInstancePowerState; import com.microsoft.windowsazure.management.compute.models.SshSettingKeyPair; import com.microsoft.windowsazure.management.compute.models.SshSettingPublicKey; import com.microsoft.windowsazure.management.compute.models.SshSettings; import com.microsoft.windowsazure.management.compute.models.StoredCertificateSettings; import com.microsoft.windowsazure.management.compute.models.UnattendComponent; import com.microsoft.windowsazure.management.compute.models.UnattendPassSettings; import com.microsoft.windowsazure.management.compute.models.UpgradeDomainState; import com.microsoft.windowsazure.management.compute.models.UpgradeStatus; import com.microsoft.windowsazure.management.compute.models.VMImageInput; import com.microsoft.windowsazure.management.compute.models.VirtualIPAddress; import com.microsoft.windowsazure.management.compute.models.VirtualMachineWindowsRemoteManagementListenerType; import com.microsoft.windowsazure.management.compute.models.WindowsRemoteManagementListener; import com.microsoft.windowsazure.management.compute.models.WindowsRemoteManagementSettings; import com.microsoft.windowsazure.tracing.ClientRequestTrackingHandler; import com.microsoft.windowsazure.tracing.CloudTracing; import org.apache.http.HttpResponse; import org.apache.http.HttpStatus; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.xml.sax.SAXException; import javax.xml.bind.DatatypeConverter; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import java.io.IOException; import java.io.InputStream; import java.io.StringWriter; import java.net.InetAddress; import java.net.URI; import java.net.URISyntaxException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.Map; import java.util.TimeZone; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; /** * The Service Management API includes operations for managing the deployments * in your subscription. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460812.aspx for more * information) */ public class DeploymentOperationsImpl implements ServiceOperations<ComputeManagementClientImpl>, DeploymentOperations { /** * Initializes a new instance of the DeploymentOperationsImpl class. * * @param client Reference to the service client. */ DeploymentOperationsImpl(ComputeManagementClientImpl client) { this.client = client; } private ComputeManagementClientImpl client; /** * Gets a reference to the * microsoft.windowsazure.management.compute.ComputeManagementClientImpl. * @return The Client value. */ public ComputeManagementClientImpl getClient() { return this.client; } /** * The Begin Changing Deployment Configuration By Name operation initiates a * change to the deployment configuration. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentName Required. The deployment to change configuration * for. * @param parameters Required. Parameters supplied to the Begin Changing * Configuration Deployment By Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginChangingConfigurationByNameAsync(final String serviceName, final String deploymentName, final DeploymentChangeConfigurationParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginChangingConfigurationByName(serviceName, deploymentName, parameters); } }); } /** * The Begin Changing Deployment Configuration By Name operation initiates a * change to the deployment configuration. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentName Required. The deployment to change configuration * for. * @param parameters Required. Parameters supplied to the Begin Changing * Configuration Deployment By Name operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginChangingConfigurationByName(String serviceName, String deploymentName, DeploymentChangeConfigurationParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getConfiguration() == null) { throw new NullPointerException("parameters.Configuration"); } if (parameters.getExtensionConfiguration() != null) { if (parameters.getExtensionConfiguration().getAllRoles() != null) { for (ExtensionConfiguration.Extension allRolesParameterItem : parameters.getExtensionConfiguration() .getAllRoles()) { if (allRolesParameterItem.getId() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.AllRoles.Id"); } } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { for (ExtensionConfiguration.NamedRole namedRolesParameterItem : parameters .getExtensionConfiguration().getNamedRoles()) { if (namedRolesParameterItem.getExtensions() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.Extensions"); } if (namedRolesParameterItem.getExtensions() != null) { for (ExtensionConfiguration.Extension extensionsParameterItem : namedRolesParameterItem .getExtensions()) { if (extensionsParameterItem.getId() == null) { throw new NullPointerException( "parameters.ExtensionConfiguration.NamedRoles.Extensions.Id"); } } } if (namedRolesParameterItem.getRoleName() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.RoleName"); } } } } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginChangingConfigurationByNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=config"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element changeConfigurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "ChangeConfiguration"); requestDoc.appendChild(changeConfigurationElement); Element configurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Configuration"); configurationElement .appendChild(requestDoc.createTextNode(Base64.encode(parameters.getConfiguration().getBytes()))); changeConfigurationElement.appendChild(configurationElement); if (parameters.isTreatWarningsAsError() != null) { Element treatWarningsAsErrorElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "TreatWarningsAsError"); treatWarningsAsErrorElement.appendChild( requestDoc.createTextNode(Boolean.toString(parameters.isTreatWarningsAsError()).toLowerCase())); changeConfigurationElement.appendChild(treatWarningsAsErrorElement); } if (parameters.getMode() != null) { Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); changeConfigurationElement.appendChild(modeElement); } if (parameters.getExtendedProperties() != null) { if (parameters.getExtendedProperties() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtendedProperties()).isInitialized()) { Element extendedPropertiesDictionaryElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); for (Map.Entry<String, String> entry : parameters.getExtendedProperties().entrySet()) { String extendedPropertiesKey = entry.getKey(); String extendedPropertiesValue = entry.getValue(); Element extendedPropertiesElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperty"); extendedPropertiesDictionaryElement.appendChild(extendedPropertiesElement); Element extendedPropertiesKeyElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); extendedPropertiesKeyElement.appendChild(requestDoc.createTextNode(extendedPropertiesKey)); extendedPropertiesElement.appendChild(extendedPropertiesKeyElement); Element extendedPropertiesValueElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Value"); extendedPropertiesValueElement.appendChild(requestDoc.createTextNode(extendedPropertiesValue)); extendedPropertiesElement.appendChild(extendedPropertiesValueElement); } changeConfigurationElement.appendChild(extendedPropertiesDictionaryElement); } } if (parameters.getExtensionConfiguration() != null) { Element extensionConfigurationElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); changeConfigurationElement.appendChild(extensionConfigurationElement); if (parameters.getExtensionConfiguration().getAllRoles() != null) { if (parameters.getExtensionConfiguration().getAllRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getAllRoles()) .isInitialized()) { Element allRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "AllRoles"); for (ExtensionConfiguration.Extension allRolesItem : parameters.getExtensionConfiguration() .getAllRoles()) { Element extensionElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); allRolesSequenceElement.appendChild(extensionElement); Element idElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement.appendChild(requestDoc.createTextNode(allRolesItem.getId())); extensionElement.appendChild(idElement); } extensionConfigurationElement.appendChild(allRolesSequenceElement); } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { if (parameters.getExtensionConfiguration().getNamedRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getNamedRoles()) .isInitialized()) { Element namedRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "NamedRoles"); for (ExtensionConfiguration.NamedRole namedRolesItem : parameters.getExtensionConfiguration() .getNamedRoles()) { Element roleElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Role"); namedRolesSequenceElement.appendChild(roleElement); Element roleNameElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleName"); roleNameElement.appendChild(requestDoc.createTextNode(namedRolesItem.getRoleName())); roleElement.appendChild(roleNameElement); if (namedRolesItem.getExtensions() instanceof LazyCollection == false || ((LazyCollection) namedRolesItem.getExtensions()).isInitialized()) { Element extensionsSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extensions"); for (ExtensionConfiguration.Extension extensionsItem : namedRolesItem.getExtensions()) { Element extensionElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); extensionsSequenceElement.appendChild(extensionElement2); Element idElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement2.appendChild(requestDoc.createTextNode(extensionsItem.getId())); extensionElement2.appendChild(idElement2); } roleElement.appendChild(extensionsSequenceElement); } } extensionConfigurationElement.appendChild(namedRolesSequenceElement); } } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Changing Deployment Configuration By Slot operation initiates a * change to the deployment configuration. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentSlot Required. The slot to change deployment * configuration for. * @param parameters Required. Parameters supplied to the Begin Changing * Configuration Deployment By Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginChangingConfigurationBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentChangeConfigurationParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginChangingConfigurationBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Begin Changing Deployment Configuration By Slot operation initiates a * change to the deployment configuration. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentSlot Required. The slot to change deployment * configuration for. * @param parameters Required. Parameters supplied to the Begin Changing * Configuration Deployment By Slot operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginChangingConfigurationBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentChangeConfigurationParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getConfiguration() == null) { throw new NullPointerException("parameters.Configuration"); } if (parameters.getExtensionConfiguration() != null) { if (parameters.getExtensionConfiguration().getAllRoles() != null) { for (ExtensionConfiguration.Extension allRolesParameterItem : parameters.getExtensionConfiguration() .getAllRoles()) { if (allRolesParameterItem.getId() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.AllRoles.Id"); } } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { for (ExtensionConfiguration.NamedRole namedRolesParameterItem : parameters .getExtensionConfiguration().getNamedRoles()) { if (namedRolesParameterItem.getExtensions() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.Extensions"); } if (namedRolesParameterItem.getExtensions() != null) { for (ExtensionConfiguration.Extension extensionsParameterItem : namedRolesParameterItem .getExtensions()) { if (extensionsParameterItem.getId() == null) { throw new NullPointerException( "parameters.ExtensionConfiguration.NamedRoles.Extensions.Id"); } } } if (namedRolesParameterItem.getRoleName() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.RoleName"); } } } } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginChangingConfigurationBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=config"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element changeConfigurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "ChangeConfiguration"); requestDoc.appendChild(changeConfigurationElement); Element configurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Configuration"); configurationElement .appendChild(requestDoc.createTextNode(Base64.encode(parameters.getConfiguration().getBytes()))); changeConfigurationElement.appendChild(configurationElement); if (parameters.isTreatWarningsAsError() != null) { Element treatWarningsAsErrorElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "TreatWarningsAsError"); treatWarningsAsErrorElement.appendChild( requestDoc.createTextNode(Boolean.toString(parameters.isTreatWarningsAsError()).toLowerCase())); changeConfigurationElement.appendChild(treatWarningsAsErrorElement); } if (parameters.getMode() != null) { Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); changeConfigurationElement.appendChild(modeElement); } if (parameters.getExtendedProperties() != null) { if (parameters.getExtendedProperties() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtendedProperties()).isInitialized()) { Element extendedPropertiesDictionaryElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); for (Map.Entry<String, String> entry : parameters.getExtendedProperties().entrySet()) { String extendedPropertiesKey = entry.getKey(); String extendedPropertiesValue = entry.getValue(); Element extendedPropertiesElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperty"); extendedPropertiesDictionaryElement.appendChild(extendedPropertiesElement); Element extendedPropertiesKeyElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); extendedPropertiesKeyElement.appendChild(requestDoc.createTextNode(extendedPropertiesKey)); extendedPropertiesElement.appendChild(extendedPropertiesKeyElement); Element extendedPropertiesValueElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Value"); extendedPropertiesValueElement.appendChild(requestDoc.createTextNode(extendedPropertiesValue)); extendedPropertiesElement.appendChild(extendedPropertiesValueElement); } changeConfigurationElement.appendChild(extendedPropertiesDictionaryElement); } } if (parameters.getExtensionConfiguration() != null) { Element extensionConfigurationElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); changeConfigurationElement.appendChild(extensionConfigurationElement); if (parameters.getExtensionConfiguration().getAllRoles() != null) { if (parameters.getExtensionConfiguration().getAllRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getAllRoles()) .isInitialized()) { Element allRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "AllRoles"); for (ExtensionConfiguration.Extension allRolesItem : parameters.getExtensionConfiguration() .getAllRoles()) { Element extensionElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); allRolesSequenceElement.appendChild(extensionElement); Element idElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement.appendChild(requestDoc.createTextNode(allRolesItem.getId())); extensionElement.appendChild(idElement); } extensionConfigurationElement.appendChild(allRolesSequenceElement); } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { if (parameters.getExtensionConfiguration().getNamedRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getNamedRoles()) .isInitialized()) { Element namedRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "NamedRoles"); for (ExtensionConfiguration.NamedRole namedRolesItem : parameters.getExtensionConfiguration() .getNamedRoles()) { Element roleElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Role"); namedRolesSequenceElement.appendChild(roleElement); Element roleNameElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleName"); roleNameElement.appendChild(requestDoc.createTextNode(namedRolesItem.getRoleName())); roleElement.appendChild(roleNameElement); if (namedRolesItem.getExtensions() instanceof LazyCollection == false || ((LazyCollection) namedRolesItem.getExtensions()).isInitialized()) { Element extensionsSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extensions"); for (ExtensionConfiguration.Extension extensionsItem : namedRolesItem.getExtensions()) { Element extensionElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); extensionsSequenceElement.appendChild(extensionElement2); Element idElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement2.appendChild(requestDoc.createTextNode(extensionsItem.getId())); extensionElement2.appendChild(idElement2); } roleElement.appendChild(extensionsSequenceElement); } } extensionConfigurationElement.appendChild(namedRolesSequenceElement); } } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Creating Deployment operation uploads a new service package and * creates a new deployment in the staging or production environments. This * operation is an asynchronous operation. To determine whether the * management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460813.aspx * for more information) * * @param serviceName Required. The cloud service to create a deployment for. * @param deploymentSlot Required. The slot to create a deployment for. * @param parameters Required. Parameters supplied to the Begin Creating * Deployment operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginCreatingAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentCreateParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginCreating(serviceName, deploymentSlot, parameters); } }); } /** * The Begin Creating Deployment operation uploads a new service package and * creates a new deployment in the staging or production environments. This * operation is an asynchronous operation. To determine whether the * management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460813.aspx * for more information) * * @param serviceName Required. The cloud service to create a deployment for. * @param deploymentSlot Required. The slot to create a deployment for. * @param parameters Required. Parameters supplied to the Begin Creating * Deployment operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginCreating(String serviceName, DeploymentSlot deploymentSlot, DeploymentCreateParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getConfiguration() == null) { throw new NullPointerException("parameters.Configuration"); } if (parameters.getExtensionConfiguration() != null) { if (parameters.getExtensionConfiguration().getAllRoles() != null) { for (ExtensionConfiguration.Extension allRolesParameterItem : parameters.getExtensionConfiguration() .getAllRoles()) { if (allRolesParameterItem.getId() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.AllRoles.Id"); } } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { for (ExtensionConfiguration.NamedRole namedRolesParameterItem : parameters .getExtensionConfiguration().getNamedRoles()) { if (namedRolesParameterItem.getExtensions() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.Extensions"); } if (namedRolesParameterItem.getExtensions() != null) { for (ExtensionConfiguration.Extension extensionsParameterItem : namedRolesParameterItem .getExtensions()) { if (extensionsParameterItem.getId() == null) { throw new NullPointerException( "parameters.ExtensionConfiguration.NamedRoles.Extensions.Id"); } } } if (namedRolesParameterItem.getRoleName() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.RoleName"); } } } } if (parameters.getLabel() == null) { throw new NullPointerException("parameters.Label"); } if (parameters.getLabel().length() > 100) { throw new IllegalArgumentException("parameters.Label"); } if (parameters.getName() == null) { throw new NullPointerException("parameters.Name"); } if (parameters.getPackageUri() == null) { throw new NullPointerException("parameters.PackageUri"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginCreatingAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element createDeploymentElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "CreateDeployment"); requestDoc.appendChild(createDeploymentElement); Element nameElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); nameElement.appendChild(requestDoc.createTextNode(parameters.getName())); createDeploymentElement.appendChild(nameElement); Element packageUrlElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "PackageUrl"); packageUrlElement.appendChild(requestDoc.createTextNode(parameters.getPackageUri().toString())); createDeploymentElement.appendChild(packageUrlElement); Element labelElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Label"); labelElement.appendChild(requestDoc.createTextNode(Base64.encode(parameters.getLabel().getBytes()))); createDeploymentElement.appendChild(labelElement); Element configurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Configuration"); configurationElement .appendChild(requestDoc.createTextNode(Base64.encode(parameters.getConfiguration().getBytes()))); createDeploymentElement.appendChild(configurationElement); if (parameters.isStartDeployment() != null) { Element startDeploymentElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "StartDeployment"); startDeploymentElement.appendChild( requestDoc.createTextNode(Boolean.toString(parameters.isStartDeployment()).toLowerCase())); createDeploymentElement.appendChild(startDeploymentElement); } if (parameters.isTreatWarningsAsError() != null) { Element treatWarningsAsErrorElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "TreatWarningsAsError"); treatWarningsAsErrorElement.appendChild( requestDoc.createTextNode(Boolean.toString(parameters.isTreatWarningsAsError()).toLowerCase())); createDeploymentElement.appendChild(treatWarningsAsErrorElement); } if (parameters.getExtendedProperties() != null) { if (parameters.getExtendedProperties() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtendedProperties()).isInitialized()) { Element extendedPropertiesDictionaryElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); for (Map.Entry<String, String> entry : parameters.getExtendedProperties().entrySet()) { String extendedPropertiesKey = entry.getKey(); String extendedPropertiesValue = entry.getValue(); Element extendedPropertiesElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperty"); extendedPropertiesDictionaryElement.appendChild(extendedPropertiesElement); Element extendedPropertiesKeyElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); extendedPropertiesKeyElement.appendChild(requestDoc.createTextNode(extendedPropertiesKey)); extendedPropertiesElement.appendChild(extendedPropertiesKeyElement); Element extendedPropertiesValueElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Value"); extendedPropertiesValueElement.appendChild(requestDoc.createTextNode(extendedPropertiesValue)); extendedPropertiesElement.appendChild(extendedPropertiesValueElement); } createDeploymentElement.appendChild(extendedPropertiesDictionaryElement); } } if (parameters.getExtensionConfiguration() != null) { Element extensionConfigurationElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); createDeploymentElement.appendChild(extensionConfigurationElement); if (parameters.getExtensionConfiguration().getAllRoles() != null) { if (parameters.getExtensionConfiguration().getAllRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getAllRoles()) .isInitialized()) { Element allRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "AllRoles"); for (ExtensionConfiguration.Extension allRolesItem : parameters.getExtensionConfiguration() .getAllRoles()) { Element extensionElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); allRolesSequenceElement.appendChild(extensionElement); Element idElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement.appendChild(requestDoc.createTextNode(allRolesItem.getId())); extensionElement.appendChild(idElement); } extensionConfigurationElement.appendChild(allRolesSequenceElement); } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { if (parameters.getExtensionConfiguration().getNamedRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getNamedRoles()) .isInitialized()) { Element namedRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "NamedRoles"); for (ExtensionConfiguration.NamedRole namedRolesItem : parameters.getExtensionConfiguration() .getNamedRoles()) { Element roleElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Role"); namedRolesSequenceElement.appendChild(roleElement); Element roleNameElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleName"); roleNameElement.appendChild(requestDoc.createTextNode(namedRolesItem.getRoleName())); roleElement.appendChild(roleNameElement); if (namedRolesItem.getExtensions() instanceof LazyCollection == false || ((LazyCollection) namedRolesItem.getExtensions()).isInitialized()) { Element extensionsSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extensions"); for (ExtensionConfiguration.Extension extensionsItem : namedRolesItem.getExtensions()) { Element extensionElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); extensionsSequenceElement.appendChild(extensionElement2); Element idElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement2.appendChild(requestDoc.createTextNode(extensionsItem.getId())); extensionElement2.appendChild(idElement2); } roleElement.appendChild(extensionsSequenceElement); } } extensionConfigurationElement.appendChild(namedRolesSequenceElement); } } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Deleting Deployment By Name operation deletes the specified * deployment. This operation is an asynchronous operation. To determine * whether the Management service has finished processing the request, call * Get Operation Status. For more information on asynchronous operations, * see Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param deleteFromStorage Required. Specifies that the source blob for the * disk should also be deleted from storage. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginDeletingByNameAsync(final String serviceName, final String deploymentName, final boolean deleteFromStorage) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginDeletingByName(serviceName, deploymentName, deleteFromStorage); } }); } /** * The Begin Deleting Deployment By Name operation deletes the specified * deployment. This operation is an asynchronous operation. To determine * whether the Management service has finished processing the request, call * Get Operation Status. For more information on asynchronous operations, * see Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param deleteFromStorage Required. Specifies that the source blob for the * disk should also be deleted from storage. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginDeletingByName(String serviceName, String deploymentName, boolean deleteFromStorage) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("deleteFromStorage", deleteFromStorage); CloudTracing.enter(invocationId, this, "beginDeletingByNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); if (deleteFromStorage == true) { queryParameters.add("comp=" + "media"); } if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects CustomHttpDelete httpRequest = new CustomHttpDelete(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Deleting Deployment By Slot operation deletes the specified * deployment. This operation is an asynchronous operation. To determine * whether the Management service has finished processing the request, call * Get Operation Status. For more information on asynchronous operations, * see Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginDeletingBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginDeletingBySlot(serviceName, deploymentSlot); } }); } /** * The Begin Deleting Deployment By Slot operation deletes the specified * deployment. This operation is an asynchronous operation. To determine * whether the Management service has finished processing the request, call * Get Operation Status. For more information on asynchronous operations, * see Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginDeletingBySlot(String serviceName, DeploymentSlot deploymentSlot) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); CloudTracing.enter(invocationId, this, "beginDeletingBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects CustomHttpDelete httpRequest = new CustomHttpDelete(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The name of the deployment slot. * @param parameters Required. The parameters to delete the role. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginDeletingRoleInstanceByBeploymentSlotAsync(final String serviceName, final String deploymentSlot, final DeploymentDeleteRoleInstanceParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginDeletingRoleInstanceByBeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The name of the deployment slot. * @param parameters Required. The parameters to delete the role. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginDeletingRoleInstanceByBeploymentSlot(String serviceName, String deploymentSlot, DeploymentDeleteRoleInstanceParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginDeletingRoleInstanceByBeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot, "UTF-8"); url = url + "/roleinstances/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=delete"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); if (parameters.getName() != null) { if (parameters.getName() instanceof LazyCollection == false || ((LazyCollection) parameters.getName()).isInitialized()) { Element roleInstancesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleInstances"); for (String roleInstancesItem : parameters.getName()) { Element roleInstancesItemElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); roleInstancesItemElement.appendChild(requestDoc.createTextNode(roleInstancesItem)); roleInstancesSequenceElement.appendChild(roleInstancesItemElement); } requestDoc.appendChild(roleInstancesSequenceElement); } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param parameters Required. The parameters to delete the role. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginDeletingRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentDeleteRoleInstanceParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginDeletingRoleInstanceByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param parameters Required. The parameters to delete the role. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginDeletingRoleInstanceByDeploymentName(String serviceName, String deploymentName, DeploymentDeleteRoleInstanceParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginDeletingRoleInstanceByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/roleinstances/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=delete"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); if (parameters.getName() != null) { if (parameters.getName() instanceof LazyCollection == false || ((LazyCollection) parameters.getName()).isInitialized()) { Element roleInstancesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleInstances"); for (String roleInstancesItem : parameters.getName()) { Element roleInstancesItemElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); roleInstancesItemElement.appendChild(requestDoc.createTextNode(roleInstancesItem)); roleInstancesSequenceElement.appendChild(roleInstancesItemElement); } requestDoc.appendChild(roleInstancesSequenceElement); } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Get Package By Name operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Get Package By * Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginGettingPackageByNameAsync(final String serviceName, final String deploymentName, final DeploymentGetPackageParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginGettingPackageByName(serviceName, deploymentName, parameters); } }); } /** * The Get Package By Name operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Get Package By * Name operation. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginGettingPackageByName(String serviceName, String deploymentName, DeploymentGetPackageParameters parameters) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getContainerUri() == null) { throw new NullPointerException("parameters.ContainerUri"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginGettingPackageByNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/package"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters .add("containerUri=" + URLEncoder.encode(parameters.getContainerUri().toString(), "UTF-8") + " +"); if (parameters.isOverwriteExisting() != null) { queryParameters.add("overwriteExisting=" + URLEncoder.encode(Boolean.toString(parameters.isOverwriteExisting()).toLowerCase(), "UTF-8")); } if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Get Package By Slot operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Get Package By * Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginGettingPackageBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentGetPackageParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginGettingPackageBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Get Package By Slot operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Get Package By * Slot operation. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginGettingPackageBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentGetPackageParameters parameters) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getContainerUri() == null) { throw new NullPointerException("parameters.ContainerUri"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginGettingPackageBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/package"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters .add("containerUri=" + URLEncoder.encode(parameters.getContainerUri().toString(), "UTF-8") + " +"); if (parameters.isOverwriteExisting() != null) { queryParameters.add("overwriteExisting=" + URLEncoder.encode(Boolean.toString(parameters.isOverwriteExisting()).toLowerCase(), "UTF-8")); } if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Rebooting Role Instance By Deployment Name operation requests a * reboot of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginRebootingRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginRebootingRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName); } }); } /** * The Begin Rebooting Role Instance By Deployment Name operation requests a * reboot of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginRebootingRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "beginRebootingRoleInstanceByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=reboot"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Rebooting Role Instance By Deployment Slot operation requests a * reboot of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginRebootingRoleInstanceByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginRebootingRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName); } }); } /** * The Begin Rebooting Role Instance By Deployment Slot operation requests a * reboot of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginRebootingRoleInstanceByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, String roleInstanceName) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "beginRebootingRoleInstanceByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=reboot"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginRebuildingRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName, final String resources) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginRebuildingRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName, resources); } }); } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginRebuildingRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName, String resources) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } if (resources == null) { throw new NullPointerException("resources"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); tracingParameters.put("resources", resources); CloudTracing.enter(invocationId, this, "beginRebuildingRoleInstanceByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=rebuild"); queryParameters.add("resources=" + URLEncoder.encode(resources, "UTF-8")); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginRebuildingRoleInstanceByDeploymentSlotAsync(final String serviceName, final String deploymentSlot, final String roleInstanceName, final String resources) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginRebuildingRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName, resources); } }); } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginRebuildingRoleInstanceByDeploymentSlot(String serviceName, String deploymentSlot, String roleInstanceName, String resources) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } if (resources == null) { throw new NullPointerException("resources"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); tracingParameters.put("resources", resources); CloudTracing.enter(invocationId, this, "beginRebuildingRoleInstanceByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot, "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=rebuild"); queryParameters.add("resources=" + URLEncoder.encode(resources, "UTF-8")); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Reimaging Role Instance By Deployment Name operation requests a * reimage of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginReimagingRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginReimagingRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName); } }); } /** * The Begin Reimaging Role Instance By Deployment Name operation requests a * reimage of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginReimagingRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "beginReimagingRoleInstanceByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=reimage"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Reimaging Role Instance By Deployment Slot operation requests a * reimage of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginReimagingRoleInstanceByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginReimagingRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName); } }); } /** * The Begin Reimaging Role Instance By Deployment Slot operation requests a * reimage of a role instance that is running in a deployment. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginReimagingRoleInstanceByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, String roleInstanceName) throws IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (roleInstanceName == null) { throw new NullPointerException("roleInstanceName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "beginReimagingRoleInstanceByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/roleinstances/"; url = url + URLEncoder.encode(roleInstanceName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=reimage"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Swapping Deployment operation initiates a virtual IP address * swap between the staging and production deployment environments for a * service. If the service is currently running in the staging environment, * it will be swapped to the production environment. If it is running in * the production environment, it will be swapped to staging. For more * information on this type of upgrade, see Performing Virtual IP Swap * Upgrades at * http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460814.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param parameters Required. Parameters supplied to the Begin Swapping * Deployment operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginSwappingAsync(final String serviceName, final DeploymentSwapParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginSwapping(serviceName, parameters); } }); } /** * The Begin Swapping Deployment operation initiates a virtual IP address * swap between the staging and production deployment environments for a * service. If the service is currently running in the staging environment, * it will be swapped to the production environment. If it is running in * the production environment, it will be swapped to staging. For more * information on this type of upgrade, see Performing Virtual IP Swap * Upgrades at * http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460814.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param parameters Required. Parameters supplied to the Begin Swapping * Deployment operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginSwapping(String serviceName, DeploymentSwapParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getSourceDeployment() == null) { throw new NullPointerException("parameters.SourceDeployment"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginSwappingAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element swapElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Swap"); requestDoc.appendChild(swapElement); if (parameters.getProductionDeployment() != null) { Element productionElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Production"); productionElement.appendChild(requestDoc.createTextNode(parameters.getProductionDeployment())); swapElement.appendChild(productionElement); } Element sourceDeploymentElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "SourceDeployment"); sourceDeploymentElement.appendChild(requestDoc.createTextNode(parameters.getSourceDeployment())); swapElement.appendChild(sourceDeploymentElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Updating Deployment Status By Deployment Name operation * initiates a change in the running status of a deployment. The status of * a deployment can be running or suspended. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Begin Updating * Deployment Status By Deployment Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginUpdatingStatusByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentUpdateStatusParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginUpdatingStatusByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Begin Updating Deployment Status By Deployment Name operation * initiates a change in the running status of a deployment. The status of * a deployment can be running or suspended. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Begin Updating * Deployment Status By Deployment Name operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginUpdatingStatusByDeploymentName(String serviceName, String deploymentName, DeploymentUpdateStatusParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getStatus() == null) { throw new NullPointerException("parameters.Status"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginUpdatingStatusByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=status"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element updateDeploymentStatusElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "UpdateDeploymentStatus"); requestDoc.appendChild(updateDeploymentStatusElement); Element statusElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Status"); statusElement.appendChild(requestDoc.createTextNode(parameters.getStatus().toString())); updateDeploymentStatusElement.appendChild(statusElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Updating Deployment Status By Deployment Slot operation * initiates a change in the running status of a deployment. The status of * a deployment can be running or suspended. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Begin Updating * Deployment Status By Deployment Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginUpdatingStatusByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentUpdateStatusParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginUpdatingStatusByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Begin Updating Deployment Status By Deployment Slot operation * initiates a change in the running status of a deployment. The status of * a deployment can be running or suspended. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Begin Updating * Deployment Status By Deployment Slot operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginUpdatingStatusByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentUpdateStatusParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getStatus() == null) { throw new NullPointerException("parameters.Status"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginUpdatingStatusByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=status"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element updateDeploymentStatusElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "UpdateDeploymentStatus"); requestDoc.appendChild(updateDeploymentStatusElement); Element statusElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Status"); statusElement.appendChild(requestDoc.createTextNode(parameters.getStatus().toString())); updateDeploymentStatusElement.appendChild(statusElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Upgrading Deployment By Name operation initiates an update of * role instances in a deployment using the package and configuration that * you specify. For more information about updating role instances, see * Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentName Required. The deployment to upgrade. * @param parameters Required. Parameters supplied to the Begin Upgrading * Deployment By Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginUpgradingByNameAsync(final String serviceName, final String deploymentName, final DeploymentUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginUpgradingByName(serviceName, deploymentName, parameters); } }); } /** * The Begin Upgrading Deployment By Name operation initiates an update of * role instances in a deployment using the package and configuration that * you specify. For more information about updating role instances, see * Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentName Required. The deployment to upgrade. * @param parameters Required. Parameters supplied to the Begin Upgrading * Deployment By Name operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginUpgradingByName(String serviceName, String deploymentName, DeploymentUpgradeParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getConfiguration() == null) { throw new NullPointerException("parameters.Configuration"); } if (parameters.getExtensionConfiguration() != null) { if (parameters.getExtensionConfiguration().getAllRoles() != null) { for (ExtensionConfiguration.Extension allRolesParameterItem : parameters.getExtensionConfiguration() .getAllRoles()) { if (allRolesParameterItem.getId() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.AllRoles.Id"); } } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { for (ExtensionConfiguration.NamedRole namedRolesParameterItem : parameters .getExtensionConfiguration().getNamedRoles()) { if (namedRolesParameterItem.getExtensions() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.Extensions"); } if (namedRolesParameterItem.getExtensions() != null) { for (ExtensionConfiguration.Extension extensionsParameterItem : namedRolesParameterItem .getExtensions()) { if (extensionsParameterItem.getId() == null) { throw new NullPointerException( "parameters.ExtensionConfiguration.NamedRoles.Extensions.Id"); } } } if (namedRolesParameterItem.getRoleName() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.RoleName"); } } } } if (parameters.getLabel() == null) { throw new NullPointerException("parameters.Label"); } if (parameters.getLabel().length() > 100) { throw new IllegalArgumentException("parameters.Label"); } if (parameters.getMode() == null) { throw new NullPointerException("parameters.Mode"); } if (parameters.getPackageUri() == null) { throw new NullPointerException("parameters.PackageUri"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginUpgradingByNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=upgrade"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element upgradeDeploymentElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "UpgradeDeployment"); requestDoc.appendChild(upgradeDeploymentElement); Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); upgradeDeploymentElement.appendChild(modeElement); Element packageUrlElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "PackageUrl"); packageUrlElement.appendChild(requestDoc.createTextNode(parameters.getPackageUri().toString())); upgradeDeploymentElement.appendChild(packageUrlElement); Element configurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Configuration"); configurationElement .appendChild(requestDoc.createTextNode(Base64.encode(parameters.getConfiguration().getBytes()))); upgradeDeploymentElement.appendChild(configurationElement); Element labelElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Label"); labelElement.appendChild(requestDoc.createTextNode(Base64.encode(parameters.getLabel().getBytes()))); upgradeDeploymentElement.appendChild(labelElement); if (parameters.getRoleToUpgrade() != null) { Element roleToUpgradeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "RoleToUpgrade"); roleToUpgradeElement.appendChild(requestDoc.createTextNode(parameters.getRoleToUpgrade())); upgradeDeploymentElement.appendChild(roleToUpgradeElement); } Element forceElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Force"); forceElement.appendChild(requestDoc.createTextNode(Boolean.toString(parameters.isForce()).toLowerCase())); upgradeDeploymentElement.appendChild(forceElement); if (parameters.getExtendedProperties() != null) { if (parameters.getExtendedProperties() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtendedProperties()).isInitialized()) { Element extendedPropertiesDictionaryElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); for (Map.Entry<String, String> entry : parameters.getExtendedProperties().entrySet()) { String extendedPropertiesKey = entry.getKey(); String extendedPropertiesValue = entry.getValue(); Element extendedPropertiesElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperty"); extendedPropertiesDictionaryElement.appendChild(extendedPropertiesElement); Element extendedPropertiesKeyElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); extendedPropertiesKeyElement.appendChild(requestDoc.createTextNode(extendedPropertiesKey)); extendedPropertiesElement.appendChild(extendedPropertiesKeyElement); Element extendedPropertiesValueElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Value"); extendedPropertiesValueElement.appendChild(requestDoc.createTextNode(extendedPropertiesValue)); extendedPropertiesElement.appendChild(extendedPropertiesValueElement); } upgradeDeploymentElement.appendChild(extendedPropertiesDictionaryElement); } } if (parameters.getExtensionConfiguration() != null) { Element extensionConfigurationElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); upgradeDeploymentElement.appendChild(extensionConfigurationElement); if (parameters.getExtensionConfiguration().getAllRoles() != null) { if (parameters.getExtensionConfiguration().getAllRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getAllRoles()) .isInitialized()) { Element allRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "AllRoles"); for (ExtensionConfiguration.Extension allRolesItem : parameters.getExtensionConfiguration() .getAllRoles()) { Element extensionElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); allRolesSequenceElement.appendChild(extensionElement); Element idElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement.appendChild(requestDoc.createTextNode(allRolesItem.getId())); extensionElement.appendChild(idElement); } extensionConfigurationElement.appendChild(allRolesSequenceElement); } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { if (parameters.getExtensionConfiguration().getNamedRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getNamedRoles()) .isInitialized()) { Element namedRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "NamedRoles"); for (ExtensionConfiguration.NamedRole namedRolesItem : parameters.getExtensionConfiguration() .getNamedRoles()) { Element roleElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Role"); namedRolesSequenceElement.appendChild(roleElement); Element roleNameElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleName"); roleNameElement.appendChild(requestDoc.createTextNode(namedRolesItem.getRoleName())); roleElement.appendChild(roleNameElement); if (namedRolesItem.getExtensions() instanceof LazyCollection == false || ((LazyCollection) namedRolesItem.getExtensions()).isInitialized()) { Element extensionsSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extensions"); for (ExtensionConfiguration.Extension extensionsItem : namedRolesItem.getExtensions()) { Element extensionElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); extensionsSequenceElement.appendChild(extensionElement2); Element idElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement2.appendChild(requestDoc.createTextNode(extensionsItem.getId())); extensionElement2.appendChild(idElement2); } roleElement.appendChild(extensionsSequenceElement); } } extensionConfigurationElement.appendChild(namedRolesSequenceElement); } } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Upgrading Deployment By Slot operation initiates an update of * role instances in a deployment using the package and configuration that * you specify. For more information about updating role instances, see * Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx.This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentSlot Required. The slot to upgrade. * @param parameters Required. Parameters supplied to the Begin Upgrading * Deployment By Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginUpgradingBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginUpgradingBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Begin Upgrading Deployment By Slot operation initiates an update of * role instances in a deployment using the package and configuration that * you specify. For more information about updating role instances, see * Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx.This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentSlot Required. The slot to upgrade. * @param parameters Required. Parameters supplied to the Begin Upgrading * Deployment By Slot operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginUpgradingBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentUpgradeParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getConfiguration() == null) { throw new NullPointerException("parameters.Configuration"); } if (parameters.getExtensionConfiguration() != null) { if (parameters.getExtensionConfiguration().getAllRoles() != null) { for (ExtensionConfiguration.Extension allRolesParameterItem : parameters.getExtensionConfiguration() .getAllRoles()) { if (allRolesParameterItem.getId() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.AllRoles.Id"); } } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { for (ExtensionConfiguration.NamedRole namedRolesParameterItem : parameters .getExtensionConfiguration().getNamedRoles()) { if (namedRolesParameterItem.getExtensions() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.Extensions"); } if (namedRolesParameterItem.getExtensions() != null) { for (ExtensionConfiguration.Extension extensionsParameterItem : namedRolesParameterItem .getExtensions()) { if (extensionsParameterItem.getId() == null) { throw new NullPointerException( "parameters.ExtensionConfiguration.NamedRoles.Extensions.Id"); } } } if (namedRolesParameterItem.getRoleName() == null) { throw new NullPointerException("parameters.ExtensionConfiguration.NamedRoles.RoleName"); } } } } if (parameters.getLabel() == null) { throw new NullPointerException("parameters.Label"); } if (parameters.getLabel().length() > 100) { throw new IllegalArgumentException("parameters.Label"); } if (parameters.getMode() == null) { throw new NullPointerException("parameters.Mode"); } if (parameters.getPackageUri() == null) { throw new NullPointerException("parameters.PackageUri"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginUpgradingBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=upgrade"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element upgradeDeploymentElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "UpgradeDeployment"); requestDoc.appendChild(upgradeDeploymentElement); Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); upgradeDeploymentElement.appendChild(modeElement); Element packageUrlElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "PackageUrl"); packageUrlElement.appendChild(requestDoc.createTextNode(parameters.getPackageUri().toString())); upgradeDeploymentElement.appendChild(packageUrlElement); Element configurationElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Configuration"); configurationElement .appendChild(requestDoc.createTextNode(Base64.encode(parameters.getConfiguration().getBytes()))); upgradeDeploymentElement.appendChild(configurationElement); Element labelElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Label"); labelElement.appendChild(requestDoc.createTextNode(Base64.encode(parameters.getLabel().getBytes()))); upgradeDeploymentElement.appendChild(labelElement); if (parameters.getRoleToUpgrade() != null) { Element roleToUpgradeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "RoleToUpgrade"); roleToUpgradeElement.appendChild(requestDoc.createTextNode(parameters.getRoleToUpgrade())); upgradeDeploymentElement.appendChild(roleToUpgradeElement); } Element forceElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Force"); forceElement.appendChild(requestDoc.createTextNode(Boolean.toString(parameters.isForce()).toLowerCase())); upgradeDeploymentElement.appendChild(forceElement); if (parameters.getExtendedProperties() != null) { if (parameters.getExtendedProperties() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtendedProperties()).isInitialized()) { Element extendedPropertiesDictionaryElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); for (Map.Entry<String, String> entry : parameters.getExtendedProperties().entrySet()) { String extendedPropertiesKey = entry.getKey(); String extendedPropertiesValue = entry.getValue(); Element extendedPropertiesElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtendedProperty"); extendedPropertiesDictionaryElement.appendChild(extendedPropertiesElement); Element extendedPropertiesKeyElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Name"); extendedPropertiesKeyElement.appendChild(requestDoc.createTextNode(extendedPropertiesKey)); extendedPropertiesElement.appendChild(extendedPropertiesKeyElement); Element extendedPropertiesValueElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Value"); extendedPropertiesValueElement.appendChild(requestDoc.createTextNode(extendedPropertiesValue)); extendedPropertiesElement.appendChild(extendedPropertiesValueElement); } upgradeDeploymentElement.appendChild(extendedPropertiesDictionaryElement); } } if (parameters.getExtensionConfiguration() != null) { Element extensionConfigurationElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); upgradeDeploymentElement.appendChild(extensionConfigurationElement); if (parameters.getExtensionConfiguration().getAllRoles() != null) { if (parameters.getExtensionConfiguration().getAllRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getAllRoles()) .isInitialized()) { Element allRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "AllRoles"); for (ExtensionConfiguration.Extension allRolesItem : parameters.getExtensionConfiguration() .getAllRoles()) { Element extensionElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); allRolesSequenceElement.appendChild(extensionElement); Element idElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement.appendChild(requestDoc.createTextNode(allRolesItem.getId())); extensionElement.appendChild(idElement); } extensionConfigurationElement.appendChild(allRolesSequenceElement); } } if (parameters.getExtensionConfiguration().getNamedRoles() != null) { if (parameters.getExtensionConfiguration().getNamedRoles() instanceof LazyCollection == false || ((LazyCollection) parameters.getExtensionConfiguration().getNamedRoles()) .isInitialized()) { Element namedRolesSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "NamedRoles"); for (ExtensionConfiguration.NamedRole namedRolesItem : parameters.getExtensionConfiguration() .getNamedRoles()) { Element roleElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Role"); namedRolesSequenceElement.appendChild(roleElement); Element roleNameElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RoleName"); roleNameElement.appendChild(requestDoc.createTextNode(namedRolesItem.getRoleName())); roleElement.appendChild(roleNameElement); if (namedRolesItem.getExtensions() instanceof LazyCollection == false || ((LazyCollection) namedRolesItem.getExtensions()).isInitialized()) { Element extensionsSequenceElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extensions"); for (ExtensionConfiguration.Extension extensionsItem : namedRolesItem.getExtensions()) { Element extensionElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Extension"); extensionsSequenceElement.appendChild(extensionElement2); Element idElement2 = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "Id"); idElement2.appendChild(requestDoc.createTextNode(extensionsItem.getId())); extensionElement2.appendChild(idElement2); } roleElement.appendChild(extensionsSequenceElement); } } extensionConfigurationElement.appendChild(namedRolesSequenceElement); } } } DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Walking Upgrade Domain By Deployment Name operation specifies * an update domain in which a role instance must be updated. For more * information about updating role instances, see Update an Azure Service * at http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Begin Walking * Upgrade Domain By Deployment Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginWalkingUpgradeDomainByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentWalkUpgradeDomainParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginWalkingUpgradeDomainByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Begin Walking Upgrade Domain By Deployment Name operation specifies * an update domain in which a role instance must be updated. For more * information about updating role instances, see Update an Azure Service * at http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Begin Walking * Upgrade Domain By Deployment Name operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginWalkingUpgradeDomainByDeploymentName(String serviceName, String deploymentName, DeploymentWalkUpgradeDomainParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginWalkingUpgradeDomainByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=walkupgradedomain"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element walkUpgradeDomainElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "WalkUpgradeDomain"); requestDoc.appendChild(walkUpgradeDomainElement); Element upgradeDomainElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "UpgradeDomain"); upgradeDomainElement .appendChild(requestDoc.createTextNode(Integer.toString(parameters.getUpgradeDomain()))); walkUpgradeDomainElement.appendChild(upgradeDomainElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Begin Walking Upgrade Domain By Deployment Slot operation specifies * an update domain in which a role instance must be updated. For more * information about updating role instances, see Update an Azure Service * at http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Begin Walking * Upgrade Domain By Deployment Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> beginWalkingUpgradeDomainByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentWalkUpgradeDomainParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return beginWalkingUpgradeDomainByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Begin Walking Upgrade Domain By Deployment Slot operation specifies * an update domain in which a role instance must be updated. For more * information about updating role instances, see Update an Azure Service * at http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Begin Walking * Upgrade Domain By Deployment Slot operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse beginWalkingUpgradeDomainByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentWalkUpgradeDomainParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "beginWalkingUpgradeDomainByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=walkupgradedomain"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element walkUpgradeDomainElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "WalkUpgradeDomain"); requestDoc.appendChild(walkUpgradeDomainElement); Element upgradeDomainElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "UpgradeDomain"); upgradeDomainElement .appendChild(requestDoc.createTextNode(Integer.toString(parameters.getUpgradeDomain()))); walkUpgradeDomainElement.appendChild(upgradeDomainElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Change Deployment Configuration By Name operation initiates a change * to the deployment configuration. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentName Required. The deployment to change configuration * for. * @param parameters Required. Parameters supplied to the Change * ConfigurationDeployment By Name operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> changeConfigurationByNameAsync(final String serviceName, final String deploymentName, final DeploymentChangeConfigurationParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return changeConfigurationByName(serviceName, deploymentName, parameters); } }); } /** * The Change Deployment Configuration By Name operation initiates a change * to the deployment configuration. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentName Required. The deployment to change configuration * for. * @param parameters Required. Parameters supplied to the Change * ConfigurationDeployment By Name operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse changeConfigurationByName(String serviceName, String deploymentName, DeploymentChangeConfigurationParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "changeConfigurationByNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginChangingConfigurationByNameAsync(serviceName, deploymentName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Change Deployment Configuration By Slot operation initiates a change * to the deployment configuration. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentSlot Required. The slot to change deployment * configuration for. * @param parameters Required. Parameters supplied to the Change * Configuration Deployment By Slot operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> changeConfigurationBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentChangeConfigurationParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return changeConfigurationBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Change Deployment Configuration By Slot operation initiates a change * to the deployment configuration. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460809.aspx * for more information) * * @param serviceName Required. The cloud service to change deployment * configuration for. * @param deploymentSlot Required. The slot to change deployment * configuration for. * @param parameters Required. Parameters supplied to the Change * Configuration Deployment By Slot operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse changeConfigurationBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentChangeConfigurationParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "changeConfigurationBySlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginChangingConfigurationBySlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Create Deployment operation uploads a new service package and creates * a new deployment in the staging or production environments. This * operation is an asynchronous operation. To determine whether the * management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460813.aspx * for more information) * * @param serviceName Required. The cloud service to create a deployment for. * @param deploymentSlot Required. The slot to create a deployment for. * @param parameters Required. Parameters supplied to the Create Deployment * operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> createAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentCreateParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return create(serviceName, deploymentSlot, parameters); } }); } /** * The Create Deployment operation uploads a new service package and creates * a new deployment in the staging or production environments. This * operation is an asynchronous operation. To determine whether the * management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460813.aspx * for more information) * * @param serviceName Required. The cloud service to create a deployment for. * @param deploymentSlot Required. The slot to create a deployment for. * @param parameters Required. Parameters supplied to the Create Deployment * operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws ServiceException Thrown if an unexpected response is found. * @throws URISyntaxException Thrown if there was an error parsing a URI in * the response. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse create(String serviceName, DeploymentSlot deploymentSlot, DeploymentCreateParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException, ParserConfigurationException, SAXException, TransformerException, URISyntaxException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "createAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginCreatingAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Delete Deployment By Name operation deletes the specified deployment. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param deleteFromStorage Required. Specifies that the source blob for the * disk should also be deleted from storage. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> deleteByNameAsync(final String serviceName, final String deploymentName, final boolean deleteFromStorage) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return deleteByName(serviceName, deploymentName, deleteFromStorage); } }); } /** * The Delete Deployment By Name operation deletes the specified deployment. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param deleteFromStorage Required. Specifies that the source blob for the * disk should also be deleted from storage. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse deleteByName(String serviceName, String deploymentName, boolean deleteFromStorage) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("deleteFromStorage", deleteFromStorage); CloudTracing.enter(invocationId, this, "deleteByNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginDeletingByNameAsync(serviceName, deploymentName, deleteFromStorage).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Delete Deployment By Slot operation deletes the specified deployment. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> deleteBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return deleteBySlot(serviceName, deploymentSlot); } }); } /** * The Delete Deployment By Slot operation deletes the specified deployment. * This operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460815.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse deleteBySlot(String serviceName, DeploymentSlot deploymentSlot) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); CloudTracing.enter(invocationId, this, "deleteBySlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginDeletingBySlotAsync(serviceName, deploymentSlot).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param roleInstanceName Required. The parameters to delete the role. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> deleteRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentDeleteRoleInstanceParameters roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return deleteRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName); } }); } /** * The Delete Role Instances operation deletes a role instance from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param roleInstanceName Required. The parameters to delete the role. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse deleteRoleInstanceByDeploymentName(String serviceName, String deploymentName, DeploymentDeleteRoleInstanceParameters roleInstanceName) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "deleteRoleInstanceByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginDeletingRoleInstanceByDeploymentNameAsync(serviceName, deploymentName, roleInstanceName) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Delete Role Instances operation deletes the role instances from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The name of the deployment slot. * @param parameters Required. The parameters to delete the role. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> deleteRoleInstanceByDeploymentSlotAsync(final String serviceName, final String deploymentSlot, final DeploymentDeleteRoleInstanceParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return deleteRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Delete Role Instances operation deletes the role instances from a * deployment in a cloud service. (see * http://msdn.microsoft.com/en-us/library/windowsazure/dn469418.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The name of the deployment slot. * @param parameters Required. The parameters to delete the role. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse deleteRoleInstanceByDeploymentSlot(String serviceName, String deploymentSlot, DeploymentDeleteRoleInstanceParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "deleteRoleInstanceByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginDeletingRoleInstanceByBeploymentSlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Get Deployment By Name operation returns configuration information, * status, and system properties for a deployment. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460804.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @return A deployment that exists in the cloud service. */ @Override public Future<DeploymentGetResponse> getByNameAsync(final String serviceName, final String deploymentName) { return this.getClient().getExecutorService().submit(new Callable<DeploymentGetResponse>() { @Override public DeploymentGetResponse call() throws Exception { return getByName(serviceName, deploymentName); } }); } /** * The Get Deployment By Name operation returns configuration information, * status, and system properties for a deployment. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460804.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @throws ParserConfigurationException Thrown if there was a serious * configuration error with the document parser. * @throws SAXException Thrown if there was an error parsing the XML * response. * @throws URISyntaxException Thrown if there was an error parsing a URI in * the response. * @return A deployment that exists in the cloud service. */ @Override public DeploymentGetResponse getByName(String serviceName, String deploymentName) throws IOException, ServiceException, ParserConfigurationException, SAXException, URISyntaxException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); CloudTracing.enter(invocationId, this, "getByNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpGet httpRequest = new HttpGet(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result DeploymentGetResponse result = null; // Deserialize Response if (statusCode == HttpStatus.SC_OK) { InputStream responseContent = httpResponse.getEntity().getContent(); result = new DeploymentGetResponse(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document responseDoc = documentBuilder.parse(new BOMInputStream(responseContent)); Element deploymentElement = XmlUtility.getElementByTagNameNS(responseDoc, "http://schemas.microsoft.com/windowsazure", "Deployment"); if (deploymentElement != null) { Element nameElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement != null) { String nameInstance; nameInstance = nameElement.getTextContent(); result.setName(nameInstance); } Element deploymentSlotElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "DeploymentSlot"); if (deploymentSlotElement != null && deploymentSlotElement.getTextContent() != null && !deploymentSlotElement.getTextContent().isEmpty()) { DeploymentSlot deploymentSlotInstance; deploymentSlotInstance = DeploymentSlot.valueOf(deploymentSlotElement.getTextContent()); result.setDeploymentSlot(deploymentSlotInstance); } Element privateIDElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "PrivateID"); if (privateIDElement != null) { String privateIDInstance; privateIDInstance = privateIDElement.getTextContent(); result.setPrivateId(privateIDInstance); } Element statusElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement != null && statusElement.getTextContent() != null && !statusElement.getTextContent().isEmpty()) { DeploymentStatus statusInstance; statusInstance = DeploymentStatus.valueOf(statusElement.getTextContent()); result.setStatus(statusInstance); } Element labelElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Label"); if (labelElement != null) { String labelInstance; labelInstance = labelElement.getTextContent() != null ? new String(Base64.decode(labelElement.getTextContent())) : null; result.setLabel(labelInstance); } Element urlElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Url"); if (urlElement != null) { URI urlInstance; urlInstance = new URI(urlElement.getTextContent()); result.setUri(urlInstance); } Element configurationElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Configuration"); if (configurationElement != null) { String configurationInstance; configurationInstance = configurationElement.getTextContent() != null ? new String(Base64.decode(configurationElement.getTextContent())) : null; result.setConfiguration(configurationInstance); } Element roleInstanceListSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RoleInstanceList"); if (roleInstanceListSequenceElement != null) { for (int i1 = 0; i1 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleInstanceListSequenceElement, "http://schemas.microsoft.com/windowsazure", "RoleInstance") .size(); i1 = i1 + 1) { org.w3c.dom.Element roleInstanceListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleInstanceListSequenceElement, "http://schemas.microsoft.com/windowsazure", "RoleInstance") .get(i1)); RoleInstance roleInstanceInstance = new RoleInstance(); result.getRoleInstances().add(roleInstanceInstance); Element roleNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement != null) { String roleNameInstance; roleNameInstance = roleNameElement.getTextContent(); roleInstanceInstance.setRoleName(roleNameInstance); } Element instanceNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceName"); if (instanceNameElement != null) { String instanceNameInstance; instanceNameInstance = instanceNameElement.getTextContent(); roleInstanceInstance.setInstanceName(instanceNameInstance); } Element instanceStatusElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceStatus"); if (instanceStatusElement != null) { String instanceStatusInstance; instanceStatusInstance = instanceStatusElement.getTextContent(); roleInstanceInstance.setInstanceStatus(instanceStatusInstance); } Element instanceUpgradeDomainElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceUpgradeDomain"); if (instanceUpgradeDomainElement != null && instanceUpgradeDomainElement.getTextContent() != null && !instanceUpgradeDomainElement.getTextContent().isEmpty()) { int instanceUpgradeDomainInstance; instanceUpgradeDomainInstance = DatatypeConverter .parseInt(instanceUpgradeDomainElement.getTextContent()); roleInstanceInstance.setInstanceUpgradeDomain(instanceUpgradeDomainInstance); } Element instanceFaultDomainElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceFaultDomain"); if (instanceFaultDomainElement != null && instanceFaultDomainElement.getTextContent() != null && !instanceFaultDomainElement.getTextContent().isEmpty()) { int instanceFaultDomainInstance; instanceFaultDomainInstance = DatatypeConverter .parseInt(instanceFaultDomainElement.getTextContent()); roleInstanceInstance.setInstanceFaultDomain(instanceFaultDomainInstance); } Element instanceSizeElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceSize"); if (instanceSizeElement != null) { String instanceSizeInstance; instanceSizeInstance = instanceSizeElement.getTextContent(); roleInstanceInstance.setInstanceSize(instanceSizeInstance); } Element instanceStateDetailsElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceStateDetails"); if (instanceStateDetailsElement != null) { String instanceStateDetailsInstance; instanceStateDetailsInstance = instanceStateDetailsElement.getTextContent(); roleInstanceInstance.setInstanceStateDetails(instanceStateDetailsInstance); } Element instanceErrorCodeElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceErrorCode"); if (instanceErrorCodeElement != null) { String instanceErrorCodeInstance; instanceErrorCodeInstance = instanceErrorCodeElement.getTextContent(); roleInstanceInstance.setInstanceErrorCode(instanceErrorCodeInstance); } Element ipAddressElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "IpAddress"); if (ipAddressElement != null) { InetAddress ipAddressInstance; ipAddressInstance = InetAddress.getByName(ipAddressElement.getTextContent()); roleInstanceInstance.setIPAddress(ipAddressInstance); } Element instanceEndpointsSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoints"); if (instanceEndpointsSequenceElement != null) { for (int i2 = 0; i2 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(instanceEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoint") .size(); i2 = i2 + 1) { org.w3c.dom.Element instanceEndpointsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(instanceEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoint") .get(i2)); InstanceEndpoint instanceEndpointInstance = new InstanceEndpoint(); roleInstanceInstance.getInstanceEndpoints().add(instanceEndpointInstance); Element localPortElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LocalPort"); if (localPortElement != null && localPortElement.getTextContent() != null && !localPortElement.getTextContent().isEmpty()) { int localPortInstance; localPortInstance = DatatypeConverter .parseInt(localPortElement.getTextContent()); instanceEndpointInstance.setLocalPort(localPortInstance); } Element nameElement2 = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement2 != null) { String nameInstance2; nameInstance2 = nameElement2.getTextContent(); instanceEndpointInstance.setName(nameInstance2); } Element publicPortElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "PublicPort"); if (publicPortElement != null) { int publicPortInstance; publicPortInstance = DatatypeConverter .parseInt(publicPortElement.getTextContent()); instanceEndpointInstance.setPort(publicPortInstance); } Element protocolElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement != null) { String protocolInstance; protocolInstance = protocolElement.getTextContent(); instanceEndpointInstance.setProtocol(protocolInstance); } Element vipElement = XmlUtility.getElementByTagNameNS(instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Vip"); if (vipElement != null) { InetAddress vipInstance; vipInstance = InetAddress.getByName(vipElement.getTextContent()); instanceEndpointInstance.setVirtualIPAddress(vipInstance); } Element idleTimeoutInMinutesElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement != null && idleTimeoutInMinutesElement.getTextContent() != null && !idleTimeoutInMinutesElement.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance; idleTimeoutInMinutesInstance = DatatypeConverter .parseInt(idleTimeoutInMinutesElement.getTextContent()); instanceEndpointInstance .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance); } } } Element guestAgentStatusElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "GuestAgentStatus"); if (guestAgentStatusElement != null) { GuestAgentStatus guestAgentStatusInstance = new GuestAgentStatus(); roleInstanceInstance.setGuestAgentStatus(guestAgentStatusInstance); Element protocolVersionElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "ProtocolVersion"); if (protocolVersionElement != null) { String protocolVersionInstance; protocolVersionInstance = protocolVersionElement.getTextContent(); guestAgentStatusInstance.setProtocolVersion(protocolVersionInstance); } Element timestampElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Timestamp"); if (timestampElement != null && timestampElement.getTextContent() != null && !timestampElement.getTextContent().isEmpty()) { Calendar timestampInstance; timestampInstance = DatatypeConverter .parseDateTime(timestampElement.getTextContent()); guestAgentStatusInstance.setTimestamp(timestampInstance); } Element guestAgentVersionElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "GuestAgentVersion"); if (guestAgentVersionElement != null) { String guestAgentVersionInstance; guestAgentVersionInstance = guestAgentVersionElement.getTextContent(); guestAgentStatusInstance.setGuestAgentVersion(guestAgentVersionInstance); } Element statusElement2 = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement2 != null) { String statusInstance2; statusInstance2 = statusElement2.getTextContent(); guestAgentStatusInstance.setStatus(statusInstance2); } Element codeElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement != null && codeElement.getTextContent() != null && !codeElement.getTextContent().isEmpty()) { int codeInstance; codeInstance = DatatypeConverter.parseInt(codeElement.getTextContent()); guestAgentStatusInstance.setCode(codeInstance); } Element messageElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement != null) { GuestAgentMessage messageInstance = new GuestAgentMessage(); guestAgentStatusInstance.setMessage(messageInstance); Element messageResourceIdElement = XmlUtility.getElementByTagNameNS( messageElement, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement != null) { String messageResourceIdInstance; messageResourceIdInstance = messageResourceIdElement.getTextContent(); messageInstance.setMessageResourceId(messageResourceIdInstance); } Element paramListSequenceElement = XmlUtility.getElementByTagNameNS( messageElement, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement != null) { for (int i3 = 0; i3 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i3 = i3 + 1) { org.w3c.dom.Element paramListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Param") .get(i3)); messageInstance.getParamList().add(paramListElement.getTextContent()); } } } Element formattedMessageElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement != null) { GuestAgentFormattedMessage formattedMessageInstance = new GuestAgentFormattedMessage(); guestAgentStatusInstance.setFormattedMessage(formattedMessageInstance); Element languageElement = XmlUtility.getElementByTagNameNS( formattedMessageElement, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement != null) { String languageInstance; languageInstance = languageElement.getTextContent(); formattedMessageInstance.setLanguage(languageInstance); } Element messageElement2 = XmlUtility.getElementByTagNameNS( formattedMessageElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement2 != null) { String messageInstance2; messageInstance2 = messageElement2.getTextContent(); formattedMessageInstance.setMessage(messageInstance2); } } } Element resourceExtensionStatusListSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatusList"); if (resourceExtensionStatusListSequenceElement != null) { for (int i4 = 0; i4 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatus") .size(); i4 = i4 + 1) { org.w3c.dom.Element resourceExtensionStatusListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatus") .get(i4)); ResourceExtensionStatus resourceExtensionStatusInstance = new ResourceExtensionStatus(); roleInstanceInstance.getResourceExtensionStatusList() .add(resourceExtensionStatusInstance); Element handlerNameElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "HandlerName"); if (handlerNameElement != null) { String handlerNameInstance; handlerNameInstance = handlerNameElement.getTextContent(); resourceExtensionStatusInstance.setHandlerName(handlerNameInstance); } Element versionElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Version"); if (versionElement != null) { String versionInstance; versionInstance = versionElement.getTextContent(); resourceExtensionStatusInstance.setVersion(versionInstance); } Element statusElement3 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement3 != null) { String statusInstance3; statusInstance3 = statusElement3.getTextContent(); resourceExtensionStatusInstance.setStatus(statusInstance3); } Element codeElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement2 != null && codeElement2.getTextContent() != null && !codeElement2.getTextContent().isEmpty()) { int codeInstance2; codeInstance2 = DatatypeConverter.parseInt(codeElement2.getTextContent()); resourceExtensionStatusInstance.setCode(codeInstance2); } Element messageElement3 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement3 != null) { GuestAgentMessage messageInstance3 = new GuestAgentMessage(); resourceExtensionStatusInstance.setMessage(messageInstance3); Element messageResourceIdElement2 = XmlUtility.getElementByTagNameNS( messageElement3, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement2 != null) { String messageResourceIdInstance2; messageResourceIdInstance2 = messageResourceIdElement2.getTextContent(); messageInstance3.setMessageResourceId(messageResourceIdInstance2); } Element paramListSequenceElement2 = XmlUtility.getElementByTagNameNS( messageElement3, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement2 != null) { for (int i5 = 0; i5 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement2, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i5 = i5 + 1) { org.w3c.dom.Element paramListElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement2, "http://schemas.microsoft.com/windowsazure", "Param") .get(i5)); messageInstance3.getParamList() .add(paramListElement2.getTextContent()); } } } Element formattedMessageElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement2 != null) { GuestAgentFormattedMessage formattedMessageInstance2 = new GuestAgentFormattedMessage(); resourceExtensionStatusInstance .setFormattedMessage(formattedMessageInstance2); Element languageElement2 = XmlUtility.getElementByTagNameNS( formattedMessageElement2, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement2 != null) { String languageInstance2; languageInstance2 = languageElement2.getTextContent(); formattedMessageInstance2.setLanguage(languageInstance2); } Element messageElement4 = XmlUtility.getElementByTagNameNS( formattedMessageElement2, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement4 != null) { String messageInstance4; messageInstance4 = messageElement4.getTextContent(); formattedMessageInstance2.setMessage(messageInstance4); } } Element extensionSettingStatusElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "ExtensionSettingStatus"); if (extensionSettingStatusElement != null) { ResourceExtensionConfigurationStatus extensionSettingStatusInstance = new ResourceExtensionConfigurationStatus(); resourceExtensionStatusInstance .setExtensionSettingStatus(extensionSettingStatusInstance); Element timestampElement2 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Timestamp"); if (timestampElement2 != null && timestampElement2.getTextContent() != null && !timestampElement2.getTextContent().isEmpty()) { Calendar timestampInstance2; timestampInstance2 = DatatypeConverter .parseDateTime(timestampElement2.getTextContent()); extensionSettingStatusInstance.setTimestamp(timestampInstance2); } Element configurationAppliedTimeElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationAppliedTime"); if (configurationAppliedTimeElement != null && configurationAppliedTimeElement.getTextContent() != null && !configurationAppliedTimeElement.getTextContent().isEmpty()) { Calendar configurationAppliedTimeInstance; configurationAppliedTimeInstance = DatatypeConverter.parseDateTime( configurationAppliedTimeElement.getTextContent()); extensionSettingStatusInstance .setConfigurationAppliedTime(configurationAppliedTimeInstance); } Element nameElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement3 != null) { String nameInstance3; nameInstance3 = nameElement3.getTextContent(); extensionSettingStatusInstance.setName(nameInstance3); } Element operationElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Operation"); if (operationElement != null) { String operationInstance; operationInstance = operationElement.getTextContent(); extensionSettingStatusInstance.setOperation(operationInstance); } Element statusElement4 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement4 != null) { String statusInstance4; statusInstance4 = statusElement4.getTextContent(); extensionSettingStatusInstance.setStatus(statusInstance4); } Element codeElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement3 != null && codeElement3.getTextContent() != null && !codeElement3.getTextContent().isEmpty()) { int codeInstance3; codeInstance3 = DatatypeConverter .parseInt(codeElement3.getTextContent()); extensionSettingStatusInstance.setCode(codeInstance3); } Element messageElement5 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement5 != null) { GuestAgentMessage messageInstance5 = new GuestAgentMessage(); extensionSettingStatusInstance.setMessage(messageInstance5); Element messageResourceIdElement3 = XmlUtility.getElementByTagNameNS( messageElement5, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement3 != null) { String messageResourceIdInstance3; messageResourceIdInstance3 = messageResourceIdElement3 .getTextContent(); messageInstance5.setMessageResourceId(messageResourceIdInstance3); } Element paramListSequenceElement3 = XmlUtility.getElementByTagNameNS( messageElement5, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement3 != null) { for (int i6 = 0; i6 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement3, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i6 = i6 + 1) { org.w3c.dom.Element paramListElement3 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement3, "http://schemas.microsoft.com/windowsazure", "Param") .get(i6)); messageInstance5.getParamList() .add(paramListElement3.getTextContent()); } } } Element formattedMessageElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement3 != null) { GuestAgentFormattedMessage formattedMessageInstance3 = new GuestAgentFormattedMessage(); extensionSettingStatusInstance .setFormattedMessage(formattedMessageInstance3); Element languageElement3 = XmlUtility.getElementByTagNameNS( formattedMessageElement3, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement3 != null) { String languageInstance3; languageInstance3 = languageElement3.getTextContent(); formattedMessageInstance3.setLanguage(languageInstance3); } Element messageElement6 = XmlUtility.getElementByTagNameNS( formattedMessageElement3, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement6 != null) { String messageInstance6; messageInstance6 = messageElement6.getTextContent(); formattedMessageInstance3.setMessage(messageInstance6); } } Element subStatusListSequenceElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "SubStatusList"); if (subStatusListSequenceElement != null) { for (int i7 = 0; i7 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubStatus") .size(); i7 = i7 + 1) { org.w3c.dom.Element subStatusListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubStatus") .get(i7)); ResourceExtensionSubStatus subStatusInstance = new ResourceExtensionSubStatus(); extensionSettingStatusInstance.getSubStatusList() .add(subStatusInstance); Element nameElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement4 != null) { String nameInstance4; nameInstance4 = nameElement4.getTextContent(); subStatusInstance.setName(nameInstance4); } Element statusElement5 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement5 != null) { String statusInstance5; statusInstance5 = statusElement5.getTextContent(); subStatusInstance.setStatus(statusInstance5); } Element codeElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement4 != null && codeElement4.getTextContent() != null && !codeElement4.getTextContent().isEmpty()) { int codeInstance4; codeInstance4 = DatatypeConverter .parseInt(codeElement4.getTextContent()); subStatusInstance.setCode(codeInstance4); } Element messageElement7 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement7 != null) { GuestAgentMessage messageInstance7 = new GuestAgentMessage(); subStatusInstance.setMessage(messageInstance7); Element messageResourceIdElement4 = XmlUtility .getElementByTagNameNS(messageElement7, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement4 != null) { String messageResourceIdInstance4; messageResourceIdInstance4 = messageResourceIdElement4 .getTextContent(); messageInstance7 .setMessageResourceId(messageResourceIdInstance4); } Element paramListSequenceElement4 = XmlUtility .getElementByTagNameNS(messageElement7, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement4 != null) { for (int i8 = 0; i8 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement4, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i8 = i8 + 1) { org.w3c.dom.Element paramListElement4 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( paramListSequenceElement4, "http://schemas.microsoft.com/windowsazure", "Param") .get(i8)); messageInstance7.getParamList() .add(paramListElement4.getTextContent()); } } } Element formattedMessageElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement4 != null) { GuestAgentFormattedMessage formattedMessageInstance4 = new GuestAgentFormattedMessage(); subStatusInstance .setFormattedMessage(formattedMessageInstance4); Element languageElement4 = XmlUtility.getElementByTagNameNS( formattedMessageElement4, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement4 != null) { String languageInstance4; languageInstance4 = languageElement4.getTextContent(); formattedMessageInstance4.setLanguage(languageInstance4); } Element messageElement8 = XmlUtility.getElementByTagNameNS( formattedMessageElement4, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement8 != null) { String messageInstance8; messageInstance8 = messageElement8.getTextContent(); formattedMessageInstance4.setMessage(messageInstance8); } } } } } } } Element powerStateElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "PowerState"); if (powerStateElement != null && powerStateElement.getTextContent() != null && !powerStateElement.getTextContent().isEmpty()) { RoleInstancePowerState powerStateInstance; powerStateInstance = RoleInstancePowerState .valueOf(powerStateElement.getTextContent()); roleInstanceInstance.setPowerState(powerStateInstance); } Element hostNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "HostName"); if (hostNameElement != null) { String hostNameInstance; hostNameInstance = hostNameElement.getTextContent(); roleInstanceInstance.setHostName(hostNameInstance); } Element remoteAccessCertificateThumbprintElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "RemoteAccessCertificateThumbprint"); if (remoteAccessCertificateThumbprintElement != null) { String remoteAccessCertificateThumbprintInstance; remoteAccessCertificateThumbprintInstance = remoteAccessCertificateThumbprintElement .getTextContent(); roleInstanceInstance.setRemoteAccessCertificateThumbprint( remoteAccessCertificateThumbprintInstance); } Element publicIPsSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "PublicIPs"); if (publicIPsSequenceElement != null) { for (int i9 = 0; i9 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicIP") .size(); i9 = i9 + 1) { org.w3c.dom.Element publicIPsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicIP") .get(i9)); RoleInstance.PublicIP publicIPInstance = new RoleInstance.PublicIP(); roleInstanceInstance.getPublicIPs().add(publicIPInstance); Element nameElement5 = XmlUtility.getElementByTagNameNS(publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement5 != null) { String nameInstance5; nameInstance5 = nameElement5.getTextContent(); publicIPInstance.setName(nameInstance5); } Element addressElement = XmlUtility.getElementByTagNameNS(publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement != null) { InetAddress addressInstance; addressInstance = InetAddress.getByName(addressElement.getTextContent()); publicIPInstance.setAddress(addressInstance); } Element idleTimeoutInMinutesElement2 = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement2 != null && idleTimeoutInMinutesElement2.getTextContent() != null && !idleTimeoutInMinutesElement2.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance2; idleTimeoutInMinutesInstance2 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement2.getTextContent()); publicIPInstance.setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance2); } Element domainNameLabelElement = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "DomainNameLabel"); if (domainNameLabelElement != null) { String domainNameLabelInstance; domainNameLabelInstance = domainNameLabelElement.getTextContent(); publicIPInstance.setDomainNameLabel(domainNameLabelInstance); } Element fqdnsSequenceElement = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Fqdns"); if (fqdnsSequenceElement != null) { for (int i10 = 0; i10 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(fqdnsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Fqdn") .size(); i10 = i10 + 1) { org.w3c.dom.Element fqdnsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(fqdnsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Fqdn") .get(i10)); publicIPInstance.getFqdns().add(fqdnsElement.getTextContent()); } } } } Element networkInterfacesSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterfaces"); if (networkInterfacesSequenceElement != null) { for (int i11 = 0; i11 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .size(); i11 = i11 + 1) { org.w3c.dom.Element networkInterfacesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .get(i11)); NetworkInterfaceInstance networkInterfaceInstance = new NetworkInterfaceInstance(); roleInstanceInstance.getNetworkInterfaces().add(networkInterfaceInstance); Element nameElement6 = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement6 != null) { String nameInstance6; nameInstance6 = nameElement6.getTextContent(); networkInterfaceInstance.setName(nameInstance6); } Element macAddressElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "MacAddress"); if (macAddressElement != null) { String macAddressInstance; macAddressInstance = macAddressElement.getTextContent(); networkInterfaceInstance.setMacAddress(macAddressInstance); } Element iPConfigurationsSequenceElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "IPConfigurations"); if (iPConfigurationsSequenceElement != null) { for (int i12 = 0; i12 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .size(); i12 = i12 + 1) { org.w3c.dom.Element iPConfigurationsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .get(i12)); IPConfigurationInstance iPConfigurationInstance = new IPConfigurationInstance(); networkInterfaceInstance.getIPConfigurations() .add(iPConfigurationInstance); Element subnetNameElement = XmlUtility.getElementByTagNameNS( iPConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement != null) { String subnetNameInstance; subnetNameInstance = subnetNameElement.getTextContent(); iPConfigurationInstance.setSubnetName(subnetNameInstance); } Element addressElement2 = XmlUtility.getElementByTagNameNS( iPConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement2 != null) { String addressInstance2; addressInstance2 = addressElement2.getTextContent(); iPConfigurationInstance.setAddress(addressInstance2); } } } } } } } Element upgradeStatusElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "UpgradeStatus"); if (upgradeStatusElement != null) { UpgradeStatus upgradeStatusInstance = new UpgradeStatus(); result.setUpgradeStatus(upgradeStatusInstance); Element upgradeTypeElement = XmlUtility.getElementByTagNameNS(upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "UpgradeType"); if (upgradeTypeElement != null && upgradeTypeElement.getTextContent() != null && !upgradeTypeElement.getTextContent().isEmpty()) { DeploymentUpgradeType upgradeTypeInstance; upgradeTypeInstance = DeploymentUpgradeType .valueOf(upgradeTypeElement.getTextContent()); upgradeStatusInstance.setUpgradeType(upgradeTypeInstance); } Element currentUpgradeDomainStateElement = XmlUtility.getElementByTagNameNS( upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "CurrentUpgradeDomainState"); if (currentUpgradeDomainStateElement != null && currentUpgradeDomainStateElement.getTextContent() != null && !currentUpgradeDomainStateElement.getTextContent().isEmpty()) { UpgradeDomainState currentUpgradeDomainStateInstance; currentUpgradeDomainStateInstance = UpgradeDomainState .valueOf(currentUpgradeDomainStateElement.getTextContent()); upgradeStatusInstance.setCurrentUpgradeDomainState(currentUpgradeDomainStateInstance); } Element currentUpgradeDomainElement = XmlUtility.getElementByTagNameNS(upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "CurrentUpgradeDomain"); if (currentUpgradeDomainElement != null) { int currentUpgradeDomainInstance; currentUpgradeDomainInstance = DatatypeConverter .parseInt(currentUpgradeDomainElement.getTextContent()); upgradeStatusInstance.setCurrentUpgradeDomain(currentUpgradeDomainInstance); } } Element upgradeDomainCountElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "UpgradeDomainCount"); if (upgradeDomainCountElement != null) { int upgradeDomainCountInstance; upgradeDomainCountInstance = DatatypeConverter .parseInt(upgradeDomainCountElement.getTextContent()); result.setUpgradeDomainCount(upgradeDomainCountInstance); } Element roleListSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RoleList"); if (roleListSequenceElement != null) { for (int i13 = 0; i13 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .size(); i13 = i13 + 1) { org.w3c.dom.Element roleListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .get(i13)); Role roleInstance = new Role(); result.getRoles().add(roleInstance); Element roleNameElement2 = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement2 != null) { String roleNameInstance2; roleNameInstance2 = roleNameElement2.getTextContent(); roleInstance.setRoleName(roleNameInstance2); } Element osVersionElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "OsVersion"); if (osVersionElement != null) { String osVersionInstance; osVersionInstance = osVersionElement.getTextContent(); roleInstance.setOSVersion(osVersionInstance); } Element roleTypeElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleType"); if (roleTypeElement != null) { String roleTypeInstance; roleTypeInstance = roleTypeElement.getTextContent(); roleInstance.setRoleType(roleTypeInstance); } Element configurationSetsSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSets"); if (configurationSetsSequenceElement != null) { for (int i14 = 0; i14 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(configurationSetsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSet") .size(); i14 = i14 + 1) { org.w3c.dom.Element configurationSetsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(configurationSetsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSet") .get(i14)); ConfigurationSet configurationSetInstance = new ConfigurationSet(); roleInstance.getConfigurationSets().add(configurationSetInstance); Element configurationSetTypeElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSetType"); if (configurationSetTypeElement != null) { String configurationSetTypeInstance; configurationSetTypeInstance = configurationSetTypeElement.getTextContent(); configurationSetInstance .setConfigurationSetType(configurationSetTypeInstance); } Element inputEndpointsSequenceElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoints"); if (inputEndpointsSequenceElement != null) { for (int i15 = 0; i15 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(inputEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoint") .size(); i15 = i15 + 1) { org.w3c.dom.Element inputEndpointsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(inputEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoint") .get(i15)); InputEndpoint inputEndpointInstance = new InputEndpoint(); configurationSetInstance.getInputEndpoints().add(inputEndpointInstance); Element loadBalancedEndpointSetNameElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancedEndpointSetName"); if (loadBalancedEndpointSetNameElement != null) { String loadBalancedEndpointSetNameInstance; loadBalancedEndpointSetNameInstance = loadBalancedEndpointSetNameElement .getTextContent(); inputEndpointInstance.setLoadBalancedEndpointSetName( loadBalancedEndpointSetNameInstance); } Element localPortElement2 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LocalPort"); if (localPortElement2 != null && localPortElement2.getTextContent() != null && !localPortElement2.getTextContent().isEmpty()) { int localPortInstance2; localPortInstance2 = DatatypeConverter .parseInt(localPortElement2.getTextContent()); inputEndpointInstance.setLocalPort(localPortInstance2); } Element nameElement7 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement7 != null) { String nameInstance7; nameInstance7 = nameElement7.getTextContent(); inputEndpointInstance.setName(nameInstance7); } Element portElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Port"); if (portElement != null && portElement.getTextContent() != null && !portElement.getTextContent().isEmpty()) { int portInstance; portInstance = DatatypeConverter .parseInt(portElement.getTextContent()); inputEndpointInstance.setPort(portInstance); } Element loadBalancerProbeElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerProbe"); if (loadBalancerProbeElement != null) { LoadBalancerProbe loadBalancerProbeInstance = new LoadBalancerProbe(); inputEndpointInstance .setLoadBalancerProbe(loadBalancerProbeInstance); Element pathElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement != null) { String pathInstance; pathInstance = pathElement.getTextContent(); loadBalancerProbeInstance.setPath(pathInstance); } Element portElement2 = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Port"); if (portElement2 != null) { int portInstance2; portInstance2 = DatatypeConverter .parseInt(portElement2.getTextContent()); loadBalancerProbeInstance.setPort(portInstance2); } Element protocolElement2 = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement2 != null && protocolElement2.getTextContent() != null && !protocolElement2.getTextContent().isEmpty()) { LoadBalancerProbeTransportProtocol protocolInstance2; protocolInstance2 = com.microsoft.windowsazure.management.compute.ComputeManagementClientImpl .parseLoadBalancerProbeTransportProtocol( protocolElement2.getTextContent()); loadBalancerProbeInstance.setProtocol(protocolInstance2); } Element intervalInSecondsElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "IntervalInSeconds"); if (intervalInSecondsElement != null && intervalInSecondsElement.getTextContent() != null && !intervalInSecondsElement.getTextContent().isEmpty()) { int intervalInSecondsInstance; intervalInSecondsInstance = DatatypeConverter .parseInt(intervalInSecondsElement.getTextContent()); loadBalancerProbeInstance .setIntervalInSeconds(intervalInSecondsInstance); } Element timeoutInSecondsElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "TimeoutInSeconds"); if (timeoutInSecondsElement != null && timeoutInSecondsElement.getTextContent() != null && !timeoutInSecondsElement.getTextContent().isEmpty()) { int timeoutInSecondsInstance; timeoutInSecondsInstance = DatatypeConverter .parseInt(timeoutInSecondsElement.getTextContent()); loadBalancerProbeInstance .setTimeoutInSeconds(timeoutInSecondsInstance); } } Element protocolElement3 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement3 != null) { String protocolInstance3; protocolInstance3 = protocolElement3.getTextContent(); inputEndpointInstance.setProtocol(protocolInstance3); } Element vipElement2 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Vip"); if (vipElement2 != null) { InetAddress vipInstance2; vipInstance2 = InetAddress.getByName(vipElement2.getTextContent()); inputEndpointInstance.setVirtualIPAddress(vipInstance2); } Element enableDirectServerReturnElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "EnableDirectServerReturn"); if (enableDirectServerReturnElement != null && enableDirectServerReturnElement.getTextContent() != null && !enableDirectServerReturnElement.getTextContent() .isEmpty()) { boolean enableDirectServerReturnInstance; enableDirectServerReturnInstance = DatatypeConverter .parseBoolean(enableDirectServerReturnElement .getTextContent().toLowerCase()); inputEndpointInstance.setEnableDirectServerReturn( enableDirectServerReturnInstance); } Element loadBalancerNameElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerName"); if (loadBalancerNameElement != null) { String loadBalancerNameInstance; loadBalancerNameInstance = loadBalancerNameElement.getTextContent(); inputEndpointInstance.setLoadBalancerName(loadBalancerNameInstance); } Element endpointAclElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "EndpointAcl"); if (endpointAclElement != null) { EndpointAcl endpointAclInstance = new EndpointAcl(); inputEndpointInstance.setEndpointAcl(endpointAclInstance); Element rulesSequenceElement = XmlUtility.getElementByTagNameNS( endpointAclElement, "http://schemas.microsoft.com/windowsazure", "Rules"); if (rulesSequenceElement != null) { for (int i16 = 0; i16 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rulesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Rule") .size(); i16 = i16 + 1) { org.w3c.dom.Element rulesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rulesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Rule") .get(i16)); AccessControlListRule ruleInstance = new AccessControlListRule(); endpointAclInstance.getRules().add(ruleInstance); Element orderElement = XmlUtility.getElementByTagNameNS( rulesElement, "http://schemas.microsoft.com/windowsazure", "Order"); if (orderElement != null && orderElement.getTextContent() != null && !orderElement.getTextContent().isEmpty()) { int orderInstance; orderInstance = DatatypeConverter .parseInt(orderElement.getTextContent()); ruleInstance.setOrder(orderInstance); } Element actionElement = XmlUtility.getElementByTagNameNS( rulesElement, "http://schemas.microsoft.com/windowsazure", "Action"); if (actionElement != null) { String actionInstance; actionInstance = actionElement.getTextContent(); ruleInstance.setAction(actionInstance); } Element remoteSubnetElement = XmlUtility .getElementByTagNameNS(rulesElement, "http://schemas.microsoft.com/windowsazure", "RemoteSubnet"); if (remoteSubnetElement != null) { String remoteSubnetInstance; remoteSubnetInstance = remoteSubnetElement .getTextContent(); ruleInstance.setRemoteSubnet(remoteSubnetInstance); } Element descriptionElement = XmlUtility .getElementByTagNameNS(rulesElement, "http://schemas.microsoft.com/windowsazure", "Description"); if (descriptionElement != null) { String descriptionInstance; descriptionInstance = descriptionElement .getTextContent(); ruleInstance.setDescription(descriptionInstance); } } } } Element idleTimeoutInMinutesElement3 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement3 != null && idleTimeoutInMinutesElement3.getTextContent() != null && !idleTimeoutInMinutesElement3.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance3; idleTimeoutInMinutesInstance3 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement3.getTextContent()); inputEndpointInstance .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance3); } Element loadBalancerDistributionElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerDistribution"); if (loadBalancerDistributionElement != null) { String loadBalancerDistributionInstance; loadBalancerDistributionInstance = loadBalancerDistributionElement .getTextContent(); inputEndpointInstance.setLoadBalancerDistribution( loadBalancerDistributionInstance); } Element virtualIPNameElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "VirtualIPName"); if (virtualIPNameElement != null) { String virtualIPNameInstance; virtualIPNameInstance = virtualIPNameElement.getTextContent(); inputEndpointInstance.setVirtualIPName(virtualIPNameInstance); } } } Element subnetNamesSequenceElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "SubnetNames"); if (subnetNamesSequenceElement != null) { for (int i17 = 0; i17 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subnetNamesSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubnetName") .size(); i17 = i17 + 1) { org.w3c.dom.Element subnetNamesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subnetNamesSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubnetName") .get(i17)); configurationSetInstance.getSubnetNames() .add(subnetNamesElement.getTextContent()); } } Element staticVirtualNetworkIPAddressElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement != null) { String staticVirtualNetworkIPAddressInstance; staticVirtualNetworkIPAddressInstance = staticVirtualNetworkIPAddressElement .getTextContent(); configurationSetInstance.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance); } Element publicIPsSequenceElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "PublicIPs"); if (publicIPsSequenceElement2 != null) { for (int i18 = 0; i18 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "PublicIP") .size(); i18 = i18 + 1) { org.w3c.dom.Element publicIPsElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "PublicIP") .get(i18)); ConfigurationSet.PublicIP publicIPInstance2 = new ConfigurationSet.PublicIP(); configurationSetInstance.getPublicIPs().add(publicIPInstance2); Element nameElement8 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement8 != null) { String nameInstance8; nameInstance8 = nameElement8.getTextContent(); publicIPInstance2.setName(nameInstance8); } Element idleTimeoutInMinutesElement4 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement4 != null && idleTimeoutInMinutesElement4.getTextContent() != null && !idleTimeoutInMinutesElement4.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance4; idleTimeoutInMinutesInstance4 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement4.getTextContent()); publicIPInstance2 .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance4); } Element domainNameLabelElement2 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "DomainNameLabel"); if (domainNameLabelElement2 != null) { String domainNameLabelInstance2; domainNameLabelInstance2 = domainNameLabelElement2.getTextContent(); publicIPInstance2.setDomainNameLabel(domainNameLabelInstance2); } } } Element networkInterfacesSequenceElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterfaces"); if (networkInterfacesSequenceElement2 != null) { for (int i19 = 0; i19 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement2, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .size(); i19 = i19 + 1) { org.w3c.dom.Element networkInterfacesElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement2, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .get(i19)); NetworkInterface networkInterfaceInstance2 = new NetworkInterface(); configurationSetInstance.getNetworkInterfaces() .add(networkInterfaceInstance2); Element nameElement9 = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement9 != null) { String nameInstance9; nameInstance9 = nameElement9.getTextContent(); networkInterfaceInstance2.setName(nameInstance9); } Element iPConfigurationsSequenceElement2 = XmlUtility .getElementByTagNameNS(networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "IPConfigurations"); if (iPConfigurationsSequenceElement2 != null) { for (int i20 = 0; i20 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .size(); i20 = i20 + 1) { org.w3c.dom.Element iPConfigurationsElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( iPConfigurationsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .get(i20)); IPConfiguration iPConfigurationInstance2 = new IPConfiguration(); networkInterfaceInstance2.getIPConfigurations() .add(iPConfigurationInstance2); Element subnetNameElement2 = XmlUtility.getElementByTagNameNS( iPConfigurationsElement2, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement2 != null) { String subnetNameInstance2; subnetNameInstance2 = subnetNameElement2.getTextContent(); iPConfigurationInstance2.setSubnetName(subnetNameInstance2); } Element staticVirtualNetworkIPAddressElement2 = XmlUtility .getElementByTagNameNS(iPConfigurationsElement2, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement2 != null) { String staticVirtualNetworkIPAddressInstance2; staticVirtualNetworkIPAddressInstance2 = staticVirtualNetworkIPAddressElement2 .getTextContent(); iPConfigurationInstance2.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance2); } } } Element networkSecurityGroupElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "NetworkSecurityGroup"); if (networkSecurityGroupElement != null) { String networkSecurityGroupInstance; networkSecurityGroupInstance = networkSecurityGroupElement .getTextContent(); networkInterfaceInstance2 .setNetworkSecurityGroup(networkSecurityGroupInstance); } Element iPForwardingElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "IPForwarding"); if (iPForwardingElement != null) { String iPForwardingInstance; iPForwardingInstance = iPForwardingElement.getTextContent(); networkInterfaceInstance2.setIPForwarding(iPForwardingInstance); } } } Element networkSecurityGroupElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "NetworkSecurityGroup"); if (networkSecurityGroupElement2 != null) { String networkSecurityGroupInstance2; networkSecurityGroupInstance2 = networkSecurityGroupElement2 .getTextContent(); configurationSetInstance .setNetworkSecurityGroup(networkSecurityGroupInstance2); } Element iPForwardingElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "IPForwarding"); if (iPForwardingElement2 != null) { String iPForwardingInstance2; iPForwardingInstance2 = iPForwardingElement2.getTextContent(); configurationSetInstance.setIPForwarding(iPForwardingInstance2); } Element computerNameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ComputerName"); if (computerNameElement != null) { String computerNameInstance; computerNameInstance = computerNameElement.getTextContent(); configurationSetInstance.setComputerName(computerNameInstance); } Element adminPasswordElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdminPassword"); if (adminPasswordElement != null) { String adminPasswordInstance; adminPasswordInstance = adminPasswordElement.getTextContent(); configurationSetInstance.setAdminPassword(adminPasswordInstance); } Element resetPasswordOnFirstLogonElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ResetPasswordOnFirstLogon"); if (resetPasswordOnFirstLogonElement != null && resetPasswordOnFirstLogonElement.getTextContent() != null && !resetPasswordOnFirstLogonElement.getTextContent().isEmpty()) { boolean resetPasswordOnFirstLogonInstance; resetPasswordOnFirstLogonInstance = DatatypeConverter.parseBoolean( resetPasswordOnFirstLogonElement.getTextContent().toLowerCase()); configurationSetInstance .setResetPasswordOnFirstLogon(resetPasswordOnFirstLogonInstance); } Element enableAutomaticUpdatesElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "EnableAutomaticUpdates"); if (enableAutomaticUpdatesElement != null && enableAutomaticUpdatesElement.getTextContent() != null && !enableAutomaticUpdatesElement.getTextContent().isEmpty()) { boolean enableAutomaticUpdatesInstance; enableAutomaticUpdatesInstance = DatatypeConverter.parseBoolean( enableAutomaticUpdatesElement.getTextContent().toLowerCase()); configurationSetInstance .setEnableAutomaticUpdates(enableAutomaticUpdatesInstance); } Element timeZoneElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "TimeZone"); if (timeZoneElement != null) { String timeZoneInstance; timeZoneInstance = timeZoneElement.getTextContent(); configurationSetInstance.setTimeZone(timeZoneInstance); } Element domainJoinElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "DomainJoin"); if (domainJoinElement != null) { DomainJoinSettings domainJoinInstance = new DomainJoinSettings(); configurationSetInstance.setDomainJoin(domainJoinInstance); Element credentialsElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "Credentials"); if (credentialsElement != null) { DomainJoinCredentials credentialsInstance = new DomainJoinCredentials(); domainJoinInstance.setCredentials(credentialsInstance); Element domainElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Domain"); if (domainElement != null) { String domainInstance; domainInstance = domainElement.getTextContent(); credentialsInstance.setDomain(domainInstance); } Element usernameElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Username"); if (usernameElement != null) { String usernameInstance; usernameInstance = usernameElement.getTextContent(); credentialsInstance.setUserName(usernameInstance); } Element passwordElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Password"); if (passwordElement != null) { String passwordInstance; passwordInstance = passwordElement.getTextContent(); credentialsInstance.setPassword(passwordInstance); } } Element joinDomainElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "JoinDomain"); if (joinDomainElement != null) { String joinDomainInstance; joinDomainInstance = joinDomainElement.getTextContent(); domainJoinInstance.setDomainToJoin(joinDomainInstance); } Element machineObjectOUElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "MachineObjectOU"); if (machineObjectOUElement != null) { String machineObjectOUInstance; machineObjectOUInstance = machineObjectOUElement.getTextContent(); domainJoinInstance.setLdapMachineObjectOU(machineObjectOUInstance); } Element provisioningElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "Provisioning"); if (provisioningElement != null) { DomainJoinProvisioning provisioningInstance = new DomainJoinProvisioning(); domainJoinInstance.setProvisioning(provisioningInstance); Element accountDataElement = XmlUtility.getElementByTagNameNS( provisioningElement, "http://schemas.microsoft.com/windowsazure", "AccountData"); if (accountDataElement != null) { String accountDataInstance; accountDataInstance = accountDataElement.getTextContent(); provisioningInstance.setAccountData(accountDataInstance); } } } Element storedCertificateSettingsSequenceElement = XmlUtility .getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "StoredCertificateSettings"); if (storedCertificateSettingsSequenceElement != null) { for (int i21 = 0; i21 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(storedCertificateSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "CertificateSetting") .size(); i21 = i21 + 1) { org.w3c.dom.Element storedCertificateSettingsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( storedCertificateSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "CertificateSetting") .get(i21)); StoredCertificateSettings certificateSettingInstance = new StoredCertificateSettings(); configurationSetInstance.getStoredCertificateSettings() .add(certificateSettingInstance); Element storeLocationElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "StoreLocation"); if (storeLocationElement != null) { } Element storeNameElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "StoreName"); if (storeNameElement != null) { String storeNameInstance; storeNameInstance = storeNameElement.getTextContent(); certificateSettingInstance.setStoreName(storeNameInstance); } Element thumbprintElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "Thumbprint"); if (thumbprintElement != null) { String thumbprintInstance; thumbprintInstance = thumbprintElement.getTextContent(); certificateSettingInstance.setThumbprint(thumbprintInstance); } } } Element winRMElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "WinRM"); if (winRMElement != null) { WindowsRemoteManagementSettings winRMInstance = new WindowsRemoteManagementSettings(); configurationSetInstance.setWindowsRemoteManagement(winRMInstance); Element listenersSequenceElement = XmlUtility.getElementByTagNameNS( winRMElement, "http://schemas.microsoft.com/windowsazure", "Listeners"); if (listenersSequenceElement != null) { for (int i22 = 0; i22 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(listenersSequenceElement, "http://schemas.microsoft.com/windowsazure", "Listener") .size(); i22 = i22 + 1) { org.w3c.dom.Element listenersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(listenersSequenceElement, "http://schemas.microsoft.com/windowsazure", "Listener") .get(i22)); WindowsRemoteManagementListener listenerInstance = new WindowsRemoteManagementListener(); winRMInstance.getListeners().add(listenerInstance); Element protocolElement4 = XmlUtility.getElementByTagNameNS( listenersElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement4 != null && protocolElement4.getTextContent() != null && !protocolElement4.getTextContent().isEmpty()) { VirtualMachineWindowsRemoteManagementListenerType protocolInstance4; protocolInstance4 = VirtualMachineWindowsRemoteManagementListenerType .valueOf(protocolElement4.getTextContent()); listenerInstance.setListenerType(protocolInstance4); } Element certificateThumbprintElement = XmlUtility .getElementByTagNameNS(listenersElement, "http://schemas.microsoft.com/windowsazure", "CertificateThumbprint"); if (certificateThumbprintElement != null) { String certificateThumbprintInstance; certificateThumbprintInstance = certificateThumbprintElement .getTextContent(); listenerInstance.setCertificateThumbprint( certificateThumbprintInstance); } } } } Element adminUsernameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdminUsername"); if (adminUsernameElement != null) { String adminUsernameInstance; adminUsernameInstance = adminUsernameElement.getTextContent(); configurationSetInstance.setAdminUserName(adminUsernameInstance); } Element additionalUnattendContentElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdditionalUnattendContent"); if (additionalUnattendContentElement != null) { AdditionalUnattendContentSettings additionalUnattendContentInstance = new AdditionalUnattendContentSettings(); configurationSetInstance .setAdditionalUnattendContent(additionalUnattendContentInstance); Element passesSequenceElement = XmlUtility.getElementByTagNameNS( additionalUnattendContentElement, "http://schemas.microsoft.com/windowsazure", "Passes"); if (passesSequenceElement != null) { for (int i23 = 0; i23 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(passesSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendPass") .size(); i23 = i23 + 1) { org.w3c.dom.Element passesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(passesSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendPass") .get(i23)); UnattendPassSettings unattendPassInstance = new UnattendPassSettings(); additionalUnattendContentInstance.getUnattendPasses() .add(unattendPassInstance); Element passNameElement = XmlUtility.getElementByTagNameNS( passesElement, "http://schemas.microsoft.com/windowsazure", "PassName"); if (passNameElement != null) { String passNameInstance; passNameInstance = passNameElement.getTextContent(); unattendPassInstance.setPassName(passNameInstance); } Element componentsSequenceElement = XmlUtility .getElementByTagNameNS(passesElement, "http://schemas.microsoft.com/windowsazure", "Components"); if (componentsSequenceElement != null) { for (int i24 = 0; i24 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(componentsSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendComponent") .size(); i24 = i24 + 1) { org.w3c.dom.Element componentsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(componentsSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendComponent") .get(i24)); UnattendComponent unattendComponentInstance = new UnattendComponent(); unattendPassInstance.getUnattendComponents() .add(unattendComponentInstance); Element componentNameElement = XmlUtility .getElementByTagNameNS(componentsElement, "http://schemas.microsoft.com/windowsazure", "ComponentName"); if (componentNameElement != null) { String componentNameInstance; componentNameInstance = componentNameElement .getTextContent(); unattendComponentInstance .setComponentName(componentNameInstance); } Element componentSettingsSequenceElement = XmlUtility .getElementByTagNameNS(componentsElement, "http://schemas.microsoft.com/windowsazure", "ComponentSettings"); if (componentSettingsSequenceElement != null) { for (int i25 = 0; i25 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( componentSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ComponentSetting") .size(); i25 = i25 + 1) { org.w3c.dom.Element componentSettingsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( componentSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ComponentSetting") .get(i25)); ComponentSetting componentSettingInstance = new ComponentSetting(); unattendComponentInstance .getUnattendComponentSettings() .add(componentSettingInstance); Element settingNameElement = XmlUtility .getElementByTagNameNS( componentSettingsElement, "http://schemas.microsoft.com/windowsazure", "SettingName"); if (settingNameElement != null) { String settingNameInstance; settingNameInstance = settingNameElement .getTextContent(); componentSettingInstance .setSettingName(settingNameInstance); } Element contentElement = XmlUtility .getElementByTagNameNS( componentSettingsElement, "http://schemas.microsoft.com/windowsazure", "Content"); if (contentElement != null) { String contentInstance; contentInstance = contentElement .getTextContent() != null ? new String( Base64.decode(contentElement .getTextContent())) : null; componentSettingInstance .setContent(contentInstance); } } } } } } } } Element hostNameElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "HostName"); if (hostNameElement2 != null) { String hostNameInstance2; hostNameInstance2 = hostNameElement2.getTextContent(); configurationSetInstance.setHostName(hostNameInstance2); } Element userNameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "UserName"); if (userNameElement != null) { String userNameInstance; userNameInstance = userNameElement.getTextContent(); configurationSetInstance.setUserName(userNameInstance); } Element userPasswordElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "UserPassword"); if (userPasswordElement != null) { String userPasswordInstance; userPasswordInstance = userPasswordElement.getTextContent(); configurationSetInstance.setUserPassword(userPasswordInstance); } Element disableSshPasswordAuthenticationElement = XmlUtility .getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "DisableSshPasswordAuthentication"); if (disableSshPasswordAuthenticationElement != null && disableSshPasswordAuthenticationElement.getTextContent() != null && !disableSshPasswordAuthenticationElement.getTextContent() .isEmpty()) { boolean disableSshPasswordAuthenticationInstance; disableSshPasswordAuthenticationInstance = DatatypeConverter .parseBoolean(disableSshPasswordAuthenticationElement .getTextContent().toLowerCase()); configurationSetInstance.setDisableSshPasswordAuthentication( disableSshPasswordAuthenticationInstance); } Element sSHElement = XmlUtility.getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "SSH"); if (sSHElement != null) { SshSettings sSHInstance = new SshSettings(); configurationSetInstance.setSshSettings(sSHInstance); Element publicKeysSequenceElement = XmlUtility.getElementByTagNameNS( sSHElement, "http://schemas.microsoft.com/windowsazure", "PublicKeys"); if (publicKeysSequenceElement != null) { for (int i26 = 0; i26 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicKeysSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicKey") .size(); i26 = i26 + 1) { org.w3c.dom.Element publicKeysElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicKeysSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicKey") .get(i26)); SshSettingPublicKey publicKeyInstance = new SshSettingPublicKey(); sSHInstance.getPublicKeys().add(publicKeyInstance); Element fingerprintElement = XmlUtility.getElementByTagNameNS( publicKeysElement, "http://schemas.microsoft.com/windowsazure", "Fingerprint"); if (fingerprintElement != null) { String fingerprintInstance; fingerprintInstance = fingerprintElement.getTextContent(); publicKeyInstance.setFingerprint(fingerprintInstance); } Element pathElement2 = XmlUtility.getElementByTagNameNS( publicKeysElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement2 != null) { String pathInstance2; pathInstance2 = pathElement2.getTextContent(); publicKeyInstance.setPath(pathInstance2); } } } Element keyPairsSequenceElement = XmlUtility.getElementByTagNameNS( sSHElement, "http://schemas.microsoft.com/windowsazure", "KeyPairs"); if (keyPairsSequenceElement != null) { for (int i27 = 0; i27 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(keyPairsSequenceElement, "http://schemas.microsoft.com/windowsazure", "KeyPair") .size(); i27 = i27 + 1) { org.w3c.dom.Element keyPairsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(keyPairsSequenceElement, "http://schemas.microsoft.com/windowsazure", "KeyPair") .get(i27)); SshSettingKeyPair keyPairInstance = new SshSettingKeyPair(); sSHInstance.getKeyPairs().add(keyPairInstance); Element fingerprintElement2 = XmlUtility.getElementByTagNameNS( keyPairsElement, "http://schemas.microsoft.com/windowsazure", "Fingerprint"); if (fingerprintElement2 != null) { String fingerprintInstance2; fingerprintInstance2 = fingerprintElement2.getTextContent(); keyPairInstance.setFingerprint(fingerprintInstance2); } Element pathElement3 = XmlUtility.getElementByTagNameNS( keyPairsElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement3 != null) { String pathInstance3; pathInstance3 = pathElement3.getTextContent(); keyPairInstance.setPath(pathInstance3); } } } } Element customDataElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "CustomData"); if (customDataElement != null) { String customDataInstance; customDataInstance = customDataElement.getTextContent(); configurationSetInstance.setCustomData(customDataInstance); } } } Element resourceExtensionReferencesSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReferences"); if (resourceExtensionReferencesSequenceElement != null) { for (int i28 = 0; i28 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionReferencesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReference") .size(); i28 = i28 + 1) { org.w3c.dom.Element resourceExtensionReferencesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionReferencesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReference") .get(i28)); ResourceExtensionReference resourceExtensionReferenceInstance = new ResourceExtensionReference(); roleInstance.getResourceExtensionReferences() .add(resourceExtensionReferenceInstance); Element referenceNameElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ReferenceName"); if (referenceNameElement != null) { String referenceNameInstance; referenceNameInstance = referenceNameElement.getTextContent(); resourceExtensionReferenceInstance.setReferenceName(referenceNameInstance); } Element publisherElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Publisher"); if (publisherElement != null) { String publisherInstance; publisherInstance = publisherElement.getTextContent(); resourceExtensionReferenceInstance.setPublisher(publisherInstance); } Element nameElement10 = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement10 != null) { String nameInstance10; nameInstance10 = nameElement10.getTextContent(); resourceExtensionReferenceInstance.setName(nameInstance10); } Element versionElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Version"); if (versionElement2 != null) { String versionInstance2; versionInstance2 = versionElement2.getTextContent(); resourceExtensionReferenceInstance.setVersion(versionInstance2); } Element resourceExtensionParameterValuesSequenceElement = XmlUtility .getElementByTagNameNS(resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValues"); if (resourceExtensionParameterValuesSequenceElement != null) { for (int i29 = 0; i29 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( resourceExtensionParameterValuesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValue") .size(); i29 = i29 + 1) { org.w3c.dom.Element resourceExtensionParameterValuesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( resourceExtensionParameterValuesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValue") .get(i29)); ResourceExtensionParameterValue resourceExtensionParameterValueInstance = new ResourceExtensionParameterValue(); resourceExtensionReferenceInstance.getResourceExtensionParameterValues() .add(resourceExtensionParameterValueInstance); Element keyElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Key"); if (keyElement != null) { String keyInstance; keyInstance = keyElement.getTextContent(); resourceExtensionParameterValueInstance.setKey(keyInstance); } Element valueElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Value"); if (valueElement != null) { String valueInstance; valueInstance = valueElement.getTextContent() != null ? new String(Base64.decode(valueElement.getTextContent())) : null; resourceExtensionParameterValueInstance.setValue(valueInstance); } Element typeElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Type"); if (typeElement != null) { String typeInstance; typeInstance = typeElement.getTextContent(); resourceExtensionParameterValueInstance.setType(typeInstance); } } } Element stateElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "State"); if (stateElement != null) { String stateInstance; stateInstance = stateElement.getTextContent(); resourceExtensionReferenceInstance.setState(stateInstance); } Element forceUpdateElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ForceUpdate"); if (forceUpdateElement != null && forceUpdateElement.getTextContent() != null && !forceUpdateElement.getTextContent().isEmpty()) { boolean forceUpdateInstance; forceUpdateInstance = DatatypeConverter .parseBoolean(forceUpdateElement.getTextContent().toLowerCase()); resourceExtensionReferenceInstance.setForceUpdate(forceUpdateInstance); } } } Element vMImageNameElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "VMImageName"); if (vMImageNameElement != null) { String vMImageNameInstance; vMImageNameInstance = vMImageNameElement.getTextContent(); roleInstance.setVMImageName(vMImageNameInstance); } Element mediaLocationElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "MediaLocation"); if (mediaLocationElement != null) { URI mediaLocationInstance; mediaLocationInstance = new URI(mediaLocationElement.getTextContent()); roleInstance.setMediaLocation(mediaLocationInstance); } Element availabilitySetNameElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "AvailabilitySetName"); if (availabilitySetNameElement != null) { String availabilitySetNameInstance; availabilitySetNameInstance = availabilitySetNameElement.getTextContent(); roleInstance.setAvailabilitySetName(availabilitySetNameInstance); } Element dataVirtualHardDisksSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisks"); if (dataVirtualHardDisksSequenceElement != null) { for (int i30 = 0; i30 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataVirtualHardDisksSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisk") .size(); i30 = i30 + 1) { org.w3c.dom.Element dataVirtualHardDisksElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataVirtualHardDisksSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisk") .get(i30)); DataVirtualHardDisk dataVirtualHardDiskInstance = new DataVirtualHardDisk(); roleInstance.getDataVirtualHardDisks().add(dataVirtualHardDiskInstance); Element hostCachingElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "HostCaching"); if (hostCachingElement != null) { String hostCachingInstance; hostCachingInstance = hostCachingElement.getTextContent(); dataVirtualHardDiskInstance.setHostCaching(hostCachingInstance); } Element diskLabelElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "DiskLabel"); if (diskLabelElement != null) { String diskLabelInstance; diskLabelInstance = diskLabelElement.getTextContent(); dataVirtualHardDiskInstance.setLabel(diskLabelInstance); } Element diskNameElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "DiskName"); if (diskNameElement != null) { String diskNameInstance; diskNameInstance = diskNameElement.getTextContent(); dataVirtualHardDiskInstance.setName(diskNameInstance); } Element lunElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "Lun"); if (lunElement != null && lunElement.getTextContent() != null && !lunElement.getTextContent().isEmpty()) { int lunInstance; lunInstance = DatatypeConverter.parseInt(lunElement.getTextContent()); dataVirtualHardDiskInstance.setLogicalUnitNumber(lunInstance); } Element logicalDiskSizeInGBElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "LogicalDiskSizeInGB"); if (logicalDiskSizeInGBElement != null && logicalDiskSizeInGBElement.getTextContent() != null && !logicalDiskSizeInGBElement.getTextContent().isEmpty()) { int logicalDiskSizeInGBInstance; logicalDiskSizeInGBInstance = DatatypeConverter .parseInt(logicalDiskSizeInGBElement.getTextContent()); dataVirtualHardDiskInstance .setLogicalDiskSizeInGB(logicalDiskSizeInGBInstance); } Element mediaLinkElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "MediaLink"); if (mediaLinkElement != null) { URI mediaLinkInstance; mediaLinkInstance = new URI(mediaLinkElement.getTextContent()); dataVirtualHardDiskInstance.setMediaLink(mediaLinkInstance); } Element sourceMediaLinkElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "SourceMediaLink"); if (sourceMediaLinkElement != null) { URI sourceMediaLinkInstance; sourceMediaLinkInstance = new URI(sourceMediaLinkElement.getTextContent()); dataVirtualHardDiskInstance.setSourceMediaLink(sourceMediaLinkInstance); } Element iOTypeElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "IOType"); if (iOTypeElement != null) { String iOTypeInstance; iOTypeInstance = iOTypeElement.getTextContent(); dataVirtualHardDiskInstance.setIOType(iOTypeInstance); } } } Element labelElement2 = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "Label"); if (labelElement2 != null) { String labelInstance2; labelInstance2 = labelElement2.getTextContent(); roleInstance.setLabel(labelInstance2); } Element oSVirtualHardDiskElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "OSVirtualHardDisk"); if (oSVirtualHardDiskElement != null) { OSVirtualHardDisk oSVirtualHardDiskInstance = new OSVirtualHardDisk(); roleInstance.setOSVirtualHardDisk(oSVirtualHardDiskInstance); Element hostCachingElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "HostCaching"); if (hostCachingElement2 != null) { String hostCachingInstance2; hostCachingInstance2 = hostCachingElement2.getTextContent(); oSVirtualHardDiskInstance.setHostCaching(hostCachingInstance2); } Element diskLabelElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "DiskLabel"); if (diskLabelElement2 != null) { String diskLabelInstance2; diskLabelInstance2 = diskLabelElement2.getTextContent(); oSVirtualHardDiskInstance.setLabel(diskLabelInstance2); } Element diskNameElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "DiskName"); if (diskNameElement2 != null) { String diskNameInstance2; diskNameInstance2 = diskNameElement2.getTextContent(); oSVirtualHardDiskInstance.setName(diskNameInstance2); } Element mediaLinkElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "MediaLink"); if (mediaLinkElement2 != null) { URI mediaLinkInstance2; mediaLinkInstance2 = new URI(mediaLinkElement2.getTextContent()); oSVirtualHardDiskInstance.setMediaLink(mediaLinkInstance2); } Element sourceImageNameElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "SourceImageName"); if (sourceImageNameElement != null) { String sourceImageNameInstance; sourceImageNameInstance = sourceImageNameElement.getTextContent(); oSVirtualHardDiskInstance.setSourceImageName(sourceImageNameInstance); } Element osElement = XmlUtility.getElementByTagNameNS(oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "OS"); if (osElement != null) { String osInstance; osInstance = osElement.getTextContent(); oSVirtualHardDiskInstance.setOperatingSystem(osInstance); } Element remoteSourceImageLinkElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "RemoteSourceImageLink"); if (remoteSourceImageLinkElement != null) { URI remoteSourceImageLinkInstance; remoteSourceImageLinkInstance = new URI( remoteSourceImageLinkElement.getTextContent()); oSVirtualHardDiskInstance .setRemoteSourceImageLink(remoteSourceImageLinkInstance); } Element iOTypeElement2 = XmlUtility.getElementByTagNameNS(oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "IOType"); if (iOTypeElement2 != null) { String iOTypeInstance2; iOTypeInstance2 = iOTypeElement2.getTextContent(); oSVirtualHardDiskInstance.setIOType(iOTypeInstance2); } Element resizedSizeInGBElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement != null && resizedSizeInGBElement.getTextContent() != null && !resizedSizeInGBElement.getTextContent().isEmpty()) { int resizedSizeInGBInstance; resizedSizeInGBInstance = DatatypeConverter .parseInt(resizedSizeInGBElement.getTextContent()); oSVirtualHardDiskInstance.setResizedSizeInGB(resizedSizeInGBInstance); } } Element roleSizeElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleSize"); if (roleSizeElement != null) { String roleSizeInstance; roleSizeInstance = roleSizeElement.getTextContent(); roleInstance.setRoleSize(roleSizeInstance); } Element defaultWinRmCertificateThumbprintElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "DefaultWinRmCertificateThumbprint"); if (defaultWinRmCertificateThumbprintElement != null) { String defaultWinRmCertificateThumbprintInstance; defaultWinRmCertificateThumbprintInstance = defaultWinRmCertificateThumbprintElement .getTextContent(); roleInstance.setDefaultWinRmCertificateThumbprint( defaultWinRmCertificateThumbprintInstance); } Element provisionGuestAgentElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "ProvisionGuestAgent"); if (provisionGuestAgentElement != null && provisionGuestAgentElement.getTextContent() != null && !provisionGuestAgentElement.getTextContent().isEmpty()) { boolean provisionGuestAgentInstance; provisionGuestAgentInstance = DatatypeConverter .parseBoolean(provisionGuestAgentElement.getTextContent().toLowerCase()); roleInstance.setProvisionGuestAgent(provisionGuestAgentInstance); } Element vMImageInputElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "VMImageInput"); if (vMImageInputElement != null) { VMImageInput vMImageInputInstance = new VMImageInput(); roleInstance.setVMImageInput(vMImageInputInstance); Element oSDiskConfigurationElement = XmlUtility.getElementByTagNameNS( vMImageInputElement, "http://schemas.microsoft.com/windowsazure", "OSDiskConfiguration"); if (oSDiskConfigurationElement != null) { OSDiskConfiguration oSDiskConfigurationInstance = new OSDiskConfiguration(); vMImageInputInstance.setOSDiskConfiguration(oSDiskConfigurationInstance); Element resizedSizeInGBElement2 = XmlUtility.getElementByTagNameNS( oSDiskConfigurationElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement2 != null && resizedSizeInGBElement2.getTextContent() != null && !resizedSizeInGBElement2.getTextContent().isEmpty()) { int resizedSizeInGBInstance2; resizedSizeInGBInstance2 = DatatypeConverter .parseInt(resizedSizeInGBElement2.getTextContent()); oSDiskConfigurationInstance.setResizedSizeInGB(resizedSizeInGBInstance2); } } Element dataDiskConfigurationsSequenceElement = XmlUtility.getElementByTagNameNS( vMImageInputElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfigurations"); if (dataDiskConfigurationsSequenceElement != null) { for (int i31 = 0; i31 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataDiskConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfiguration") .size(); i31 = i31 + 1) { org.w3c.dom.Element dataDiskConfigurationsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataDiskConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfiguration") .get(i31)); DataDiskConfiguration dataDiskConfigurationInstance = new DataDiskConfiguration(); vMImageInputInstance.getDataDiskConfigurations() .add(dataDiskConfigurationInstance); Element nameElement11 = XmlUtility.getElementByTagNameNS( dataDiskConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement11 != null) { String nameInstance11; nameInstance11 = nameElement11.getTextContent(); dataDiskConfigurationInstance.setDiskName(nameInstance11); } Element resizedSizeInGBElement3 = XmlUtility.getElementByTagNameNS( dataDiskConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement3 != null && resizedSizeInGBElement3.getTextContent() != null && !resizedSizeInGBElement3.getTextContent().isEmpty()) { int resizedSizeInGBInstance3; resizedSizeInGBInstance3 = DatatypeConverter .parseInt(resizedSizeInGBElement3.getTextContent()); dataDiskConfigurationInstance .setResizedSizeInGB(resizedSizeInGBInstance3); } } } } } } Element sdkVersionElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "SdkVersion"); if (sdkVersionElement != null) { String sdkVersionInstance; sdkVersionInstance = sdkVersionElement.getTextContent(); result.setSdkVersion(sdkVersionInstance); } Element lockedElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Locked"); if (lockedElement != null && lockedElement.getTextContent() != null && !lockedElement.getTextContent().isEmpty()) { boolean lockedInstance; lockedInstance = DatatypeConverter .parseBoolean(lockedElement.getTextContent().toLowerCase()); result.setLocked(lockedInstance); } Element rollbackAllowedElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RollbackAllowed"); if (rollbackAllowedElement != null && rollbackAllowedElement.getTextContent() != null && !rollbackAllowedElement.getTextContent().isEmpty()) { boolean rollbackAllowedInstance; rollbackAllowedInstance = DatatypeConverter .parseBoolean(rollbackAllowedElement.getTextContent().toLowerCase()); result.setRollbackAllowed(rollbackAllowedInstance); } Element virtualNetworkNameElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "VirtualNetworkName"); if (virtualNetworkNameElement != null) { String virtualNetworkNameInstance; virtualNetworkNameInstance = virtualNetworkNameElement.getTextContent(); result.setVirtualNetworkName(virtualNetworkNameInstance); } Element createdTimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "CreatedTime"); if (createdTimeElement != null) { Calendar createdTimeInstance; createdTimeInstance = DatatypeConverter.parseDateTime(createdTimeElement.getTextContent()); result.setCreatedTime(createdTimeInstance); } Element lastModifiedTimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "LastModifiedTime"); if (lastModifiedTimeElement != null) { Calendar lastModifiedTimeInstance; lastModifiedTimeInstance = DatatypeConverter .parseDateTime(lastModifiedTimeElement.getTextContent()); result.setLastModifiedTime(lastModifiedTimeInstance); } Element extendedPropertiesSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); if (extendedPropertiesSequenceElement != null) { for (int i32 = 0; i32 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extendedPropertiesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperty") .size(); i32 = i32 + 1) { org.w3c.dom.Element extendedPropertiesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extendedPropertiesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperty") .get(i32)); String extendedPropertiesKey = XmlUtility .getElementByTagNameNS(extendedPropertiesElement, "http://schemas.microsoft.com/windowsazure", "Name") .getTextContent(); String extendedPropertiesValue = XmlUtility .getElementByTagNameNS(extendedPropertiesElement, "http://schemas.microsoft.com/windowsazure", "Value") .getTextContent(); result.getExtendedProperties().put(extendedPropertiesKey, extendedPropertiesValue); } } Element dnsElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Dns"); if (dnsElement != null) { DnsSettings dnsInstance = new DnsSettings(); result.setDnsSettings(dnsInstance); Element dnsServersSequenceElement = XmlUtility.getElementByTagNameNS(dnsElement, "http://schemas.microsoft.com/windowsazure", "DnsServers"); if (dnsServersSequenceElement != null) { for (int i33 = 0; i33 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dnsServersSequenceElement, "http://schemas.microsoft.com/windowsazure", "DnsServer") .size(); i33 = i33 + 1) { org.w3c.dom.Element dnsServersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dnsServersSequenceElement, "http://schemas.microsoft.com/windowsazure", "DnsServer") .get(i33)); DnsServer dnsServerInstance = new DnsServer(); dnsInstance.getDnsServers().add(dnsServerInstance); Element nameElement12 = XmlUtility.getElementByTagNameNS(dnsServersElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement12 != null) { String nameInstance12; nameInstance12 = nameElement12.getTextContent(); dnsServerInstance.setName(nameInstance12); } Element addressElement3 = XmlUtility.getElementByTagNameNS(dnsServersElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement3 != null) { InetAddress addressInstance3; addressInstance3 = InetAddress.getByName(addressElement3.getTextContent()); dnsServerInstance.setAddress(addressInstance3); } } } } Element persistentVMDowntimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "PersistentVMDowntime"); if (persistentVMDowntimeElement != null) { PersistentVMDowntime persistentVMDowntimeInstance = new PersistentVMDowntime(); result.setPersistentVMDowntime(persistentVMDowntimeInstance); Element startTimeElement = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "StartTime"); if (startTimeElement != null) { Calendar startTimeInstance; startTimeInstance = DatatypeConverter.parseDateTime(startTimeElement.getTextContent()); persistentVMDowntimeInstance.setStartTime(startTimeInstance); } Element endTimeElement = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "EndTime"); if (endTimeElement != null) { Calendar endTimeInstance; endTimeInstance = DatatypeConverter.parseDateTime(endTimeElement.getTextContent()); persistentVMDowntimeInstance.setEndTime(endTimeInstance); } Element statusElement6 = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement6 != null) { String statusInstance6; statusInstance6 = statusElement6.getTextContent(); persistentVMDowntimeInstance.setStatus(statusInstance6); } } Element virtualIPsSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "VirtualIPs"); if (virtualIPsSequenceElement != null) { for (int i34 = 0; i34 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(virtualIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "VirtualIP") .size(); i34 = i34 + 1) { org.w3c.dom.Element virtualIPsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(virtualIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "VirtualIP") .get(i34)); VirtualIPAddress virtualIPInstance = new VirtualIPAddress(); result.getVirtualIPAddresses().add(virtualIPInstance); Element addressElement4 = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement4 != null) { InetAddress addressInstance4; addressInstance4 = InetAddress.getByName(addressElement4.getTextContent()); virtualIPInstance.setAddress(addressInstance4); } Element isDnsProgrammedElement = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "IsDnsProgrammed"); if (isDnsProgrammedElement != null && isDnsProgrammedElement.getTextContent() != null && !isDnsProgrammedElement.getTextContent().isEmpty()) { boolean isDnsProgrammedInstance; isDnsProgrammedInstance = DatatypeConverter .parseBoolean(isDnsProgrammedElement.getTextContent().toLowerCase()); virtualIPInstance.setIsDnsProgrammed(isDnsProgrammedInstance); } Element nameElement13 = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement13 != null) { String nameInstance13; nameInstance13 = nameElement13.getTextContent(); virtualIPInstance.setName(nameInstance13); } Element reservedIPNameElement = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "ReservedIPName"); if (reservedIPNameElement != null) { String reservedIPNameInstance; reservedIPNameInstance = reservedIPNameElement.getTextContent(); virtualIPInstance.setReservedIPName(reservedIPNameInstance); } } } Element extensionConfigurationElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); if (extensionConfigurationElement != null) { ExtensionConfiguration extensionConfigurationInstance = new ExtensionConfiguration(); result.setExtensionConfiguration(extensionConfigurationInstance); Element allRolesSequenceElement = XmlUtility.getElementByTagNameNS( extensionConfigurationElement, "http://schemas.microsoft.com/windowsazure", "AllRoles"); if (allRolesSequenceElement != null) { for (int i35 = 0; i35 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(allRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .size(); i35 = i35 + 1) { org.w3c.dom.Element allRolesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(allRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .get(i35)); ExtensionConfiguration.Extension extensionInstance = new ExtensionConfiguration.Extension(); extensionConfigurationInstance.getAllRoles().add(extensionInstance); Element idElement = XmlUtility.getElementByTagNameNS(allRolesElement, "http://schemas.microsoft.com/windowsazure", "Id"); if (idElement != null) { String idInstance; idInstance = idElement.getTextContent(); extensionInstance.setId(idInstance); } } } Element namedRolesSequenceElement = XmlUtility.getElementByTagNameNS( extensionConfigurationElement, "http://schemas.microsoft.com/windowsazure", "NamedRoles"); if (namedRolesSequenceElement != null) { for (int i36 = 0; i36 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(namedRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .size(); i36 = i36 + 1) { org.w3c.dom.Element namedRolesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(namedRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .get(i36)); ExtensionConfiguration.NamedRole roleInstance2 = new ExtensionConfiguration.NamedRole(); extensionConfigurationInstance.getNamedRoles().add(roleInstance2); Element roleNameElement3 = XmlUtility.getElementByTagNameNS(namedRolesElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement3 != null) { String roleNameInstance3; roleNameInstance3 = roleNameElement3.getTextContent(); roleInstance2.setRoleName(roleNameInstance3); } Element extensionsSequenceElement = XmlUtility.getElementByTagNameNS( namedRolesElement, "http://schemas.microsoft.com/windowsazure", "Extensions"); if (extensionsSequenceElement != null) { for (int i37 = 0; i37 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extensionsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .size(); i37 = i37 + 1) { org.w3c.dom.Element extensionsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extensionsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .get(i37)); ExtensionConfiguration.Extension extensionInstance2 = new ExtensionConfiguration.Extension(); roleInstance2.getExtensions().add(extensionInstance2); Element idElement2 = XmlUtility.getElementByTagNameNS(extensionsElement, "http://schemas.microsoft.com/windowsazure", "Id"); if (idElement2 != null) { String idInstance2; idInstance2 = idElement2.getTextContent(); extensionInstance2.setId(idInstance2); } } } } } } Element reservedIPNameElement2 = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ReservedIPName"); if (reservedIPNameElement2 != null) { String reservedIPNameInstance2; reservedIPNameInstance2 = reservedIPNameElement2.getTextContent(); result.setReservedIPName(reservedIPNameInstance2); } Element loadBalancersSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancers"); if (loadBalancersSequenceElement != null) { for (int i38 = 0; i38 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(loadBalancersSequenceElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancer") .size(); i38 = i38 + 1) { org.w3c.dom.Element loadBalancersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(loadBalancersSequenceElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancer") .get(i38)); LoadBalancer loadBalancerInstance = new LoadBalancer(); result.getLoadBalancers().add(loadBalancerInstance); Element nameElement14 = XmlUtility.getElementByTagNameNS(loadBalancersElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement14 != null) { String nameInstance14; nameInstance14 = nameElement14.getTextContent(); loadBalancerInstance.setName(nameInstance14); } Element frontendIpConfigurationElement = XmlUtility.getElementByTagNameNS( loadBalancersElement, "http://schemas.microsoft.com/windowsazure", "FrontendIpConfiguration"); if (frontendIpConfigurationElement != null) { FrontendIPConfiguration frontendIpConfigurationInstance = new FrontendIPConfiguration(); loadBalancerInstance.setFrontendIPConfiguration(frontendIpConfigurationInstance); Element typeElement2 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "Type"); if (typeElement2 != null) { String typeInstance2; typeInstance2 = typeElement2.getTextContent(); frontendIpConfigurationInstance.setType(typeInstance2); } Element subnetNameElement3 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement3 != null) { String subnetNameInstance3; subnetNameInstance3 = subnetNameElement3.getTextContent(); frontendIpConfigurationInstance.setSubnetName(subnetNameInstance3); } Element staticVirtualNetworkIPAddressElement3 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement3 != null) { InetAddress staticVirtualNetworkIPAddressInstance3; staticVirtualNetworkIPAddressInstance3 = InetAddress .getByName(staticVirtualNetworkIPAddressElement3.getTextContent()); frontendIpConfigurationInstance.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance3); } } } } } } result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Get Deployment By Slot operation returns configuration information, * status, and system properties for a deployment. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460804.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @return A deployment that exists in the cloud service. */ @Override public Future<DeploymentGetResponse> getBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot) { return this.getClient().getExecutorService().submit(new Callable<DeploymentGetResponse>() { @Override public DeploymentGetResponse call() throws Exception { return getBySlot(serviceName, deploymentSlot); } }); } /** * The Get Deployment By Slot operation returns configuration information, * status, and system properties for a deployment. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460804.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @throws ParserConfigurationException Thrown if there was a serious * configuration error with the document parser. * @throws SAXException Thrown if there was an error parsing the XML * response. * @throws URISyntaxException Thrown if there was an error parsing a URI in * the response. * @return A deployment that exists in the cloud service. */ @Override public DeploymentGetResponse getBySlot(String serviceName, DeploymentSlot deploymentSlot) throws IOException, ServiceException, ParserConfigurationException, SAXException, URISyntaxException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); CloudTracing.enter(invocationId, this, "getBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpGet httpRequest = new HttpGet(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result DeploymentGetResponse result = null; // Deserialize Response if (statusCode == HttpStatus.SC_OK) { InputStream responseContent = httpResponse.getEntity().getContent(); result = new DeploymentGetResponse(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document responseDoc = documentBuilder.parse(new BOMInputStream(responseContent)); Element deploymentElement = XmlUtility.getElementByTagNameNS(responseDoc, "http://schemas.microsoft.com/windowsazure", "Deployment"); if (deploymentElement != null) { Element nameElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement != null) { String nameInstance; nameInstance = nameElement.getTextContent(); result.setName(nameInstance); } Element deploymentSlotElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "DeploymentSlot"); if (deploymentSlotElement != null && deploymentSlotElement.getTextContent() != null && !deploymentSlotElement.getTextContent().isEmpty()) { DeploymentSlot deploymentSlotInstance; deploymentSlotInstance = DeploymentSlot.valueOf(deploymentSlotElement.getTextContent()); result.setDeploymentSlot(deploymentSlotInstance); } Element privateIDElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "PrivateID"); if (privateIDElement != null) { String privateIDInstance; privateIDInstance = privateIDElement.getTextContent(); result.setPrivateId(privateIDInstance); } Element statusElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement != null && statusElement.getTextContent() != null && !statusElement.getTextContent().isEmpty()) { DeploymentStatus statusInstance; statusInstance = DeploymentStatus.valueOf(statusElement.getTextContent()); result.setStatus(statusInstance); } Element labelElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Label"); if (labelElement != null) { String labelInstance; labelInstance = labelElement.getTextContent() != null ? new String(Base64.decode(labelElement.getTextContent())) : null; result.setLabel(labelInstance); } Element urlElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Url"); if (urlElement != null) { URI urlInstance; urlInstance = new URI(urlElement.getTextContent()); result.setUri(urlInstance); } Element configurationElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Configuration"); if (configurationElement != null) { String configurationInstance; configurationInstance = configurationElement.getTextContent() != null ? new String(Base64.decode(configurationElement.getTextContent())) : null; result.setConfiguration(configurationInstance); } Element roleInstanceListSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RoleInstanceList"); if (roleInstanceListSequenceElement != null) { for (int i1 = 0; i1 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleInstanceListSequenceElement, "http://schemas.microsoft.com/windowsazure", "RoleInstance") .size(); i1 = i1 + 1) { org.w3c.dom.Element roleInstanceListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleInstanceListSequenceElement, "http://schemas.microsoft.com/windowsazure", "RoleInstance") .get(i1)); RoleInstance roleInstanceInstance = new RoleInstance(); result.getRoleInstances().add(roleInstanceInstance); Element roleNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement != null) { String roleNameInstance; roleNameInstance = roleNameElement.getTextContent(); roleInstanceInstance.setRoleName(roleNameInstance); } Element instanceNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceName"); if (instanceNameElement != null) { String instanceNameInstance; instanceNameInstance = instanceNameElement.getTextContent(); roleInstanceInstance.setInstanceName(instanceNameInstance); } Element instanceStatusElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceStatus"); if (instanceStatusElement != null) { String instanceStatusInstance; instanceStatusInstance = instanceStatusElement.getTextContent(); roleInstanceInstance.setInstanceStatus(instanceStatusInstance); } Element instanceUpgradeDomainElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceUpgradeDomain"); if (instanceUpgradeDomainElement != null && instanceUpgradeDomainElement.getTextContent() != null && !instanceUpgradeDomainElement.getTextContent().isEmpty()) { int instanceUpgradeDomainInstance; instanceUpgradeDomainInstance = DatatypeConverter .parseInt(instanceUpgradeDomainElement.getTextContent()); roleInstanceInstance.setInstanceUpgradeDomain(instanceUpgradeDomainInstance); } Element instanceFaultDomainElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceFaultDomain"); if (instanceFaultDomainElement != null && instanceFaultDomainElement.getTextContent() != null && !instanceFaultDomainElement.getTextContent().isEmpty()) { int instanceFaultDomainInstance; instanceFaultDomainInstance = DatatypeConverter .parseInt(instanceFaultDomainElement.getTextContent()); roleInstanceInstance.setInstanceFaultDomain(instanceFaultDomainInstance); } Element instanceSizeElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceSize"); if (instanceSizeElement != null) { String instanceSizeInstance; instanceSizeInstance = instanceSizeElement.getTextContent(); roleInstanceInstance.setInstanceSize(instanceSizeInstance); } Element instanceStateDetailsElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceStateDetails"); if (instanceStateDetailsElement != null) { String instanceStateDetailsInstance; instanceStateDetailsInstance = instanceStateDetailsElement.getTextContent(); roleInstanceInstance.setInstanceStateDetails(instanceStateDetailsInstance); } Element instanceErrorCodeElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceErrorCode"); if (instanceErrorCodeElement != null) { String instanceErrorCodeInstance; instanceErrorCodeInstance = instanceErrorCodeElement.getTextContent(); roleInstanceInstance.setInstanceErrorCode(instanceErrorCodeInstance); } Element ipAddressElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "IpAddress"); if (ipAddressElement != null) { InetAddress ipAddressInstance; ipAddressInstance = InetAddress.getByName(ipAddressElement.getTextContent()); roleInstanceInstance.setIPAddress(ipAddressInstance); } Element instanceEndpointsSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoints"); if (instanceEndpointsSequenceElement != null) { for (int i2 = 0; i2 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(instanceEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoint") .size(); i2 = i2 + 1) { org.w3c.dom.Element instanceEndpointsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(instanceEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InstanceEndpoint") .get(i2)); InstanceEndpoint instanceEndpointInstance = new InstanceEndpoint(); roleInstanceInstance.getInstanceEndpoints().add(instanceEndpointInstance); Element localPortElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LocalPort"); if (localPortElement != null && localPortElement.getTextContent() != null && !localPortElement.getTextContent().isEmpty()) { int localPortInstance; localPortInstance = DatatypeConverter .parseInt(localPortElement.getTextContent()); instanceEndpointInstance.setLocalPort(localPortInstance); } Element nameElement2 = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement2 != null) { String nameInstance2; nameInstance2 = nameElement2.getTextContent(); instanceEndpointInstance.setName(nameInstance2); } Element publicPortElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "PublicPort"); if (publicPortElement != null) { int publicPortInstance; publicPortInstance = DatatypeConverter .parseInt(publicPortElement.getTextContent()); instanceEndpointInstance.setPort(publicPortInstance); } Element protocolElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement != null) { String protocolInstance; protocolInstance = protocolElement.getTextContent(); instanceEndpointInstance.setProtocol(protocolInstance); } Element vipElement = XmlUtility.getElementByTagNameNS(instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Vip"); if (vipElement != null) { InetAddress vipInstance; vipInstance = InetAddress.getByName(vipElement.getTextContent()); instanceEndpointInstance.setVirtualIPAddress(vipInstance); } Element idleTimeoutInMinutesElement = XmlUtility.getElementByTagNameNS( instanceEndpointsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement != null && idleTimeoutInMinutesElement.getTextContent() != null && !idleTimeoutInMinutesElement.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance; idleTimeoutInMinutesInstance = DatatypeConverter .parseInt(idleTimeoutInMinutesElement.getTextContent()); instanceEndpointInstance .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance); } } } Element guestAgentStatusElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "GuestAgentStatus"); if (guestAgentStatusElement != null) { GuestAgentStatus guestAgentStatusInstance = new GuestAgentStatus(); roleInstanceInstance.setGuestAgentStatus(guestAgentStatusInstance); Element protocolVersionElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "ProtocolVersion"); if (protocolVersionElement != null) { String protocolVersionInstance; protocolVersionInstance = protocolVersionElement.getTextContent(); guestAgentStatusInstance.setProtocolVersion(protocolVersionInstance); } Element timestampElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Timestamp"); if (timestampElement != null && timestampElement.getTextContent() != null && !timestampElement.getTextContent().isEmpty()) { Calendar timestampInstance; timestampInstance = DatatypeConverter .parseDateTime(timestampElement.getTextContent()); guestAgentStatusInstance.setTimestamp(timestampInstance); } Element guestAgentVersionElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "GuestAgentVersion"); if (guestAgentVersionElement != null) { String guestAgentVersionInstance; guestAgentVersionInstance = guestAgentVersionElement.getTextContent(); guestAgentStatusInstance.setGuestAgentVersion(guestAgentVersionInstance); } Element statusElement2 = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement2 != null) { String statusInstance2; statusInstance2 = statusElement2.getTextContent(); guestAgentStatusInstance.setStatus(statusInstance2); } Element codeElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement != null && codeElement.getTextContent() != null && !codeElement.getTextContent().isEmpty()) { int codeInstance; codeInstance = DatatypeConverter.parseInt(codeElement.getTextContent()); guestAgentStatusInstance.setCode(codeInstance); } Element messageElement = XmlUtility.getElementByTagNameNS(guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement != null) { GuestAgentMessage messageInstance = new GuestAgentMessage(); guestAgentStatusInstance.setMessage(messageInstance); Element messageResourceIdElement = XmlUtility.getElementByTagNameNS( messageElement, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement != null) { String messageResourceIdInstance; messageResourceIdInstance = messageResourceIdElement.getTextContent(); messageInstance.setMessageResourceId(messageResourceIdInstance); } Element paramListSequenceElement = XmlUtility.getElementByTagNameNS( messageElement, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement != null) { for (int i3 = 0; i3 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i3 = i3 + 1) { org.w3c.dom.Element paramListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Param") .get(i3)); messageInstance.getParamList().add(paramListElement.getTextContent()); } } } Element formattedMessageElement = XmlUtility.getElementByTagNameNS( guestAgentStatusElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement != null) { GuestAgentFormattedMessage formattedMessageInstance = new GuestAgentFormattedMessage(); guestAgentStatusInstance.setFormattedMessage(formattedMessageInstance); Element languageElement = XmlUtility.getElementByTagNameNS( formattedMessageElement, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement != null) { String languageInstance; languageInstance = languageElement.getTextContent(); formattedMessageInstance.setLanguage(languageInstance); } Element messageElement2 = XmlUtility.getElementByTagNameNS( formattedMessageElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement2 != null) { String messageInstance2; messageInstance2 = messageElement2.getTextContent(); formattedMessageInstance.setMessage(messageInstance2); } } } Element resourceExtensionStatusListSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatusList"); if (resourceExtensionStatusListSequenceElement != null) { for (int i4 = 0; i4 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatus") .size(); i4 = i4 + 1) { org.w3c.dom.Element resourceExtensionStatusListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionStatus") .get(i4)); ResourceExtensionStatus resourceExtensionStatusInstance = new ResourceExtensionStatus(); roleInstanceInstance.getResourceExtensionStatusList() .add(resourceExtensionStatusInstance); Element handlerNameElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "HandlerName"); if (handlerNameElement != null) { String handlerNameInstance; handlerNameInstance = handlerNameElement.getTextContent(); resourceExtensionStatusInstance.setHandlerName(handlerNameInstance); } Element versionElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Version"); if (versionElement != null) { String versionInstance; versionInstance = versionElement.getTextContent(); resourceExtensionStatusInstance.setVersion(versionInstance); } Element statusElement3 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement3 != null) { String statusInstance3; statusInstance3 = statusElement3.getTextContent(); resourceExtensionStatusInstance.setStatus(statusInstance3); } Element codeElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement2 != null && codeElement2.getTextContent() != null && !codeElement2.getTextContent().isEmpty()) { int codeInstance2; codeInstance2 = DatatypeConverter.parseInt(codeElement2.getTextContent()); resourceExtensionStatusInstance.setCode(codeInstance2); } Element messageElement3 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement3 != null) { GuestAgentMessage messageInstance3 = new GuestAgentMessage(); resourceExtensionStatusInstance.setMessage(messageInstance3); Element messageResourceIdElement2 = XmlUtility.getElementByTagNameNS( messageElement3, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement2 != null) { String messageResourceIdInstance2; messageResourceIdInstance2 = messageResourceIdElement2.getTextContent(); messageInstance3.setMessageResourceId(messageResourceIdInstance2); } Element paramListSequenceElement2 = XmlUtility.getElementByTagNameNS( messageElement3, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement2 != null) { for (int i5 = 0; i5 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement2, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i5 = i5 + 1) { org.w3c.dom.Element paramListElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement2, "http://schemas.microsoft.com/windowsazure", "Param") .get(i5)); messageInstance3.getParamList() .add(paramListElement2.getTextContent()); } } } Element formattedMessageElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement2 != null) { GuestAgentFormattedMessage formattedMessageInstance2 = new GuestAgentFormattedMessage(); resourceExtensionStatusInstance .setFormattedMessage(formattedMessageInstance2); Element languageElement2 = XmlUtility.getElementByTagNameNS( formattedMessageElement2, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement2 != null) { String languageInstance2; languageInstance2 = languageElement2.getTextContent(); formattedMessageInstance2.setLanguage(languageInstance2); } Element messageElement4 = XmlUtility.getElementByTagNameNS( formattedMessageElement2, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement4 != null) { String messageInstance4; messageInstance4 = messageElement4.getTextContent(); formattedMessageInstance2.setMessage(messageInstance4); } } Element extensionSettingStatusElement = XmlUtility.getElementByTagNameNS( resourceExtensionStatusListElement, "http://schemas.microsoft.com/windowsazure", "ExtensionSettingStatus"); if (extensionSettingStatusElement != null) { ResourceExtensionConfigurationStatus extensionSettingStatusInstance = new ResourceExtensionConfigurationStatus(); resourceExtensionStatusInstance .setExtensionSettingStatus(extensionSettingStatusInstance); Element timestampElement2 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Timestamp"); if (timestampElement2 != null && timestampElement2.getTextContent() != null && !timestampElement2.getTextContent().isEmpty()) { Calendar timestampInstance2; timestampInstance2 = DatatypeConverter .parseDateTime(timestampElement2.getTextContent()); extensionSettingStatusInstance.setTimestamp(timestampInstance2); } Element configurationAppliedTimeElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationAppliedTime"); if (configurationAppliedTimeElement != null && configurationAppliedTimeElement.getTextContent() != null && !configurationAppliedTimeElement.getTextContent().isEmpty()) { Calendar configurationAppliedTimeInstance; configurationAppliedTimeInstance = DatatypeConverter.parseDateTime( configurationAppliedTimeElement.getTextContent()); extensionSettingStatusInstance .setConfigurationAppliedTime(configurationAppliedTimeInstance); } Element nameElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement3 != null) { String nameInstance3; nameInstance3 = nameElement3.getTextContent(); extensionSettingStatusInstance.setName(nameInstance3); } Element operationElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Operation"); if (operationElement != null) { String operationInstance; operationInstance = operationElement.getTextContent(); extensionSettingStatusInstance.setOperation(operationInstance); } Element statusElement4 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement4 != null) { String statusInstance4; statusInstance4 = statusElement4.getTextContent(); extensionSettingStatusInstance.setStatus(statusInstance4); } Element codeElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement3 != null && codeElement3.getTextContent() != null && !codeElement3.getTextContent().isEmpty()) { int codeInstance3; codeInstance3 = DatatypeConverter .parseInt(codeElement3.getTextContent()); extensionSettingStatusInstance.setCode(codeInstance3); } Element messageElement5 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement5 != null) { GuestAgentMessage messageInstance5 = new GuestAgentMessage(); extensionSettingStatusInstance.setMessage(messageInstance5); Element messageResourceIdElement3 = XmlUtility.getElementByTagNameNS( messageElement5, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement3 != null) { String messageResourceIdInstance3; messageResourceIdInstance3 = messageResourceIdElement3 .getTextContent(); messageInstance5.setMessageResourceId(messageResourceIdInstance3); } Element paramListSequenceElement3 = XmlUtility.getElementByTagNameNS( messageElement5, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement3 != null) { for (int i6 = 0; i6 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement3, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i6 = i6 + 1) { org.w3c.dom.Element paramListElement3 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement3, "http://schemas.microsoft.com/windowsazure", "Param") .get(i6)); messageInstance5.getParamList() .add(paramListElement3.getTextContent()); } } } Element formattedMessageElement3 = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement3 != null) { GuestAgentFormattedMessage formattedMessageInstance3 = new GuestAgentFormattedMessage(); extensionSettingStatusInstance .setFormattedMessage(formattedMessageInstance3); Element languageElement3 = XmlUtility.getElementByTagNameNS( formattedMessageElement3, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement3 != null) { String languageInstance3; languageInstance3 = languageElement3.getTextContent(); formattedMessageInstance3.setLanguage(languageInstance3); } Element messageElement6 = XmlUtility.getElementByTagNameNS( formattedMessageElement3, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement6 != null) { String messageInstance6; messageInstance6 = messageElement6.getTextContent(); formattedMessageInstance3.setMessage(messageInstance6); } } Element subStatusListSequenceElement = XmlUtility.getElementByTagNameNS( extensionSettingStatusElement, "http://schemas.microsoft.com/windowsazure", "SubStatusList"); if (subStatusListSequenceElement != null) { for (int i7 = 0; i7 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubStatus") .size(); i7 = i7 + 1) { org.w3c.dom.Element subStatusListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subStatusListSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubStatus") .get(i7)); ResourceExtensionSubStatus subStatusInstance = new ResourceExtensionSubStatus(); extensionSettingStatusInstance.getSubStatusList() .add(subStatusInstance); Element nameElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement4 != null) { String nameInstance4; nameInstance4 = nameElement4.getTextContent(); subStatusInstance.setName(nameInstance4); } Element statusElement5 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement5 != null) { String statusInstance5; statusInstance5 = statusElement5.getTextContent(); subStatusInstance.setStatus(statusInstance5); } Element codeElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Code"); if (codeElement4 != null && codeElement4.getTextContent() != null && !codeElement4.getTextContent().isEmpty()) { int codeInstance4; codeInstance4 = DatatypeConverter .parseInt(codeElement4.getTextContent()); subStatusInstance.setCode(codeInstance4); } Element messageElement7 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement7 != null) { GuestAgentMessage messageInstance7 = new GuestAgentMessage(); subStatusInstance.setMessage(messageInstance7); Element messageResourceIdElement4 = XmlUtility .getElementByTagNameNS(messageElement7, "http://schemas.microsoft.com/windowsazure", "MessageResourceId"); if (messageResourceIdElement4 != null) { String messageResourceIdInstance4; messageResourceIdInstance4 = messageResourceIdElement4 .getTextContent(); messageInstance7 .setMessageResourceId(messageResourceIdInstance4); } Element paramListSequenceElement4 = XmlUtility .getElementByTagNameNS(messageElement7, "http://schemas.microsoft.com/windowsazure", "ParamList"); if (paramListSequenceElement4 != null) { for (int i8 = 0; i8 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(paramListSequenceElement4, "http://schemas.microsoft.com/windowsazure", "Param") .size(); i8 = i8 + 1) { org.w3c.dom.Element paramListElement4 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( paramListSequenceElement4, "http://schemas.microsoft.com/windowsazure", "Param") .get(i8)); messageInstance7.getParamList() .add(paramListElement4.getTextContent()); } } } Element formattedMessageElement4 = XmlUtility.getElementByTagNameNS( subStatusListElement, "http://schemas.microsoft.com/windowsazure", "FormattedMessage"); if (formattedMessageElement4 != null) { GuestAgentFormattedMessage formattedMessageInstance4 = new GuestAgentFormattedMessage(); subStatusInstance .setFormattedMessage(formattedMessageInstance4); Element languageElement4 = XmlUtility.getElementByTagNameNS( formattedMessageElement4, "http://schemas.microsoft.com/windowsazure", "Language"); if (languageElement4 != null) { String languageInstance4; languageInstance4 = languageElement4.getTextContent(); formattedMessageInstance4.setLanguage(languageInstance4); } Element messageElement8 = XmlUtility.getElementByTagNameNS( formattedMessageElement4, "http://schemas.microsoft.com/windowsazure", "Message"); if (messageElement8 != null) { String messageInstance8; messageInstance8 = messageElement8.getTextContent(); formattedMessageInstance4.setMessage(messageInstance8); } } } } } } } Element powerStateElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "PowerState"); if (powerStateElement != null && powerStateElement.getTextContent() != null && !powerStateElement.getTextContent().isEmpty()) { RoleInstancePowerState powerStateInstance; powerStateInstance = RoleInstancePowerState .valueOf(powerStateElement.getTextContent()); roleInstanceInstance.setPowerState(powerStateInstance); } Element hostNameElement = XmlUtility.getElementByTagNameNS(roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "HostName"); if (hostNameElement != null) { String hostNameInstance; hostNameInstance = hostNameElement.getTextContent(); roleInstanceInstance.setHostName(hostNameInstance); } Element remoteAccessCertificateThumbprintElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "RemoteAccessCertificateThumbprint"); if (remoteAccessCertificateThumbprintElement != null) { String remoteAccessCertificateThumbprintInstance; remoteAccessCertificateThumbprintInstance = remoteAccessCertificateThumbprintElement .getTextContent(); roleInstanceInstance.setRemoteAccessCertificateThumbprint( remoteAccessCertificateThumbprintInstance); } Element publicIPsSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "PublicIPs"); if (publicIPsSequenceElement != null) { for (int i9 = 0; i9 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicIP") .size(); i9 = i9 + 1) { org.w3c.dom.Element publicIPsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicIP") .get(i9)); RoleInstance.PublicIP publicIPInstance = new RoleInstance.PublicIP(); roleInstanceInstance.getPublicIPs().add(publicIPInstance); Element nameElement5 = XmlUtility.getElementByTagNameNS(publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement5 != null) { String nameInstance5; nameInstance5 = nameElement5.getTextContent(); publicIPInstance.setName(nameInstance5); } Element addressElement = XmlUtility.getElementByTagNameNS(publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement != null) { InetAddress addressInstance; addressInstance = InetAddress.getByName(addressElement.getTextContent()); publicIPInstance.setAddress(addressInstance); } Element idleTimeoutInMinutesElement2 = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement2 != null && idleTimeoutInMinutesElement2.getTextContent() != null && !idleTimeoutInMinutesElement2.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance2; idleTimeoutInMinutesInstance2 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement2.getTextContent()); publicIPInstance.setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance2); } Element domainNameLabelElement = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "DomainNameLabel"); if (domainNameLabelElement != null) { String domainNameLabelInstance; domainNameLabelInstance = domainNameLabelElement.getTextContent(); publicIPInstance.setDomainNameLabel(domainNameLabelInstance); } Element fqdnsSequenceElement = XmlUtility.getElementByTagNameNS( publicIPsElement, "http://schemas.microsoft.com/windowsazure", "Fqdns"); if (fqdnsSequenceElement != null) { for (int i10 = 0; i10 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(fqdnsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Fqdn") .size(); i10 = i10 + 1) { org.w3c.dom.Element fqdnsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(fqdnsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Fqdn") .get(i10)); publicIPInstance.getFqdns().add(fqdnsElement.getTextContent()); } } } } Element networkInterfacesSequenceElement = XmlUtility.getElementByTagNameNS( roleInstanceListElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterfaces"); if (networkInterfacesSequenceElement != null) { for (int i11 = 0; i11 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .size(); i11 = i11 + 1) { org.w3c.dom.Element networkInterfacesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .get(i11)); NetworkInterfaceInstance networkInterfaceInstance = new NetworkInterfaceInstance(); roleInstanceInstance.getNetworkInterfaces().add(networkInterfaceInstance); Element nameElement6 = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement6 != null) { String nameInstance6; nameInstance6 = nameElement6.getTextContent(); networkInterfaceInstance.setName(nameInstance6); } Element macAddressElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "MacAddress"); if (macAddressElement != null) { String macAddressInstance; macAddressInstance = macAddressElement.getTextContent(); networkInterfaceInstance.setMacAddress(macAddressInstance); } Element iPConfigurationsSequenceElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement, "http://schemas.microsoft.com/windowsazure", "IPConfigurations"); if (iPConfigurationsSequenceElement != null) { for (int i12 = 0; i12 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .size(); i12 = i12 + 1) { org.w3c.dom.Element iPConfigurationsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .get(i12)); IPConfigurationInstance iPConfigurationInstance = new IPConfigurationInstance(); networkInterfaceInstance.getIPConfigurations() .add(iPConfigurationInstance); Element subnetNameElement = XmlUtility.getElementByTagNameNS( iPConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement != null) { String subnetNameInstance; subnetNameInstance = subnetNameElement.getTextContent(); iPConfigurationInstance.setSubnetName(subnetNameInstance); } Element addressElement2 = XmlUtility.getElementByTagNameNS( iPConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement2 != null) { String addressInstance2; addressInstance2 = addressElement2.getTextContent(); iPConfigurationInstance.setAddress(addressInstance2); } } } } } } } Element upgradeStatusElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "UpgradeStatus"); if (upgradeStatusElement != null) { UpgradeStatus upgradeStatusInstance = new UpgradeStatus(); result.setUpgradeStatus(upgradeStatusInstance); Element upgradeTypeElement = XmlUtility.getElementByTagNameNS(upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "UpgradeType"); if (upgradeTypeElement != null && upgradeTypeElement.getTextContent() != null && !upgradeTypeElement.getTextContent().isEmpty()) { DeploymentUpgradeType upgradeTypeInstance; upgradeTypeInstance = DeploymentUpgradeType .valueOf(upgradeTypeElement.getTextContent()); upgradeStatusInstance.setUpgradeType(upgradeTypeInstance); } Element currentUpgradeDomainStateElement = XmlUtility.getElementByTagNameNS( upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "CurrentUpgradeDomainState"); if (currentUpgradeDomainStateElement != null && currentUpgradeDomainStateElement.getTextContent() != null && !currentUpgradeDomainStateElement.getTextContent().isEmpty()) { UpgradeDomainState currentUpgradeDomainStateInstance; currentUpgradeDomainStateInstance = UpgradeDomainState .valueOf(currentUpgradeDomainStateElement.getTextContent()); upgradeStatusInstance.setCurrentUpgradeDomainState(currentUpgradeDomainStateInstance); } Element currentUpgradeDomainElement = XmlUtility.getElementByTagNameNS(upgradeStatusElement, "http://schemas.microsoft.com/windowsazure", "CurrentUpgradeDomain"); if (currentUpgradeDomainElement != null) { int currentUpgradeDomainInstance; currentUpgradeDomainInstance = DatatypeConverter .parseInt(currentUpgradeDomainElement.getTextContent()); upgradeStatusInstance.setCurrentUpgradeDomain(currentUpgradeDomainInstance); } } Element upgradeDomainCountElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "UpgradeDomainCount"); if (upgradeDomainCountElement != null) { int upgradeDomainCountInstance; upgradeDomainCountInstance = DatatypeConverter .parseInt(upgradeDomainCountElement.getTextContent()); result.setUpgradeDomainCount(upgradeDomainCountInstance); } Element roleListSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RoleList"); if (roleListSequenceElement != null) { for (int i13 = 0; i13 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .size(); i13 = i13 + 1) { org.w3c.dom.Element roleListElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(roleListSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .get(i13)); Role roleInstance = new Role(); result.getRoles().add(roleInstance); Element roleNameElement2 = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement2 != null) { String roleNameInstance2; roleNameInstance2 = roleNameElement2.getTextContent(); roleInstance.setRoleName(roleNameInstance2); } Element osVersionElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "OsVersion"); if (osVersionElement != null) { String osVersionInstance; osVersionInstance = osVersionElement.getTextContent(); roleInstance.setOSVersion(osVersionInstance); } Element roleTypeElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleType"); if (roleTypeElement != null) { String roleTypeInstance; roleTypeInstance = roleTypeElement.getTextContent(); roleInstance.setRoleType(roleTypeInstance); } Element configurationSetsSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSets"); if (configurationSetsSequenceElement != null) { for (int i14 = 0; i14 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(configurationSetsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSet") .size(); i14 = i14 + 1) { org.w3c.dom.Element configurationSetsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(configurationSetsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSet") .get(i14)); ConfigurationSet configurationSetInstance = new ConfigurationSet(); roleInstance.getConfigurationSets().add(configurationSetInstance); Element configurationSetTypeElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ConfigurationSetType"); if (configurationSetTypeElement != null) { String configurationSetTypeInstance; configurationSetTypeInstance = configurationSetTypeElement.getTextContent(); configurationSetInstance .setConfigurationSetType(configurationSetTypeInstance); } Element inputEndpointsSequenceElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoints"); if (inputEndpointsSequenceElement != null) { for (int i15 = 0; i15 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(inputEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoint") .size(); i15 = i15 + 1) { org.w3c.dom.Element inputEndpointsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(inputEndpointsSequenceElement, "http://schemas.microsoft.com/windowsazure", "InputEndpoint") .get(i15)); InputEndpoint inputEndpointInstance = new InputEndpoint(); configurationSetInstance.getInputEndpoints().add(inputEndpointInstance); Element loadBalancedEndpointSetNameElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancedEndpointSetName"); if (loadBalancedEndpointSetNameElement != null) { String loadBalancedEndpointSetNameInstance; loadBalancedEndpointSetNameInstance = loadBalancedEndpointSetNameElement .getTextContent(); inputEndpointInstance.setLoadBalancedEndpointSetName( loadBalancedEndpointSetNameInstance); } Element localPortElement2 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LocalPort"); if (localPortElement2 != null && localPortElement2.getTextContent() != null && !localPortElement2.getTextContent().isEmpty()) { int localPortInstance2; localPortInstance2 = DatatypeConverter .parseInt(localPortElement2.getTextContent()); inputEndpointInstance.setLocalPort(localPortInstance2); } Element nameElement7 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement7 != null) { String nameInstance7; nameInstance7 = nameElement7.getTextContent(); inputEndpointInstance.setName(nameInstance7); } Element portElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Port"); if (portElement != null && portElement.getTextContent() != null && !portElement.getTextContent().isEmpty()) { int portInstance; portInstance = DatatypeConverter .parseInt(portElement.getTextContent()); inputEndpointInstance.setPort(portInstance); } Element loadBalancerProbeElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerProbe"); if (loadBalancerProbeElement != null) { LoadBalancerProbe loadBalancerProbeInstance = new LoadBalancerProbe(); inputEndpointInstance .setLoadBalancerProbe(loadBalancerProbeInstance); Element pathElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement != null) { String pathInstance; pathInstance = pathElement.getTextContent(); loadBalancerProbeInstance.setPath(pathInstance); } Element portElement2 = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Port"); if (portElement2 != null) { int portInstance2; portInstance2 = DatatypeConverter .parseInt(portElement2.getTextContent()); loadBalancerProbeInstance.setPort(portInstance2); } Element protocolElement2 = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement2 != null && protocolElement2.getTextContent() != null && !protocolElement2.getTextContent().isEmpty()) { LoadBalancerProbeTransportProtocol protocolInstance2; protocolInstance2 = com.microsoft.windowsazure.management.compute.ComputeManagementClientImpl .parseLoadBalancerProbeTransportProtocol( protocolElement2.getTextContent()); loadBalancerProbeInstance.setProtocol(protocolInstance2); } Element intervalInSecondsElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "IntervalInSeconds"); if (intervalInSecondsElement != null && intervalInSecondsElement.getTextContent() != null && !intervalInSecondsElement.getTextContent().isEmpty()) { int intervalInSecondsInstance; intervalInSecondsInstance = DatatypeConverter .parseInt(intervalInSecondsElement.getTextContent()); loadBalancerProbeInstance .setIntervalInSeconds(intervalInSecondsInstance); } Element timeoutInSecondsElement = XmlUtility.getElementByTagNameNS( loadBalancerProbeElement, "http://schemas.microsoft.com/windowsazure", "TimeoutInSeconds"); if (timeoutInSecondsElement != null && timeoutInSecondsElement.getTextContent() != null && !timeoutInSecondsElement.getTextContent().isEmpty()) { int timeoutInSecondsInstance; timeoutInSecondsInstance = DatatypeConverter .parseInt(timeoutInSecondsElement.getTextContent()); loadBalancerProbeInstance .setTimeoutInSeconds(timeoutInSecondsInstance); } } Element protocolElement3 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement3 != null) { String protocolInstance3; protocolInstance3 = protocolElement3.getTextContent(); inputEndpointInstance.setProtocol(protocolInstance3); } Element vipElement2 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "Vip"); if (vipElement2 != null) { InetAddress vipInstance2; vipInstance2 = InetAddress.getByName(vipElement2.getTextContent()); inputEndpointInstance.setVirtualIPAddress(vipInstance2); } Element enableDirectServerReturnElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "EnableDirectServerReturn"); if (enableDirectServerReturnElement != null && enableDirectServerReturnElement.getTextContent() != null && !enableDirectServerReturnElement.getTextContent() .isEmpty()) { boolean enableDirectServerReturnInstance; enableDirectServerReturnInstance = DatatypeConverter .parseBoolean(enableDirectServerReturnElement .getTextContent().toLowerCase()); inputEndpointInstance.setEnableDirectServerReturn( enableDirectServerReturnInstance); } Element loadBalancerNameElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerName"); if (loadBalancerNameElement != null) { String loadBalancerNameInstance; loadBalancerNameInstance = loadBalancerNameElement.getTextContent(); inputEndpointInstance.setLoadBalancerName(loadBalancerNameInstance); } Element endpointAclElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "EndpointAcl"); if (endpointAclElement != null) { EndpointAcl endpointAclInstance = new EndpointAcl(); inputEndpointInstance.setEndpointAcl(endpointAclInstance); Element rulesSequenceElement = XmlUtility.getElementByTagNameNS( endpointAclElement, "http://schemas.microsoft.com/windowsazure", "Rules"); if (rulesSequenceElement != null) { for (int i16 = 0; i16 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rulesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Rule") .size(); i16 = i16 + 1) { org.w3c.dom.Element rulesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rulesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Rule") .get(i16)); AccessControlListRule ruleInstance = new AccessControlListRule(); endpointAclInstance.getRules().add(ruleInstance); Element orderElement = XmlUtility.getElementByTagNameNS( rulesElement, "http://schemas.microsoft.com/windowsazure", "Order"); if (orderElement != null && orderElement.getTextContent() != null && !orderElement.getTextContent().isEmpty()) { int orderInstance; orderInstance = DatatypeConverter .parseInt(orderElement.getTextContent()); ruleInstance.setOrder(orderInstance); } Element actionElement = XmlUtility.getElementByTagNameNS( rulesElement, "http://schemas.microsoft.com/windowsazure", "Action"); if (actionElement != null) { String actionInstance; actionInstance = actionElement.getTextContent(); ruleInstance.setAction(actionInstance); } Element remoteSubnetElement = XmlUtility .getElementByTagNameNS(rulesElement, "http://schemas.microsoft.com/windowsazure", "RemoteSubnet"); if (remoteSubnetElement != null) { String remoteSubnetInstance; remoteSubnetInstance = remoteSubnetElement .getTextContent(); ruleInstance.setRemoteSubnet(remoteSubnetInstance); } Element descriptionElement = XmlUtility .getElementByTagNameNS(rulesElement, "http://schemas.microsoft.com/windowsazure", "Description"); if (descriptionElement != null) { String descriptionInstance; descriptionInstance = descriptionElement .getTextContent(); ruleInstance.setDescription(descriptionInstance); } } } } Element idleTimeoutInMinutesElement3 = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement3 != null && idleTimeoutInMinutesElement3.getTextContent() != null && !idleTimeoutInMinutesElement3.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance3; idleTimeoutInMinutesInstance3 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement3.getTextContent()); inputEndpointInstance .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance3); } Element loadBalancerDistributionElement = XmlUtility .getElementByTagNameNS(inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancerDistribution"); if (loadBalancerDistributionElement != null) { String loadBalancerDistributionInstance; loadBalancerDistributionInstance = loadBalancerDistributionElement .getTextContent(); inputEndpointInstance.setLoadBalancerDistribution( loadBalancerDistributionInstance); } Element virtualIPNameElement = XmlUtility.getElementByTagNameNS( inputEndpointsElement, "http://schemas.microsoft.com/windowsazure", "VirtualIPName"); if (virtualIPNameElement != null) { String virtualIPNameInstance; virtualIPNameInstance = virtualIPNameElement.getTextContent(); inputEndpointInstance.setVirtualIPName(virtualIPNameInstance); } } } Element subnetNamesSequenceElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "SubnetNames"); if (subnetNamesSequenceElement != null) { for (int i17 = 0; i17 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subnetNamesSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubnetName") .size(); i17 = i17 + 1) { org.w3c.dom.Element subnetNamesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(subnetNamesSequenceElement, "http://schemas.microsoft.com/windowsazure", "SubnetName") .get(i17)); configurationSetInstance.getSubnetNames() .add(subnetNamesElement.getTextContent()); } } Element staticVirtualNetworkIPAddressElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement != null) { String staticVirtualNetworkIPAddressInstance; staticVirtualNetworkIPAddressInstance = staticVirtualNetworkIPAddressElement .getTextContent(); configurationSetInstance.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance); } Element publicIPsSequenceElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "PublicIPs"); if (publicIPsSequenceElement2 != null) { for (int i18 = 0; i18 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "PublicIP") .size(); i18 = i18 + 1) { org.w3c.dom.Element publicIPsElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicIPsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "PublicIP") .get(i18)); ConfigurationSet.PublicIP publicIPInstance2 = new ConfigurationSet.PublicIP(); configurationSetInstance.getPublicIPs().add(publicIPInstance2); Element nameElement8 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement8 != null) { String nameInstance8; nameInstance8 = nameElement8.getTextContent(); publicIPInstance2.setName(nameInstance8); } Element idleTimeoutInMinutesElement4 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "IdleTimeoutInMinutes"); if (idleTimeoutInMinutesElement4 != null && idleTimeoutInMinutesElement4.getTextContent() != null && !idleTimeoutInMinutesElement4.getTextContent().isEmpty()) { int idleTimeoutInMinutesInstance4; idleTimeoutInMinutesInstance4 = DatatypeConverter .parseInt(idleTimeoutInMinutesElement4.getTextContent()); publicIPInstance2 .setIdleTimeoutInMinutes(idleTimeoutInMinutesInstance4); } Element domainNameLabelElement2 = XmlUtility.getElementByTagNameNS( publicIPsElement2, "http://schemas.microsoft.com/windowsazure", "DomainNameLabel"); if (domainNameLabelElement2 != null) { String domainNameLabelInstance2; domainNameLabelInstance2 = domainNameLabelElement2.getTextContent(); publicIPInstance2.setDomainNameLabel(domainNameLabelInstance2); } } } Element networkInterfacesSequenceElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "NetworkInterfaces"); if (networkInterfacesSequenceElement2 != null) { for (int i19 = 0; i19 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement2, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .size(); i19 = i19 + 1) { org.w3c.dom.Element networkInterfacesElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(networkInterfacesSequenceElement2, "http://schemas.microsoft.com/windowsazure", "NetworkInterface") .get(i19)); NetworkInterface networkInterfaceInstance2 = new NetworkInterface(); configurationSetInstance.getNetworkInterfaces() .add(networkInterfaceInstance2); Element nameElement9 = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement9 != null) { String nameInstance9; nameInstance9 = nameElement9.getTextContent(); networkInterfaceInstance2.setName(nameInstance9); } Element iPConfigurationsSequenceElement2 = XmlUtility .getElementByTagNameNS(networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "IPConfigurations"); if (iPConfigurationsSequenceElement2 != null) { for (int i20 = 0; i20 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(iPConfigurationsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .size(); i20 = i20 + 1) { org.w3c.dom.Element iPConfigurationsElement2 = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( iPConfigurationsSequenceElement2, "http://schemas.microsoft.com/windowsazure", "IPConfiguration") .get(i20)); IPConfiguration iPConfigurationInstance2 = new IPConfiguration(); networkInterfaceInstance2.getIPConfigurations() .add(iPConfigurationInstance2); Element subnetNameElement2 = XmlUtility.getElementByTagNameNS( iPConfigurationsElement2, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement2 != null) { String subnetNameInstance2; subnetNameInstance2 = subnetNameElement2.getTextContent(); iPConfigurationInstance2.setSubnetName(subnetNameInstance2); } Element staticVirtualNetworkIPAddressElement2 = XmlUtility .getElementByTagNameNS(iPConfigurationsElement2, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement2 != null) { String staticVirtualNetworkIPAddressInstance2; staticVirtualNetworkIPAddressInstance2 = staticVirtualNetworkIPAddressElement2 .getTextContent(); iPConfigurationInstance2.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance2); } } } Element networkSecurityGroupElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "NetworkSecurityGroup"); if (networkSecurityGroupElement != null) { String networkSecurityGroupInstance; networkSecurityGroupInstance = networkSecurityGroupElement .getTextContent(); networkInterfaceInstance2 .setNetworkSecurityGroup(networkSecurityGroupInstance); } Element iPForwardingElement = XmlUtility.getElementByTagNameNS( networkInterfacesElement2, "http://schemas.microsoft.com/windowsazure", "IPForwarding"); if (iPForwardingElement != null) { String iPForwardingInstance; iPForwardingInstance = iPForwardingElement.getTextContent(); networkInterfaceInstance2.setIPForwarding(iPForwardingInstance); } } } Element networkSecurityGroupElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "NetworkSecurityGroup"); if (networkSecurityGroupElement2 != null) { String networkSecurityGroupInstance2; networkSecurityGroupInstance2 = networkSecurityGroupElement2 .getTextContent(); configurationSetInstance .setNetworkSecurityGroup(networkSecurityGroupInstance2); } Element iPForwardingElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "IPForwarding"); if (iPForwardingElement2 != null) { String iPForwardingInstance2; iPForwardingInstance2 = iPForwardingElement2.getTextContent(); configurationSetInstance.setIPForwarding(iPForwardingInstance2); } Element computerNameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ComputerName"); if (computerNameElement != null) { String computerNameInstance; computerNameInstance = computerNameElement.getTextContent(); configurationSetInstance.setComputerName(computerNameInstance); } Element adminPasswordElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdminPassword"); if (adminPasswordElement != null) { String adminPasswordInstance; adminPasswordInstance = adminPasswordElement.getTextContent(); configurationSetInstance.setAdminPassword(adminPasswordInstance); } Element resetPasswordOnFirstLogonElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "ResetPasswordOnFirstLogon"); if (resetPasswordOnFirstLogonElement != null && resetPasswordOnFirstLogonElement.getTextContent() != null && !resetPasswordOnFirstLogonElement.getTextContent().isEmpty()) { boolean resetPasswordOnFirstLogonInstance; resetPasswordOnFirstLogonInstance = DatatypeConverter.parseBoolean( resetPasswordOnFirstLogonElement.getTextContent().toLowerCase()); configurationSetInstance .setResetPasswordOnFirstLogon(resetPasswordOnFirstLogonInstance); } Element enableAutomaticUpdatesElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "EnableAutomaticUpdates"); if (enableAutomaticUpdatesElement != null && enableAutomaticUpdatesElement.getTextContent() != null && !enableAutomaticUpdatesElement.getTextContent().isEmpty()) { boolean enableAutomaticUpdatesInstance; enableAutomaticUpdatesInstance = DatatypeConverter.parseBoolean( enableAutomaticUpdatesElement.getTextContent().toLowerCase()); configurationSetInstance .setEnableAutomaticUpdates(enableAutomaticUpdatesInstance); } Element timeZoneElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "TimeZone"); if (timeZoneElement != null) { String timeZoneInstance; timeZoneInstance = timeZoneElement.getTextContent(); configurationSetInstance.setTimeZone(timeZoneInstance); } Element domainJoinElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "DomainJoin"); if (domainJoinElement != null) { DomainJoinSettings domainJoinInstance = new DomainJoinSettings(); configurationSetInstance.setDomainJoin(domainJoinInstance); Element credentialsElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "Credentials"); if (credentialsElement != null) { DomainJoinCredentials credentialsInstance = new DomainJoinCredentials(); domainJoinInstance.setCredentials(credentialsInstance); Element domainElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Domain"); if (domainElement != null) { String domainInstance; domainInstance = domainElement.getTextContent(); credentialsInstance.setDomain(domainInstance); } Element usernameElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Username"); if (usernameElement != null) { String usernameInstance; usernameInstance = usernameElement.getTextContent(); credentialsInstance.setUserName(usernameInstance); } Element passwordElement = XmlUtility.getElementByTagNameNS( credentialsElement, "http://schemas.microsoft.com/windowsazure", "Password"); if (passwordElement != null) { String passwordInstance; passwordInstance = passwordElement.getTextContent(); credentialsInstance.setPassword(passwordInstance); } } Element joinDomainElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "JoinDomain"); if (joinDomainElement != null) { String joinDomainInstance; joinDomainInstance = joinDomainElement.getTextContent(); domainJoinInstance.setDomainToJoin(joinDomainInstance); } Element machineObjectOUElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "MachineObjectOU"); if (machineObjectOUElement != null) { String machineObjectOUInstance; machineObjectOUInstance = machineObjectOUElement.getTextContent(); domainJoinInstance.setLdapMachineObjectOU(machineObjectOUInstance); } Element provisioningElement = XmlUtility.getElementByTagNameNS( domainJoinElement, "http://schemas.microsoft.com/windowsazure", "Provisioning"); if (provisioningElement != null) { DomainJoinProvisioning provisioningInstance = new DomainJoinProvisioning(); domainJoinInstance.setProvisioning(provisioningInstance); Element accountDataElement = XmlUtility.getElementByTagNameNS( provisioningElement, "http://schemas.microsoft.com/windowsazure", "AccountData"); if (accountDataElement != null) { String accountDataInstance; accountDataInstance = accountDataElement.getTextContent(); provisioningInstance.setAccountData(accountDataInstance); } } } Element storedCertificateSettingsSequenceElement = XmlUtility .getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "StoredCertificateSettings"); if (storedCertificateSettingsSequenceElement != null) { for (int i21 = 0; i21 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(storedCertificateSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "CertificateSetting") .size(); i21 = i21 + 1) { org.w3c.dom.Element storedCertificateSettingsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( storedCertificateSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "CertificateSetting") .get(i21)); StoredCertificateSettings certificateSettingInstance = new StoredCertificateSettings(); configurationSetInstance.getStoredCertificateSettings() .add(certificateSettingInstance); Element storeLocationElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "StoreLocation"); if (storeLocationElement != null) { } Element storeNameElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "StoreName"); if (storeNameElement != null) { String storeNameInstance; storeNameInstance = storeNameElement.getTextContent(); certificateSettingInstance.setStoreName(storeNameInstance); } Element thumbprintElement = XmlUtility.getElementByTagNameNS( storedCertificateSettingsElement, "http://schemas.microsoft.com/windowsazure", "Thumbprint"); if (thumbprintElement != null) { String thumbprintInstance; thumbprintInstance = thumbprintElement.getTextContent(); certificateSettingInstance.setThumbprint(thumbprintInstance); } } } Element winRMElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "WinRM"); if (winRMElement != null) { WindowsRemoteManagementSettings winRMInstance = new WindowsRemoteManagementSettings(); configurationSetInstance.setWindowsRemoteManagement(winRMInstance); Element listenersSequenceElement = XmlUtility.getElementByTagNameNS( winRMElement, "http://schemas.microsoft.com/windowsazure", "Listeners"); if (listenersSequenceElement != null) { for (int i22 = 0; i22 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(listenersSequenceElement, "http://schemas.microsoft.com/windowsazure", "Listener") .size(); i22 = i22 + 1) { org.w3c.dom.Element listenersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(listenersSequenceElement, "http://schemas.microsoft.com/windowsazure", "Listener") .get(i22)); WindowsRemoteManagementListener listenerInstance = new WindowsRemoteManagementListener(); winRMInstance.getListeners().add(listenerInstance); Element protocolElement4 = XmlUtility.getElementByTagNameNS( listenersElement, "http://schemas.microsoft.com/windowsazure", "Protocol"); if (protocolElement4 != null && protocolElement4.getTextContent() != null && !protocolElement4.getTextContent().isEmpty()) { VirtualMachineWindowsRemoteManagementListenerType protocolInstance4; protocolInstance4 = VirtualMachineWindowsRemoteManagementListenerType .valueOf(protocolElement4.getTextContent()); listenerInstance.setListenerType(protocolInstance4); } Element certificateThumbprintElement = XmlUtility .getElementByTagNameNS(listenersElement, "http://schemas.microsoft.com/windowsazure", "CertificateThumbprint"); if (certificateThumbprintElement != null) { String certificateThumbprintInstance; certificateThumbprintInstance = certificateThumbprintElement .getTextContent(); listenerInstance.setCertificateThumbprint( certificateThumbprintInstance); } } } } Element adminUsernameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdminUsername"); if (adminUsernameElement != null) { String adminUsernameInstance; adminUsernameInstance = adminUsernameElement.getTextContent(); configurationSetInstance.setAdminUserName(adminUsernameInstance); } Element additionalUnattendContentElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "AdditionalUnattendContent"); if (additionalUnattendContentElement != null) { AdditionalUnattendContentSettings additionalUnattendContentInstance = new AdditionalUnattendContentSettings(); configurationSetInstance .setAdditionalUnattendContent(additionalUnattendContentInstance); Element passesSequenceElement = XmlUtility.getElementByTagNameNS( additionalUnattendContentElement, "http://schemas.microsoft.com/windowsazure", "Passes"); if (passesSequenceElement != null) { for (int i23 = 0; i23 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(passesSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendPass") .size(); i23 = i23 + 1) { org.w3c.dom.Element passesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(passesSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendPass") .get(i23)); UnattendPassSettings unattendPassInstance = new UnattendPassSettings(); additionalUnattendContentInstance.getUnattendPasses() .add(unattendPassInstance); Element passNameElement = XmlUtility.getElementByTagNameNS( passesElement, "http://schemas.microsoft.com/windowsazure", "PassName"); if (passNameElement != null) { String passNameInstance; passNameInstance = passNameElement.getTextContent(); unattendPassInstance.setPassName(passNameInstance); } Element componentsSequenceElement = XmlUtility .getElementByTagNameNS(passesElement, "http://schemas.microsoft.com/windowsazure", "Components"); if (componentsSequenceElement != null) { for (int i24 = 0; i24 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(componentsSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendComponent") .size(); i24 = i24 + 1) { org.w3c.dom.Element componentsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(componentsSequenceElement, "http://schemas.microsoft.com/windowsazure", "UnattendComponent") .get(i24)); UnattendComponent unattendComponentInstance = new UnattendComponent(); unattendPassInstance.getUnattendComponents() .add(unattendComponentInstance); Element componentNameElement = XmlUtility .getElementByTagNameNS(componentsElement, "http://schemas.microsoft.com/windowsazure", "ComponentName"); if (componentNameElement != null) { String componentNameInstance; componentNameInstance = componentNameElement .getTextContent(); unattendComponentInstance .setComponentName(componentNameInstance); } Element componentSettingsSequenceElement = XmlUtility .getElementByTagNameNS(componentsElement, "http://schemas.microsoft.com/windowsazure", "ComponentSettings"); if (componentSettingsSequenceElement != null) { for (int i25 = 0; i25 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( componentSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ComponentSetting") .size(); i25 = i25 + 1) { org.w3c.dom.Element componentSettingsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( componentSettingsSequenceElement, "http://schemas.microsoft.com/windowsazure", "ComponentSetting") .get(i25)); ComponentSetting componentSettingInstance = new ComponentSetting(); unattendComponentInstance .getUnattendComponentSettings() .add(componentSettingInstance); Element settingNameElement = XmlUtility .getElementByTagNameNS( componentSettingsElement, "http://schemas.microsoft.com/windowsazure", "SettingName"); if (settingNameElement != null) { String settingNameInstance; settingNameInstance = settingNameElement .getTextContent(); componentSettingInstance .setSettingName(settingNameInstance); } Element contentElement = XmlUtility .getElementByTagNameNS( componentSettingsElement, "http://schemas.microsoft.com/windowsazure", "Content"); if (contentElement != null) { String contentInstance; contentInstance = contentElement .getTextContent() != null ? new String( Base64.decode(contentElement .getTextContent())) : null; componentSettingInstance .setContent(contentInstance); } } } } } } } } Element hostNameElement2 = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "HostName"); if (hostNameElement2 != null) { String hostNameInstance2; hostNameInstance2 = hostNameElement2.getTextContent(); configurationSetInstance.setHostName(hostNameInstance2); } Element userNameElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "UserName"); if (userNameElement != null) { String userNameInstance; userNameInstance = userNameElement.getTextContent(); configurationSetInstance.setUserName(userNameInstance); } Element userPasswordElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "UserPassword"); if (userPasswordElement != null) { String userPasswordInstance; userPasswordInstance = userPasswordElement.getTextContent(); configurationSetInstance.setUserPassword(userPasswordInstance); } Element disableSshPasswordAuthenticationElement = XmlUtility .getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "DisableSshPasswordAuthentication"); if (disableSshPasswordAuthenticationElement != null && disableSshPasswordAuthenticationElement.getTextContent() != null && !disableSshPasswordAuthenticationElement.getTextContent() .isEmpty()) { boolean disableSshPasswordAuthenticationInstance; disableSshPasswordAuthenticationInstance = DatatypeConverter .parseBoolean(disableSshPasswordAuthenticationElement .getTextContent().toLowerCase()); configurationSetInstance.setDisableSshPasswordAuthentication( disableSshPasswordAuthenticationInstance); } Element sSHElement = XmlUtility.getElementByTagNameNS(configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "SSH"); if (sSHElement != null) { SshSettings sSHInstance = new SshSettings(); configurationSetInstance.setSshSettings(sSHInstance); Element publicKeysSequenceElement = XmlUtility.getElementByTagNameNS( sSHElement, "http://schemas.microsoft.com/windowsazure", "PublicKeys"); if (publicKeysSequenceElement != null) { for (int i26 = 0; i26 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicKeysSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicKey") .size(); i26 = i26 + 1) { org.w3c.dom.Element publicKeysElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(publicKeysSequenceElement, "http://schemas.microsoft.com/windowsazure", "PublicKey") .get(i26)); SshSettingPublicKey publicKeyInstance = new SshSettingPublicKey(); sSHInstance.getPublicKeys().add(publicKeyInstance); Element fingerprintElement = XmlUtility.getElementByTagNameNS( publicKeysElement, "http://schemas.microsoft.com/windowsazure", "Fingerprint"); if (fingerprintElement != null) { String fingerprintInstance; fingerprintInstance = fingerprintElement.getTextContent(); publicKeyInstance.setFingerprint(fingerprintInstance); } Element pathElement2 = XmlUtility.getElementByTagNameNS( publicKeysElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement2 != null) { String pathInstance2; pathInstance2 = pathElement2.getTextContent(); publicKeyInstance.setPath(pathInstance2); } } } Element keyPairsSequenceElement = XmlUtility.getElementByTagNameNS( sSHElement, "http://schemas.microsoft.com/windowsazure", "KeyPairs"); if (keyPairsSequenceElement != null) { for (int i27 = 0; i27 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(keyPairsSequenceElement, "http://schemas.microsoft.com/windowsazure", "KeyPair") .size(); i27 = i27 + 1) { org.w3c.dom.Element keyPairsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(keyPairsSequenceElement, "http://schemas.microsoft.com/windowsazure", "KeyPair") .get(i27)); SshSettingKeyPair keyPairInstance = new SshSettingKeyPair(); sSHInstance.getKeyPairs().add(keyPairInstance); Element fingerprintElement2 = XmlUtility.getElementByTagNameNS( keyPairsElement, "http://schemas.microsoft.com/windowsazure", "Fingerprint"); if (fingerprintElement2 != null) { String fingerprintInstance2; fingerprintInstance2 = fingerprintElement2.getTextContent(); keyPairInstance.setFingerprint(fingerprintInstance2); } Element pathElement3 = XmlUtility.getElementByTagNameNS( keyPairsElement, "http://schemas.microsoft.com/windowsazure", "Path"); if (pathElement3 != null) { String pathInstance3; pathInstance3 = pathElement3.getTextContent(); keyPairInstance.setPath(pathInstance3); } } } } Element customDataElement = XmlUtility.getElementByTagNameNS( configurationSetsElement, "http://schemas.microsoft.com/windowsazure", "CustomData"); if (customDataElement != null) { String customDataInstance; customDataInstance = customDataElement.getTextContent(); configurationSetInstance.setCustomData(customDataInstance); } } } Element resourceExtensionReferencesSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReferences"); if (resourceExtensionReferencesSequenceElement != null) { for (int i28 = 0; i28 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionReferencesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReference") .size(); i28 = i28 + 1) { org.w3c.dom.Element resourceExtensionReferencesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(resourceExtensionReferencesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionReference") .get(i28)); ResourceExtensionReference resourceExtensionReferenceInstance = new ResourceExtensionReference(); roleInstance.getResourceExtensionReferences() .add(resourceExtensionReferenceInstance); Element referenceNameElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ReferenceName"); if (referenceNameElement != null) { String referenceNameInstance; referenceNameInstance = referenceNameElement.getTextContent(); resourceExtensionReferenceInstance.setReferenceName(referenceNameInstance); } Element publisherElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Publisher"); if (publisherElement != null) { String publisherInstance; publisherInstance = publisherElement.getTextContent(); resourceExtensionReferenceInstance.setPublisher(publisherInstance); } Element nameElement10 = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement10 != null) { String nameInstance10; nameInstance10 = nameElement10.getTextContent(); resourceExtensionReferenceInstance.setName(nameInstance10); } Element versionElement2 = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "Version"); if (versionElement2 != null) { String versionInstance2; versionInstance2 = versionElement2.getTextContent(); resourceExtensionReferenceInstance.setVersion(versionInstance2); } Element resourceExtensionParameterValuesSequenceElement = XmlUtility .getElementByTagNameNS(resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValues"); if (resourceExtensionParameterValuesSequenceElement != null) { for (int i29 = 0; i29 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( resourceExtensionParameterValuesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValue") .size(); i29 = i29 + 1) { org.w3c.dom.Element resourceExtensionParameterValuesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS( resourceExtensionParameterValuesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ResourceExtensionParameterValue") .get(i29)); ResourceExtensionParameterValue resourceExtensionParameterValueInstance = new ResourceExtensionParameterValue(); resourceExtensionReferenceInstance.getResourceExtensionParameterValues() .add(resourceExtensionParameterValueInstance); Element keyElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Key"); if (keyElement != null) { String keyInstance; keyInstance = keyElement.getTextContent(); resourceExtensionParameterValueInstance.setKey(keyInstance); } Element valueElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Value"); if (valueElement != null) { String valueInstance; valueInstance = valueElement.getTextContent() != null ? new String(Base64.decode(valueElement.getTextContent())) : null; resourceExtensionParameterValueInstance.setValue(valueInstance); } Element typeElement = XmlUtility.getElementByTagNameNS( resourceExtensionParameterValuesElement, "http://schemas.microsoft.com/windowsazure", "Type"); if (typeElement != null) { String typeInstance; typeInstance = typeElement.getTextContent(); resourceExtensionParameterValueInstance.setType(typeInstance); } } } Element stateElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "State"); if (stateElement != null) { String stateInstance; stateInstance = stateElement.getTextContent(); resourceExtensionReferenceInstance.setState(stateInstance); } Element forceUpdateElement = XmlUtility.getElementByTagNameNS( resourceExtensionReferencesElement, "http://schemas.microsoft.com/windowsazure", "ForceUpdate"); if (forceUpdateElement != null && forceUpdateElement.getTextContent() != null && !forceUpdateElement.getTextContent().isEmpty()) { boolean forceUpdateInstance; forceUpdateInstance = DatatypeConverter .parseBoolean(forceUpdateElement.getTextContent().toLowerCase()); resourceExtensionReferenceInstance.setForceUpdate(forceUpdateInstance); } } } Element vMImageNameElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "VMImageName"); if (vMImageNameElement != null) { String vMImageNameInstance; vMImageNameInstance = vMImageNameElement.getTextContent(); roleInstance.setVMImageName(vMImageNameInstance); } Element mediaLocationElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "MediaLocation"); if (mediaLocationElement != null) { URI mediaLocationInstance; mediaLocationInstance = new URI(mediaLocationElement.getTextContent()); roleInstance.setMediaLocation(mediaLocationInstance); } Element availabilitySetNameElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "AvailabilitySetName"); if (availabilitySetNameElement != null) { String availabilitySetNameInstance; availabilitySetNameInstance = availabilitySetNameElement.getTextContent(); roleInstance.setAvailabilitySetName(availabilitySetNameInstance); } Element dataVirtualHardDisksSequenceElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisks"); if (dataVirtualHardDisksSequenceElement != null) { for (int i30 = 0; i30 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataVirtualHardDisksSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisk") .size(); i30 = i30 + 1) { org.w3c.dom.Element dataVirtualHardDisksElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataVirtualHardDisksSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataVirtualHardDisk") .get(i30)); DataVirtualHardDisk dataVirtualHardDiskInstance = new DataVirtualHardDisk(); roleInstance.getDataVirtualHardDisks().add(dataVirtualHardDiskInstance); Element hostCachingElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "HostCaching"); if (hostCachingElement != null) { String hostCachingInstance; hostCachingInstance = hostCachingElement.getTextContent(); dataVirtualHardDiskInstance.setHostCaching(hostCachingInstance); } Element diskLabelElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "DiskLabel"); if (diskLabelElement != null) { String diskLabelInstance; diskLabelInstance = diskLabelElement.getTextContent(); dataVirtualHardDiskInstance.setLabel(diskLabelInstance); } Element diskNameElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "DiskName"); if (diskNameElement != null) { String diskNameInstance; diskNameInstance = diskNameElement.getTextContent(); dataVirtualHardDiskInstance.setName(diskNameInstance); } Element lunElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "Lun"); if (lunElement != null && lunElement.getTextContent() != null && !lunElement.getTextContent().isEmpty()) { int lunInstance; lunInstance = DatatypeConverter.parseInt(lunElement.getTextContent()); dataVirtualHardDiskInstance.setLogicalUnitNumber(lunInstance); } Element logicalDiskSizeInGBElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "LogicalDiskSizeInGB"); if (logicalDiskSizeInGBElement != null && logicalDiskSizeInGBElement.getTextContent() != null && !logicalDiskSizeInGBElement.getTextContent().isEmpty()) { int logicalDiskSizeInGBInstance; logicalDiskSizeInGBInstance = DatatypeConverter .parseInt(logicalDiskSizeInGBElement.getTextContent()); dataVirtualHardDiskInstance .setLogicalDiskSizeInGB(logicalDiskSizeInGBInstance); } Element mediaLinkElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "MediaLink"); if (mediaLinkElement != null) { URI mediaLinkInstance; mediaLinkInstance = new URI(mediaLinkElement.getTextContent()); dataVirtualHardDiskInstance.setMediaLink(mediaLinkInstance); } Element sourceMediaLinkElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "SourceMediaLink"); if (sourceMediaLinkElement != null) { URI sourceMediaLinkInstance; sourceMediaLinkInstance = new URI(sourceMediaLinkElement.getTextContent()); dataVirtualHardDiskInstance.setSourceMediaLink(sourceMediaLinkInstance); } Element iOTypeElement = XmlUtility.getElementByTagNameNS( dataVirtualHardDisksElement, "http://schemas.microsoft.com/windowsazure", "IOType"); if (iOTypeElement != null) { String iOTypeInstance; iOTypeInstance = iOTypeElement.getTextContent(); dataVirtualHardDiskInstance.setIOType(iOTypeInstance); } } } Element labelElement2 = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "Label"); if (labelElement2 != null) { String labelInstance2; labelInstance2 = labelElement2.getTextContent(); roleInstance.setLabel(labelInstance2); } Element oSVirtualHardDiskElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "OSVirtualHardDisk"); if (oSVirtualHardDiskElement != null) { OSVirtualHardDisk oSVirtualHardDiskInstance = new OSVirtualHardDisk(); roleInstance.setOSVirtualHardDisk(oSVirtualHardDiskInstance); Element hostCachingElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "HostCaching"); if (hostCachingElement2 != null) { String hostCachingInstance2; hostCachingInstance2 = hostCachingElement2.getTextContent(); oSVirtualHardDiskInstance.setHostCaching(hostCachingInstance2); } Element diskLabelElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "DiskLabel"); if (diskLabelElement2 != null) { String diskLabelInstance2; diskLabelInstance2 = diskLabelElement2.getTextContent(); oSVirtualHardDiskInstance.setLabel(diskLabelInstance2); } Element diskNameElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "DiskName"); if (diskNameElement2 != null) { String diskNameInstance2; diskNameInstance2 = diskNameElement2.getTextContent(); oSVirtualHardDiskInstance.setName(diskNameInstance2); } Element mediaLinkElement2 = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "MediaLink"); if (mediaLinkElement2 != null) { URI mediaLinkInstance2; mediaLinkInstance2 = new URI(mediaLinkElement2.getTextContent()); oSVirtualHardDiskInstance.setMediaLink(mediaLinkInstance2); } Element sourceImageNameElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "SourceImageName"); if (sourceImageNameElement != null) { String sourceImageNameInstance; sourceImageNameInstance = sourceImageNameElement.getTextContent(); oSVirtualHardDiskInstance.setSourceImageName(sourceImageNameInstance); } Element osElement = XmlUtility.getElementByTagNameNS(oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "OS"); if (osElement != null) { String osInstance; osInstance = osElement.getTextContent(); oSVirtualHardDiskInstance.setOperatingSystem(osInstance); } Element remoteSourceImageLinkElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "RemoteSourceImageLink"); if (remoteSourceImageLinkElement != null) { URI remoteSourceImageLinkInstance; remoteSourceImageLinkInstance = new URI( remoteSourceImageLinkElement.getTextContent()); oSVirtualHardDiskInstance .setRemoteSourceImageLink(remoteSourceImageLinkInstance); } Element iOTypeElement2 = XmlUtility.getElementByTagNameNS(oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "IOType"); if (iOTypeElement2 != null) { String iOTypeInstance2; iOTypeInstance2 = iOTypeElement2.getTextContent(); oSVirtualHardDiskInstance.setIOType(iOTypeInstance2); } Element resizedSizeInGBElement = XmlUtility.getElementByTagNameNS( oSVirtualHardDiskElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement != null && resizedSizeInGBElement.getTextContent() != null && !resizedSizeInGBElement.getTextContent().isEmpty()) { int resizedSizeInGBInstance; resizedSizeInGBInstance = DatatypeConverter .parseInt(resizedSizeInGBElement.getTextContent()); oSVirtualHardDiskInstance.setResizedSizeInGB(resizedSizeInGBInstance); } } Element roleSizeElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "RoleSize"); if (roleSizeElement != null) { String roleSizeInstance; roleSizeInstance = roleSizeElement.getTextContent(); roleInstance.setRoleSize(roleSizeInstance); } Element defaultWinRmCertificateThumbprintElement = XmlUtility.getElementByTagNameNS( roleListElement, "http://schemas.microsoft.com/windowsazure", "DefaultWinRmCertificateThumbprint"); if (defaultWinRmCertificateThumbprintElement != null) { String defaultWinRmCertificateThumbprintInstance; defaultWinRmCertificateThumbprintInstance = defaultWinRmCertificateThumbprintElement .getTextContent(); roleInstance.setDefaultWinRmCertificateThumbprint( defaultWinRmCertificateThumbprintInstance); } Element provisionGuestAgentElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "ProvisionGuestAgent"); if (provisionGuestAgentElement != null && provisionGuestAgentElement.getTextContent() != null && !provisionGuestAgentElement.getTextContent().isEmpty()) { boolean provisionGuestAgentInstance; provisionGuestAgentInstance = DatatypeConverter .parseBoolean(provisionGuestAgentElement.getTextContent().toLowerCase()); roleInstance.setProvisionGuestAgent(provisionGuestAgentInstance); } Element vMImageInputElement = XmlUtility.getElementByTagNameNS(roleListElement, "http://schemas.microsoft.com/windowsazure", "VMImageInput"); if (vMImageInputElement != null) { VMImageInput vMImageInputInstance = new VMImageInput(); roleInstance.setVMImageInput(vMImageInputInstance); Element oSDiskConfigurationElement = XmlUtility.getElementByTagNameNS( vMImageInputElement, "http://schemas.microsoft.com/windowsazure", "OSDiskConfiguration"); if (oSDiskConfigurationElement != null) { OSDiskConfiguration oSDiskConfigurationInstance = new OSDiskConfiguration(); vMImageInputInstance.setOSDiskConfiguration(oSDiskConfigurationInstance); Element resizedSizeInGBElement2 = XmlUtility.getElementByTagNameNS( oSDiskConfigurationElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement2 != null && resizedSizeInGBElement2.getTextContent() != null && !resizedSizeInGBElement2.getTextContent().isEmpty()) { int resizedSizeInGBInstance2; resizedSizeInGBInstance2 = DatatypeConverter .parseInt(resizedSizeInGBElement2.getTextContent()); oSDiskConfigurationInstance.setResizedSizeInGB(resizedSizeInGBInstance2); } } Element dataDiskConfigurationsSequenceElement = XmlUtility.getElementByTagNameNS( vMImageInputElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfigurations"); if (dataDiskConfigurationsSequenceElement != null) { for (int i31 = 0; i31 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataDiskConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfiguration") .size(); i31 = i31 + 1) { org.w3c.dom.Element dataDiskConfigurationsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dataDiskConfigurationsSequenceElement, "http://schemas.microsoft.com/windowsazure", "DataDiskConfiguration") .get(i31)); DataDiskConfiguration dataDiskConfigurationInstance = new DataDiskConfiguration(); vMImageInputInstance.getDataDiskConfigurations() .add(dataDiskConfigurationInstance); Element nameElement11 = XmlUtility.getElementByTagNameNS( dataDiskConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement11 != null) { String nameInstance11; nameInstance11 = nameElement11.getTextContent(); dataDiskConfigurationInstance.setDiskName(nameInstance11); } Element resizedSizeInGBElement3 = XmlUtility.getElementByTagNameNS( dataDiskConfigurationsElement, "http://schemas.microsoft.com/windowsazure", "ResizedSizeInGB"); if (resizedSizeInGBElement3 != null && resizedSizeInGBElement3.getTextContent() != null && !resizedSizeInGBElement3.getTextContent().isEmpty()) { int resizedSizeInGBInstance3; resizedSizeInGBInstance3 = DatatypeConverter .parseInt(resizedSizeInGBElement3.getTextContent()); dataDiskConfigurationInstance .setResizedSizeInGB(resizedSizeInGBInstance3); } } } } } } Element sdkVersionElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "SdkVersion"); if (sdkVersionElement != null) { String sdkVersionInstance; sdkVersionInstance = sdkVersionElement.getTextContent(); result.setSdkVersion(sdkVersionInstance); } Element lockedElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Locked"); if (lockedElement != null && lockedElement.getTextContent() != null && !lockedElement.getTextContent().isEmpty()) { boolean lockedInstance; lockedInstance = DatatypeConverter .parseBoolean(lockedElement.getTextContent().toLowerCase()); result.setLocked(lockedInstance); } Element rollbackAllowedElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "RollbackAllowed"); if (rollbackAllowedElement != null && rollbackAllowedElement.getTextContent() != null && !rollbackAllowedElement.getTextContent().isEmpty()) { boolean rollbackAllowedInstance; rollbackAllowedInstance = DatatypeConverter .parseBoolean(rollbackAllowedElement.getTextContent().toLowerCase()); result.setRollbackAllowed(rollbackAllowedInstance); } Element virtualNetworkNameElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "VirtualNetworkName"); if (virtualNetworkNameElement != null) { String virtualNetworkNameInstance; virtualNetworkNameInstance = virtualNetworkNameElement.getTextContent(); result.setVirtualNetworkName(virtualNetworkNameInstance); } Element createdTimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "CreatedTime"); if (createdTimeElement != null) { Calendar createdTimeInstance; createdTimeInstance = DatatypeConverter.parseDateTime(createdTimeElement.getTextContent()); result.setCreatedTime(createdTimeInstance); } Element lastModifiedTimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "LastModifiedTime"); if (lastModifiedTimeElement != null) { Calendar lastModifiedTimeInstance; lastModifiedTimeInstance = DatatypeConverter .parseDateTime(lastModifiedTimeElement.getTextContent()); result.setLastModifiedTime(lastModifiedTimeInstance); } Element extendedPropertiesSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperties"); if (extendedPropertiesSequenceElement != null) { for (int i32 = 0; i32 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extendedPropertiesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperty") .size(); i32 = i32 + 1) { org.w3c.dom.Element extendedPropertiesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extendedPropertiesSequenceElement, "http://schemas.microsoft.com/windowsazure", "ExtendedProperty") .get(i32)); String extendedPropertiesKey = XmlUtility .getElementByTagNameNS(extendedPropertiesElement, "http://schemas.microsoft.com/windowsazure", "Name") .getTextContent(); String extendedPropertiesValue = XmlUtility .getElementByTagNameNS(extendedPropertiesElement, "http://schemas.microsoft.com/windowsazure", "Value") .getTextContent(); result.getExtendedProperties().put(extendedPropertiesKey, extendedPropertiesValue); } } Element dnsElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "Dns"); if (dnsElement != null) { DnsSettings dnsInstance = new DnsSettings(); result.setDnsSettings(dnsInstance); Element dnsServersSequenceElement = XmlUtility.getElementByTagNameNS(dnsElement, "http://schemas.microsoft.com/windowsazure", "DnsServers"); if (dnsServersSequenceElement != null) { for (int i33 = 0; i33 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dnsServersSequenceElement, "http://schemas.microsoft.com/windowsazure", "DnsServer") .size(); i33 = i33 + 1) { org.w3c.dom.Element dnsServersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(dnsServersSequenceElement, "http://schemas.microsoft.com/windowsazure", "DnsServer") .get(i33)); DnsServer dnsServerInstance = new DnsServer(); dnsInstance.getDnsServers().add(dnsServerInstance); Element nameElement12 = XmlUtility.getElementByTagNameNS(dnsServersElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement12 != null) { String nameInstance12; nameInstance12 = nameElement12.getTextContent(); dnsServerInstance.setName(nameInstance12); } Element addressElement3 = XmlUtility.getElementByTagNameNS(dnsServersElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement3 != null) { InetAddress addressInstance3; addressInstance3 = InetAddress.getByName(addressElement3.getTextContent()); dnsServerInstance.setAddress(addressInstance3); } } } } Element persistentVMDowntimeElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "PersistentVMDowntime"); if (persistentVMDowntimeElement != null) { PersistentVMDowntime persistentVMDowntimeInstance = new PersistentVMDowntime(); result.setPersistentVMDowntime(persistentVMDowntimeInstance); Element startTimeElement = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "StartTime"); if (startTimeElement != null) { Calendar startTimeInstance; startTimeInstance = DatatypeConverter.parseDateTime(startTimeElement.getTextContent()); persistentVMDowntimeInstance.setStartTime(startTimeInstance); } Element endTimeElement = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "EndTime"); if (endTimeElement != null) { Calendar endTimeInstance; endTimeInstance = DatatypeConverter.parseDateTime(endTimeElement.getTextContent()); persistentVMDowntimeInstance.setEndTime(endTimeInstance); } Element statusElement6 = XmlUtility.getElementByTagNameNS(persistentVMDowntimeElement, "http://schemas.microsoft.com/windowsazure", "Status"); if (statusElement6 != null) { String statusInstance6; statusInstance6 = statusElement6.getTextContent(); persistentVMDowntimeInstance.setStatus(statusInstance6); } } Element virtualIPsSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "VirtualIPs"); if (virtualIPsSequenceElement != null) { for (int i34 = 0; i34 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(virtualIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "VirtualIP") .size(); i34 = i34 + 1) { org.w3c.dom.Element virtualIPsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(virtualIPsSequenceElement, "http://schemas.microsoft.com/windowsazure", "VirtualIP") .get(i34)); VirtualIPAddress virtualIPInstance = new VirtualIPAddress(); result.getVirtualIPAddresses().add(virtualIPInstance); Element addressElement4 = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "Address"); if (addressElement4 != null) { InetAddress addressInstance4; addressInstance4 = InetAddress.getByName(addressElement4.getTextContent()); virtualIPInstance.setAddress(addressInstance4); } Element isDnsProgrammedElement = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "IsDnsProgrammed"); if (isDnsProgrammedElement != null && isDnsProgrammedElement.getTextContent() != null && !isDnsProgrammedElement.getTextContent().isEmpty()) { boolean isDnsProgrammedInstance; isDnsProgrammedInstance = DatatypeConverter .parseBoolean(isDnsProgrammedElement.getTextContent().toLowerCase()); virtualIPInstance.setIsDnsProgrammed(isDnsProgrammedInstance); } Element nameElement13 = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement13 != null) { String nameInstance13; nameInstance13 = nameElement13.getTextContent(); virtualIPInstance.setName(nameInstance13); } Element reservedIPNameElement = XmlUtility.getElementByTagNameNS(virtualIPsElement, "http://schemas.microsoft.com/windowsazure", "ReservedIPName"); if (reservedIPNameElement != null) { String reservedIPNameInstance; reservedIPNameInstance = reservedIPNameElement.getTextContent(); virtualIPInstance.setReservedIPName(reservedIPNameInstance); } } } Element extensionConfigurationElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ExtensionConfiguration"); if (extensionConfigurationElement != null) { ExtensionConfiguration extensionConfigurationInstance = new ExtensionConfiguration(); result.setExtensionConfiguration(extensionConfigurationInstance); Element allRolesSequenceElement = XmlUtility.getElementByTagNameNS( extensionConfigurationElement, "http://schemas.microsoft.com/windowsazure", "AllRoles"); if (allRolesSequenceElement != null) { for (int i35 = 0; i35 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(allRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .size(); i35 = i35 + 1) { org.w3c.dom.Element allRolesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(allRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .get(i35)); ExtensionConfiguration.Extension extensionInstance = new ExtensionConfiguration.Extension(); extensionConfigurationInstance.getAllRoles().add(extensionInstance); Element idElement = XmlUtility.getElementByTagNameNS(allRolesElement, "http://schemas.microsoft.com/windowsazure", "Id"); if (idElement != null) { String idInstance; idInstance = idElement.getTextContent(); extensionInstance.setId(idInstance); } } } Element namedRolesSequenceElement = XmlUtility.getElementByTagNameNS( extensionConfigurationElement, "http://schemas.microsoft.com/windowsazure", "NamedRoles"); if (namedRolesSequenceElement != null) { for (int i36 = 0; i36 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(namedRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .size(); i36 = i36 + 1) { org.w3c.dom.Element namedRolesElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(namedRolesSequenceElement, "http://schemas.microsoft.com/windowsazure", "Role") .get(i36)); ExtensionConfiguration.NamedRole roleInstance2 = new ExtensionConfiguration.NamedRole(); extensionConfigurationInstance.getNamedRoles().add(roleInstance2); Element roleNameElement3 = XmlUtility.getElementByTagNameNS(namedRolesElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement3 != null) { String roleNameInstance3; roleNameInstance3 = roleNameElement3.getTextContent(); roleInstance2.setRoleName(roleNameInstance3); } Element extensionsSequenceElement = XmlUtility.getElementByTagNameNS( namedRolesElement, "http://schemas.microsoft.com/windowsazure", "Extensions"); if (extensionsSequenceElement != null) { for (int i37 = 0; i37 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extensionsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .size(); i37 = i37 + 1) { org.w3c.dom.Element extensionsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(extensionsSequenceElement, "http://schemas.microsoft.com/windowsazure", "Extension") .get(i37)); ExtensionConfiguration.Extension extensionInstance2 = new ExtensionConfiguration.Extension(); roleInstance2.getExtensions().add(extensionInstance2); Element idElement2 = XmlUtility.getElementByTagNameNS(extensionsElement, "http://schemas.microsoft.com/windowsazure", "Id"); if (idElement2 != null) { String idInstance2; idInstance2 = idElement2.getTextContent(); extensionInstance2.setId(idInstance2); } } } } } } Element reservedIPNameElement2 = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "ReservedIPName"); if (reservedIPNameElement2 != null) { String reservedIPNameInstance2; reservedIPNameInstance2 = reservedIPNameElement2.getTextContent(); result.setReservedIPName(reservedIPNameInstance2); } Element loadBalancersSequenceElement = XmlUtility.getElementByTagNameNS(deploymentElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancers"); if (loadBalancersSequenceElement != null) { for (int i38 = 0; i38 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(loadBalancersSequenceElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancer") .size(); i38 = i38 + 1) { org.w3c.dom.Element loadBalancersElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(loadBalancersSequenceElement, "http://schemas.microsoft.com/windowsazure", "LoadBalancer") .get(i38)); LoadBalancer loadBalancerInstance = new LoadBalancer(); result.getLoadBalancers().add(loadBalancerInstance); Element nameElement14 = XmlUtility.getElementByTagNameNS(loadBalancersElement, "http://schemas.microsoft.com/windowsazure", "Name"); if (nameElement14 != null) { String nameInstance14; nameInstance14 = nameElement14.getTextContent(); loadBalancerInstance.setName(nameInstance14); } Element frontendIpConfigurationElement = XmlUtility.getElementByTagNameNS( loadBalancersElement, "http://schemas.microsoft.com/windowsazure", "FrontendIpConfiguration"); if (frontendIpConfigurationElement != null) { FrontendIPConfiguration frontendIpConfigurationInstance = new FrontendIPConfiguration(); loadBalancerInstance.setFrontendIPConfiguration(frontendIpConfigurationInstance); Element typeElement2 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "Type"); if (typeElement2 != null) { String typeInstance2; typeInstance2 = typeElement2.getTextContent(); frontendIpConfigurationInstance.setType(typeInstance2); } Element subnetNameElement3 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "SubnetName"); if (subnetNameElement3 != null) { String subnetNameInstance3; subnetNameInstance3 = subnetNameElement3.getTextContent(); frontendIpConfigurationInstance.setSubnetName(subnetNameInstance3); } Element staticVirtualNetworkIPAddressElement3 = XmlUtility.getElementByTagNameNS( frontendIpConfigurationElement, "http://schemas.microsoft.com/windowsazure", "StaticVirtualNetworkIPAddress"); if (staticVirtualNetworkIPAddressElement3 != null) { InetAddress staticVirtualNetworkIPAddressInstance3; staticVirtualNetworkIPAddressInstance3 = InetAddress .getByName(staticVirtualNetworkIPAddressElement3.getTextContent()); frontendIpConfigurationInstance.setStaticVirtualNetworkIPAddress( staticVirtualNetworkIPAddressInstance3); } } } } } } result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Get Package By Name operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Get Package By * Name operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> getPackageByNameAsync(final String serviceName, final String deploymentName, final DeploymentGetPackageParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return getPackageByName(serviceName, deploymentName, parameters); } }); } /** * The Get Package By Name operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Get Package By * Name operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse getPackageByName(String serviceName, String deploymentName, DeploymentGetPackageParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "getPackageByNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginGettingPackageByNameAsync(serviceName, deploymentName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Get Package By Slot operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Get Package By * Slot operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> getPackageBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentGetPackageParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return getPackageBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Get Package By Slot operation retrieves a cloud service package for a * deployment and stores the package files in Azure Blob storage. The * following package files are placed in storage: the cloud service * configuration file (.cscfg), providing configuration settings for the * cloud service and individual roles, including the number of role * instances; and the service package (.cspkg), containing the application * code and the service definition file. (see * http://msdn.microsoft.com/en-us/library/windowsazure/jj154121.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Get Package By * Slot operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse getPackageBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentGetPackageParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "getPackageBySlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginGettingPackageBySlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * Identifies the list of reboot events due to planned maintenance that * impacted a deployment in the optionally provided timeframe. * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param startTime Required. Datetime in UTC representing the start time of * the query. * @param endTime Required. Datetime in UTC representing the end time of the * query. * @return Identifies the list of reboot events due to planned maintenance * that impacted a deployment in the optionally provided timeframe. */ @Override public Future<DeploymentEventListResponse> listEventsAsync(final String serviceName, final String deploymentName, final Calendar startTime, final Calendar endTime) { return this.getClient().getExecutorService().submit(new Callable<DeploymentEventListResponse>() { @Override public DeploymentEventListResponse call() throws Exception { return listEvents(serviceName, deploymentName, startTime, endTime); } }); } /** * Identifies the list of reboot events due to planned maintenance that * impacted a deployment in the optionally provided timeframe. * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of the deployment. * @param startTime Required. Datetime in UTC representing the start time of * the query. * @param endTime Required. Datetime in UTC representing the end time of the * query. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @throws ParserConfigurationException Thrown if there was a serious * configuration error with the document parser. * @throws SAXException Thrown if there was an error parsing the XML * response. * @return Identifies the list of reboot events due to planned maintenance * that impacted a deployment in the optionally provided timeframe. */ @Override public DeploymentEventListResponse listEvents(String serviceName, String deploymentName, Calendar startTime, Calendar endTime) throws IOException, ServiceException, ParserConfigurationException, SAXException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentName == null) { throw new NullPointerException("deploymentName"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("startTime", startTime); tracingParameters.put("endTime", endTime); CloudTracing.enter(invocationId, this, "listEventsAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/events"; ArrayList<String> queryParameters = new ArrayList<String>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); queryParameters .add("starttime=" + URLEncoder.encode(simpleDateFormat.format(startTime.getTime()), "UTF-8")); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); simpleDateFormat2.setTimeZone(TimeZone.getTimeZone("UTC")); queryParameters.add("endtime=" + URLEncoder.encode(simpleDateFormat2.format(endTime.getTime()), "UTF-8")); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpGet httpRequest = new HttpGet(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result DeploymentEventListResponse result = null; // Deserialize Response if (statusCode == HttpStatus.SC_OK) { InputStream responseContent = httpResponse.getEntity().getContent(); result = new DeploymentEventListResponse(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document responseDoc = documentBuilder.parse(new BOMInputStream(responseContent)); Element deploymentEventCollectionElement = XmlUtility.getElementByTagNameNS(responseDoc, "http://schemas.microsoft.com/windowsazure", "DeploymentEventCollection"); if (deploymentEventCollectionElement != null) { Element rebootEventsSequenceElement = XmlUtility.getElementByTagNameNS( deploymentEventCollectionElement, "http://schemas.microsoft.com/windowsazure", "RebootEvents"); if (rebootEventsSequenceElement != null) { for (int i1 = 0; i1 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rebootEventsSequenceElement, "http://schemas.microsoft.com/windowsazure", "RebootEvent") .size(); i1 = i1 + 1) { org.w3c.dom.Element rebootEventsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rebootEventsSequenceElement, "http://schemas.microsoft.com/windowsazure", "RebootEvent") .get(i1)); RebootEvent rebootEventInstance = new RebootEvent(); result.getDeploymentEvents().add(rebootEventInstance); Element roleNameElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement != null) { String roleNameInstance; roleNameInstance = roleNameElement.getTextContent(); rebootEventInstance.setRoleName(roleNameInstance); } Element instanceNameElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "InstanceName"); if (instanceNameElement != null) { String instanceNameInstance; instanceNameInstance = instanceNameElement.getTextContent(); rebootEventInstance.setInstanceName(instanceNameInstance); } Element rebootReasonElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RebootReason"); if (rebootReasonElement != null) { String rebootReasonInstance; rebootReasonInstance = rebootReasonElement.getTextContent(); rebootEventInstance.setRebootReason(rebootReasonInstance); } Element rebootStartTimeElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RebootStartTime"); if (rebootStartTimeElement != null && rebootStartTimeElement.getTextContent() != null && !rebootStartTimeElement.getTextContent().isEmpty()) { Calendar rebootStartTimeInstance; rebootStartTimeInstance = DatatypeConverter .parseDateTime(rebootStartTimeElement.getTextContent()); rebootEventInstance.setRebootStartTime(rebootStartTimeInstance); } } } Element continuationTokenElement = XmlUtility.getElementByTagNameNS( deploymentEventCollectionElement, "http://schemas.microsoft.com/windowsazure", "ContinuationToken"); if (continuationTokenElement != null) { String continuationTokenInstance; continuationTokenInstance = continuationTokenElement.getTextContent(); result.setContinuationToken(continuationTokenInstance); } } } result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * Identifies the list of reboot events due to planned maintenance that * impacted a deployment in the optionally provided timeframe. * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param startTime Required. Datetime in UTC representing the start time of * the query. * @param endTime Required. Datetime in UTC representing the end time of the * query. * @return Identifies the list of reboot events due to planned maintenance * that impacted a deployment in the optionally provided timeframe. */ @Override public Future<DeploymentEventListResponse> listEventsBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final Calendar startTime, final Calendar endTime) { return this.getClient().getExecutorService().submit(new Callable<DeploymentEventListResponse>() { @Override public DeploymentEventListResponse call() throws Exception { return listEventsBySlot(serviceName, deploymentSlot, startTime, endTime); } }); } /** * Identifies the list of reboot events due to planned maintenance that * impacted a deployment in the optionally provided timeframe. * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param startTime Required. Datetime in UTC representing the start time of * the query. * @param endTime Required. Datetime in UTC representing the end time of the * query. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @throws ParserConfigurationException Thrown if there was a serious * configuration error with the document parser. * @throws SAXException Thrown if there was an error parsing the XML * response. * @return Identifies the list of reboot events due to planned maintenance * that impacted a deployment in the optionally provided timeframe. */ @Override public DeploymentEventListResponse listEventsBySlot(String serviceName, DeploymentSlot deploymentSlot, Calendar startTime, Calendar endTime) throws IOException, ServiceException, ParserConfigurationException, SAXException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("startTime", startTime); tracingParameters.put("endTime", endTime); CloudTracing.enter(invocationId, this, "listEventsBySlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/events"; ArrayList<String> queryParameters = new ArrayList<String>(); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC")); queryParameters .add("starttime=" + URLEncoder.encode(simpleDateFormat.format(startTime.getTime()), "UTF-8")); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'"); simpleDateFormat2.setTimeZone(TimeZone.getTimeZone("UTC")); queryParameters.add("endtime=" + URLEncoder.encode(simpleDateFormat2.format(endTime.getTime()), "UTF-8")); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpGet httpRequest = new HttpGet(url); // Set Headers httpRequest.setHeader("x-ms-version", "2015-04-01"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { ServiceException ex = ServiceException.createFromXml(httpRequest, null, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result DeploymentEventListResponse result = null; // Deserialize Response if (statusCode == HttpStatus.SC_OK) { InputStream responseContent = httpResponse.getEntity().getContent(); result = new DeploymentEventListResponse(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); documentBuilderFactory.setNamespaceAware(true); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document responseDoc = documentBuilder.parse(new BOMInputStream(responseContent)); Element deploymentEventCollectionElement = XmlUtility.getElementByTagNameNS(responseDoc, "http://schemas.microsoft.com/windowsazure", "DeploymentEventCollection"); if (deploymentEventCollectionElement != null) { Element rebootEventsSequenceElement = XmlUtility.getElementByTagNameNS( deploymentEventCollectionElement, "http://schemas.microsoft.com/windowsazure", "RebootEvents"); if (rebootEventsSequenceElement != null) { for (int i1 = 0; i1 < com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rebootEventsSequenceElement, "http://schemas.microsoft.com/windowsazure", "RebootEvent") .size(); i1 = i1 + 1) { org.w3c.dom.Element rebootEventsElement = ((org.w3c.dom.Element) com.microsoft.windowsazure.core.utils.XmlUtility .getElementsByTagNameNS(rebootEventsSequenceElement, "http://schemas.microsoft.com/windowsazure", "RebootEvent") .get(i1)); RebootEvent rebootEventInstance = new RebootEvent(); result.getDeploymentEvents().add(rebootEventInstance); Element roleNameElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RoleName"); if (roleNameElement != null) { String roleNameInstance; roleNameInstance = roleNameElement.getTextContent(); rebootEventInstance.setRoleName(roleNameInstance); } Element instanceNameElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "InstanceName"); if (instanceNameElement != null) { String instanceNameInstance; instanceNameInstance = instanceNameElement.getTextContent(); rebootEventInstance.setInstanceName(instanceNameInstance); } Element rebootReasonElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RebootReason"); if (rebootReasonElement != null) { String rebootReasonInstance; rebootReasonInstance = rebootReasonElement.getTextContent(); rebootEventInstance.setRebootReason(rebootReasonInstance); } Element rebootStartTimeElement = XmlUtility.getElementByTagNameNS(rebootEventsElement, "http://schemas.microsoft.com/windowsazure", "RebootStartTime"); if (rebootStartTimeElement != null && rebootStartTimeElement.getTextContent() != null && !rebootStartTimeElement.getTextContent().isEmpty()) { Calendar rebootStartTimeInstance; rebootStartTimeInstance = DatatypeConverter .parseDateTime(rebootStartTimeElement.getTextContent()); rebootEventInstance.setRebootStartTime(rebootStartTimeInstance); } } } Element continuationTokenElement = XmlUtility.getElementByTagNameNS( deploymentEventCollectionElement, "http://schemas.microsoft.com/windowsazure", "ContinuationToken"); if (continuationTokenElement != null) { String continuationTokenInstance; continuationTokenInstance = continuationTokenElement.getTextContent(); result.setContinuationToken(continuationTokenInstance); } } } result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Reboot Role Instance By Deployment Name operation requests a reboot * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> rebootRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return rebootRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName); } }); } /** * The Reboot Role Instance By Deployment Name operation requests a reboot * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse rebootRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "rebootRoleInstanceByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginRebootingRoleInstanceByDeploymentNameAsync(serviceName, deploymentName, roleInstanceName) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Reboot Role Instance By Deployment Slot operation requests a reboot * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> rebootRoleInstanceByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return rebootRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName); } }); } /** * The Reboot Role Instance By Deployment Slot operation requests a reboot * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441298.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse rebootRoleInstanceByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, String roleInstanceName) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "rebootRoleInstanceByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginRebootingRoleInstanceByDeploymentSlotAsync(serviceName, deploymentSlot, roleInstanceName) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> rebuildRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName, final String resources) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return rebuildRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName, resources); } }); } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse rebuildRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName, String resources) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); tracingParameters.put("resources", resources); CloudTracing.enter(invocationId, this, "rebuildRoleInstanceByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginRebuildingRoleInstanceByDeploymentNameAsync(serviceName, deploymentName, roleInstanceName, resources) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> rebuildRoleInstanceByDeploymentSlotAsync(final String serviceName, final String deploymentSlot, final String roleInstanceName, final String resources) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return rebuildRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName, resources); } }); } /** * The Rebuild Role Instance asynchronous operation reinstalls the operating * system on instances of web roles or worker roles and initializes the * storage resources that are used by them. If you do not want to * initialize storage resources, you can use Reimage Role Instance * athttp://msdn.microsoft.com/en-us/library/azure/gg441292.aspx.For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/azure/dn627518.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @param resources Required. Specifies the resources that must be rebuilt. * Currently, the only supported value is 'allLocalDrives'. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse rebuildRoleInstanceByDeploymentSlot(String serviceName, String deploymentSlot, String roleInstanceName, String resources) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); tracingParameters.put("resources", resources); CloudTracing.enter(invocationId, this, "rebuildRoleInstanceByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginRebuildingRoleInstanceByDeploymentSlotAsync(serviceName, deploymentSlot, roleInstanceName, resources) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Reimage Role Instance By Deployment Name operation requests a reimage * of a role instance that is running in a deployment.This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> reimageRoleInstanceByDeploymentNameAsync(final String serviceName, final String deploymentName, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return reimageRoleInstanceByDeploymentName(serviceName, deploymentName, roleInstanceName); } }); } /** * The Reimage Role Instance By Deployment Name operation requests a reimage * of a role instance that is running in a deployment.This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param roleInstanceName Required. The name of your role instance. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse reimageRoleInstanceByDeploymentName(String serviceName, String deploymentName, String roleInstanceName) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "reimageRoleInstanceByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginReimagingRoleInstanceByDeploymentNameAsync(serviceName, deploymentName, roleInstanceName) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Reimage Role Instance By Deployment Slot operation requests a reimage * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> reimageRoleInstanceByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final String roleInstanceName) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return reimageRoleInstanceByDeploymentSlot(serviceName, deploymentSlot, roleInstanceName); } }); } /** * The Reimage Role Instance By Deployment Slot operation requests a reimage * of a role instance that is running in a deployment. This operation is an * asynchronous operation. To determine whether the Management service has * finished processing the request, call Get Operation Status. For more * information on asynchronous operations, see Tracking Asynchronous * Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/gg441292.aspx * for more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param roleInstanceName Required. The name of your role instance. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse reimageRoleInstanceByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, String roleInstanceName) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("roleInstanceName", roleInstanceName); CloudTracing.enter(invocationId, this, "reimageRoleInstanceByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginReimagingRoleInstanceByDeploymentSlotAsync(serviceName, deploymentSlot, roleInstanceName) .get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Rollback Update Or Upgrade By Deployment Name operation cancels an * in-progress configuration update and returns the deployment to its state * before the update was started. This operation can only be called when an * update is in progress on the deployment. The deployment status can be * detected by calling the Get Deployment operation or Get Hosted Service * Properties operation and inspecting the RollbackAllowed element. If the * value returned is true a rollback can be performed. (see * http://msdn.microsoft.com/en-us/library/windowsazure/hh403977.aspx for * more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Rollback Update Or * Upgrade By Deployment Name operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> rollbackUpdateOrUpgradeByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentRollbackUpdateOrUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return rollbackUpdateOrUpgradeByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Rollback Update Or Upgrade By Deployment Name operation cancels an * in-progress configuration update and returns the deployment to its state * before the update was started. This operation can only be called when an * update is in progress on the deployment. The deployment status can be * detected by calling the Get Deployment operation or Get Hosted Service * Properties operation and inspecting the RollbackAllowed element. If the * value returned is true a rollback can be performed. (see * http://msdn.microsoft.com/en-us/library/windowsazure/hh403977.aspx for * more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Rollback Update Or * Upgrade By Deployment Name operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse rollbackUpdateOrUpgradeByDeploymentName(String serviceName, String deploymentName, DeploymentRollbackUpdateOrUpgradeParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentName == null) { throw new NullPointerException("deploymentName"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getMode() == null) { throw new NullPointerException("parameters.Mode"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "rollbackUpdateOrUpgradeByDeploymentNameAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deployments/"; url = url + URLEncoder.encode(deploymentName, "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=rollback"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element rollbackUpdateOrUpgradeElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RollbackUpdateOrUpgrade"); requestDoc.appendChild(rollbackUpdateOrUpgradeElement); Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); rollbackUpdateOrUpgradeElement.appendChild(modeElement); Element forceElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Force"); forceElement.appendChild(requestDoc.createTextNode(Boolean.toString(parameters.isForce()).toLowerCase())); rollbackUpdateOrUpgradeElement.appendChild(forceElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_OK) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Rollback Update Or Upgrade By Deployment Slot operation cancels an * in-progress configuration update and returns the deployment to its state * before the update was started. This operation can only be called when an * update is in progress on the deployment. The deployment status can be * detected by calling the Get Deployment operation or Get Hosted Service * Properties operation and inspecting the RollbackAllowed element. If the * value returned is true a rollback can be performed. (see * http://msdn.microsoft.com/en-us/library/windowsazure/hh403977.aspx for * more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Rollback Update Or * Upgrade By Deployment Slot operation. * @return A standard service response including an HTTP status code and * request ID. */ @Override public Future<OperationResponse> rollbackUpdateOrUpgradeByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentRollbackUpdateOrUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationResponse>() { @Override public OperationResponse call() throws Exception { return rollbackUpdateOrUpgradeByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Rollback Update Or Upgrade By Deployment Slot operation cancels an * in-progress configuration update and returns the deployment to its state * before the update was started. This operation can only be called when an * update is in progress on the deployment. The deployment status can be * detected by calling the Get Deployment operation or Get Hosted Service * Properties operation and inspecting the RollbackAllowed element. If the * value returned is true a rollback can be performed. (see * http://msdn.microsoft.com/en-us/library/windowsazure/hh403977.aspx for * more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Rollback Update Or * Upgrade By Deployment Slot operation. * @throws ParserConfigurationException Thrown if there was an error * configuring the parser for the response body. * @throws SAXException Thrown if there was an error parsing the response * body. * @throws TransformerException Thrown if there was an error creating the * DOM transformer. * @throws IOException Signals that an I/O exception of some sort has * occurred. This class is the general class of exceptions produced by * failed or interrupted I/O operations. * @throws ServiceException Thrown if an unexpected response is found. * @return A standard service response including an HTTP status code and * request ID. */ @Override public OperationResponse rollbackUpdateOrUpgradeByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentRollbackUpdateOrUpgradeParameters parameters) throws ParserConfigurationException, SAXException, TransformerException, IOException, ServiceException { // Validate if (serviceName == null) { throw new NullPointerException("serviceName"); } // TODO: Validate serviceName is a valid DNS name. if (deploymentSlot == null) { throw new NullPointerException("deploymentSlot"); } if (parameters == null) { throw new NullPointerException("parameters"); } if (parameters.getMode() == null) { throw new NullPointerException("parameters.Mode"); } // Tracing boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "rollbackUpdateOrUpgradeByDeploymentSlotAsync", tracingParameters); } // Construct URL String url = ""; url = url + "/"; if (this.getClient().getCredentials().getSubscriptionId() != null) { url = url + URLEncoder.encode(this.getClient().getCredentials().getSubscriptionId(), "UTF-8"); } url = url + "/services/hostedservices/"; url = url + URLEncoder.encode(serviceName, "UTF-8"); url = url + "/deploymentslots/"; url = url + URLEncoder.encode(deploymentSlot.toString(), "UTF-8"); url = url + "/"; ArrayList<String> queryParameters = new ArrayList<String>(); queryParameters.add("comp=rollback"); if (queryParameters.size() > 0) { url = url + "?" + CollectionStringBuilder.join(queryParameters, "&"); } String baseUrl = this.getClient().getBaseUri().toString(); // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl.charAt(baseUrl.length() - 1) == '/') { baseUrl = baseUrl.substring(0, (baseUrl.length() - 1) + 0); } if (url.charAt(0) == '/') { url = url.substring(1); } url = baseUrl + "/" + url; url = url.replace(" ", "%20"); // Create HTTP transport objects HttpPost httpRequest = new HttpPost(url); // Set Headers httpRequest.setHeader("Content-Type", "application/xml"); httpRequest.setHeader("x-ms-version", "2015-04-01"); // Serialize Request String requestContent = null; DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); Document requestDoc = documentBuilder.newDocument(); Element rollbackUpdateOrUpgradeElement = requestDoc .createElementNS("http://schemas.microsoft.com/windowsazure", "RollbackUpdateOrUpgrade"); requestDoc.appendChild(rollbackUpdateOrUpgradeElement); Element modeElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Mode"); modeElement.appendChild(requestDoc.createTextNode(parameters.getMode().toString())); rollbackUpdateOrUpgradeElement.appendChild(modeElement); Element forceElement = requestDoc.createElementNS("http://schemas.microsoft.com/windowsazure", "Force"); forceElement.appendChild(requestDoc.createTextNode(Boolean.toString(parameters.isForce()).toLowerCase())); rollbackUpdateOrUpgradeElement.appendChild(forceElement); DOMSource domSource = new DOMSource(requestDoc); StringWriter stringWriter = new StringWriter(); StreamResult streamResult = new StreamResult(stringWriter); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); transformer.transform(domSource, streamResult); requestContent = stringWriter.toString(); StringEntity entity = new StringEntity(requestContent); httpRequest.setEntity(entity); httpRequest.setHeader("Content-Type", "application/xml"); // Send Request HttpResponse httpResponse = null; try { if (shouldTrace) { CloudTracing.sendRequest(invocationId, httpRequest); } httpResponse = this.getClient().getHttpClient().execute(httpRequest); if (shouldTrace) { CloudTracing.receiveResponse(invocationId, httpResponse); } int statusCode = httpResponse.getStatusLine().getStatusCode(); if (statusCode != HttpStatus.SC_ACCEPTED) { ServiceException ex = ServiceException.createFromXml(httpRequest, requestContent, httpResponse, httpResponse.getEntity()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } // Create Result OperationResponse result = null; // Deserialize Response result = new OperationResponse(); result.setStatusCode(statusCode); if (httpResponse.getHeaders("x-ms-request-id").length > 0) { result.setRequestId(httpResponse.getFirstHeader("x-ms-request-id").getValue()); } if (shouldTrace) { CloudTracing.exit(invocationId, result); } return result; } finally { if (httpResponse != null && httpResponse.getEntity() != null) { httpResponse.getEntity().getContent().close(); } } } /** * The Swap Deployment operation initiates a virtual IP address swap between * the staging and production deployment environments for a service. If the * service is currently running in the staging environment, it will be * swapped to the production environment. If it is running in the * production environment, it will be swapped to staging. For more * information on this type of upgrade, see Performing Virtual IP Swap * Upgrades at * http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460814.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param parameters Required. Parameters supplied to the Swap Deployment * operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> swapAsync(final String serviceName, final DeploymentSwapParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return swap(serviceName, parameters); } }); } /** * The Swap Deployment operation initiates a virtual IP address swap between * the staging and production deployment environments for a service. If the * service is currently running in the staging environment, it will be * swapped to the production environment. If it is running in the * production environment, it will be swapped to staging. For more * information on this type of upgrade, see Performing Virtual IP Swap * Upgrades at * http://msdn.microsoft.com/en-us/library/windowsazure/ee517253.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460814.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param parameters Required. Parameters supplied to the Swap Deployment * operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse swap(String serviceName, DeploymentSwapParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "swapAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginSwappingAsync(serviceName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Update Deployment Status By Deployment Name operation initiates a * change in the running status of a deployment. The status of a deployment * can be running or suspended. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Update Deployment * Status By Deployment Name operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> updateStatusByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentUpdateStatusParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return updateStatusByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Update Deployment Status By Deployment Name operation initiates a * change in the running status of a deployment. The status of a deployment * can be running or suspended. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Update Deployment * Status By Deployment Name operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse updateStatusByDeploymentName(String serviceName, String deploymentName, DeploymentUpdateStatusParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "updateStatusByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginUpdatingStatusByDeploymentNameAsync(serviceName, deploymentName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Update Deployment Status By Deployment Slot operation initiates a * change in the running status of a deployment. The status of a deployment * can be running or suspended. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Update Deployment * Status By Deployment Slot operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> updateStatusByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentUpdateStatusParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return updateStatusByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Update Deployment Status By Deployment Slot operation initiates a * change in the running status of a deployment. The status of a deployment * can be running or suspended. This operation is an asynchronous * operation. To determine whether the Management service has finished * processing the request, call Get Operation Status. For more information * on asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * (see http://msdn.microsoft.com/en-us/library/windowsazure/ee460808.aspx * for more information) * * @param serviceName Required. The cloud service to swap deployments for. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Update Deployment * Status By Deployment Slot operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse updateStatusByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentUpdateStatusParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "updateStatusByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginUpdatingStatusByDeploymentSlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Upgrade Deployment By Name operation initiates an update of role * instances in a deployment using the package and configuration that you * specify. For more information about updating role instances, see Update * an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentName Required. The deployment to upgrade. * @param parameters Required. Parameters supplied to the Upgrade Deployment * By Name operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> upgradeByNameAsync(final String serviceName, final String deploymentName, final DeploymentUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return upgradeByName(serviceName, deploymentName, parameters); } }); } /** * The Upgrade Deployment By Name operation initiates an update of role * instances in a deployment using the package and configuration that you * specify. For more information about updating role instances, see Update * an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentName Required. The deployment to upgrade. * @param parameters Required. Parameters supplied to the Upgrade Deployment * By Name operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse upgradeByName(String serviceName, String deploymentName, DeploymentUpgradeParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "upgradeByNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginUpgradingByNameAsync(serviceName, deploymentName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Upgrade Deployment By Slot operation initiates an update of role * instances in a deployment using the package and configuration that you * specify. For more information about updating role instances, see Update * an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentSlot Required. The slot to upgrade. * @param parameters Required. Parameters supplied to the Upgrade Deployment * By Slot operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> upgradeBySlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentUpgradeParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return upgradeBySlot(serviceName, deploymentSlot, parameters); } }); } /** * The Upgrade Deployment By Slot operation initiates an update of role * instances in a deployment using the package and configuration that you * specify. For more information about updating role instances, see Update * an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the request * has been processed, call Get Operation Status. For more information on * asynchronous operations, see Tracking Asynchronous Service Management * Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. To * perform an automatic update of a deployment, call Upgrade Deployment or * Change Deployment Configuration with the Mode element set to automatic. * The update proceeds from that point without a need for further input. * You can call Get Operation Status to determine when the update is * complete. To perform a manual update, first call Upgrade Deployment with * the Mode element set to manual. Next, call Walk Upgrade Domain to update * each domain within the deployment. You should make sure that the * operation is complete by calling Get Operation Status before updating * the next domain. Important: An update that adds or removes role * instances will result in a configuration update to all roles that are * deployed in the cloud service. Existing role instances need to be * notified of new role instances so that all role instances can * communicate together in the cloud service. By default, a cloud service * is deployed with five update domains, which are updated one at a time * during an in-place update. For information on modifying the number of * update domains in the service definition file, see the Azure Service * Definition Schema (.csdef File). To determine the update domain in which * a particular instance is running in Windows Azure, use the UpdateDomain * property of the RoleInstance class. See the Azure Managed Library * Reference at * http://msdn.microsoft.com/en-us/library/windowsazure/dd179380.aspx for * more information. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460793.aspx for * more information) * * @param serviceName Required. The cloud service to upgrade. * @param deploymentSlot Required. The slot to upgrade. * @param parameters Required. Parameters supplied to the Upgrade Deployment * By Slot operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse upgradeBySlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentUpgradeParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "upgradeBySlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginUpgradingBySlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Walk Upgrade Domain By Deployment Name operation specifies an update * domain in which a role instance must be updated. For more information * about updating role instances, see Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Walk Upgrade * Domain By Deployment Name operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> walkUpgradeDomainByDeploymentNameAsync(final String serviceName, final String deploymentName, final DeploymentWalkUpgradeDomainParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return walkUpgradeDomainByDeploymentName(serviceName, deploymentName, parameters); } }); } /** * The Walk Upgrade Domain By Deployment Name operation specifies an update * domain in which a role instance must be updated. For more information * about updating role instances, see Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentName Required. The name of your deployment. * @param parameters Required. Parameters supplied to the Walk Upgrade * Domain By Deployment Name operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse walkUpgradeDomainByDeploymentName(String serviceName, String deploymentName, DeploymentWalkUpgradeDomainParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentName", deploymentName); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "walkUpgradeDomainByDeploymentNameAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginWalkingUpgradeDomainByDeploymentNameAsync(serviceName, deploymentName, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } /** * The Walk Upgrade Domain By Deployment Slot operation specifies an update * domain in which a role instance must be updated. For more information * about updating role instances, see Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Walk Upgrade * Domain By Deployment Slot operation. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public Future<OperationStatusResponse> walkUpgradeDomainByDeploymentSlotAsync(final String serviceName, final DeploymentSlot deploymentSlot, final DeploymentWalkUpgradeDomainParameters parameters) { return this.getClient().getExecutorService().submit(new Callable<OperationStatusResponse>() { @Override public OperationStatusResponse call() throws Exception { return walkUpgradeDomainByDeploymentSlot(serviceName, deploymentSlot, parameters); } }); } /** * The Walk Upgrade Domain By Deployment Slot operation specifies an update * domain in which a role instance must be updated. For more information * about updating role instances, see Update an Azure Service at * http://msdn.microsoft.com/en-us/library/windowsazure/hh472157.aspx. This * operation is an asynchronous operation. To determine whether the * Management service has finished processing the request, call Get * Operation Status. For more information on asynchronous operations, see * Tracking Asynchronous Service Management Requests at * http://msdn.microsoft.com/en-us/library/windowsazure/ee460791.aspx. * Prior to calling the Walk Upgrade Domain operation you must have called * Upgrade Deployment, Change Deployment Configuration, or Rollback Update * Or Upgrade. By default, a service is deployed with five update domains, * which are updated one at a time during an in-place update. For * information on modifying the number of update domains in the service * definition file, see the Azure Service Definition Schema (.csdef File). * To perform a manual update of your deployment, proceed in this order: * Call Upgrade Deployment with the Mode element set to manual. Call Walk * Upgrade Domain to update each domain within the deployment. Update * domains must be updated in order. For example, begin with domain 0, * proceed to domain 1, and so on. Important: An update that adds or * removes role instances will result in a configuration update to all * roles that are deployed in the cloud service. Existing role instances * need to be notified of new role instances so that all role instances can * communicate together in the cloud service. While an update is in * progress, call Get Deployment to determine its status. If the update is * in progress, Get Deployment returns an UpgradeStatus element that * contains information about the update. If the update is complete, or if * no update is in progress, then the UpgradeStatus element is null. (see * http://msdn.microsoft.com/en-us/library/windowsazure/ee460800.aspx for * more information) * * @param serviceName Required. The name of the cloud service. * @param deploymentSlot Required. The deployment slot. * @param parameters Required. Parameters supplied to the Walk Upgrade * Domain By Deployment Slot operation. * @throws InterruptedException Thrown when a thread is waiting, sleeping, * or otherwise occupied, and the thread is interrupted, either before or * during the activity. Occasionally a method may wish to test whether the * current thread has been interrupted, and if so, to immediately throw * this exception. The following code can be used to achieve this effect: * @throws ExecutionException Thrown when attempting to retrieve the result * of a task that aborted by throwing an exception. This exception can be * inspected using the Throwable.getCause() method. * @throws ServiceException Thrown if the server returned an error for the * request. * @throws IOException Thrown if there was an error setting up tracing for * the request. * @return The response body contains the status of the specified * asynchronous operation, indicating whether it has succeeded, is * inprogress, or has failed. Note that this status is distinct from the * HTTP status code returned for the Get Operation Status operation itself. * If the asynchronous operation succeeded, the response body includes the * HTTP status code for the successful request. If the asynchronous * operation failed, the response body includes the HTTP status code for * the failed request and error information regarding the failure. */ @Override public OperationStatusResponse walkUpgradeDomainByDeploymentSlot(String serviceName, DeploymentSlot deploymentSlot, DeploymentWalkUpgradeDomainParameters parameters) throws InterruptedException, ExecutionException, ServiceException, IOException { ComputeManagementClient client2 = this.getClient(); boolean shouldTrace = CloudTracing.getIsEnabled(); String invocationId = null; if (shouldTrace) { invocationId = Long.toString(CloudTracing.getNextInvocationId()); HashMap<String, Object> tracingParameters = new HashMap<String, Object>(); tracingParameters.put("serviceName", serviceName); tracingParameters.put("deploymentSlot", deploymentSlot); tracingParameters.put("parameters", parameters); CloudTracing.enter(invocationId, this, "walkUpgradeDomainByDeploymentSlotAsync", tracingParameters); } try { if (shouldTrace) { client2 = this.getClient().withRequestFilterLast(new ClientRequestTrackingHandler(invocationId)) .withResponseFilterLast(new ClientRequestTrackingHandler(invocationId)); } OperationResponse response = client2.getDeploymentsOperations() .beginWalkingUpgradeDomainByDeploymentSlotAsync(serviceName, deploymentSlot, parameters).get(); OperationStatusResponse result = client2.getOperationStatusAsync(response.getRequestId()).get(); int delayInSeconds = 30; if (client2.getLongRunningOperationInitialTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationInitialTimeout(); } while (result.getStatus() != null && result.getStatus().equals(OperationStatus.InProgress)) { Thread.sleep(delayInSeconds * 1000); result = client2.getOperationStatusAsync(response.getRequestId()).get(); delayInSeconds = 30; if (client2.getLongRunningOperationRetryTimeout() >= 0) { delayInSeconds = client2.getLongRunningOperationRetryTimeout(); } } if (shouldTrace) { CloudTracing.exit(invocationId, result); } if (result.getStatus() != OperationStatus.Succeeded) { if (result.getError() != null) { ServiceException ex = new ServiceException( result.getError().getCode() + " : " + result.getError().getMessage()); ex.setError(new CloudError()); ex.getError().setCode(result.getError().getCode()); ex.getError().setMessage(result.getError().getMessage()); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } else { ServiceException ex = new ServiceException(""); if (shouldTrace) { CloudTracing.error(invocationId, ex); } throw ex; } } return result; } finally { if (client2 != null && shouldTrace) { client2.close(); } } } }