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()); }
static void Create(string subscriptionId, string resourceGroupName, string clusterDnsName, string clusterLocation, AzureStorageConfig defaultStorageAccount, int clusterSize, string clusterUsername, string clusterPassword, string hdInsightVersion, string clusterType, string osType, List <AzureStorageConfig> additionalStorageAccounts, List <SqlAzureConfig> sqlAzureMetaStores, string virtualNetworkId = null, string subnetName = null, string headNodeSize = null, string workerNodeSize = null, string zookeeperSize = null) { Logger.InfoFormat("ResourceGroup: {0}, Cluster: {1} - Submitting a new cluster deployment request", resourceGroupName, clusterDnsName); var clusterCreateParameters = new ClusterCreateParameters() { ClusterSizeInNodes = clusterSize, ClusterType = clusterType, DefaultStorageAccountName = defaultStorageAccount.Name, DefaultStorageAccountKey = defaultStorageAccount.Key, DefaultStorageContainer = defaultStorageAccount.Container, Location = clusterLocation, Password = clusterPassword, UserName = clusterUsername, Version = hdInsightVersion, OSType = (OSType)Enum.Parse(typeof(OSType), osType.ToString()), HeadNodeSize = headNodeSize, WorkerNodeSize = workerNodeSize, ZookeeperNodeSize = zookeeperSize }; if (clusterCreateParameters.OSType == OSType.Linux) { clusterCreateParameters.SshUserName = config.SshUsername; if (!String.IsNullOrWhiteSpace(config.SshPassword)) { clusterCreateParameters.SshPassword = config.SshPassword; } else if (File.Exists(config.SshPublicKeyFilePath)) { var publicKey = File.ReadAllText(config.SshPublicKeyFilePath); Logger.Debug("SSH RSA Public Key: " + Environment.NewLine + publicKey + Environment.NewLine); clusterCreateParameters.SshPublicKey = publicKey; } else if (String.IsNullOrWhiteSpace(config.SshPassword)) { clusterCreateParameters.SshPassword = config.ClusterPassword; } } else { if (config.AutoEnableRdp) { clusterCreateParameters.RdpUsername = config.RdpUsername; clusterCreateParameters.RdpPassword = config.RdpPassword; clusterCreateParameters.RdpAccessExpiry = DateTime.Now.AddDays(int.Parse(config.RdpExpirationInDays)); } } foreach (var additionalStorageAccount in additionalStorageAccounts) { clusterCreateParameters.AdditionalStorageAccounts.Add(additionalStorageAccount.Name, additionalStorageAccount.Key); } if (!String.IsNullOrEmpty(virtualNetworkId) && !String.IsNullOrEmpty(subnetName)) { clusterCreateParameters.VirtualNetworkId = virtualNetworkId; clusterCreateParameters.SubnetName = subnetName; } if (sqlAzureMetaStores != null && sqlAzureMetaStores.Count > 0) { var hiveMetastore = sqlAzureMetaStores.FirstOrDefault(s => s.Type.Equals("HiveMetastore")); if (hiveMetastore != null) { clusterCreateParameters.HiveMetastore = new Metastore(hiveMetastore.Server, hiveMetastore.Database, hiveMetastore.User, hiveMetastore.Password); } var oozieMetastore = sqlAzureMetaStores.FirstOrDefault(s => s.Type.Equals("OozieMetastore")); if (oozieMetastore != null) { clusterCreateParameters.OozieMetastore = new Metastore(oozieMetastore.Server, oozieMetastore.Database, oozieMetastore.User, oozieMetastore.Password); } } var localStopWatch = Stopwatch.StartNew(); var createTask = hdInsightManagementClient.Clusters.CreateAsync(resourceGroupName, clusterDnsName, clusterCreateParameters); Logger.InfoFormat("Cluster: {0} - Create cluster request submitted with task id: {1}, task status: {2}", clusterDnsName, createTask.Id, createTask.Status); Thread.Sleep(pollInterval); var error = MonitorCreate(resourceGroupName, clusterDnsName, createTask); if (error) { if (config.CleanupOnError) { Logger.InfoFormat("{0} - {1}. Submitting a delete request for the failed cluster creation.", Config.ConfigName.CleanupOnError.ToString(), config.CleanupOnError.ToString()); Delete(resourceGroupName, clusterDnsName); } else { throw new ApplicationException(String.Format("Cluster: {0} - Creation unsuccessful", clusterDnsName)); } } else { if (config.AutoEnableRdp && clusterCreateParameters.OSType == OSType.Windows) { HDInsightManagementCLIHelpers.CreateRdpFile(clusterDnsName, config.RdpUsername, config.RdpPassword); } } }
private static void EnableRdp(string resourceGroup, string ClusterDnsName, string rdpUserName, string rdpPassword, DateTime rdpExpiry) { Logger.InfoFormat("Enabling Rdp - ResourceGroup: {0}, Cluster: {1}", resourceGroup, ClusterDnsName); hdInsightManagementClient.Clusters.EnableRdp(resourceGroup, ClusterDnsName, rdpUserName, rdpPassword, rdpExpiry); HDInsightManagementCLIHelpers.CreateRdpFile(ClusterDnsName, rdpUserName, rdpPassword); }