Beispiel #1
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 #2
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 #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;
        }

        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 #5
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 #6
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 #7
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 #8
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 #9
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
 }
Beispiel #10
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
        }
    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 #12
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 #13
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 #14
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 #15
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 #16
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 #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 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 #19
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
 }
Beispiel #20
0
        public void DeleteInstance_RequestObject()
        {
            // Snippet: DeleteInstance(DeleteInstanceRequest,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            DeleteInstanceRequest request = new DeleteInstanceRequest
            {
                Name = new InstanceName("[PROJECT]", "[INSTANCE]").ToString(),
            };

            // Make the request
            instanceAdminClient.DeleteInstance(request);
            // End snippet
        }
Beispiel #21
0
    public IEnumerable <InstanceConfig> ListInstanceConfigs(string projectId)
    {
        var instanceAdminClient = InstanceAdminClient.Create();
        var projectName         = ProjectName.FromProject(projectId);
        var instanceConfigs     = instanceAdminClient.ListInstanceConfigs(projectName);

        foreach (var instanceConfig in instanceConfigs)
        {
            Console.WriteLine($"Available leader options for instance config {instanceConfig.InstanceConfigName.InstanceConfigId}:");
            foreach (var leader in instanceConfig.LeaderOptions)
            {
                Console.WriteLine(leader);
            }
        }
        return(instanceConfigs);
    }
Beispiel #22
0
        /// <summary>Snippet for ListInstances</summary>
        public void ListInstances_RequestObject()
        {
            // Snippet: ListInstances(ListInstancesRequest,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            ListInstancesRequest request = new ListInstancesRequest
            {
                ParentAsProjectName = new ProjectName("[PROJECT]"),
            };
            // Make the request
            PagedEnumerable <ListInstancesResponse, Instance> response =
                instanceAdminClient.ListInstances(request);

            // Iterate over all response items, lazily performing RPCs as required
            foreach (Instance item in response)
            {
                // Do something with each item
                Console.WriteLine(item);
            }

            // Or iterate over pages (of server-defined size), performing one RPC per page
            foreach (ListInstancesResponse page in response.AsRawResponses())
            {
                // Do something with each page of items
                Console.WriteLine("A page of results:");
                foreach (Instance item in page)
                {
                    Console.WriteLine(item);
                }
            }

            // Or retrieve a single page of known size (unless it's the final page), performing as many RPCs as required
            int             pageSize   = 10;
            Page <Instance> singlePage = response.ReadPage(pageSize);

            // Do something with the page of items
            Console.WriteLine($"A page of {pageSize} results (unless it's the final page):");
            foreach (Instance item in singlePage)
            {
                Console.WriteLine(item);
            }
            // Store the pageToken, for when the next page is required.
            string nextPageToken = singlePage.NextPageToken;
            // End snippet
        }
    private bool InitializeInstance()
    {
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
        InstanceName        instanceName        = InstanceName.FromProjectInstance(ProjectId, InstanceId);

        try
        {
            Instance response = instanceAdminClient.GetInstance(instanceName);
            return(true);
        }
        catch (RpcException ex) when(ex.Status.StatusCode == StatusCode.NotFound)
        {
            CreateInstanceSample createInstanceSample = new CreateInstanceSample();

            createInstanceSample.CreateInstance(ProjectId, InstanceId);
            return(false);
        }
    }
    private async Task CreateInstanceWithMultiRegionAsync()
    {
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

        var      projectName = ProjectName.FromProject(ProjectId);
        Instance instance    = new Instance
        {
            DisplayName = "Multi-region samples test",
            ConfigAsInstanceConfigName = InstanceConfigName.FromProjectInstanceConfig(ProjectId, InstanceConfigId),
            InstanceName = InstanceName.FromProjectInstance(ProjectId, InstanceIdWithMultiRegion),
            NodeCount    = 1,
        };

        var response = await instanceAdminClient.CreateInstanceAsync(projectName, InstanceIdWithMultiRegion, instance);

        // Poll until the returned long-running operation is complete
        await response.PollUntilCompletedAsync();
    }
    public static Instance SpannerCreateInstance(string projectId, string instanceId)
    {
        // Create the InstanceAdminClient instance.
        InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();

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

        // Make the CreateInstance request.
        Operation <Instance, CreateInstanceMetadata> response =
            instanceAdminClient.CreateInstance(parentAsProjectName, 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.");

        return(completedResponse.Result);
    }
Beispiel #26
0
        public void CreateInstance_RequestObject()
        {
            // Snippet: CreateInstance(CreateInstanceRequest,CallSettings)
            // Create client
            InstanceAdminClient instanceAdminClient = InstanceAdminClient.Create();
            // Initialize request argument(s)
            CreateInstanceRequest request = new CreateInstanceRequest
            {
                Parent     = new ProjectName("[PROJECT]").ToString(),
                InstanceId = "",
                Instance   = new Instance(),
            };
            // Make the request
            Operation <Instance> response =
                instanceAdminClient.CreateInstance(request);

            // Poll until the returned long-running operation is complete
            Operation <Instance> 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> 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
        }