/// <summary>
        /// Downloads an RDP file for each of the Virtual Machine Roles in a given subscription & Cloud Service
        /// </summary>
        /// <param name="serviceName"></param>
        /// <returns>List of RdpFileObject containing the RDP file name and a byte[] with the RDP file</returns>
        public List <RdpFileObject> GetAllVirtualMachineRdpFilesForService(string serviceName)
        {
            ComputeManagementClient client = new ComputeManagementClient(MyCloudCredentials);

            try
            {
                var           rdpFiles   = new List <RdpFileObject>();
                RdpFileObject rdpFile    = null;
                var           deployment = GetAzureDeyployment(serviceName, DeploymentSlot.Production);
                if (deployment != null)
                {
                    if (deployment.Roles.Count > 0)
                    {
                        var deploymentName = deployment.Name;
                        foreach (var role in deployment.Roles)
                        {
                            if (role.RoleType == VirtualMachineRoleType.PersistentVMRole.ToString())
                            {
                                var rdpFileName = String.Format("rdp--{0}--{1}.rdp", serviceName, role.RoleName);
                                rdpFile = new RdpFileObject(rdpFileName, client.VirtualMachines.GetRemoteDesktopFile(serviceName, deploymentName, role.RoleName));
                                rdpFiles.Add(rdpFile);
                            }
                        }
                        return(rdpFiles);
                    }
                }
            }
            catch (CloudException ce)
            {
                Logger.Warn(ce, String.Format("Exception durign retrieval of Virtual Machine RDP files - exception: {0}", ce));
            }
            return(null);
        }
        /// <summary>
        /// Downloads an RDP file for each of the Elastic (Web and Worker based) Roles in a given subscription
        /// </summary>
        /// <param name="serviceName"></param>
        /// <returns>List of RdpFileObject containing the RDP file name and a byte[] with the RDP file</returns>
        public List <RdpFileObject> GetAllElasticRoleRdpFilesForService(string serviceName)
        {
            ComputeManagementClient client = new ComputeManagementClient(MyCloudCredentials);
            var           rdpFiles         = new List <RdpFileObject>();
            RdpFileObject rdpFile          = null;
            var           deployment       = GetAzureDeyployment(serviceName, DeploymentSlot.Production);

            if (deployment != null)
            {
                var deployments = client.Deployments.GetBySlot(serviceName, DeploymentSlot.Production);
                if (deployments != null)
                {
                    var instances = deployments.RoleInstances;
                    if (instances != null)
                    {
                        if (instances.Count > 0)
                        {
                            foreach (RoleInstance instance in instances)
                            {
                                var rdpFileName = String.Format("rdp--{0}--{1}--{2}.rdp", serviceName, deployment.Name, instance.InstanceName);
                                rdpFile = new RdpFileObject(rdpFileName, client.VirtualMachines.GetRemoteDesktopFile(serviceName, deployment.Name, instance.InstanceName));
                                rdpFiles.Add(rdpFile);
                            }
                        }
                        return(rdpFiles);
                    }
                }
            }
            return(null);
        }
        /// <summary>
        /// Downloads an RDP file for each of the Elastic (Web and Worker based) Roles in a given subscription
        /// </summary>
        /// <returns>List of RdpFileObject containing the RDP file name and a byte[] with the RDP file</returns>
        public List <RdpFileObject> GetAllElasticRoleRdpFiles()
        {
            ComputeManagementClient client = new ComputeManagementClient(MyCloudCredentials);

            try
            {
                var           rdpFiles = new List <RdpFileObject>();
                RdpFileObject rdpFile  = null;

                var hostedServices = client.HostedServices.List();
                if (hostedServices.Count() > 0)
                {
                    foreach (var service in hostedServices)
                    {
                        var deployment = GetAzureDeyployment(service.ServiceName, DeploymentSlot.Production);
                        if (deployment != null)
                        {
                            var instances = client.Deployments.GetBySlot(service.ServiceName, DeploymentSlot.Production).RoleInstances;
                            if (instances != null)
                            {
                                if (instances.Count > 0)
                                {
                                    foreach (RoleInstance instance in instances)
                                    {
                                        var rdpFileName = String.Format("rdp--{0}--{1}--{2}.rdp", service.ServiceName, deployment.Name, instance.InstanceName);
                                        rdpFile = new RdpFileObject(rdpFileName, client.VirtualMachines.GetRemoteDesktopFile(service.ServiceName, deployment.Name, instance.InstanceName));
                                        rdpFiles.Add(rdpFile);
                                    }
                                }
                            }
                        }
                    }
                    return(rdpFiles);
                }
            }
            catch (CloudException ce)
            {
                Logger.Warn(ce, String.Format("Exception durign retrieval of Web Role RDP files - exception: {0}", ce));
            }
            return(null);
        }