Example #1
0
        /// <summary>
        ///     Get storage accounts that are used by hosted service
        /// </summary>
        /// <param name="hostedServiceName"></param>
        /// <returns></returns>
        public IList <StorageAccount> GetStorageAccountsUsedByHostedService(string hostedServiceName)
        {
            var uniqueStorageAccounts = new HashSet <StorageAccount>();
            var storageManager        = new AzureStorageServiceManager();
            var vhdManager            = new AzureVirtualMachineManager();
            var vhdsLeased            = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);

            foreach (var vhd in vhdsLeased)
            {
                var storageAccount = storageManager.GetStorageServiceForBlob(vhd.MediaLinkUri);
                uniqueStorageAccounts.Add(storageAccount);
            }

            return(uniqueStorageAccounts.ToList());
        }
Example #2
0
        /// <summary>
        ///     Deploy worker role
        /// </summary>
        /// <param name="packagePath"></param>
        /// <param name="configPath"></param>
        /// <param name="roleName"></param>
        /// <param name="deploymentSlot"></param>
        /// <returns></returns>
        public DeploymentInfo DeployRole(string packagePath, string configPath, string roleName = "",
                                         DeploymentSlot deploymentSlot = DeploymentSlot.Production)
        {
            var storageManager = new AzureStorageServiceManager();

            var service        = storageManager.CreateStorageService();
            var blob           = service.CreateBlob(Path.GetFileName(packagePath));
            var packageBlobUri = blob.UploadFile(packagePath);

            roleName = CreateHostedService(roleName);

            var deployment = CreateOrUpdateDeployment(roleName, packageBlobUri, configPath, deploymentSlot: deploymentSlot);

            return(new DeploymentInfo {
                HostedService = roleName, Deployment = deployment
            });
        }
Example #3
0
        private void CleanupStorageServices(AzureResourceType type, Dictionary <string, object> resources)
        {
            SafeExecute(() =>
            {
                var manager = new AzureStorageServiceManager();
                foreach (var obj in resources.Values)
                {
                    var service = obj as string;

                    if (service == null)
                    {
                        throw new Exception(string.Format("Incorrect resource was stored in '{0}' collection", type));
                    }

                    if (manager.GetStorageService(service) != null)
                    {
                        manager.DeleteStorageService(service);
                    }
                }

                resources.Clear();
            }, type.ToString());
        }
Example #4
0
        /// <summary>
        ///     Break leases on vhd blobs
        /// </summary>
        /// <param name="hostedServiceName"></param>
        /// <param name="vhdBlobContainer"></param>
        public void BreakVhdLeases(string hostedServiceName, string vhdBlobContainer = "vhds")
        {
            var storageManager = new AzureStorageServiceManager();
            var vhdManager     = new AzureVirtualMachineManager();
            var vhdsLeased     = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);

            foreach (var vhd in vhdsLeased)
            {
                var storage = storageManager.GetStorageServiceForBlob(vhd.MediaLinkUri);
                var blob    = storage.GetBlob(Path.GetFileName(vhd.MediaLinkUri.ToString()), vhdBlobContainer);

                TestEasyLog.Instance.Info("Breaking lease on [" + blob.Uri + "]");

                blob.BreakLease(TimeSpan.FromSeconds(1));
            }

            TestEasyLog.Instance.Info("Waiting for VHDs to be released");
            // now wait a short while for the lease to actually expire.
            RetryHelper.RetryUntil(() =>
            {
                var remainingVhdsLeased = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);
                return(!remainingVhdsLeased.Any());
            }, 30, TimeSpan.FromSeconds(5));
        }
        /// <summary>
        ///     Deploy worker role
        /// </summary>
        /// <param name="packagePath"></param>
        /// <param name="configPath"></param>
        /// <param name="roleName"></param>
        /// <param name="deploymentSlot"></param>
        /// <returns></returns>
        public DeploymentInfo DeployRole(string packagePath, string configPath, string roleName = "",
            DeploymentSlot deploymentSlot = DeploymentSlot.Production)
        {
            var storageManager = new AzureStorageServiceManager();

            var service = storageManager.CreateStorageService();
            var blob = service.CreateBlob(Path.GetFileName(packagePath));
            var packageBlobUri = blob.UploadFile(packagePath);

            roleName = CreateHostedService(roleName);

            var deployment = CreateOrUpdateDeployment(roleName, packageBlobUri, configPath, deploymentSlot: deploymentSlot);

            return new DeploymentInfo { HostedService = roleName, Deployment = deployment };
        }
        /// <summary>
        ///     Break leases on vhd blobs
        /// </summary>
        /// <param name="hostedServiceName"></param>
        /// <param name="vhdBlobContainer"></param>
        public void BreakVhdLeases(string hostedServiceName, string vhdBlobContainer = "vhds")
        {
            var storageManager = new AzureStorageServiceManager();
            var vhdManager = new AzureVirtualMachineManager();
            var vhdsLeased = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);
            foreach (var vhd in vhdsLeased)
            {
                var storage = storageManager.GetStorageServiceForBlob(vhd.MediaLinkUri);
                var blob = storage.GetBlob(Path.GetFileName(vhd.MediaLinkUri.ToString()), vhdBlobContainer);

                TestEasyLog.Instance.Info("Breaking lease on [" + blob.Uri + "]");

                blob.BreakLease(TimeSpan.FromSeconds(1));
            }

            TestEasyLog.Instance.Info("Waiting for VHDs to be released");
            // now wait a short while for the lease to actually expire.
            RetryHelper.RetryUntil(() =>
            {
                var remainingVhdsLeased = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);
                return !remainingVhdsLeased.Any();
            }, 30, TimeSpan.FromSeconds(5));
        }
        /// <summary>
        ///     Get storage accounts that are used by hosted service
        /// </summary>
        /// <param name="hostedServiceName"></param>
        /// <returns></returns>
        public IList<StorageAccount> GetStorageAccountsUsedByHostedService(string hostedServiceName)
        {
            var uniqueStorageAccounts = new HashSet<StorageAccount>();
            var storageManager = new AzureStorageServiceManager();
            var vhdManager = new AzureVirtualMachineManager();
            var vhdsLeased = vhdManager.GetVirtualHardDisks().Where(vhd => vhd.UsageDetails.HostedServiceName == hostedServiceName);
            foreach (var vhd in vhdsLeased)
            {
                var storageAccount = storageManager.GetStorageServiceForBlob(vhd.MediaLinkUri);
                uniqueStorageAccounts.Add(storageAccount);
            }

            return uniqueStorageAccounts.ToList();
        }
        private void CleanupStorageServices(AzureResourceType type, Dictionary<string, object> resources)
        {
            SafeExecute(() =>
                {
                    var manager = new AzureStorageServiceManager();
                    foreach (var obj in resources.Values)
                    {
                        var service = obj as string;

                        if (service == null)
                        {
                            throw new Exception(string.Format("Incorrect resource was stored in '{0}' collection", type));
                        }

                        if (manager.GetStorageService(service) != null)
                        {
                            manager.DeleteStorageService(service);
                        }
                    }

                    resources.Clear();
                }, type.ToString());
        }
 /// <summary>
 ///     Constructs connection string for storage service
 /// </summary>
 /// <param name="service"></param>
 /// <returns></returns>
 public static string GetConnectionString(this StorageAccount service)
 {
     var manager = new AzureStorageServiceManager();
     return manager.GetStorageServiceConnectionString(service.Name);
 }
Example #10
0
        /// <summary>
        ///     Constructs connection string for storage service
        /// </summary>
        /// <param name="service"></param>
        /// <returns></returns>
        public static string GetConnectionString(this StorageAccount service)
        {
            var manager = new AzureStorageServiceManager();

            return(manager.GetStorageServiceConnectionString(service.Name));
        }