diff --git a/modelarmor/api/ModelArmor.Samples/ModelArmor.Samples.csproj b/modelarmor/api/ModelArmor.Samples/ModelArmor.Samples.csproj index 91bd4f62433..8a0a414ad19 100644 --- a/modelarmor/api/ModelArmor.Samples/ModelArmor.Samples.csproj +++ b/modelarmor/api/ModelArmor.Samples/ModelArmor.Samples.csproj @@ -1,4 +1,4 @@ - + net8.0 false diff --git a/storage/api/README.md b/storage/api/README.md index ad6ed86fb37..55210357876 100644 --- a/storage/api/README.md +++ b/storage/api/README.md @@ -28,4 +28,8 @@ The samples requires [.NET Core 3.1][net-core] or later. That means using [Storage]: https://cloud.google.com/storage/docs/ [enable-api]: https://console.cloud.google.com/flows/enableapi?apiid=storage_api&showconfirmation=true -[net-core]: https://www.microsoft.com/net/core \ No newline at end of file +[net-core]: https://www.microsoft.com/net/core + +## Note + +Tests for the Anywhere Cache samples are not included because creating an AnywhereCache can take an extremely long time, sometimes up to 48 hours. diff --git a/storage/api/Storage.Samples/StorageControlCreateAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlCreateAnywhereCache.cs new file mode 100644 index 00000000000..5a6ec5a75d3 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlCreateAnywhereCache.cs @@ -0,0 +1,56 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_create_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using Google.LongRunning; +using System; + +public class StorageControlCreateAnywhereCacheSample +{ + /// Creates an anywhere cache instance in the specified bucket. + /// The name of the bucket. + /// The name of the zone in which the cache instance will run. + public Operation StorageControlCreateAnywhereCache(string bucketName = "your-unique-bucket-name", + string zoneName = "us-east1-a") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string parent = $"projects/_/buckets/{bucketName}"; + + AnywhereCache anywhereCache = new AnywhereCache + { + Zone = zoneName + }; + + var request = new CreateAnywhereCacheRequest + { + AnywhereCache = anywhereCache, + Parent = parent + }; + + // Start a long-running operation (LRO). + Operation createdCacheOperation = storageControlClient.CreateAnywhereCache(request); + + // Await the LROs completion. + var createdCache = createdCacheOperation.PollUntilCompleted(); + + Console.WriteLine($"Created Anywhere Cache Instance: {createdCache.Result.AnywhereCacheName}"); + + return createdCache; + } +} +// [END storage_control_create_anywhere_cache] diff --git a/storage/api/Storage.Samples/StorageControlDisableAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlDisableAnywhereCache.cs new file mode 100644 index 00000000000..c68fae03167 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlDisableAnywhereCache.cs @@ -0,0 +1,45 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_disable_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using System; + +public class StorageControlDisableAnywhereCacheSample +{ + /// Disables the anywhere cache instance in the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + /// The unique identifier of the cache instance to disable. + public AnywhereCache StorageControlDisableAnywhereCache(string bucketName = "your-unique-bucket-name", + string anywhereCacheId = "us-east1-a") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string anywhereCacheName = $"projects/_/buckets/{bucketName}/anywhereCaches/{anywhereCacheId}"; + + var request = new DisableAnywhereCacheRequest + { + Name = anywhereCacheName + }; + + AnywhereCache disabledCache = storageControlClient.DisableAnywhereCache(request); + + Console.WriteLine($"Disabled Anywhere Cache Instance: {disabledCache.Name}"); + + return disabledCache; + } +} +// [END storage_control_disable_anywhere_cache] diff --git a/storage/api/Storage.Samples/StorageControlGetAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlGetAnywhereCache.cs new file mode 100644 index 00000000000..0f88ca2ad84 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlGetAnywhereCache.cs @@ -0,0 +1,45 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_get_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using System; + +public class StorageControlGetAnywhereCacheSample +{ + /// Gets an anywhere cache instance for the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + /// The unique identifier of the cache instance. + public AnywhereCache StorageControlGetAnywhereCache(string bucketName = "your-unique-bucket-name", + string anywhereCacheId = "us-east1-a") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string anywhereCacheName = $"projects/_/buckets/{bucketName}/anywhereCaches/{anywhereCacheId}"; + + var request = new GetAnywhereCacheRequest + { + Name = anywhereCacheName + }; + + AnywhereCache retrievedCache = storageControlClient.GetAnywhereCache(request); + + Console.WriteLine($"Got Anywhere Cache Instance: {retrievedCache.Name}"); + + return retrievedCache; + } +} +// [END storage_control_get_anywhere_cache] diff --git a/storage/api/Storage.Samples/StorageControlListAnywhereCaches.cs b/storage/api/Storage.Samples/StorageControlListAnywhereCaches.cs new file mode 100644 index 00000000000..7934e192ea3 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlListAnywhereCaches.cs @@ -0,0 +1,50 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_list_anywhere_caches] + +using Google.Api.Gax; +using Google.Cloud.Storage.Control.V2; +using System; +using System.Collections.Generic; + +public class StorageControlListAnywhereCachesSample +{ + /// Lists all anywhere cache instances for the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + public IEnumerable StorageControlListAnywhereCaches(string bucketName = "your-unique-bucket-name") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string parent = $"projects/_/buckets/{bucketName}"; + + var request = new ListAnywhereCachesRequest + { + Parent = parent + }; + + PagedEnumerable anywhereCaches = storageControlClient.ListAnywhereCaches(request); + + Console.WriteLine($"The Names of Anywhere Cache Instances are as follows:"); + + foreach (AnywhereCache cache in anywhereCaches) + { + Console.WriteLine($"Anywhere Cache Instance: {cache.Name}"); + } + + return anywhereCaches; + } +} +// [END storage_control_list_anywhere_caches] diff --git a/storage/api/Storage.Samples/StorageControlPauseAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlPauseAnywhereCache.cs new file mode 100644 index 00000000000..9ad7ffb713a --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlPauseAnywhereCache.cs @@ -0,0 +1,45 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_pause_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using System; + +public class StorageControlPauseAnywhereCacheSample +{ + /// Pauses an anywhere cache instance in the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + /// The unique identifier of the cache instance to pause. + public AnywhereCache StorageControlPauseAnywhereCache(string bucketName = "your-unique-bucket-name", + string anywhereCacheId = "us-east1-a") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string anywhereCacheName = $"projects/_/buckets/{bucketName}/anywhereCaches/{anywhereCacheId}"; + + var request = new PauseAnywhereCacheRequest + { + Name = anywhereCacheName + }; + + AnywhereCache pausedCache = storageControlClient.PauseAnywhereCache(request); + + Console.WriteLine($"Paused Anywhere Cache Instance: {pausedCache.Name}"); + + return pausedCache; + } +} +// [END storage_control_pause_anywhere_cache] diff --git a/storage/api/Storage.Samples/StorageControlResumeAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlResumeAnywhereCache.cs new file mode 100644 index 00000000000..94a97865460 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlResumeAnywhereCache.cs @@ -0,0 +1,45 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_resume_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using System; + +public class StorageControlResumeAnywhereCacheSample +{ + /// Resumes the disabled or paused anywhere cache instance in the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + /// The unique identifier of the cache instance to resume. + public AnywhereCache StorageControlResumeAnywhereCache(string bucketName = "your-unique-bucket-name", + string anywhereCacheId = "us-east1-a") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string anywhereCacheName = $"projects/_/buckets/{bucketName}/anywhereCaches/{anywhereCacheId}"; + + var request = new ResumeAnywhereCacheRequest + { + Name = anywhereCacheName + }; + + AnywhereCache resumedCache = storageControlClient.ResumeAnywhereCache(request); + + Console.WriteLine($"Resumed Anywhere Cache Instance: {resumedCache.Name}"); + + return resumedCache; + } +} +// [END storage_control_resume_anywhere_cache] diff --git a/storage/api/Storage.Samples/StorageControlUpdateAnywhereCache.cs b/storage/api/Storage.Samples/StorageControlUpdateAnywhereCache.cs new file mode 100644 index 00000000000..bc654bc6703 --- /dev/null +++ b/storage/api/Storage.Samples/StorageControlUpdateAnywhereCache.cs @@ -0,0 +1,61 @@ +// Copyright 2025 Google LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"). +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// https://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +// [START storage_control_update_anywhere_cache] + +using Google.Cloud.Storage.Control.V2; +using Google.LongRunning; +using Google.Protobuf.WellKnownTypes; +using System; + +public class StorageControlUpdateAnywhereCacheSample +{ + /// Updates the running anywhere cache instance for the specified bucket. + /// The name of the bucket that owns the anywhere cache instance. + /// The unique identifier of the cache instance to update. + /// The cache's admission policy. Values can be admit-on-first-miss or admit-on-second-miss. If not specified, it defaults to admit-on-first-miss. + public Operation StorageControlUpdateAnywhereCache(string bucketName = "your-bucket-name", + string anywhereCacheId = "us-east1-a", + string admissionPolicy = "admit-on-first-miss") + { + StorageControlClient storageControlClient = StorageControlClient.Create(); + + // Set project to "_" to signify globally scoped bucket. + string anywhereCacheName = $"projects/_/buckets/{bucketName}/anywhereCaches/{anywhereCacheId}"; + + var anywhereCache = new AnywhereCache + { + Name = anywhereCacheName, + AdmissionPolicy = admissionPolicy + }; + FieldMask fieldMask = new FieldMask { Paths = { "admission_policy" } }; + + var request = new UpdateAnywhereCacheRequest + { + AnywhereCache = anywhereCache, + UpdateMask = fieldMask + }; + + // Start a long-running operation (LRO). + Operation updatedCacheOperation = storageControlClient.UpdateAnywhereCache(request); + + // Await the LROs completion. + var updatedCache = updatedCacheOperation.PollUntilCompleted(); + + Console.WriteLine($"Updated Anywhere Cache Instance: {updatedCache.Result.Name}, New Cache Admission Policy: {updatedCache.Result.AdmissionPolicy}"); + + return updatedCache; + } +} +// [END storage_control_update_anywhere_cache]