public PSDataCenterResource(DataCenterResource dataCenterResource) { if (dataCenterResource == null) { return; } Id = dataCenterResource.Id; Name = dataCenterResource.Name; Properties = new PSDataCenterResourceProperties(dataCenterResource.Properties); }
public override void ExecuteCmdlet() { if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; ClusterName = resourceIdentifier.ResourceName; } DataCenterResource dataCenterResource = null; try { dataCenterResource = CosmosDBManagementClient.CassandraDataCenters.GetWithHttpMessagesAsync(ResourceGroupName, ClusterName, DatacenterName).GetAwaiter().GetResult().Body; } catch (CloudException e) { if (e.Response.StatusCode != System.Net.HttpStatusCode.NotFound) { throw; } } if (dataCenterResource != null) { throw new ConflictingResourceException(message: string.Format(ExceptionMessage.Conflict, DatacenterName)); } if (NodeCount < 3) { throw new ArgumentException("The minimum value for number of virtual machines should be 3."); } DataCenterResource dataCenterResourceParameters = new DataCenterResource { Properties = new DataCenterResourceProperties { DataCenterLocation = Location, DelegatedSubnetId = DelegatedSubnetId, NodeCount = NodeCount, Base64EncodedCassandraYamlFragment = Base64EncodedCassandraYamlFragment } }; if (ShouldProcess(DatacenterName, "Creating a new Managed Cassandra DataCenter")) { DataCenterResource dataCenterResourceResult = CosmosDBManagementClient.CassandraDataCenters.CreateUpdateWithHttpMessagesAsync(ResourceGroupName, ClusterName, DatacenterName, dataCenterResourceParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDataCenterResource(dataCenterResourceResult)); } return; }
public override void ExecuteCmdlet() { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; ClusterName = resourceIdentifier.ResourceName; } else if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { if (ParameterSetName.Equals(ResourceIdParameterSet)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } string[] segments = resourceIdentifier.ToString().Split(new[] { '/' }); if (segments.Length != 11) { throw new ArgumentException("ResourceId is not a valid for a Cassandra data center."); } ResourceGroupName = resourceIdentifier.ResourceGroupName; ClusterName = segments[8]; DataCenterName = segments[10]; } if (!string.IsNullOrEmpty(DataCenterName)) { DataCenterResource dataCenterResource = CosmosDBManagementClient.CassandraDataCenters.GetWithHttpMessagesAsync(ResourceGroupName, ClusterName, DataCenterName).GetAwaiter().GetResult().Body; WriteObject(new PSDataCenterResource(dataCenterResource)); } else { IEnumerable <DataCenterResource> dataCenterResources = CosmosDBManagementClient.CassandraDataCenters.ListWithHttpMessagesAsync(ResourceGroupName, ClusterName).GetAwaiter().GetResult().Body; foreach (DataCenterResource dataCenterResource in dataCenterResources) { WriteObject(new PSDataCenterResource(dataCenterResource)); } } return; }
public override void ExecuteCmdlet() { if (ParameterSetName.Equals(ParentObjectParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = new ResourceIdentifier(ParentObject.Id); ResourceGroupName = resourceIdentifier.ResourceGroupName; ClusterName = resourceIdentifier.ResourceName; } else if (!ParameterSetName.Equals(NameParameterSet, StringComparison.Ordinal)) { ResourceIdentifier resourceIdentifier = null; if (ParameterSetName.Equals(ResourceIdParameterSet)) { resourceIdentifier = new ResourceIdentifier(ResourceId); } else if (ParameterSetName.Equals(ObjectParameterSet)) { resourceIdentifier = new ResourceIdentifier(InputObject.Id); } ResourceGroupName = resourceIdentifier.ResourceGroupName; String[] parentSegments = resourceIdentifier.ParentResource.Split(separator: '/'); if (parentSegments.Length != 2) { throw new ArgumentException("ResourceId is invalid."); } ClusterName = resourceIdentifier.ParentResource.Split(separator: '/')[1]; DatacenterName = resourceIdentifier.ResourceName; } DataCenterResource dataCenterResource = null; try { dataCenterResource = CosmosDBManagementClient.CassandraDataCenters.GetWithHttpMessagesAsync(ResourceGroupName, ClusterName, DatacenterName).GetAwaiter().GetResult().Body; } catch (CloudException e) { if (e.Response.StatusCode != System.Net.HttpStatusCode.NotFound) { throw; } else { throw new ResourceNotFoundException(message: string.Format(ExceptionMessage.NotFound, ClusterName), innerException: e); } } if (NodeCount < 3) { throw new ArgumentException("The minimum value for number of virtual machines should be 3."); } DataCenterResource datacenterUpdateParameters = new DataCenterResource { Properties = new DataCenterResourceProperties { DataCenterLocation = dataCenterResource.Properties.DataCenterLocation, DelegatedSubnetId = dataCenterResource.Properties.DelegatedSubnetId, Base64EncodedCassandraYamlFragment = Base64EncodedCassandraYamlFragment ?? dataCenterResource.Properties.Base64EncodedCassandraYamlFragment, NodeCount = NodeCount.HasValue ? NodeCount.Value : dataCenterResource.Properties.NodeCount, BackupStorageCustomerKeyUri = BackupStorageCustomerKeyUri ?? dataCenterResource.Properties.BackupStorageCustomerKeyUri } }; if (ShouldProcess(ClusterName, "Updating Managed Cassandra Datacenter.")) { DataCenterResource dataCenterResourceResult = CosmosDBManagementClient.CassandraDataCenters.CreateUpdateWithHttpMessagesAsync(ResourceGroupName, ClusterName, DatacenterName, datacenterUpdateParameters).GetAwaiter().GetResult().Body; WriteObject(new PSDataCenterResource(dataCenterResourceResult)); } return; }
/// <summary> /// Update some of the properties of a managed Cassandra data center. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. The name is case insensitive. /// </param> /// <param name='clusterName'> /// Managed Cassandra cluster name. /// </param> /// <param name='dataCenterName'> /// Data center name in a managed Cassandra cluster. /// </param> /// <param name='body'> /// Parameters to provide for specifying the managed Cassandra data center. /// </param> /// <param name='cancellationToken'> /// The cancellation token. /// </param> public static async Task <DataCenterResource> BeginUpdateAsync(this ICassandraDataCentersOperations operations, string resourceGroupName, string clusterName, string dataCenterName, DataCenterResource body, CancellationToken cancellationToken = default(CancellationToken)) { using (var _result = await operations.BeginUpdateWithHttpMessagesAsync(resourceGroupName, clusterName, dataCenterName, body, null, cancellationToken).ConfigureAwait(false)) { return(_result.Body); } }
/// <summary> /// Update some of the properties of a managed Cassandra data center. /// </summary> /// <param name='operations'> /// The operations group for this extension method. /// </param> /// <param name='resourceGroupName'> /// The name of the resource group. The name is case insensitive. /// </param> /// <param name='clusterName'> /// Managed Cassandra cluster name. /// </param> /// <param name='dataCenterName'> /// Data center name in a managed Cassandra cluster. /// </param> /// <param name='body'> /// Parameters to provide for specifying the managed Cassandra data center. /// </param> public static DataCenterResource BeginUpdate(this ICassandraDataCentersOperations operations, string resourceGroupName, string clusterName, string dataCenterName, DataCenterResource body) { return(operations.BeginUpdateAsync(resourceGroupName, clusterName, dataCenterName, body).GetAwaiter().GetResult()); }
public void ManagedCassandraCRUDTests() { var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; var handler2 = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { // Create client CosmosDBManagementClient cosmosDBManagementClient = CosmosDBTestUtilities.GetCosmosDBClient(context, handler); ResourceManagementClient resourcesClient = CosmosDBTestUtilities.GetResourceManagementClient(context, handler2); string resourceGroupName = CosmosDBTestUtilities.CreateResourceGroup(resourcesClient); try { string clusterName = TestUtilities.GenerateName("managedcluster"); string dcName = TestUtilities.GenerateName("managedDC"); this.output.WriteLine($"Creating cluster {clusterName} in resource group {resourceGroupName}."); string subnetId = CreateVirtualNetwork(resourcesClient, resourceGroupName); this.output.WriteLine($"Created subnet {subnetId}."); var clusterProperties = new ClusterResourceProperties { DelegatedManagementSubnetId = subnetId, InitialCassandraAdminPassword = "******", ExternalSeedNodes = new List <SeedNode> { new SeedNode { IpAddress = "10.0.1.1" } } }; var clusterPutResource = new ClusterResource { Location = "East US 2", Properties = clusterProperties }; this.output.WriteLine($"Cluster create request body:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterPutResource, Formatting.Indented)); ClusterResource clusterResource = cosmosDBManagementClient.CassandraClusters .CreateUpdateWithHttpMessagesAsync(resourceGroupName: resourceGroupName, clusterName: clusterName, body: clusterPutResource).GetAwaiter().GetResult().Body; this.output.WriteLine($"Cluster create response:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterResource, Formatting.Indented)); Assert.Equal(subnetId, clusterResource.Properties.DelegatedManagementSubnetId); Assert.Null(clusterResource.Properties.InitialCassandraAdminPassword); Assert.Equal("Cassandra", clusterResource.Properties.AuthenticationMethod); Assert.Equal("Succeeded", clusterResource.Properties.ProvisioningState); Assert.NotNull(clusterResource.Properties.ExternalSeedNodes); Assert.Equal(1, clusterResource.Properties.ExternalSeedNodes.Count); Assert.Equal("10.0.1.1", clusterResource.Properties.ExternalSeedNodes[0].IpAddress); clusterPutResource.Properties.ExternalSeedNodes = new List <SeedNode> { new SeedNode { IpAddress = "192.168.12.1" } }; this.output.WriteLine(""); this.output.WriteLine("Updating cluster. Put body:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterPutResource, Formatting.Indented)); ClusterResource clusterResource2 = cosmosDBManagementClient.CassandraClusters .CreateUpdateWithHttpMessagesAsync(resourceGroupName: resourceGroupName, clusterName: clusterName, body: clusterPutResource).GetAwaiter().GetResult().Body; this.output.WriteLine("Response:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterResource2, Formatting.Indented)); Assert.Equal(clusterName, clusterResource2.Name); Assert.Equal("East US 2", clusterResource2.Location); Assert.Equal(subnetId, clusterResource2.Properties.DelegatedManagementSubnetId); Assert.Null(clusterResource2.Properties.InitialCassandraAdminPassword); Assert.Equal("Cassandra", clusterResource2.Properties.AuthenticationMethod); Assert.Null(clusterResource2.Properties.CassandraVersion); Assert.Equal("Succeeded", clusterResource2.Properties.ProvisioningState); Assert.NotNull(clusterResource2.Properties.ExternalSeedNodes); Assert.NotEmpty(clusterResource2.Properties.ExternalSeedNodes); DataCenterResource dataCenterPutResource = new DataCenterResource { Properties = new DataCenterResourceProperties { DataCenterLocation = "East US 2", DelegatedSubnetId = subnetId, NodeCount = 3, } }; this.output.WriteLine($"Creating data center {dcName}. Put request:"); this.output.WriteLine(JsonConvert.SerializeObject(dataCenterPutResource, Formatting.Indented)); DataCenterResource dcResource = cosmosDBManagementClient.CassandraDataCenters .CreateUpdateWithHttpMessagesAsync(resourceGroupName, clusterName, dcName, dataCenterPutResource).GetAwaiter().GetResult().Body; this.output.WriteLine("Response:"); this.output.WriteLine(JsonConvert.SerializeObject(dcResource, Formatting.Indented)); Assert.Equal("East US 2", dcResource.Properties.DataCenterLocation); Assert.Equal(subnetId, dcResource.Properties.DelegatedSubnetId); Assert.Equal(3, dcResource.Properties.NodeCount); Assert.Equal(3, dcResource.Properties.SeedNodes.Count); this.output.WriteLine($"Deleting data center {dcName}."); cosmosDBManagementClient.CassandraDataCenters .DeleteWithHttpMessagesAsync(resourceGroupName, clusterName, dcName).GetAwaiter().GetResult(); this.output.WriteLine($"Deleting cluster {clusterName}."); cosmosDBManagementClient.CassandraClusters .DeleteWithHttpMessagesAsync(resourceGroupName, clusterName).GetAwaiter().GetResult(); this.output.WriteLine("Deleting deployment of vnets."); cosmosDBManagementClient.CassandraClusters .DeleteWithHttpMessagesAsync(resourceGroupName, clusterName).GetAwaiter().GetResult(); } finally { this.output.WriteLine("Deleting resource group."); resourcesClient.Deployments.Delete(resourceGroupName, ManagedCassandraResourcesOperationsTests.VnetDeploymentName); resourcesClient.ResourceGroups.Delete(resourceGroupName); } } }
public async Task ManagedCassandraCRUDTests() { using (var context = MockContext.Start(this.GetType())) { var location = this.fixture.Location; fixture.Init(context); var clusterClient = this.fixture.CosmosDBManagementClient.CassandraClusters; var dcClient = this.fixture.CosmosDBManagementClient.CassandraDataCenters; string clusterName = TestUtilities.GenerateName("managedcluster"); string dcName = TestUtilities.GenerateName("managedDC"); this.output.WriteLine($"Creating cluster {clusterName} in resource group {this.fixture.ResourceGroupName}."); string subnetId = CreateVirtualNetwork(location); this.output.WriteLine($"Created subnet {subnetId}."); var clusterProperties = new ClusterResourceProperties { DelegatedManagementSubnetId = subnetId, InitialCassandraAdminPassword = "******", ExternalSeedNodes = new List <SeedNode> { new SeedNode { IpAddress = "10.0.1.1" } } }; var clusterPutResource = new ClusterResource { Location = location, Properties = clusterProperties }; this.output.WriteLine($"Cluster create request body:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterPutResource, Formatting.Indented)); ClusterResource clusterResource = (await clusterClient .CreateUpdateWithHttpMessagesAsync(resourceGroupName: this.fixture.ResourceGroupName, clusterName: clusterName, body: clusterPutResource)).Body; this.output.WriteLine($"Cluster create response:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterResource, Formatting.Indented)); Assert.Equal(subnetId, clusterResource.Properties.DelegatedManagementSubnetId); Assert.Null(clusterResource.Properties.InitialCassandraAdminPassword); Assert.Equal("Cassandra", clusterResource.Properties.AuthenticationMethod); Assert.Equal("Succeeded", clusterResource.Properties.ProvisioningState); Assert.NotNull(clusterResource.Properties.ExternalSeedNodes); Assert.Equal(1, clusterResource.Properties.ExternalSeedNodes.Count); Assert.Equal("10.0.1.1", clusterResource.Properties.ExternalSeedNodes[0].IpAddress); clusterPutResource.Properties.ExternalSeedNodes = new List <SeedNode> { new SeedNode { IpAddress = "192.168.12.1" } }; this.output.WriteLine(""); this.output.WriteLine("Updating cluster. Put body:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterPutResource, Formatting.Indented)); ClusterResource clusterResource2 = (await clusterClient .CreateUpdateWithHttpMessagesAsync(resourceGroupName: this.fixture.ResourceGroupName, clusterName: clusterName, body: clusterPutResource)).Body; this.output.WriteLine("Response:"); this.output.WriteLine(JsonConvert.SerializeObject(clusterResource2, Formatting.Indented)); Assert.Equal(clusterName, clusterResource2.Name); Assert.Equal(location.ToLower(), clusterResource2.Location.ToLower()); Assert.Equal(subnetId, clusterResource2.Properties.DelegatedManagementSubnetId); Assert.Null(clusterResource2.Properties.InitialCassandraAdminPassword); Assert.Equal("Cassandra", clusterResource2.Properties.AuthenticationMethod); Assert.Equal("3.11", clusterResource2.Properties.CassandraVersion); Assert.Equal("Succeeded", clusterResource2.Properties.ProvisioningState); Assert.NotNull(clusterResource2.Properties.ExternalSeedNodes); Assert.NotEmpty(clusterResource2.Properties.ExternalSeedNodes); Assert.False(clusterResource2.Properties.Deallocated); DataCenterResource dataCenterPutResource = new DataCenterResource { Properties = new DataCenterResourceProperties { DataCenterLocation = location, DelegatedSubnetId = subnetId, NodeCount = 3 } }; this.output.WriteLine($"Creating data center {dcName}. Put request:"); this.output.WriteLine(JsonConvert.SerializeObject(dataCenterPutResource, Formatting.Indented)); DataCenterResource dcResource = (await dcClient .CreateUpdateWithHttpMessagesAsync(this.fixture.ResourceGroupName, clusterName, dcName, dataCenterPutResource)).Body; this.output.WriteLine("Response:"); this.output.WriteLine(JsonConvert.SerializeObject(dcResource, Formatting.Indented)); Assert.Equal(location.ToLower(), dcResource.Properties.DataCenterLocation.ToLower()); Assert.Equal(subnetId, dcResource.Properties.DelegatedSubnetId); Assert.Equal(3, dcResource.Properties.NodeCount); Assert.Equal(3, dcResource.Properties.SeedNodes.Count); await clusterClient.DeallocateWithHttpMessagesAsync(this.fixture.ResourceGroupName, clusterName); ClusterResource clusterResource3 = await clusterClient.GetAsync(this.fixture.ResourceGroupName, clusterName); Assert.True(clusterResource3.Properties.Deallocated); await clusterClient.StartWithHttpMessagesAsync(this.fixture.ResourceGroupName, clusterName); ClusterResource clusterResource4 = await clusterClient.GetAsync(this.fixture.ResourceGroupName, clusterName); Assert.False(clusterResource4.Properties.Deallocated); this.output.WriteLine($"Deleting data center {dcName}."); await dcClient.DeleteWithHttpMessagesAsync(this.fixture.ResourceGroupName, clusterName, dcName); this.output.WriteLine($"Deleting cluster {clusterName}."); await clusterClient.DeleteWithHttpMessagesAsync(this.fixture.ResourceGroupName, clusterName); } }