Beispiel #1
0
        public static void ValidateRoles(IList <Role> roleCollection, ClusterCreateParameters createParams)
        {
            Assert.NotNull(roleCollection);
            foreach (Role role in roleCollection)
            {
                ValidateOsProfile(role.OsProfile, createParams);
                ValidateVnet(role.VirtualNetworkProfile, createParams);

                Assert.NotNull(role.HardwareProfile);
                Assert.True(Enum.TryParse(role.Name, true, out ClusterNodeType nodeType));
                Assert.Equal(CreateParametersConverter.GetNodeSize(createParams, nodeType), role.HardwareProfile.VmSize);

                if (createParams.ScriptActions != null && createParams.ScriptActions.ContainsKey(nodeType))
                {
                    Assert.Equal(createParams.ScriptActions[nodeType], role.ScriptActions);
                }
            }

            //Validate headnode.
            Role headnode = roleCollection.FirstOrDefault(role => role.Name == "headnode");

            Assert.NotNull(headnode);
            int targetCount = createParams.ClusterType.Equals("Sandbox", StringComparison.OrdinalIgnoreCase) ? 1 : 2;

            Assert.Equal(targetCount, headnode.TargetInstanceCount);

            //Sandbox clusters only have 1 headnode. Return if Sandbox.
            if (createParams.ClusterType.Equals("Sandbox", StringComparison.OrdinalIgnoreCase))
            {
                Assert.Equal(1, roleCollection.Count);
                return;
            }

            //Validate workernode.
            Role workernode = roleCollection.FirstOrDefault(role => role.Name == "workernode");

            Assert.NotNull(workernode);
            Assert.Equal(createParams.ClusterSizeInNodes, workernode.TargetInstanceCount);

            //Validate zookeeper.
            Role zookeepernode = roleCollection.FirstOrDefault(role => role.Name == "zookeepernode");

            Assert.NotNull(zookeepernode);
            Assert.Equal(3, zookeepernode.TargetInstanceCount);

            //RServer & MLServices clusters contain an additional edge node. Return if not RServer or not MLServices.
            if (!new [] { "RServer", "MLServices" }.Contains(createParams.ClusterType, StringComparer.OrdinalIgnoreCase))
            {
                Assert.Equal(3, roleCollection.Count);
                return;
            }

            //Validate edgenode.
            Role edgenode = roleCollection.FirstOrDefault(role => role.Name == "edgenode");

            Assert.NotNull(edgenode);
            Assert.Equal(1, edgenode.TargetInstanceCount);

            Assert.Equal(4, roleCollection.Count);
        }
Beispiel #2
0
        public static void ValidateSpecConversion(ClusterCreateParameters createParams)
        {
            //Convert spec.
            ClusterCreateParametersExtended extendedParams = CreateParametersConverter.GetExtendedClusterCreateParameters("testCluster", createParams);

            //Validate properties.
            Assert.Equal(createParams.Tags, extendedParams.Tags);
            Assert.Equal(createParams.Location, extendedParams.Location);
            Assert.Equal(createParams.ClusterType, extendedParams.Properties.ClusterDefinition.Kind);
            Assert.Equal(createParams.ComponentVersion, extendedParams.Properties.ClusterDefinition.ComponentVersion);
            Assert.Equal(createParams.ClusterTier, extendedParams.Properties.Tier);
            Assert.Equal(createParams.Version, extendedParams.Properties.ClusterVersion);
            Assert.Equal(OSType.Linux, extendedParams.Properties.OsType);
            Assert.Equal(createParams.SecurityProfile, extendedParams.Properties.SecurityProfile);
            ValidateStorageProfile(createParams.DefaultStorageInfo, extendedParams.Properties.StorageProfile);

            //Validate configurations.
            Dictionary <string, Dictionary <string, string> > configurations = extendedParams.Properties.ClusterDefinition.Configurations as Dictionary <string, Dictionary <string, string> >;

            Assert.NotNull(configurations);
            ValidateStorageConfigurations(configurations, createParams.DefaultStorageInfo, createParams.AdditionalStorageAccounts);
            ValidateClusterCredentialConfigurations(configurations);
            ValidateAdlConfigurations(configurations, createParams.Principal);
            ValidateHiveMetastoreConfigurations(configurations, createParams.HiveMetastore);
            ValidateOozieMetastoreConfigurations(configurations, createParams.OozieMetastore);

            //Validate roles.
            ValidateRoles(extendedParams.Properties.ComputeProfile.Roles, createParams);
        }
        public virtual Cluster CreateNewCluster(string resourceGroupName, string clusterName, OSType osType, ClusterCreateParameters parameters)
        {
            var createParams = CreateParametersConverter.GetExtendedClusterCreateParameters(clusterName, parameters);

            createParams.Properties.OsType = osType;
            return(HdInsightManagementClient.Clusters.Create(resourceGroupName, clusterName, createParams));
        }
        public virtual Cluster CreateNewCluster(string resourceGroupName, string clusterName, OSType osType, ClusterCreateParameters parameters,
                                                string minSupportedTlsVersion        = default(string), string cloudAadAuthority       = default(string),
                                                string cloudDataLakeAudience         = default(string), string PublicNetworkAccessType = default(string),
                                                string OutboundOnlyNetworkAccessType = default(string), bool?EnableEncryptionInTransit = default(bool?))
        {
            var createParams = CreateParametersConverter.GetExtendedClusterCreateParameters(clusterName, parameters);

            createParams.Properties.OsType = osType;
            createParams.Properties.MinSupportedTlsVersion = minSupportedTlsVersion;
            ResetClusterIdentity(createParams, cloudAadAuthority, cloudDataLakeAudience);

            if (EnableEncryptionInTransit.HasValue)
            {
                createParams.Properties.EncryptionInTransitProperties = new EncryptionInTransitProperties()
                {
                    IsEncryptionInTransitEnabled = EnableEncryptionInTransit
                };
            }

            if (!string.IsNullOrEmpty(PublicNetworkAccessType) || !string.IsNullOrEmpty(OutboundOnlyNetworkAccessType))
            {
                NetworkSettings networkSettings = new NetworkSettings()
                {
                    PublicNetworkAccess = PublicNetworkAccessType,
                    OutboundOnlyPublicNetworkAccessType = OutboundOnlyNetworkAccessType
                };
                createParams.Properties.NetworkSettings = networkSettings;
            }

            return(HdInsightManagementClient.Clusters.Create(resourceGroupName, clusterName, createParams));
        }
        public virtual Cluster CreateNewCluster(string resourceGroupName, string clusterName, OSType osType, ClusterCreateParameters parameters, string minSupportedTlsVersion = default(string), string cloudAadAuthority = default(string), string cloudDataLakeAudience = default(string))
        {
            var createParams = CreateParametersConverter.GetExtendedClusterCreateParameters(clusterName, parameters);

            createParams.Properties.OsType = osType;
            createParams.Properties.MinSupportedTlsVersion = minSupportedTlsVersion;
            ResetClusterIdentity(createParams, cloudAadAuthority, cloudDataLakeAudience);
            return(HdInsightManagementClient.Clusters.Create(resourceGroupName, clusterName, createParams));
        }
Beispiel #6
0
        public void CanConvertHadoopClusterWithCustomMetastoresToMarchSpecWithConfigurations()
        {
            ClusterCreateParameters createParams = GetClusterCreateParamsWithMinRequiredValues();

            createParams.HiveMetastore  = new Metastore("server.database.windows.net", "hiveDb", "username", "password");
            createParams.OozieMetastore = new Metastore("server.database.windows.net", "oozieDb", "username", "password");
            Dictionary <string, string> testConfig = new Dictionary <string, string>
            {
                { "key", "value" }
            };

            createParams.Configurations.Add(ConfigurationKey.HiveSite, testConfig);
            createParams.Configurations.Add(ConfigurationKey.HiveEnv, testConfig);
            createParams.Configurations.Add(ConfigurationKey.OozieEnv, testConfig);
            createParams.Configurations.Add(ConfigurationKey.OozieSite, testConfig);

            ClusterCreateParametersExtended extendedParams = CreateParametersConverter.GetExtendedClusterCreateParameters("testCluster", createParams);
            Dictionary <string, Dictionary <string, string> > configurations = extendedParams.Properties.ClusterDefinition.Configurations as Dictionary <string, Dictionary <string, string> >;

            Assert.True(configurations.ContainsKey(ConfigurationKey.HiveSite));
            Dictionary <string, string> hiveSiteConfig = configurations[ConfigurationKey.HiveSite];

            Assert.Equal(5, hiveSiteConfig.Count);
        }
Beispiel #7
0
        public static void ValidateCluster(ClusterCreateParameters parameters, Cluster cluster, string clustername)
        {
            ClusterCreateParametersExtended extendedParams = CreateParametersConverter.GetExtendedClusterCreateParameters(clustername, parameters);

            ValidateCluster(extendedParams, cluster, clustername);
        }
Beispiel #8
0
        public void ConvertParametersWithMissingNoProvidedPropertiesShouldNotThrow()
        {
            ClusterCreateParameters createParams = new ClusterCreateParameters();

            ClusterCreateParametersExtended extendedParams = CreateParametersConverter.GetExtendedClusterCreateParameters("testCluster", createParams);
        }