Beispiel #1
0
        private async Task InitBigtableInstanceAndTable()
        {
            if (EmulatorChannel == null)
            {
                InstanceAdminClient = BigtableInstanceAdminClient.Create();
                TableAdminClient    = BigtableTableAdminClient.Create();
                TableClient         = BigtableClient.Create();

                try
                {
                    await InstanceAdminClient.GetInstanceAsync(InstanceName);
                }
                catch (RpcException e) when(e.Status.StatusCode == StatusCode.NotFound)
                {
                    Assert.True(false, $"The Bigtable instance for testing does not exist: {InstanceName}");
                }
            }
            else
            {
                TableAdminClient = BigtableTableAdminClient.Create(EmulatorChannel);
                TableClient      = BigtableClient.Create(BigtableClient.ClientCreationSettings.FromEndpointTarget(EmulatorChannel.Target));
            }

            TableName = await CreateTable();
        }
        async void InitializeInstance()
        {
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            try
            {
                string   name     = $"projects/{_fixture.ProjectId}/instances/{_fixture.InstanceId}";
                Instance response = await instanceAdminClient.GetInstanceAsync(name);
            }
            catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.NotFound)
            {
                string   parent   = $"projects/{_fixture.ProjectId}";
                Instance instance = new Instance
                {
                    DisplayName = _fixture.InstanceId,
                    Name        = $"projects/{_fixture.ProjectId}/instances/{_fixture.InstanceId}",
                    NodeCount   = 1,
                    Config      = $"projects/{_fixture.ProjectId}/instanceConfigs/regional-us-central1"
                };

                // Make the CreateInstance request
                var response = instanceAdminClient.CreateInstance(parent, _fixture.InstanceId, instance);

                // Poll until the returned long-running operation is complete
                response.PollUntilCompleted();
            }
        }
Beispiel #3
0
        /// <summary>Snippet for CreateInstance</summary>
        public void CreateInstance()
        {
            // Snippet: CreateInstance(ProjectName,InstanceName,Instance,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            ProjectName  parent     = new ProjectName("[PROJECT]");
            InstanceName instanceId = new InstanceName("[PROJECT]", "[INSTANCE]");
            Instance     instance   = new Instance();
            // Make the request
            Operation <Instance, CreateInstanceMetadata> response =
                instanceAdminClient.CreateInstance(parent, instanceId, instance);

            // Poll until the returned long-running operation is complete
            Operation <Instance, CreateInstanceMetadata> completedResponse =
                response.PollUntilCompleted();
            // Retrieve the operation result
            Instance result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <Instance, CreateInstanceMetadata> retrievedResponse =
                instanceAdminClient.PollOnceCreateInstance(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Instance retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
Beispiel #4
0
    /// <summary>
    /// Deletes 10 oldest instances if the number of instances is more than 14.
    /// This is to clean up the stale instances in case of instance cleanup code may not get triggered.
    /// </summary>
    private async Task DeleteStaleInstancesAsync()
    {
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
        var listInstancesRequest = new ListInstancesRequest
        {
            Filter = "name:my-instance-processing-units- OR name:my-instance-multi-region-",
            ParentAsProjectName = ProjectName.FromProject(ProjectId)
        };
        var instances = instanceAdminClient.ListInstances(listInstancesRequest);

        if (instances.Count() < 15)
        {
            return;
        }

        var instancesToDelete = instances
                                .OrderBy(db => long.TryParse(
                                             db.InstanceName.InstanceId.Replace("my-instance-processing-units-", "")
                                             .Replace("my-instance-multi-region-", ""),
                                             out long creationDate) ? creationDate : long.MaxValue)
                                .Take(10);

        // Delete the instances.
        foreach (var instance in instancesToDelete)
        {
            try
            {
                await instanceAdminClient.DeleteInstanceAsync(instance.InstanceName);
            }
            catch (Exception) { }
        }
    }
Beispiel #5
0
        private async Task InitBigtableInstanceAndTable()
        {
            if (EmulatorCallInvoker == null)
            {
                InstanceAdminClient = BigtableInstanceAdminClient.Create();
                TableAdminClient    = BigtableTableAdminClient.Create();
                TableClient         = BigtableClient.Create();

                try
                {
                    await InstanceAdminClient.GetInstanceAsync(InstanceName);
                }
                catch (RpcException e) when(e.Status.StatusCode == StatusCode.NotFound)
                {
                    Assert.True(false, $"The Bigtable instance for testing does not exist: {InstanceName}");
                }
            }
            else
            {
                TableAdminClient = new BigtableTableAdminClientBuilder {
                    CallInvoker = EmulatorCallInvoker
                }.Build();
                TableClient = new BigtableClientBuilder {
                    CallInvoker = EmulatorCallInvoker
                }.Build();
            }

            TableName = await CreateTable();
        }
Beispiel #6
0
        /// <summary>Snippet for UpdateInstanceAsync</summary>
        public async Task UpdateInstanceAsync()
        {
            // Snippet: UpdateInstanceAsync(Instance,FieldMask,CallSettings)
            // Additional: UpdateInstanceAsync(Instance,FieldMask,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            Instance  instance  = new Instance();
            FieldMask fieldMask = new FieldMask();
            // Make the request
            Operation <Instance, UpdateInstanceMetadata> response =
                await instanceAdminClient.UpdateInstanceAsync(instance, fieldMask);

            // Poll until the returned long-running operation is complete
            Operation <Instance, UpdateInstanceMetadata> completedResponse =
                await response.PollUntilCompletedAsync();

            // Retrieve the operation result
            Instance result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <Instance, UpdateInstanceMetadata> retrievedResponse =
                await instanceAdminClient.PollOnceUpdateInstanceAsync(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Instance retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
Beispiel #7
0
        private async Task InitBigtableInstanceAndTable()
        {
            if (EmulatorChannel == null)
            {
                InstanceAdminClient = BigtableInstanceAdminClient.Create();
                TableAdminClient    = BigtableTableAdminClient.Create();
                TableClient         = BigtableClient.Create();

                try
                {
                    await InstanceAdminClient.GetInstanceAsync(InstanceName);
                }
                catch (RpcException e) when(e.Status.StatusCode == StatusCode.NotFound)
                {
                    Assert.True(false, $"The Bigtable instance for testing does not exist: {InstanceName}");
                }
            }
            else
            {
                TableAdminClient = BigtableTableAdminClient.Create(EmulatorChannel);
                TableClient      = BigtableClient.Create(EmulatorChannel);
            }

            TableName = new TableName(ProjectName.ProjectId, InstanceName.InstanceId, "default-table");
            await CreateTable(TableName);
        }
Beispiel #8
0
        /// <summary>Snippet for UpdateInstance</summary>
        public void UpdateInstance_RequestObject()
        {
            // Snippet: UpdateInstance(UpdateInstanceRequest,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            UpdateInstanceRequest request = new UpdateInstanceRequest
            {
                Instance  = new Instance(),
                FieldMask = new FieldMask(),
            };
            // Make the request
            Operation <Instance, UpdateInstanceMetadata> response =
                instanceAdminClient.UpdateInstance(request);

            // Poll until the returned long-running operation is complete
            Operation <Instance, UpdateInstanceMetadata> completedResponse =
                response.PollUntilCompleted();
            // Retrieve the operation result
            Instance result = completedResponse.Result;

            // Or get the name of the operation
            string operationName = response.Name;
            // This name can be stored, then the long-running operation retrieved later by name
            Operation <Instance, UpdateInstanceMetadata> retrievedResponse =
                instanceAdminClient.PollOnceUpdateInstance(operationName);

            // Check if the retrieved long-running operation has completed
            if (retrievedResponse.IsCompleted)
            {
                // If it has completed, then access the result
                Instance retrievedResult = retrievedResponse.Result;
            }
            // End snippet
        }
Beispiel #9
0
    /// <summary>
    /// Deletes 10 oldest instances if the number of instances is more than 14.
    /// This is to clean up the stale instances in case of instance cleanup code may not get triggered.
    /// </summary>
    private async Task DeleteStaleInstancesAsync()
    {
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
        var listInstancesRequest = new ListInstancesRequest
        {
            Filter = "name:my-instance-processing-units- OR name:my-instance-multi-region-",
            ParentAsProjectName = ProjectName.FromProject(ProjectId)
        };
        var instances = instanceAdminClient.ListInstances(listInstancesRequest);

        if (instances.Count() < 15)
        {
            return;
        }

        long fiveHoursAgo = DateTimeOffset.UtcNow.AddHours(-5).ToUnixTimeMilliseconds();

        var instancesToDelete = instances
                                .Select(db => (db, CreationUnixTimeMilliseconds(db)))
                                .Where(pair => pair.Item2 < fiveHoursAgo)
                                .Select(pair => pair.db);

        // Delete the instances.
        foreach (var instance in instancesToDelete)
        {
            try
            {
                await instanceAdminClient.DeleteInstanceAsync(instance.InstanceName);
            }
            catch (Exception) { }
        }
Beispiel #10
0
 /// <summary>Snippet for GetInstance</summary>
 public void GetInstance()
 {
     // Snippet: GetInstance(InstanceName,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     InstanceName name = new InstanceName("[PROJECT]", "[INSTANCE]");
     // Make the request
     Instance response = instanceAdminClient.GetInstance(name);
     // End snippet
 }
Beispiel #11
0
 /// <summary>Snippet for GetIamPolicy</summary>
 public void GetIamPolicy()
 {
     // Snippet: GetIamPolicy(string,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     string formattedResource = new Google.Cloud.Spanner.Common.V1.InstanceName("[PROJECT]", "[INSTANCE]").ToString();
     // Make the request
     Policy response = instanceAdminClient.GetIamPolicy(formattedResource);
     // End snippet
 }
Beispiel #12
0
 public void GetInstanceConfig()
 {
     // Snippet: GetInstanceConfig(string,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     string formattedName = new InstanceConfigName("[PROJECT]", "[INSTANCE_CONFIG]").ToString();
     // Make the request
     InstanceConfig response = instanceAdminClient.GetInstanceConfig(formattedName);
     // End snippet
 }
Beispiel #13
0
        public void DeleteInstance()
        {
            // Snippet: DeleteInstance(string,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            string formattedName = new InstanceName("[PROJECT]", "[INSTANCE]").ToString();

            // Make the request
            instanceAdminClient.DeleteInstance(formattedName);
            // End snippet
        }
Beispiel #14
0
 public void SetIamPolicy()
 {
     // Snippet: SetIamPolicy(string,Policy,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     string formattedResource = new InstanceName("[PROJECT]", "[INSTANCE]").ToString();
     Policy policy            = new Policy();
     // Make the request
     Policy response = instanceAdminClient.SetIamPolicy(formattedResource, policy);
     // End snippet
 }
Beispiel #15
0
 /// <summary>Snippet for TestIamPermissions</summary>
 public void TestIamPermissions()
 {
     // Snippet: TestIamPermissions(string,IEnumerable<string>,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     string formattedResource         = new Google.Cloud.Spanner.Common.V1.InstanceName("[PROJECT]", "[INSTANCE]").ToString();
     IEnumerable <string> permissions = new List <string>();
     // Make the request
     TestIamPermissionsResponse response = instanceAdminClient.TestIamPermissions(formattedResource, permissions);
     // End snippet
 }
    public Instance CreateInstanceWithProcessingUnits(string projectId, string instanceId)
    {
        // Create the InstanceAdminClient instance.
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

        InstanceName instanceName = InstanceName.FromProjectInstance(projectId, instanceId);

        // Initialize request parameters.
        Instance instance = new Instance
        {
            InstanceName = instanceName,
            ConfigAsInstanceConfigName = InstanceConfigName.FromProjectInstanceConfig(projectId, "regional-us-central1"),
            DisplayName     = "This is a display name.",
            ProcessingUnits = 500,
            Labels          =
            {
                { "cloud_spanner_samples", "true" },
            }
        };
        ProjectName projectName = ProjectName.FromProject(projectId);

        // Make the CreateInstance request.
        Operation <Instance, CreateInstanceMetadata> response = instanceAdminClient.CreateInstance(projectName, instanceId, instance);

        Console.WriteLine("Waiting for the operation to finish.");

        // Poll until the returned long-running operation is complete.
        Operation <Instance, CreateInstanceMetadata> completedResponse = response.PollUntilCompleted();

        if (completedResponse.IsFaulted)
        {
            Console.WriteLine($"Error while creating instance: {completedResponse.Exception}");
            throw completedResponse.Exception;
        }

        Console.WriteLine($"Instance created successfully.");

        // GetInstance to get the processing units using a field mask.
        GetInstanceRequest getInstanceRequest = new GetInstanceRequest
        {
            FieldMask = new FieldMask
            {
                Paths = { "processing_units" }
            },
            InstanceName = instanceName
        };

        instance = instanceAdminClient.GetInstance(getInstanceRequest);
        Console.WriteLine($"Instance {instanceId} has {instance.ProcessingUnits} processing units.");
        return(instance);
    }
Beispiel #17
0
 public void GetIamPolicy_RequestObject()
 {
     // Snippet: GetIamPolicy(GetIamPolicyRequest,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     GetIamPolicyRequest request = new GetIamPolicyRequest
     {
         Resource = new InstanceName("[PROJECT]", "[INSTANCE]").ToString(),
     };
     // Make the request
     Policy response = instanceAdminClient.GetIamPolicy(request);
     // End snippet
 }
Beispiel #18
0
 /// <summary>Snippet for GetInstance</summary>
 public void GetInstance_RequestObject()
 {
     // Snippet: GetInstance(GetInstanceRequest,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     GetInstanceRequest request = new GetInstanceRequest
     {
         InstanceName = new InstanceName("[PROJECT]", "[INSTANCE]"),
     };
     // Make the request
     Instance response = instanceAdminClient.GetInstance(request);
     // End snippet
 }
Beispiel #19
0
        public async Task GetInstanceAsync()
        {
            // Snippet: GetInstanceAsync(string,CallSettings)
            // Additional: GetInstanceAsync(string,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            string formattedName = new InstanceName("[PROJECT]", "[INSTANCE]").ToString();
            // Make the request
            Instance response = await instanceAdminClient.GetInstanceAsync(formattedName);

            // End snippet
        }
Beispiel #20
0
        /// <summary>Snippet for GetInstanceConfigAsync</summary>
        public async Task GetInstanceConfigAsync()
        {
            // Snippet: GetInstanceConfigAsync(InstanceConfigName,CallSettings)
            // Additional: GetInstanceConfigAsync(InstanceConfigName,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            InstanceConfigName name = new InstanceConfigName("[PROJECT]", "[INSTANCE_CONFIG]");
            // Make the request
            InstanceConfig response = await instanceAdminClient.GetInstanceConfigAsync(name);

            // End snippet
        }
Beispiel #21
0
        void InitializeInstance()
        {
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

            try
            {
                string   name     = $"projects/{_fixture.ProjectId}/instances/{_fixture.InstanceId}";
                Instance response = instanceAdminClient.GetInstance(name);
            }
            catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.NotFound)
            {
                CreateInstance.SpannerCreateInstance(_fixture.ProjectId, _fixture.InstanceId);
            }
        }
Beispiel #22
0
        void InitializeInstance()
        {
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

            try
            {
                InstanceName instanceName = InstanceName.FromProjectInstance(_fixture.ProjectId, _fixture.InstanceId);
                Instance     response     = instanceAdminClient.GetInstance(instanceName);
            }
            catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.NotFound)
            {
                CreateInstance.SpannerCreateInstance(_fixture.ProjectId, _fixture.InstanceId);
            }
        }
Beispiel #23
0
 public void GetInstanceConfig_RequestObject()
 {
     // Snippet: GetInstanceConfig(GetInstanceConfigRequest,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     GetInstanceConfigRequest request = new GetInstanceConfigRequest
     {
         Name = new InstanceConfigName("[PROJECT]", "[INSTANCE_CONFIG]").ToString(),
     };
     // Make the request
     InstanceConfig response = instanceAdminClient.GetInstanceConfig(request);
     // End snippet
 }
Beispiel #24
0
    private void DeleteInstance(string instanceId)
    {
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
        InstanceName        instanceName        = InstanceName.FromProjectInstance(ProjectId, instanceId);

        try
        {
            instanceAdminClient.DeleteInstance(instanceName);
        }
        catch (Exception)
        {
            // Silently ignore errors to prevent tests from failing.
        }
    }
Beispiel #25
0
    public async Task <InstanceConfig> GetInstanceConfigAsync(string projectId, string instanceConfigId)
    {
        var instanceAdminClient = await InstanceAdminClient.CreateAsync();

        var instanceConfigName = InstanceConfigName.FromProjectInstanceConfig(projectId, instanceConfigId);
        var instanceConfig     = await instanceAdminClient.GetInstanceConfigAsync(instanceConfigName);

        Console.WriteLine($"Available leader options for instance config {instanceConfigName.InstanceConfigId}:");
        foreach (var leader in instanceConfig.LeaderOptions)
        {
            Console.WriteLine(leader);
        }
        return(instanceConfig);
    }
Beispiel #26
0
        /// <summary>Snippet for GetIamPolicyAsync</summary>
        public async Task GetIamPolicyAsync()
        {
            // Snippet: GetIamPolicyAsync(string,CallSettings)
            // Additional: GetIamPolicyAsync(string,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            string formattedResource = new Google.Cloud.Spanner.Common.V1.InstanceName("[PROJECT]", "[INSTANCE]").ToString();
            // Make the request
            Policy response = await instanceAdminClient.GetIamPolicyAsync(formattedResource);

            // End snippet
        }
Beispiel #27
0
        /// <summary>Snippet for DeleteInstanceAsync</summary>
        public async Task DeleteInstanceAsync()
        {
            // Snippet: DeleteInstanceAsync(InstanceName,CallSettings)
            // Additional: DeleteInstanceAsync(InstanceName,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            InstanceName name = new InstanceName("[PROJECT]", "[INSTANCE]");
            // Make the request
            await instanceAdminClient.DeleteInstanceAsync(name);

            // End snippet
        }
Beispiel #28
0
        public async Task TestIamPermissionsAsync()
        {
            // Snippet: TestIamPermissionsAsync(string,IEnumerable<string>,CallSettings)
            // Additional: TestIamPermissionsAsync(string,IEnumerable<string>,CancellationToken)
            // Create client
            InstanceAdminClient instanceAdminClient = await InstanceAdminClient.CreateAsync();

            // Initialize request argument(s)
            string formattedResource         = new InstanceName("[PROJECT]", "[INSTANCE]").ToString();
            IEnumerable <string> permissions = new List <string>();
            // Make the request
            TestIamPermissionsResponse response = await instanceAdminClient.TestIamPermissionsAsync(formattedResource, permissions);

            // End snippet
        }
Beispiel #29
0
 /// <summary>Snippet for SetIamPolicy</summary>
 public void SetIamPolicy_RequestObject()
 {
     // Snippet: SetIamPolicy(SetIamPolicyRequest,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     SetIamPolicyRequest request = new SetIamPolicyRequest
     {
         Resource = new Google.Cloud.Spanner.Common.V1.InstanceName("[PROJECT]", "[INSTANCE]").ToString(),
         Policy   = new Policy(),
     };
     // Make the request
     Policy response = instanceAdminClient.SetIamPolicy(request);
     // End snippet
 }
Beispiel #30
0
 /// <summary>Snippet for TestIamPermissions</summary>
 public void TestIamPermissions_RequestObject()
 {
     // Snippet: TestIamPermissions(TestIamPermissionsRequest,CallSettings)
     // Create client
     InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
     // Initialize request argument(s)
     TestIamPermissionsRequest request = new TestIamPermissionsRequest
     {
         Resource    = new Google.Cloud.Spanner.Common.V1.InstanceName("[PROJECT]", "[INSTANCE]").ToString(),
         Permissions = { },
     };
     // Make the request
     TestIamPermissionsResponse response = instanceAdminClient.TestIamPermissions(request);
     // End snippet
 }