コード例 #1
0
 public AzureHDInsightCluster(Cluster cluster)
 {
     Id = cluster.Id;
     Name = cluster.Name;
     Location = cluster.Location;
     ClusterVersion = cluster.Properties.ClusterVersion;
     OperatingSystemType = cluster.Properties.OperatingSystemType;
     ClusterTier = cluster.Properties.ClusterTier;
     ClusterState = cluster.Properties.ClusterState;
     ClusterType = cluster.Properties.ClusterDefinition.ClusterType;
     CoresUsed = cluster.Properties.QuotaInfo.CoresUsed;
     var httpEndpoint =
         cluster.Properties.ConnectivityEndpoints.FirstOrDefault(c => c.Name.Equals("HTTPS", StringComparison.OrdinalIgnoreCase));
     HttpEndpoint = httpEndpoint != null ? httpEndpoint.Location : null;
     Error = cluster.Properties.ErrorInfos.Select(s => s.Message).FirstOrDefault();
     ResourceGroup = ClusterConfigurationUtils.GetResourceGroupFromClusterId(cluster.Id);
     ComponentVersion = new List<string>();
     foreach(var componentVersion in cluster.Properties.ClusterDefinition.ComponentVersion)
     {
         ComponentVersion.Add(componentVersion.ToString());
     }
     var clusterSecurityProfile = cluster.Properties.SecurityProfile;
     SecurityProfile = clusterSecurityProfile != null ? new AzureHDInsightSecurityProfile()
     {
         Domain = clusterSecurityProfile.Domain,
         //We should not be returning the actual password to the user
         DomainUserCredential = new PSCredential(clusterSecurityProfile.DomainUsername, "***".ConvertToSecureString()),
         OrganizationalUnitDN = clusterSecurityProfile.OrganizationalUnitDN,
         LdapsUrls = clusterSecurityProfile.LdapsUrls != null ? clusterSecurityProfile.LdapsUrls.ToArray() : null,
         ClusterUsersGroupDNs = clusterSecurityProfile.ClusterUsersGroupDNs != null ? clusterSecurityProfile.ClusterUsersGroupDNs.ToArray() : null,
     } : null;
 }
コード例 #2
0
        public void CanResizeCluster()
        {
            var cluster = new Cluster
            {
                Id = "id",
                Name = ClusterName + "1",
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.1",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = "Hadoop"
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Windows
                },
            };

            var getresponse = new ClusterGetResponse { Cluster = cluster };
            hdinsightManagementMock.Setup(c => c.Get(ResourceGroupName, ClusterName))
                .Returns(getresponse)
                .Verifiable();

            hdinsightManagementMock.Setup(c => c.GetCluster(It.IsAny<string>(), It.IsAny<string>()))
                .CallBase()
                .Verifiable();

            hdinsightManagementMock.Setup(
                c =>
                    c.ResizeCluster(ResourceGroupName, ClusterName,
                        It.Is<ClusterResizeParameters>(
                            param => param.TargetInstanceCount == targetcount)))
                .Returns(new HDInsightLongRunningOperationResponse
                {
                    Error = null,
                    StatusCode = HttpStatusCode.OK,
                    Status = OperationStatus.Succeeded
                })
                .Verifiable();

            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.VerifyAll();
            commandRuntimeMock.Verify(f => f.WriteObject(It.Is<AzureHDInsightCluster>(c => c.Name == cluster.Name)),
                Times.Once);
        }
コード例 #3
0
        public AzureHDInsightCluster(Cluster cluster, IDictionary<string, string> clusterConfiguration)
            : this(cluster)
        {
            if (clusterConfiguration != null)
            {
                var defaultAccount = ClusterConfigurationUtils.GetDefaultStorageAccountDetails(
                clusterConfiguration,
                cluster.Properties.ClusterVersion);

                DefaultStorageAccount = defaultAccount.StorageAccountName;
                DefaultStorageContainer = defaultAccount.StorageContainerName;

                AdditionalStorageAccounts = ClusterConfigurationUtils.GetAdditionStorageAccounts(clusterConfiguration, DefaultStorageAccount);
            }
        }
コード例 #4
0
        public AzureHDInsightCluster(Cluster cluster)
        {
            Id = cluster.Id;
            Name = cluster.Name;
            Location = cluster.Location;
            ClusterVersion = cluster.Properties.ClusterVersion;
            OperatingSystemType = cluster.Properties.OperatingSystemType;
            ClusterState = cluster.Properties.ClusterState;
            ClusterType = cluster.Properties.ClusterDefinition.ClusterType;
            CoresUsed = cluster.Properties.QuotaInfo.CoresUsed;
            var httpEndpoint =
                cluster.Properties.ConnectivityEndpoints.FirstOrDefault(c => c.Name.Equals("HTTPS", StringComparison.OrdinalIgnoreCase));
            HttpEndpoint = httpEndpoint != null ? httpEndpoint.Location : null;

        }
コード例 #5
0
 public AzureHDInsightCluster(Cluster cluster)
 {
     Id = cluster.Id;
     Name = cluster.Name;
     Location = cluster.Location;
     ClusterVersion = cluster.Properties.ClusterVersion;
     OperatingSystemType = cluster.Properties.OperatingSystemType;
     ClusterState = cluster.Properties.ClusterState;
     ClusterType = cluster.Properties.ClusterDefinition.ClusterType;
     CoresUsed = cluster.Properties.QuotaInfo.CoresUsed;
     var httpEndpoint =
         cluster.Properties.ConnectivityEndpoints.FirstOrDefault(c => c.Name.Equals("HTTPS", StringComparison.OrdinalIgnoreCase));
     HttpEndpoint = httpEndpoint != null ? httpEndpoint.Location : null;
     Error = cluster.Properties.ErrorInfos.Select(s => s.Message).FirstOrDefault();
     ResourceGroup = ClusterConfigurationUtils.GetResourceGroupFromClusterId(cluster.Id);
 }
コード例 #6
0
        public virtual void SetupManagementClientForJobTests()
        {
            // Update HDInsight Management properties for Job.
            var cluster1 = new Cluster
            {
                Id = "/subscriptions/" + Guid.NewGuid() + "/resourceGroups/" + ResourceGroupName + "/providers/Microsoft.HDInsight/clusters/" + ClusterName,
                Name = ClusterName,
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.2",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Windows,
                    ConnectivityEndpoints = new List<ConnectivityEndpoint> { new ConnectivityEndpoint { Location = ClusterName, Name = "HTTPS" } }
                }
            };

            var listresponse = new ClusterListResponse { Clusters = new[] { cluster1 } };
            hdinsightManagementMock.Setup(c => c.ListClusters())
                .Returns(listresponse)
                .Verifiable();

            hdinsightManagementMock.Setup(c => c.GetCluster(It.IsAny<string>(), It.IsAny<string>()))
                .Returns(new List<Cluster> { cluster1 })
                .Verifiable();

            var configurationResponse = new Dictionary<string, string>();

            hdinsightManagementMock.Setup(c => c.GetClusterConfigurations(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
                .Returns(configurationResponse)
                .Verifiable();
        }
コード例 #7
0
        public void CanGetHDInsightCluster()
        {
            cmdlet.ClusterName = ClusterName;
            cmdlet.ResourceGroupName = ResourceGroupName;
            var cluster = new Cluster
            {
                Id = "id",
                Name = ClusterName,
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.1",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Windows
                }
            };

            var getresponse = new ClusterGetResponse { Cluster = cluster };
            hdinsightManagementMock.Setup(c => c.Get(ResourceGroupName, ClusterName))
                .Returns(getresponse)
                .Verifiable(); 
            
            hdinsightManagementMock.Setup(c => c.GetCluster(It.IsAny<string>(), It.IsAny<string>()))
                .CallBase()
                .Verifiable();
            
            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.VerifyAll();
            commandRuntimeMock.Verify(f => f.WriteObject(It.IsAny<List<AzureHDInsightCluster>>(), true), Times.Once);
        }
コード例 #8
0
        public void CanCreateNewPremiumHDInsightCluster()
        {
            cmdlet.ClusterName = ClusterName;
            cmdlet.ResourceGroupName = ResourceGroupName;
            cmdlet.ClusterSizeInNodes = ClusterSize;
            cmdlet.Location = Location;
            cmdlet.HttpCredential = _httpCred;
            cmdlet.DefaultStorageAccountName = StorageName;
            cmdlet.DefaultStorageAccountKey = StorageKey;
            cmdlet.ClusterType = ClusterType;
            cmdlet.OSType = OSType.Linux;
            cmdlet.ClusterTier = Tier.Premium;
            cmdlet.SshCredential = _httpCred;
            var cluster = new Cluster
            {
                Id = "id",
                Name = ClusterName,
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.2",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Linux,
                    ClusterTier = Tier.Premium
                }
            };
            var coreConfigs = new Dictionary<string, string>
            {
                {"fs.defaultFS", "wasb://giyertestcsmv2@" + StorageName},
                {
                    "fs.azure.account.key." + StorageName,
                    StorageKey
                }
            };
            var gatewayConfigs = new Dictionary<string, string>
            {
                {"restAuthCredential.isEnabled", "true"},
                {"restAuthCredential.username", _httpCred.UserName},
                {"restAuthCredential.password", _httpCred.Password.ConvertToString()}
            };

            var configurations = new Dictionary<string, Dictionary<string, string>>
            {
                {"core-site", coreConfigs},
                {"gateway", gatewayConfigs}
            };
            var serializedConfig = JsonConvert.SerializeObject(configurations);
            cluster.Properties.ClusterDefinition.Configurations = serializedConfig;

            var getresponse = new ClusterGetResponse {Cluster = cluster};
            
            hdinsightManagementMock.Setup(c => c.CreateNewCluster(ResourceGroupName, ClusterName, It.Is<ClusterCreateParameters>(
                parameters => 
                    parameters.ClusterSizeInNodes == ClusterSize &&
                    parameters.DefaultStorageAccountName == StorageName &&
                    parameters.DefaultStorageAccountKey == StorageKey &&
                    parameters.Location == Location &&
                    parameters.UserName == _httpCred.UserName &&
                    parameters.Password == _httpCred.Password.ConvertToString() &&
                    parameters.SshUserName == _httpCred.UserName &&
                    parameters.SshPassword == _httpCred.Password.ConvertToString() &&
                    parameters.ClusterType == ClusterType &&
                    parameters.OSType == OSType.Linux &&
                    parameters.ClusterTier == Tier.Premium)))
            .Returns(getresponse)
            .Verifiable();    
            
            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.VerifyAll();
            commandRuntimeMock.Verify(f => f.WriteObject(It.Is<AzureHDInsightCluster>(
                clusterout =>
                    clusterout.ClusterState == "Running" &&
                    clusterout.ClusterType == ClusterType &&
                    clusterout.ClusterVersion == "3.2" &&
                    clusterout.CoresUsed == 24 &&
                    clusterout.Location == Location &&
                    clusterout.Name == ClusterName &&
                    clusterout.OperatingSystemType == OSType.Linux &&
                    clusterout.ClusterTier == Tier.Premium)), 
                    Times.Once);
        }
コード例 #9
0
        private void CreateNewHDInsightCluster(bool addSecurityProfileInresponse = false)
        {
            cmdlet.ClusterName = ClusterName;
            cmdlet.ResourceGroupName = ResourceGroupName;
            cmdlet.ClusterSizeInNodes = ClusterSize;
            cmdlet.Location = Location;
            cmdlet.HttpCredential = _httpCred;
            cmdlet.DefaultStorageAccountName = StorageName;
            cmdlet.DefaultStorageAccountKey = StorageKey;
            cmdlet.ClusterType = ClusterType;
            cmdlet.SshCredential = _sshCred;
            cmdlet.OSType = OSType.Linux;
            
            var cluster = new Cluster
            {
                Id = "id",
                Name = ClusterName,
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.1",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Linux
                }
            };

            if (addSecurityProfileInresponse)
            {
                cluster.Properties.SecurityProfile = new SecurityProfile()
                {
                    Domain = "domain.com",
                    DomainUsername = "******",
                    DomainUserPassword = "******",
                    OrganizationalUnitDN = "OUDN",
                    LdapsUrls = new[]
                    {
                        "ldapsurl"
                    },
                    ClusterUsersGroupDNs = new[]
                    {
                        "userGroupDn"
                    }
                };
            }

            var coreConfigs = new Dictionary<string, string>
            {
                {"fs.defaultFS", "wasb://giyertestcsmv2@" + StorageName},
                {
                    "fs.azure.account.key." + StorageName,
                    StorageKey
                }
            };
            var gatewayConfigs = new Dictionary<string, string>
            {
                {"restAuthCredential.isEnabled", "true"},
                {"restAuthCredential.username", _httpCred.UserName},
                {"restAuthCredential.password", _httpCred.Password.ConvertToString()}
            };

            var configurations = new Dictionary<string, Dictionary<string, string>>
            {
                {"core-site", coreConfigs},
                {"gateway", gatewayConfigs}
            };
            var serializedConfig = JsonConvert.SerializeObject(configurations);
            cluster.Properties.ClusterDefinition.Configurations = serializedConfig;

            var getresponse = new ClusterGetResponse {Cluster = cluster};

            hdinsightManagementMock.Setup(
                c => c.CreateNewCluster(ResourceGroupName, ClusterName, It.Is<ClusterCreateParameters>(
                    parameters =>
                        parameters.ClusterSizeInNodes == ClusterSize &&
                        parameters.DefaultStorageAccountName == StorageName &&
                        parameters.DefaultStorageAccountKey == StorageKey &&
                        parameters.Location == Location &&
                        parameters.UserName == _httpCred.UserName &&
                        parameters.Password == _httpCred.Password.ConvertToString() &&
                        parameters.ClusterType == ClusterType &&
                        parameters.OSType == OSType.Linux &&
                        parameters.SshUserName == _sshCred.UserName &&
                        parameters.SshPassword == _sshCred.Password.ConvertToString())))
                .Returns(getresponse)
                .Verifiable();

            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.VerifyAll();
            commandRuntimeMock.Verify(f => f.WriteObject(It.Is<AzureHDInsightCluster>(
                clusterout =>
                    clusterout.ClusterState == "Running" &&
                    clusterout.ClusterType == ClusterType &&
                    clusterout.ClusterVersion == "3.1" &&
                    clusterout.CoresUsed == 24 &&
                    clusterout.Location == Location &&
                    clusterout.Name == ClusterName &&
                    clusterout.OperatingSystemType == OSType.Linux)),
                    Times.Once);
        }
コード例 #10
0
 private static string ClusterToString(Cluster cluster)
 {
     var sb = new StringBuilder();
     sb.AppendFormat("\r\n\tResourceGroup: {0}\r\n", HDInsightManagementCLIHelpers.GetResourceGroupNameFromClusterId(cluster.Id));
     sb.AppendFormat("\t{0}\r\n", cluster.ToDisplayString().Replace("\n", "\n\t"));
     sb.AppendFormat("\tUserClusterTablePrefix: {0}\r\n", HDInsightManagementCLIHelpers.GetUserClusterTablePrefix(cluster));
     return sb.ToString();
 }
コード例 #11
0
        public void CanListHDInsightClustersInRG()
        {
            cmdlet.ResourceGroupName = ResourceGroupName;
            var cluster1 = new Cluster
            {
                Id = "id",
                Name = ClusterName + "1",
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.1",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Windows
                }
            };

            var cluster2 = new Cluster
            {
                Id = "id",
                Name = ClusterName + "2",
                Location = Location,
                Properties = new ClusterGetProperties
                {
                    ClusterVersion = "3.1",
                    ClusterState = "Running",
                    ClusterDefinition = new ClusterDefinition
                    {
                        ClusterType = ClusterType
                    },
                    QuotaInfo = new QuotaInfo
                    {
                        CoresUsed = 24
                    },
                    OperatingSystemType = OSType.Windows
                }
            };

            var listresponse = new ClusterListResponse {Clusters = new[] {cluster1, cluster2}};
            hdinsightManagementMock.Setup(c => c.ListClusters(ResourceGroupName))
                .Returns(listresponse)
                .Verifiable();

            hdinsightManagementMock.Setup(c => c.GetCluster(It.IsAny<string>(), It.IsAny<string>()))
                .CallBase()
                .Verifiable();

            cmdlet.ExecuteCmdlet();

            commandRuntimeMock.VerifyAll();
            commandRuntimeMock.Verify(
                f =>
                    f.WriteObject(
                        It.Is<List<AzureHDInsightCluster>>(
                            list =>
                                list.Count == 2 &&
                                list.Any(c => c.Name == cluster1.Name) &&
                                list.Any(c => c.Name == cluster2.Name)), true), Times.Once);
        }