private static string GenerateAmbariConfigurationDocument(ClusterCreateParametersV2 clusterCreateParameters) { if (clusterCreateParameters == null) { throw new ArgumentNullException("clusterCreateParameters"); } string document = VersionToDocumentMapper.GetAmbariConfigurationDocument(clusterCreateParameters.Version); AmbariConfigurationDocumentManager ambariConfigurationManager = new AmbariConfigurationDocumentManager(document); // Set password ambariConfigurationManager.SetPassword(clusterCreateParameters.Password); // Set default storage account information ambariConfigurationManager.RemoveStorageAccountEntries(); ambariConfigurationManager.SetDefaultStorageAccount(clusterCreateParameters.DefaultStorageContainer, clusterCreateParameters.DefaultStorageAccountName, clusterCreateParameters.DefaultStorageAccountKey); // Set additional storage accounts foreach (var storageAccount in clusterCreateParameters.AdditionalStorageAccounts) { ambariConfigurationManager.SetAdditionalStorageAccount(storageAccount.Name, storageAccount.Key); } // Set custom metastores if (clusterCreateParameters.HiveMetastore != null) { ambariConfigurationManager.SetCustomHiveMetastore(clusterCreateParameters.HiveMetastore); } if (clusterCreateParameters.OozieMetastore != null) { ambariConfigurationManager.SetCustomOozieMetastore(clusterCreateParameters.OozieMetastore); } // Set user specified Hadoop configurations ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.CoreConfigurationKeyName, clusterCreateParameters.CoreConfiguration); ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.HdfsConfigurationKeyName, clusterCreateParameters.HdfsConfiguration); ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.YarnConfigurationKeyName, clusterCreateParameters.YarnConfiguration); ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.HiveConfigurationKeyName, clusterCreateParameters.HiveConfiguration.ConfigurationCollection); ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.OozieConfigurationKeyName, clusterCreateParameters.OozieConfiguration.ConfigurationCollection); ambariConfigurationManager.SetCustomConfigurations(AmbariConfigurationDocumentManager.MapredConfigurationKeyName, clusterCreateParameters.MapReduceConfiguration.ConfigurationCollection); return(ambariConfigurationManager.Document); }
public static ClusterDetails CreateClusterDetailsFromGetClustersResult(IaasCluster clusterDetailsFromServer) { if (clusterDetailsFromServer == null) { throw new ArgumentNullException("clusterDetailsFromServer"); } ClusterDetails clusterDetails = new ClusterDetails(); clusterDetails.CreatedDate = clusterDetailsFromServer.CreatedDate; clusterDetails.Location = clusterDetailsFromServer.Location; clusterDetails.Name = clusterDetailsFromServer.Id; clusterDetails.Version = clusterDetailsFromServer.HdiVersion; clusterDetails.StateString = clusterDetailsFromServer.State.ToString(); clusterDetails.DeploymentId = clusterDetailsFromServer.TenantId.ToString() ?? string.Empty; if (!string.IsNullOrEmpty(clusterDetails.Version)) { clusterDetails.VersionNumber = new PayloadConverter().ConvertStringToVersion(clusterDetails.Version); clusterDetails.VersionStatus = VersionFinderClient.GetVersionStatus(clusterDetails.Version); } else { clusterDetails.VersionNumber = new Version(0, 0); } clusterDetails.Version = clusterDetails.VersionNumber.ToString(); // TODO: Determine this from the documents? clusterDetails.ClusterType = ClusterType.Hadoop; // This code will only run for IaasCluster which only supports Linux today // We would need to put this information in one of the documents at some point clusterDetails.OSType = OSType.Linux; if (clusterDetailsFromServer.Errors != null && clusterDetailsFromServer.Errors.Any()) { // Populate error details with the most recent one. These occur if the deployment workflow errors out string errorDescription = string.Join(", ", clusterDetailsFromServer.Errors.Select(x => string.Format("{0} : {1}", x.ErrorCode, x.ErrorDescription))); clusterDetails.Error = new ClusterErrorStatus(0, errorDescription, string.Empty); } AzureCsmDocumentManager azureCsmDocumentManager = new AzureCsmDocumentManager(clusterDetailsFromServer.DeploymentDocuments[IaasClusterDocumentTypes.EmbeddedAzureConfigurationDocument]); AmbariConfigurationDocumentManager ambariConfigurationDocumentManager = new AmbariConfigurationDocumentManager(clusterDetailsFromServer.DeploymentDocuments[IaasClusterDocumentTypes.EmbeddedAmbariConfigurationDocument]); // Populate user name, passowrd, and server address information clusterDetails.HttpUserName = "******"; clusterDetails.HttpPassword = ambariConfigurationDocumentManager.GetPassword(); if (clusterDetailsFromServer.ConnectivityEndpoints != null) { foreach (var endpoint in clusterDetailsFromServer.ConnectivityEndpoints) { var webEndPoint = endpoint as WebConnectivityEndpoint; if (webEndPoint != null) { clusterDetails.ConnectionUrl = String.Format("https://{0}{1}", webEndPoint.Location, webEndPoint.Port > 0 ? String.Format(":{0}", webEndPoint.Port) : ""); break; } } } clusterDetails.DefaultStorageAccount = ambariConfigurationDocumentManager.GetDefaultStorageAccount(); // Populate additional Storage Accounts clusterDetails.AdditionalStorageAccounts = ambariConfigurationDocumentManager.GetAdditionalStorageAccounts(); // Populate Data Node Count clusterDetails.ClusterSizeInNodes = azureCsmDocumentManager.GetWorkerNodeCount(); return(clusterDetails); }