From e5aa05e7bf147ce9b34932d3bae7c7ccec4d344b Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Fri, 10 Jun 2022 20:14:18 +0530 Subject: [PATCH 1/6] CreateFeaturestore Sample API --- .../aiplatform/CreateFeaturestoreSample.java | 85 +++++++++++++++ .../aiplatform/DeleteFeaturestoreSample.java | 79 ++++++++++++++ .../CreateFeaturestoreSampleTest.java | 101 ++++++++++++++++++ 3 files changed, 265 insertions(+) create mode 100644 samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java create mode 100644 samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java new file mode 100644 index 000000000..7f42109cb --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java @@ -0,0 +1,85 @@ +/* + * Copyright 2022 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 + * + * http://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. + */ + +package aiplatform; + +// [START aiplatform_create_featurestore_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1beta1.CreateFeaturestoreOperationMetadata; +import com.google.cloud.aiplatform.v1beta1.CreateFeaturestoreRequest; +import com.google.cloud.aiplatform.v1beta1.Featurestore; +import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig; +import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig.Scaling; +import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1beta1.LocationName; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class CreateFeaturestoreSample { + + public static void main(String[] args) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String featurestoreId = "YOUR_FEATURESTORE_ID"; + int minNodeCount = 1; + int maxNodeCount = 5; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + int timeout = 900; + createFeaturestoreSample(project, featurestoreId, minNodeCount, maxNodeCount, + location, endpoint, timeout); + } + + static void createFeaturestoreSample(String project, String featurestoreId, + int minNodeCount, int maxNodeCount, String location, String endpoint, int timeout) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + OnlineServingConfig.Builder builderValue = OnlineServingConfig.newBuilder().setScaling( + Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount)); + Featurestore featurestore = + Featurestore.newBuilder().setOnlineServingConfig(builderValue).build(); + String parent = LocationName.of(project, location).toString(); + + CreateFeaturestoreRequest createFeaturestoreRequest = + CreateFeaturestoreRequest.newBuilder().setParent(parent).setFeaturestore(featurestore) + .setFeaturestoreId(featurestoreId).build(); + + OperationFuture featurestoreFuture = + featurestoreServiceClient.createFeaturestoreAsync(createFeaturestoreRequest); + System.out.format("Operation name: %s%n", + featurestoreFuture.getInitialFuture().get().getName()); + System.out.println("Waiting for operation to finish..."); + Featurestore featurestoreResponse = featurestoreFuture.get(timeout, TimeUnit.SECONDS); + System.out.println("Create Featurestore Response"); + System.out.format("Name: %s%n", featurestoreResponse.getName()); + } + } +} +// [END aiplatform_create_featurestore_sample] diff --git a/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java new file mode 100644 index 000000000..db55916a4 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java @@ -0,0 +1,79 @@ +/* + * Copyright 2022 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 + * + * http://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. + * + * + * Delete a featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_delete_featurestore_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1.DeleteFeaturestoreRequest; +import com.google.cloud.aiplatform.v1.DeleteOperationMetadata; +import com.google.cloud.aiplatform.v1.FeaturestoreName; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.protobuf.Empty; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class DeleteFeaturestoreSample { + + public static void main(String[] args) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // TODO(developer): Replace these variables before running the sample. + String project = "vertex-ai-dev"; // "YOUR_PROJECT_ID"; + String featurestoreId = "movie_prediction"; // "YOUR_FEATURESTORE_ID"; + boolean useForce = true; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + int timeout = 60; + deleteFeaturestoreSample(project, featurestoreId, useForce, location, endpoint, timeout); + } + + static void deleteFeaturestoreSample(String project, String featurestoreId, boolean useForce, + String location, String endpoint, int timeout) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + DeleteFeaturestoreRequest deleteFeaturestoreRequest = DeleteFeaturestoreRequest.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) + .setForce(useForce).build(); + + OperationFuture operationFuture = + featurestoreServiceClient.deleteFeaturestoreAsync(deleteFeaturestoreRequest); + System.out.format("Operation name: %s%n", operationFuture.getInitialFuture().get().getName()); + System.out.println("Waiting for operation to finish..."); + operationFuture.get(timeout, TimeUnit.SECONDS); + + System.out.format("Deleted Featurestore."); + } + } +} +// [END aiplatform_delete_featurestore_sample] diff --git a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java new file mode 100644 index 000000000..391c11baa --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java @@ -0,0 +1,101 @@ +/* + * Copyright 2022 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 + * + * http://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. + */ + +package aiplatform; + +import static com.google.common.truth.Truth.assertThat; +import static junit.framework.TestCase.assertNotNull; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class CreateFeaturestoreSampleTest { + + private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); + private static final int MIN_NODE_COUNT = 1; + private static final int MAX_NODE_COUNT = 5; + private static final boolean USE_FORCE = true; + private static final String LOCATION = "us-central1"; + private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; + private static final int TIMEOUT = 900; + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + private String featurestoreId; + + private static void requireEnvVar(String varName) { + String errorMessage = + String.format("Environment variable '%s' is required to perform these tests.", varName); + assertNotNull(errorMessage, System.getenv(varName)); + } + + @BeforeClass + public static void checkRequirements() { + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("UCAIP_PROJECT_ID"); + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() + throws InterruptedException, ExecutionException, IOException, TimeoutException { + + // Delete the featurestore + DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, + LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String deleteFeaturestoreResponse = bout.toString(); + assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); + System.out.flush(); + System.setOut(originalPrintStream); + } + + @Test + public void testCreateFeaturestoreSample() + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // Create the featurestore + String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); + String id = String.format("temp_create_featurestore_test_%s", tempUuid); + CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, + MIN_NODE_COUNT, MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String createFeaturestoreResponse = bout.toString(); + assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); + featurestoreId = + createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] + .trim(); + } +} From 41c1401368f6b5e61332b8cf7471297d329c8276 Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Fri, 10 Jun 2022 20:17:58 +0530 Subject: [PATCH 2/6] DeleteFeaturestore Sample API --- .../src/main/java/aiplatform/CreateFeaturestoreSample.java | 5 +++++ .../src/main/java/aiplatform/DeleteFeaturestoreSample.java | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java index 7f42109cb..c2ec06aa4 100644 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java @@ -12,6 +12,11 @@ * 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. + * + * + * Create a featurestore resource to contain entity types and features. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet */ package aiplatform; diff --git a/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java index db55916a4..c90abba1a 100644 --- a/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java @@ -40,8 +40,8 @@ public class DeleteFeaturestoreSample { public static void main(String[] args) throws IOException, InterruptedException, ExecutionException, TimeoutException { // TODO(developer): Replace these variables before running the sample. - String project = "vertex-ai-dev"; // "YOUR_PROJECT_ID"; - String featurestoreId = "movie_prediction"; // "YOUR_FEATURESTORE_ID"; + String project = "YOUR_PROJECT_ID"; + String featurestoreId = "YOUR_FEATURESTORE_ID"; boolean useForce = true; String location = "us-central1"; String endpoint = "us-central1-aiplatform.googleapis.com:443"; From c9ed6ac36d93a1126df5da698466dcce01e6e5bd Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Tue, 14 Jun 2022 10:41:34 +0530 Subject: [PATCH 3/6] Create, Update, Get featurestore API's --- .../CreateFeaturestoreFixedNodesSample.java | 87 ++++++++++++++ .../aiplatform/GetFeaturestoreSample.java | 65 ++++++++++ .../aiplatform/UpdateFeaturestoreSample.java | 88 ++++++++++++++ ...reateFeaturestoreFixedNodesSampleTest.java | 100 ++++++++++++++++ .../aiplatform/GetFeaturestoreSampleTest.java | 111 ++++++++++++++++++ .../UpdateFeaturestoreSampleTest.java | 111 ++++++++++++++++++ 6 files changed, 562 insertions(+) create mode 100644 samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java create mode 100644 samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java create mode 100644 samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java create mode 100644 samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java new file mode 100644 index 000000000..17224c1fc --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -0,0 +1,87 @@ +/* + * Copyright 2022 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 + * + * http://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. + * + * + * Create a featurestore resource to contain entity types and features. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_create_featurestore_fixed_nodes_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata; +import com.google.cloud.aiplatform.v1.CreateFeaturestoreRequest; +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.LocationName; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class CreateFeaturestoreFixedNodesSample { + + public static void main(String[] args) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String featurestoreId = "YOUR_FEATURESTORE_ID"; + int fixedNodeCount = 1; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + int timeout = 900; + createFeaturestoreFixedNodesSample(project, featurestoreId, fixedNodeCount, location, endpoint, + timeout); + } + + static void createFeaturestoreFixedNodesSample(String project, String featurestoreId, + int fixedNodeCount, String location, String endpoint, int timeout) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + OnlineServingConfig.Builder builderValue = + OnlineServingConfig.newBuilder().setFixedNodeCount(fixedNodeCount); + Featurestore featurestore = + Featurestore.newBuilder().setOnlineServingConfig(builderValue).build(); + + CreateFeaturestoreRequest createFeaturestoreRequest = CreateFeaturestoreRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()).setFeaturestore(featurestore) + .setFeaturestoreId(featurestoreId).build(); + + OperationFuture featurestoreFuture = + featurestoreServiceClient.createFeaturestoreAsync(createFeaturestoreRequest); + System.out.format("Operation name: %s%n", + featurestoreFuture.getInitialFuture().get().getName()); + System.out.println("Waiting for operation to finish..."); + Featurestore featurestoreResponse = featurestoreFuture.get(timeout, TimeUnit.SECONDS); + System.out.println("Create Featurestore Response"); + System.out.format("Name: %s%n", featurestoreResponse.getName()); + } + } +} +// [END aiplatform_create_featurestore_fixed_nodes_sample] diff --git a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java new file mode 100644 index 000000000..00512da30 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -0,0 +1,65 @@ +/* + * Copyright 2022 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 + * + * http://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. + * + * + * Gets details of a single featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_get_featurestore_sample] + +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.FeaturestoreName; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.GetFeaturestoreRequest; +import java.io.IOException; + +public class GetFeaturestoreSample { + + public static void main(String[] args) throws IOException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String featurestoreId = "YOUR_FEATURESTORE_ID"; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + getFeaturestoreSample(project, featurestoreId, location, endpoint); + } + + static void getFeaturestoreSample(String project, String featurestoreId, String location, + String endpoint) throws IOException { + + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + GetFeaturestoreRequest getFeaturestoreRequest = GetFeaturestoreRequest.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()).build(); + + Featurestore featurestore = featurestoreServiceClient.getFeaturestore(getFeaturestoreRequest); + System.out.println("Get Featurestore Response"); + System.out.println(featurestore); + } + } +} +// [END aiplatform_get_featurestore_sample] diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java new file mode 100644 index 000000000..805caa7d6 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java @@ -0,0 +1,88 @@ +/* + * Copyright 2022 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 + * + * http://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. + * + * + * Updates the parameters of a single featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_update_featurestore_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1beta1.Featurestore; +import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig; +import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig.Scaling; +import com.google.cloud.aiplatform.v1beta1.FeaturestoreName; +import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1beta1.UpdateFeaturestoreOperationMetadata; +import com.google.cloud.aiplatform.v1beta1.UpdateFeaturestoreRequest; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class UpdateFeaturestoreSample { + + public static void main(String[] args) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String featurestoreId = "YOUR_FEATURESTORE_ID"; + int minNodeCount = 2; + int maxNodeCount = 4; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + int timeout = 300; + updateFeaturestoreSample(project, featurestoreId, minNodeCount, maxNodeCount, location, + endpoint, timeout); + } + + static void updateFeaturestoreSample(String project, String featurestoreId, int minNodeCount, + int maxNodeCount, String location, String endpoint, int timeout) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + OnlineServingConfig.Builder builderValue = OnlineServingConfig.newBuilder().setScaling( + Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount)); + Featurestore featurestore = Featurestore.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) + .setOnlineServingConfig(builderValue).build(); + + UpdateFeaturestoreRequest request = + UpdateFeaturestoreRequest.newBuilder().setFeaturestore(featurestore).build(); + + OperationFuture updateFeaturestoreFuture = + featurestoreServiceClient.updateFeaturestoreAsync(request); + System.out.format("Operation name: %s%n", + updateFeaturestoreFuture.getInitialFuture().get().getName()); + System.out.println("Waiting for operation to finish..."); + Featurestore featurestoreResponse = updateFeaturestoreFuture.get(timeout, TimeUnit.SECONDS); + System.out.println("Update Featurestore Response"); + System.out.format("Name: %s%n", featurestoreResponse.getName()); + } + } +} +// [END aiplatform_update_featurestore_sample] diff --git a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java new file mode 100644 index 000000000..5d775cb7a --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java @@ -0,0 +1,100 @@ +/* + * Copyright 2022 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 + * + * http://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. + */ + +package aiplatform; + +import static com.google.common.truth.Truth.assertThat; +import static junit.framework.TestCase.assertNotNull; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class CreateFeaturestoreFixedNodesSampleTest { + + private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); + private static final int FIXED_NODE_COUNT = 1; + private static final boolean USE_FORCE = true; + private static final String LOCATION = "us-central1"; + private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; + private static final int TIMEOUT = 900; + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + private String featurestoreId; + + private static void requireEnvVar(String varName) { + String errorMessage = + String.format("Environment variable '%s' is required to perform these tests.", varName); + assertNotNull(errorMessage, System.getenv(varName)); + } + + @BeforeClass + public static void checkRequirements() { + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("UCAIP_PROJECT_ID"); + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() + throws InterruptedException, ExecutionException, IOException, TimeoutException { + + // Delete the featurestore + DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, + LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String deleteFeaturestoreResponse = bout.toString(); + assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); + System.out.flush(); + System.setOut(originalPrintStream); + } + + @Test + public void testCreateFeaturestoreFixedNodesSample() + throws IOException, InterruptedException, ExecutionException, TimeoutException { + // Create the featurestore + String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); + String id = String.format("temp_create_featurestore_test_%s", tempUuid); + CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample(PROJECT_ID, id, + FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String createFeaturestoreResponse = bout.toString(); + assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); + featurestoreId = + createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] + .trim(); + } +} diff --git a/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java new file mode 100644 index 000000000..cf875886a --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java @@ -0,0 +1,111 @@ +/* + * Copyright 2022 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 + * + * http://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. + */ + +package aiplatform; + +import static com.google.common.truth.Truth.assertThat; +import static junit.framework.TestCase.assertNotNull; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class GetFeaturestoreSampleTest { + + private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); + private static final int MIN_NODE_COUNT = 1; + private static final int MAX_NODE_COUNT = 5; + private static final boolean USE_FORCE = true; + private static final String LOCATION = "us-central1"; + private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; + private static final int TIMEOUT = 300; + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + private String featurestoreId; + + private static void requireEnvVar(String varName) { + String errorMessage = + String.format("Environment variable '%s' is required to perform these tests.", varName); + assertNotNull(errorMessage, System.getenv(varName)); + } + + @BeforeClass + public static void checkRequirements() { + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("UCAIP_PROJECT_ID"); + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() + throws InterruptedException, ExecutionException, IOException, TimeoutException { + + // Delete the featurestore + DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, + LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String deleteFeaturestoreResponse = bout.toString(); + assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); + + System.out.flush(); + System.setOut(originalPrintStream); + } + + @Test + public void testGetFeaturestoreSample() + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + // Create the featurestore + String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); + String id = String.format("temp_create_featurestore_test_%s", tempUuid); + CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, MIN_NODE_COUNT, + MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String createFeaturestoreResponse = bout.toString(); + assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); + featurestoreId = + createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] + .trim(); + + // Get the featurestore + GetFeaturestoreSample.getFeaturestoreSample(PROJECT_ID, featurestoreId, LOCATION, ENDPOINT); + + // Assert + String getFeaturestoreResponse = bout.toString(); + assertThat(getFeaturestoreResponse).contains("Get Featurestore Response"); + } + +} diff --git a/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java new file mode 100644 index 000000000..21580d873 --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java @@ -0,0 +1,111 @@ +/* + * Copyright 2022 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 + * + * http://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. + */ + +package aiplatform; + +import static com.google.common.truth.Truth.assertThat; +import static junit.framework.TestCase.assertNotNull; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.PrintStream; +import java.util.UUID; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeoutException; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +@RunWith(JUnit4.class) +public class UpdateFeaturestoreSampleTest { + + private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); + private static final int MIN_NODE_COUNT = 1; + private static final int MAX_NODE_COUNT = 4; + private static final boolean USE_FORCE = true; + private static final String LOCATION = "us-central1"; + private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; + private static final int TIMEOUT = 300; + private ByteArrayOutputStream bout; + private PrintStream out; + private PrintStream originalPrintStream; + private String featurestoreId; + + private static void requireEnvVar(String varName) { + String errorMessage = + String.format("Environment variable '%s' is required to perform these tests.", varName); + assertNotNull(errorMessage, System.getenv(varName)); + } + + @BeforeClass + public static void checkRequirements() { + requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); + requireEnvVar("UCAIP_PROJECT_ID"); + } + + @Before + public void setUp() { + bout = new ByteArrayOutputStream(); + out = new PrintStream(bout); + originalPrintStream = System.out; + System.setOut(out); + } + + @After + public void tearDown() + throws InterruptedException, ExecutionException, IOException, TimeoutException { + + // Delete the featurestore + DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, + LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String deleteFeaturestoreResponse = bout.toString(); + assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); + System.out.flush(); + System.setOut(originalPrintStream); + } + + @Test + public void testUpdateFeaturestoreSample() + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + // Create the featurestore + String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); + String id = String.format("temp_create_featurestore_test_%s", tempUuid); + CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, MIN_NODE_COUNT, + MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String createFeaturestoreResponse = bout.toString(); + assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); + featurestoreId = + createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] + .trim(); + + // Update the featurestore + UpdateFeaturestoreSample.updateFeaturestoreSample(PROJECT_ID, featurestoreId, MIN_NODE_COUNT, + MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String updateFeaturestoreResponse = bout.toString(); + assertThat(updateFeaturestoreResponse).contains("Update Featurestore Response"); + } + +} From f279575b094d6dcfb78163d7637c4653736bf7d3 Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Tue, 14 Jun 2022 11:20:10 +0530 Subject: [PATCH 4/6] Revert Code --- .../CreateFeaturestoreFixedNodesSample.java | 87 -------------- .../aiplatform/GetFeaturestoreSample.java | 65 ---------- .../aiplatform/UpdateFeaturestoreSample.java | 88 -------------- ...reateFeaturestoreFixedNodesSampleTest.java | 100 ---------------- .../aiplatform/GetFeaturestoreSampleTest.java | 111 ------------------ .../UpdateFeaturestoreSampleTest.java | 111 ------------------ 6 files changed, 562 deletions(-) delete mode 100644 samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java delete mode 100644 samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java delete mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java delete mode 100644 samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java delete mode 100644 samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java delete mode 100644 samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java deleted file mode 100644 index 17224c1fc..000000000 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - * - * - * Create a featurestore resource to contain entity types and features. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running - * the code snippet - */ - -package aiplatform; - -// [START aiplatform_create_featurestore_fixed_nodes_sample] - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.aiplatform.v1.CreateFeaturestoreOperationMetadata; -import com.google.cloud.aiplatform.v1.CreateFeaturestoreRequest; -import com.google.cloud.aiplatform.v1.Featurestore; -import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig; -import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; -import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; -import com.google.cloud.aiplatform.v1.LocationName; -import java.io.IOException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class CreateFeaturestoreFixedNodesSample { - - public static void main(String[] args) - throws IOException, InterruptedException, ExecutionException, TimeoutException { - // TODO(developer): Replace these variables before running the sample. - String project = "YOUR_PROJECT_ID"; - String featurestoreId = "YOUR_FEATURESTORE_ID"; - int fixedNodeCount = 1; - String location = "us-central1"; - String endpoint = "us-central1-aiplatform.googleapis.com:443"; - int timeout = 900; - createFeaturestoreFixedNodesSample(project, featurestoreId, fixedNodeCount, location, endpoint, - timeout); - } - - static void createFeaturestoreFixedNodesSample(String project, String featurestoreId, - int fixedNodeCount, String location, String endpoint, int timeout) - throws IOException, InterruptedException, ExecutionException, TimeoutException { - - FeaturestoreServiceSettings featurestoreServiceSettings = - FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (FeaturestoreServiceClient featurestoreServiceClient = - FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - - OnlineServingConfig.Builder builderValue = - OnlineServingConfig.newBuilder().setFixedNodeCount(fixedNodeCount); - Featurestore featurestore = - Featurestore.newBuilder().setOnlineServingConfig(builderValue).build(); - - CreateFeaturestoreRequest createFeaturestoreRequest = CreateFeaturestoreRequest.newBuilder() - .setParent(LocationName.of(project, location).toString()).setFeaturestore(featurestore) - .setFeaturestoreId(featurestoreId).build(); - - OperationFuture featurestoreFuture = - featurestoreServiceClient.createFeaturestoreAsync(createFeaturestoreRequest); - System.out.format("Operation name: %s%n", - featurestoreFuture.getInitialFuture().get().getName()); - System.out.println("Waiting for operation to finish..."); - Featurestore featurestoreResponse = featurestoreFuture.get(timeout, TimeUnit.SECONDS); - System.out.println("Create Featurestore Response"); - System.out.format("Name: %s%n", featurestoreResponse.getName()); - } - } -} -// [END aiplatform_create_featurestore_fixed_nodes_sample] diff --git a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java deleted file mode 100644 index 00512da30..000000000 --- a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - * - * - * Gets details of a single featurestore. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running - * the code snippet - */ - -package aiplatform; - -// [START aiplatform_get_featurestore_sample] - -import com.google.cloud.aiplatform.v1.Featurestore; -import com.google.cloud.aiplatform.v1.FeaturestoreName; -import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; -import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; -import com.google.cloud.aiplatform.v1.GetFeaturestoreRequest; -import java.io.IOException; - -public class GetFeaturestoreSample { - - public static void main(String[] args) throws IOException { - // TODO(developer): Replace these variables before running the sample. - String project = "YOUR_PROJECT_ID"; - String featurestoreId = "YOUR_FEATURESTORE_ID"; - String location = "us-central1"; - String endpoint = "us-central1-aiplatform.googleapis.com:443"; - getFeaturestoreSample(project, featurestoreId, location, endpoint); - } - - static void getFeaturestoreSample(String project, String featurestoreId, String location, - String endpoint) throws IOException { - - FeaturestoreServiceSettings featurestoreServiceSettings = - FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (FeaturestoreServiceClient featurestoreServiceClient = - FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - - GetFeaturestoreRequest getFeaturestoreRequest = GetFeaturestoreRequest.newBuilder() - .setName(FeaturestoreName.of(project, location, featurestoreId).toString()).build(); - - Featurestore featurestore = featurestoreServiceClient.getFeaturestore(getFeaturestoreRequest); - System.out.println("Get Featurestore Response"); - System.out.println(featurestore); - } - } -} -// [END aiplatform_get_featurestore_sample] diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java deleted file mode 100644 index 805caa7d6..000000000 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java +++ /dev/null @@ -1,88 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - * - * - * Updates the parameters of a single featurestore. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running - * the code snippet - */ - -package aiplatform; - -// [START aiplatform_update_featurestore_sample] - -import com.google.api.gax.longrunning.OperationFuture; -import com.google.cloud.aiplatform.v1beta1.Featurestore; -import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig; -import com.google.cloud.aiplatform.v1beta1.Featurestore.OnlineServingConfig.Scaling; -import com.google.cloud.aiplatform.v1beta1.FeaturestoreName; -import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceClient; -import com.google.cloud.aiplatform.v1beta1.FeaturestoreServiceSettings; -import com.google.cloud.aiplatform.v1beta1.UpdateFeaturestoreOperationMetadata; -import com.google.cloud.aiplatform.v1beta1.UpdateFeaturestoreRequest; -import java.io.IOException; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class UpdateFeaturestoreSample { - - public static void main(String[] args) - throws IOException, InterruptedException, ExecutionException, TimeoutException { - // TODO(developer): Replace these variables before running the sample. - String project = "YOUR_PROJECT_ID"; - String featurestoreId = "YOUR_FEATURESTORE_ID"; - int minNodeCount = 2; - int maxNodeCount = 4; - String location = "us-central1"; - String endpoint = "us-central1-aiplatform.googleapis.com:443"; - int timeout = 300; - updateFeaturestoreSample(project, featurestoreId, minNodeCount, maxNodeCount, location, - endpoint, timeout); - } - - static void updateFeaturestoreSample(String project, String featurestoreId, int minNodeCount, - int maxNodeCount, String location, String endpoint, int timeout) - throws IOException, InterruptedException, ExecutionException, TimeoutException { - FeaturestoreServiceSettings featurestoreServiceSettings = - FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); - - // Initialize client that will be used to send requests. This client only needs to be created - // once, and can be reused for multiple requests. After completing all of your requests, call - // the "close" method on the client to safely clean up any remaining background resources. - try (FeaturestoreServiceClient featurestoreServiceClient = - FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - - OnlineServingConfig.Builder builderValue = OnlineServingConfig.newBuilder().setScaling( - Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount)); - Featurestore featurestore = Featurestore.newBuilder() - .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) - .setOnlineServingConfig(builderValue).build(); - - UpdateFeaturestoreRequest request = - UpdateFeaturestoreRequest.newBuilder().setFeaturestore(featurestore).build(); - - OperationFuture updateFeaturestoreFuture = - featurestoreServiceClient.updateFeaturestoreAsync(request); - System.out.format("Operation name: %s%n", - updateFeaturestoreFuture.getInitialFuture().get().getName()); - System.out.println("Waiting for operation to finish..."); - Featurestore featurestoreResponse = updateFeaturestoreFuture.get(timeout, TimeUnit.SECONDS); - System.out.println("Update Featurestore Response"); - System.out.format("Name: %s%n", featurestoreResponse.getName()); - } - } -} -// [END aiplatform_update_featurestore_sample] diff --git a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java deleted file mode 100644 index 5d775cb7a..000000000 --- a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreFixedNodesSampleTest.java +++ /dev/null @@ -1,100 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - */ - -package aiplatform; - -import static com.google.common.truth.Truth.assertThat; -import static junit.framework.TestCase.assertNotNull; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class CreateFeaturestoreFixedNodesSampleTest { - - private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); - private static final int FIXED_NODE_COUNT = 1; - private static final boolean USE_FORCE = true; - private static final String LOCATION = "us-central1"; - private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; - private static final int TIMEOUT = 900; - private ByteArrayOutputStream bout; - private PrintStream out; - private PrintStream originalPrintStream; - private String featurestoreId; - - private static void requireEnvVar(String varName) { - String errorMessage = - String.format("Environment variable '%s' is required to perform these tests.", varName); - assertNotNull(errorMessage, System.getenv(varName)); - } - - @BeforeClass - public static void checkRequirements() { - requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("UCAIP_PROJECT_ID"); - } - - @Before - public void setUp() { - bout = new ByteArrayOutputStream(); - out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - } - - @After - public void tearDown() - throws InterruptedException, ExecutionException, IOException, TimeoutException { - - // Delete the featurestore - DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String deleteFeaturestoreResponse = bout.toString(); - assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); - System.out.flush(); - System.setOut(originalPrintStream); - } - - @Test - public void testCreateFeaturestoreFixedNodesSample() - throws IOException, InterruptedException, ExecutionException, TimeoutException { - // Create the featurestore - String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); - String id = String.format("temp_create_featurestore_test_%s", tempUuid); - CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample(PROJECT_ID, id, - FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String createFeaturestoreResponse = bout.toString(); - assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); - featurestoreId = - createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] - .trim(); - } -} diff --git a/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java deleted file mode 100644 index cf875886a..000000000 --- a/samples/snippets/src/test/java/aiplatform/GetFeaturestoreSampleTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - */ - -package aiplatform; - -import static com.google.common.truth.Truth.assertThat; -import static junit.framework.TestCase.assertNotNull; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class GetFeaturestoreSampleTest { - - private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); - private static final int MIN_NODE_COUNT = 1; - private static final int MAX_NODE_COUNT = 5; - private static final boolean USE_FORCE = true; - private static final String LOCATION = "us-central1"; - private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; - private static final int TIMEOUT = 300; - private ByteArrayOutputStream bout; - private PrintStream out; - private PrintStream originalPrintStream; - private String featurestoreId; - - private static void requireEnvVar(String varName) { - String errorMessage = - String.format("Environment variable '%s' is required to perform these tests.", varName); - assertNotNull(errorMessage, System.getenv(varName)); - } - - @BeforeClass - public static void checkRequirements() { - requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("UCAIP_PROJECT_ID"); - } - - @Before - public void setUp() { - bout = new ByteArrayOutputStream(); - out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - } - - @After - public void tearDown() - throws InterruptedException, ExecutionException, IOException, TimeoutException { - - // Delete the featurestore - DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String deleteFeaturestoreResponse = bout.toString(); - assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); - - System.out.flush(); - System.setOut(originalPrintStream); - } - - @Test - public void testGetFeaturestoreSample() - throws IOException, InterruptedException, ExecutionException, TimeoutException { - - // Create the featurestore - String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); - String id = String.format("temp_create_featurestore_test_%s", tempUuid); - CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, MIN_NODE_COUNT, - MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String createFeaturestoreResponse = bout.toString(); - assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); - featurestoreId = - createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] - .trim(); - - // Get the featurestore - GetFeaturestoreSample.getFeaturestoreSample(PROJECT_ID, featurestoreId, LOCATION, ENDPOINT); - - // Assert - String getFeaturestoreResponse = bout.toString(); - assertThat(getFeaturestoreResponse).contains("Get Featurestore Response"); - } - -} diff --git a/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java deleted file mode 100644 index 21580d873..000000000 --- a/samples/snippets/src/test/java/aiplatform/UpdateFeaturestoreSampleTest.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright 2022 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 - * - * http://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. - */ - -package aiplatform; - -import static com.google.common.truth.Truth.assertThat; -import static junit.framework.TestCase.assertNotNull; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.PrintStream; -import java.util.UUID; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeoutException; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.JUnit4; - -@RunWith(JUnit4.class) -public class UpdateFeaturestoreSampleTest { - - private static final String PROJECT_ID = System.getenv("UCAIP_PROJECT_ID"); - private static final int MIN_NODE_COUNT = 1; - private static final int MAX_NODE_COUNT = 4; - private static final boolean USE_FORCE = true; - private static final String LOCATION = "us-central1"; - private static final String ENDPOINT = "us-central1-aiplatform.googleapis.com:443"; - private static final int TIMEOUT = 300; - private ByteArrayOutputStream bout; - private PrintStream out; - private PrintStream originalPrintStream; - private String featurestoreId; - - private static void requireEnvVar(String varName) { - String errorMessage = - String.format("Environment variable '%s' is required to perform these tests.", varName); - assertNotNull(errorMessage, System.getenv(varName)); - } - - @BeforeClass - public static void checkRequirements() { - requireEnvVar("GOOGLE_APPLICATION_CREDENTIALS"); - requireEnvVar("UCAIP_PROJECT_ID"); - } - - @Before - public void setUp() { - bout = new ByteArrayOutputStream(); - out = new PrintStream(bout); - originalPrintStream = System.out; - System.setOut(out); - } - - @After - public void tearDown() - throws InterruptedException, ExecutionException, IOException, TimeoutException { - - // Delete the featurestore - DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String deleteFeaturestoreResponse = bout.toString(); - assertThat(deleteFeaturestoreResponse).contains("Deleted Featurestore"); - System.out.flush(); - System.setOut(originalPrintStream); - } - - @Test - public void testUpdateFeaturestoreSample() - throws IOException, InterruptedException, ExecutionException, TimeoutException { - - // Create the featurestore - String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); - String id = String.format("temp_create_featurestore_test_%s", tempUuid); - CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, MIN_NODE_COUNT, - MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String createFeaturestoreResponse = bout.toString(); - assertThat(createFeaturestoreResponse).contains("Create Featurestore Response"); - featurestoreId = - createFeaturestoreResponse.split("Name: ")[1].split("featurestores/")[1].split("\n")[0] - .trim(); - - // Update the featurestore - UpdateFeaturestoreSample.updateFeaturestoreSample(PROJECT_ID, featurestoreId, MIN_NODE_COUNT, - MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); - - // Assert - String updateFeaturestoreResponse = bout.toString(); - assertThat(updateFeaturestoreResponse).contains("Update Featurestore Response"); - } - -} From 2ee333d2b24f59d06964cd2e57a90bbfb2ca8bf7 Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Thu, 16 Jun 2022 20:06:17 +0530 Subject: [PATCH 5/6] CreateFeaturestoreSampleTest update --- .../CreateFeaturestoreSampleTest.java | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java index 391c11baa..f839ba0f1 100644 --- a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java +++ b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java @@ -19,11 +19,19 @@ import static com.google.common.truth.Truth.assertThat; import static junit.framework.TestCase.assertNotNull; +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1.DeleteFeaturestoreRequest; +import com.google.cloud.aiplatform.v1.DeleteOperationMetadata; +import com.google.cloud.aiplatform.v1.FeaturestoreName; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.protobuf.Empty; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.PrintStream; import java.util.UUID; import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import org.junit.After; import org.junit.Before; @@ -66,14 +74,41 @@ public void setUp() { originalPrintStream = System.out; System.setOut(out); } + + static void deleteFeaturestoreSample(String project, String featurestoreId, boolean useForce, + String location, String endpoint, int timeout) + throws IOException, InterruptedException, ExecutionException, TimeoutException { + + FeaturestoreServiceSettings featurestoreServiceSettings = + FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); + + // Initialize client that will be used to send requests. This client only needs to be created + // once, and can be reused for multiple requests. After completing all of your requests, call + // the "close" method on the client to safely clean up any remaining background resources. + try (FeaturestoreServiceClient featurestoreServiceClient = + FeaturestoreServiceClient.create(featurestoreServiceSettings)) { + + DeleteFeaturestoreRequest deleteFeaturestoreRequest = DeleteFeaturestoreRequest.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) + .setForce(useForce).build(); + + OperationFuture operationFuture = + featurestoreServiceClient.deleteFeaturestoreAsync(deleteFeaturestoreRequest); + System.out.format("Operation name: %s%n", operationFuture.getInitialFuture().get().getName()); + System.out.println("Waiting for operation to finish..."); + operationFuture.get(timeout, TimeUnit.SECONDS); + + System.out.format("Deleted Featurestore."); + } + } @After public void tearDown() throws InterruptedException, ExecutionException, IOException, TimeoutException { // Delete the featurestore - DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, TIMEOUT); + deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, + LOCATION, ENDPOINT, 60); // Assert String deleteFeaturestoreResponse = bout.toString(); From 405a6699cac49d10cca837fba678926c7fe3a981 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 20 Jun 2022 18:32:22 +0000 Subject: [PATCH 6/6] =?UTF-8?q?=F0=9F=A6=89=20Updates=20from=20OwlBot=20po?= =?UTF-8?q?st-processor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit See https://github.com/googleapis/repo-automation-bots/blob/main/packages/owl-bot/README.md --- README.md | 2 + .../aiplatform/CreateFeaturestoreSample.java | 37 ++++++++++++------- .../aiplatform/DeleteFeaturestoreSample.java | 21 +++++++---- .../CreateFeaturestoreSampleTest.java | 26 ++++++++----- 4 files changed, 56 insertions(+), 30 deletions(-) diff --git a/README.md b/README.md index 8cf2f88fc..385742a6e 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-aiplatform/tr | Create Dataset Text Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateDatasetTextSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateDatasetTextSample.java) | | Create Dataset Video Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateDatasetVideoSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateDatasetVideoSample.java) | | Create Endpoint Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateEndpointSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateEndpointSample.java) | +| Create Featurestore Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java) | | Create Hyperparameter Tuning Job Python Package Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateHyperparameterTuningJobPythonPackageSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateHyperparameterTuningJobPythonPackageSample.java) | | Create Hyperparameter Tuning Job Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateHyperparameterTuningJobSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateHyperparameterTuningJobSample.java) | | Create Training Pipeline Custom Job Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateTrainingPipelineCustomJobSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/CreateTrainingPipelineCustomJobSample.java) | @@ -138,6 +139,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-aiplatform/tr | Delete Dataset Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteDatasetSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteDatasetSample.java) | | Delete Endpoint Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteEndpointSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteEndpointSample.java) | | Delete Export Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteExportModelSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteExportModelSample.java) | +| Delete Featurestore Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java) | | Delete Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteModelSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteModelSample.java) | | Delete Training Pipeline Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeleteTrainingPipelineSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeleteTrainingPipelineSample.java) | | Deploy Model Custom Trained Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/DeployModelCustomTrainedModelSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-aiplatform&page=editor&open_in_editor=samples/snippets/src/main/java/aiplatform/DeployModelCustomTrainedModelSample.java) | diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java index c2ec06aa4..50e558fbb 100644 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreSample.java @@ -12,10 +12,10 @@ * 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. - * - * + * + * * Create a featurestore resource to contain entity types and features. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running * the code snippet */ @@ -49,12 +49,18 @@ public static void main(String[] args) String location = "us-central1"; String endpoint = "us-central1-aiplatform.googleapis.com:443"; int timeout = 900; - createFeaturestoreSample(project, featurestoreId, minNodeCount, maxNodeCount, - location, endpoint, timeout); + createFeaturestoreSample( + project, featurestoreId, minNodeCount, maxNodeCount, location, endpoint, timeout); } - static void createFeaturestoreSample(String project, String featurestoreId, - int minNodeCount, int maxNodeCount, String location, String endpoint, int timeout) + static void createFeaturestoreSample( + String project, + String featurestoreId, + int minNodeCount, + int maxNodeCount, + String location, + String endpoint, + int timeout) throws IOException, InterruptedException, ExecutionException, TimeoutException { FeaturestoreServiceSettings featurestoreServiceSettings = @@ -66,20 +72,25 @@ static void createFeaturestoreSample(String project, String featurestoreId, try (FeaturestoreServiceClient featurestoreServiceClient = FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - OnlineServingConfig.Builder builderValue = OnlineServingConfig.newBuilder().setScaling( - Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount)); + OnlineServingConfig.Builder builderValue = + OnlineServingConfig.newBuilder() + .setScaling( + Scaling.newBuilder().setMinNodeCount(minNodeCount).setMaxNodeCount(maxNodeCount)); Featurestore featurestore = Featurestore.newBuilder().setOnlineServingConfig(builderValue).build(); String parent = LocationName.of(project, location).toString(); CreateFeaturestoreRequest createFeaturestoreRequest = - CreateFeaturestoreRequest.newBuilder().setParent(parent).setFeaturestore(featurestore) - .setFeaturestoreId(featurestoreId).build(); + CreateFeaturestoreRequest.newBuilder() + .setParent(parent) + .setFeaturestore(featurestore) + .setFeaturestoreId(featurestoreId) + .build(); OperationFuture featurestoreFuture = featurestoreServiceClient.createFeaturestoreAsync(createFeaturestoreRequest); - System.out.format("Operation name: %s%n", - featurestoreFuture.getInitialFuture().get().getName()); + System.out.format( + "Operation name: %s%n", featurestoreFuture.getInitialFuture().get().getName()); System.out.println("Waiting for operation to finish..."); Featurestore featurestoreResponse = featurestoreFuture.get(timeout, TimeUnit.SECONDS); System.out.println("Create Featurestore Response"); diff --git a/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java index c90abba1a..eb69ad350 100644 --- a/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/DeleteFeaturestoreSample.java @@ -14,8 +14,8 @@ * limitations under the License. * * - * Delete a featurestore. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * Delete a featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running * the code snippet */ @@ -49,8 +49,13 @@ public static void main(String[] args) deleteFeaturestoreSample(project, featurestoreId, useForce, location, endpoint, timeout); } - static void deleteFeaturestoreSample(String project, String featurestoreId, boolean useForce, - String location, String endpoint, int timeout) + static void deleteFeaturestoreSample( + String project, + String featurestoreId, + boolean useForce, + String location, + String endpoint, + int timeout) throws IOException, InterruptedException, ExecutionException, TimeoutException { FeaturestoreServiceSettings featurestoreServiceSettings = @@ -62,9 +67,11 @@ static void deleteFeaturestoreSample(String project, String featurestoreId, bool try (FeaturestoreServiceClient featurestoreServiceClient = FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - DeleteFeaturestoreRequest deleteFeaturestoreRequest = DeleteFeaturestoreRequest.newBuilder() - .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) - .setForce(useForce).build(); + DeleteFeaturestoreRequest deleteFeaturestoreRequest = + DeleteFeaturestoreRequest.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) + .setForce(useForce) + .build(); OperationFuture operationFuture = featurestoreServiceClient.deleteFeaturestoreAsync(deleteFeaturestoreRequest); diff --git a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java index f839ba0f1..daea9e339 100644 --- a/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java +++ b/samples/snippets/src/test/java/aiplatform/CreateFeaturestoreSampleTest.java @@ -74,9 +74,14 @@ public void setUp() { originalPrintStream = System.out; System.setOut(out); } - - static void deleteFeaturestoreSample(String project, String featurestoreId, boolean useForce, - String location, String endpoint, int timeout) + + static void deleteFeaturestoreSample( + String project, + String featurestoreId, + boolean useForce, + String location, + String endpoint, + int timeout) throws IOException, InterruptedException, ExecutionException, TimeoutException { FeaturestoreServiceSettings featurestoreServiceSettings = @@ -88,9 +93,11 @@ static void deleteFeaturestoreSample(String project, String featurestoreId, bool try (FeaturestoreServiceClient featurestoreServiceClient = FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - DeleteFeaturestoreRequest deleteFeaturestoreRequest = DeleteFeaturestoreRequest.newBuilder() - .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) - .setForce(useForce).build(); + DeleteFeaturestoreRequest deleteFeaturestoreRequest = + DeleteFeaturestoreRequest.newBuilder() + .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) + .setForce(useForce) + .build(); OperationFuture operationFuture = featurestoreServiceClient.deleteFeaturestoreAsync(deleteFeaturestoreRequest); @@ -107,8 +114,7 @@ public void tearDown() throws InterruptedException, ExecutionException, IOException, TimeoutException { // Delete the featurestore - deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, 60); + deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, LOCATION, ENDPOINT, 60); // Assert String deleteFeaturestoreResponse = bout.toString(); @@ -123,8 +129,8 @@ public void testCreateFeaturestoreSample() // Create the featurestore String tempUuid = UUID.randomUUID().toString().replaceAll("-", "_").substring(0, 26); String id = String.format("temp_create_featurestore_test_%s", tempUuid); - CreateFeaturestoreSample.createFeaturestoreSample(PROJECT_ID, id, - MIN_NODE_COUNT, MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + CreateFeaturestoreSample.createFeaturestoreSample( + PROJECT_ID, id, MIN_NODE_COUNT, MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); // Assert String createFeaturestoreResponse = bout.toString();