public StandaloneAzureSettings(StandaloneConfiguration standaloneConfiguration)
        {
            var xDocument = XDocument.Load(standaloneConfiguration.ConfigurationPath);

            XNamespace serviceConfigurationNamespace = xDocument.Root
                                                       .Attributes()
                                                       .Where(a => a.IsNamespaceDeclaration)
                                                       .First(a => a.Value.Contains("ServiceConfiguration"))
                                                       .Value;

            var roleElement = xDocument.Descendants(serviceConfigurationNamespace + "Role")
                              .FirstOrDefault(r => r.Attribute("name").Value == standaloneConfiguration.RoleName);

            if (roleElement == null)
            {
                throw new InvalidOperationException(
                          string.Format(
                              CultureInfo.InvariantCulture,
                              "Cannot find configuration for the role '{0}' in '{1}'",
                              standaloneConfiguration.RoleName,
                              standaloneConfiguration.ConfigurationPath));
            }

            _settings = roleElement.Descendants(serviceConfigurationNamespace + "ConfigurationSettings")
                        .Descendants(serviceConfigurationNamespace + "Setting")
                        .ToDictionary(s => s.Attribute("name").Value, s => s.Attribute("value").Value);
        }
        public StandaloneAzureSettings(StandaloneConfiguration standaloneConfiguration)
        {
            var xDocument = XDocument.Load(standaloneConfiguration.ConfigurationPath);

            XNamespace serviceConfigurationNamespace = xDocument.Root
                .Attributes()
                .Where(a => a.IsNamespaceDeclaration)
                .First(a => a.Value.Contains("ServiceConfiguration"))
                .Value;

            var roleElement = xDocument.Descendants(serviceConfigurationNamespace + "Role")
                .FirstOrDefault(r => r.Attribute("name").Value == standaloneConfiguration.RoleName);

            if (roleElement == null)
            {
                throw new InvalidOperationException(
                    string.Format(
                        CultureInfo.InvariantCulture,
                        "Cannot find configuration for the role '{0}' in '{1}'",
                        standaloneConfiguration.RoleName,
                        standaloneConfiguration.ConfigurationPath));
            }

            _settings = roleElement.Descendants(serviceConfigurationNamespace + "ConfigurationSettings")
                .Descendants(serviceConfigurationNamespace + "Setting")
                .ToDictionary(s => s.Attribute("name").Value, s => s.Attribute("value").Value);
        }
 public EnvironmentDefinition(
     AzureEnvironment azureEnvironment,
     HostingType hostingType,
     StandaloneConfiguration standaloneConfiguration)
 {
     _azureEnvironment = azureEnvironment;
     _hostingType = hostingType;
     _standaloneConfiguration = standaloneConfiguration;
 }
 public StandaloneAzureLocalResourceSourceTests()
     : base(DirectoryType.Account)
 {
     _standaloneConfiguration = new StandaloneConfiguration
     {
         ServiceDefinitionPath = "ServiceDefinition.csdef",
         RoleName = "TestWebRole"
     };
 }
        public void InitializeLogicalContext(string configurationPath, string serviceDefinitionPath, string roleName, bool useHostedStorage)
        {
            if (IsInitialized()) throw new InvalidOperationException("Logical call context has already been initialized for this thread.");

            Config = new StandaloneConfiguration
            {
                ConfigurationPath = configurationPath,
                ServiceDefinitionPath = serviceDefinitionPath,
                RoleName = roleName,
                UseHostedStorage = useHostedStorage,
            };
        }
        public static void SetAsLightBlue(
            string configurationPath,
            string serviceDefinitionPath,
            string roleName)
        {
            _initialised = true;
            _environment = AzureEnvironment.LightBlue;

            StandaloneConfiguration = new StandaloneConfiguration
            {
                ConfigurationPath = configurationPath,
                ServiceDefinitionPath = serviceDefinitionPath,
                RoleName = roleName
            };
        }
        public LightBlueAppDomainContext(string configurationPath, string serviceDefinitionPath, string roleName, bool useHostedStorage)
        {
            _roleName = roleName;

            var configuration = new StandaloneConfiguration
            {
                ConfigurationPath = configurationPath,
                ServiceDefinitionPath = serviceDefinitionPath,
                RoleName = roleName,
                UseHostedStorage = useHostedStorage,
            };

            _settings = new StandaloneAzureSettings(configuration);
            _localResources = new StandaloneAzureLocalResourceSource(configuration, StandaloneEnvironment.LightBlueDataDirectory);
        }
        public StandaloneAzureLocalResourceSource(StandaloneConfiguration standaloneConfiguration, string dataDirectory)
        {
            var xDocument = XDocument.Load(standaloneConfiguration.ServiceDefinitionPath);

            XNamespace serviceDefinitionNamespace = xDocument.Root
                                                    .Attributes()
                                                    .Where(a => a.IsNamespaceDeclaration)
                                                    .First(a => a.Value.Contains("ServiceDefinition"))
                                                    .Value;

            var roleElement = xDocument.Root.Elements()
                              .First(e => e.Attribute("name").Value == standaloneConfiguration.RoleName);

            var localResourcesElement = roleElement.Descendants(serviceDefinitionNamespace + "LocalResources")
                                        .FirstOrDefault();

            if (localResourcesElement == null)
            {
                _localResources = new Dictionary <string, StandaloneAzureLocalResource>();
                return;
            }

            var processId = standaloneConfiguration.RoleName
                            + "-"
                            + Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture);

            _localResources = localResourcesElement.Descendants()
                              .ToDictionary(
                e => e.Attribute("name").Value,
                e => new StandaloneAzureLocalResource
            {
                Name = e.Attribute("name").Value,
                MaximumSizeInMegabytes = Int32.Parse(e.Attribute("sizeInMB").Value),
                RootPath = Path.Combine(
                    dataDirectory,
                    ".resources",
                    processId,
                    e.Attribute("name").Value)
            });
        }
        public StandaloneAzureLocalResourceSource(StandaloneConfiguration standaloneConfiguration, string dataDirectory)
        {
            var xDocument = XDocument.Load(standaloneConfiguration.ServiceDefinitionPath);

            XNamespace serviceDefinitionNamespace = xDocument.Root
                .Attributes()
                .Where(a => a.IsNamespaceDeclaration)
                .First(a => a.Value.Contains("ServiceDefinition"))
                .Value;

            var roleElement = xDocument.Root.Elements()
                .First(e => e.Attribute("name").Value == standaloneConfiguration.RoleName);

            var localResourcesElement = roleElement.Descendants(serviceDefinitionNamespace + "LocalResources")
                .FirstOrDefault();

            if (localResourcesElement == null)
            {
                _localResources = new Dictionary<string, StandaloneAzureLocalResource>();
                return;
            }

            var processId = standaloneConfiguration.RoleName
                + "-"
                + Process.GetCurrentProcess().Id.ToString(CultureInfo.InvariantCulture);

            _localResources = localResourcesElement.Descendants()
                .ToDictionary(
                    e => e.Attribute("name").Value,
                    e => new StandaloneAzureLocalResource
                    {
                        Name = e.Attribute("name").Value,
                        MaximumSizeInMegabytes = Int32.Parse(e.Attribute("sizeInMB").Value),
                        RootPath = Path.Combine(
                            dataDirectory,
                            ".resources",
                            processId,
                            e.Attribute("name").Value)
                    });
        }