From 22916b30ec5e8074536f9fbdbb14391a78c48fdf Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Thu, 23 Jun 2022 20:21:59 +0530 Subject: [PATCH 1/6] Added Featurestore Samples --- .../CreateFeaturestoreFixedNodesSample.java | 95 ++++++++++++ .../aiplatform/GetFeaturestoreSample.java | 67 +++++++++ .../ListFeaturestoresAsyncSample.java | 76 ++++++++++ .../aiplatform/ListFeaturestoresSample.java | 65 ++++++++ .../UpdateFeaturestoreFixedNodesSample.java | 86 +++++++++++ .../aiplatform/UpdateFeaturestoreSample.java | 88 +++++++++++ .../aiplatform/FeaturestoreSamplesTest.java | 141 ++++++++++++++++++ 7 files changed, 618 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/ListFeaturestoresAsyncSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java create mode 100644 samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.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..58f0cd44e --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -0,0 +1,95 @@ +/* + * 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.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.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 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] \ No newline at end of file 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..0b8087389 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -0,0 +1,67 @@ +/* + * 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.v1beta1.Featurestore; +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.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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java new file mode 100644 index 000000000..26211b3a5 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java @@ -0,0 +1,76 @@ +/* + * 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. + * + * + * List available featurestore details. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_list_featurestores_async_sample] + +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.ListFeaturestoresRequest; +import com.google.cloud.aiplatform.v1.ListFeaturestoresResponse; +import com.google.cloud.aiplatform.v1.LocationName; +import com.google.common.base.Strings; +import java.io.IOException; + +public class ListFeaturestoresAsyncSample { + + public static void main(String[] args) throws IOException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + listFeaturestoresAsyncSample(project, location, endpoint); + } + + static void listFeaturestoresAsyncSample(String project, 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)) { + + ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()).build(); + System.out.println("List Featurestores Async Response"); + while (true) { + ListFeaturestoresResponse listFeaturestoresResponse = + featurestoreServiceClient.listFeaturestoresCallable().call(listFeaturestoresRequest); + for (Featurestore element : listFeaturestoresResponse.getFeaturestoresList()) { + System.out.println(element); + } + String nextPageToken = listFeaturestoresResponse.getNextPageToken(); + if (!Strings.isNullOrEmpty(nextPageToken)) { + listFeaturestoresRequest = + listFeaturestoresRequest.toBuilder().setPageToken(nextPageToken).build(); + } else { + break; + } + } + } + } +} +// [END aiplatform_list_featurestores_async_sample] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java new file mode 100644 index 000000000..28c1837ce --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.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. + * + * + * List available featurestore details. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_list_featurestores_sample] + +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.ListFeaturestoresRequest; +import com.google.cloud.aiplatform.v1.LocationName; +import java.io.IOException; + +public class ListFeaturestoresSample { + + public static void main(String[] args) throws IOException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + listFeaturestoresSample(project, location, endpoint); + } + + static void listFeaturestoresSample(String project, 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)) { + + ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()).build(); + + System.out.println("List Featurestores Response"); + for (Featurestore element : featurestoreServiceClient + .listFeaturestores(listFeaturestoresRequest).iterateAll()) { + System.out.println(element); + } + } + } +} +// [END aiplatform_list_featurestores_sample] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java new file mode 100644 index 000000000..b8e80f320 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java @@ -0,0 +1,86 @@ +/* + * 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. + * + * + * Update featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_update_featurestore_fixed_nodes_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig; +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.UpdateFeaturestoreOperationMetadata; +import com.google.cloud.aiplatform.v1.UpdateFeaturestoreRequest; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class UpdateFeaturestoreFixedNodesSample { + + 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 = 300; + updateFeaturestoreFixedNodesSample(project, featurestoreId, fixedNodeCount, location, endpoint, + timeout); + } + + static void updateFeaturestoreFixedNodesSample(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() + .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 Fixed Nodes Response"); + System.out.format("Name: %s%n", featurestoreResponse.getName()); + } + } +} +// [END aiplatform_update_featurestore_fixed_nodes_sample] \ No newline at end of file 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..397988d82 --- /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] \ No newline at end of file diff --git a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java new file mode 100644 index 000000000..7c1e65559 --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java @@ -0,0 +1,141 @@ +/* + * 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 FeaturestoreSamplesTest { + + 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 int FIXED_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, 60); + + // 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); + CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample(PROJECT_ID, id, + FIXED_NODE_COUNT, LOCATION, ENDPOINT, 900); + + // 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"); + + + // Update the featurestore with autoscaling + 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"); + + // List featurestores + ListFeaturestoresSample.listFeaturestoresSample(PROJECT_ID, LOCATION, ENDPOINT); + + // Assert + String listFeaturestoresResponse = bout.toString(); + assertThat(listFeaturestoresResponse).contains("List Featurestores Response"); + + // Update the featurestore with fixed nodes + UpdateFeaturestoreFixedNodesSample.updateFeaturestoreFixedNodesSample(PROJECT_ID, + featurestoreId, FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String updateFeaturestoreFixedNodesResponse = bout.toString(); + assertThat(updateFeaturestoreFixedNodesResponse) + .contains("Update Featurestore Fixed Nodes Response"); + + // List featurestores + ListFeaturestoresAsyncSample.listFeaturestoresAsyncSample(PROJECT_ID, LOCATION, ENDPOINT); + + // Assert + String listFeaturestoresAsyncResponse = bout.toString(); + assertThat(listFeaturestoresAsyncResponse).contains("List Featurestores Async Response"); + } +} From 44391d1fe57edefb80010628c651de143564d78d Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Thu, 23 Jun 2022 20:21:59 +0530 Subject: [PATCH 2/6] feat(samples): add remaining featurestore api samples (googleapis#945) --- .../CreateFeaturestoreFixedNodesSample.java | 95 ++++++++++++ .../aiplatform/GetFeaturestoreSample.java | 67 +++++++++ .../ListFeaturestoresAsyncSample.java | 76 ++++++++++ .../aiplatform/ListFeaturestoresSample.java | 65 ++++++++ .../UpdateFeaturestoreFixedNodesSample.java | 86 +++++++++++ .../aiplatform/UpdateFeaturestoreSample.java | 88 +++++++++++ .../aiplatform/FeaturestoreSamplesTest.java | 141 ++++++++++++++++++ 7 files changed, 618 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/ListFeaturestoresAsyncSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java create mode 100644 samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java create mode 100644 samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.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..58f0cd44e --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -0,0 +1,95 @@ +/* + * 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.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.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 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] \ No newline at end of file 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..0b8087389 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -0,0 +1,67 @@ +/* + * 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.v1beta1.Featurestore; +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.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] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java new file mode 100644 index 000000000..26211b3a5 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java @@ -0,0 +1,76 @@ +/* + * 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. + * + * + * List available featurestore details. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_list_featurestores_async_sample] + +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.ListFeaturestoresRequest; +import com.google.cloud.aiplatform.v1.ListFeaturestoresResponse; +import com.google.cloud.aiplatform.v1.LocationName; +import com.google.common.base.Strings; +import java.io.IOException; + +public class ListFeaturestoresAsyncSample { + + public static void main(String[] args) throws IOException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + listFeaturestoresAsyncSample(project, location, endpoint); + } + + static void listFeaturestoresAsyncSample(String project, 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)) { + + ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()).build(); + System.out.println("List Featurestores Async Response"); + while (true) { + ListFeaturestoresResponse listFeaturestoresResponse = + featurestoreServiceClient.listFeaturestoresCallable().call(listFeaturestoresRequest); + for (Featurestore element : listFeaturestoresResponse.getFeaturestoresList()) { + System.out.println(element); + } + String nextPageToken = listFeaturestoresResponse.getNextPageToken(); + if (!Strings.isNullOrEmpty(nextPageToken)) { + listFeaturestoresRequest = + listFeaturestoresRequest.toBuilder().setPageToken(nextPageToken).build(); + } else { + break; + } + } + } + } +} +// [END aiplatform_list_featurestores_async_sample] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java new file mode 100644 index 000000000..28c1837ce --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.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. + * + * + * List available featurestore details. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_list_featurestores_sample] + +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceClient; +import com.google.cloud.aiplatform.v1.FeaturestoreServiceSettings; +import com.google.cloud.aiplatform.v1.ListFeaturestoresRequest; +import com.google.cloud.aiplatform.v1.LocationName; +import java.io.IOException; + +public class ListFeaturestoresSample { + + public static void main(String[] args) throws IOException { + // TODO(developer): Replace these variables before running the sample. + String project = "YOUR_PROJECT_ID"; + String location = "us-central1"; + String endpoint = "us-central1-aiplatform.googleapis.com:443"; + listFeaturestoresSample(project, location, endpoint); + } + + static void listFeaturestoresSample(String project, 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)) { + + ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()).build(); + + System.out.println("List Featurestores Response"); + for (Featurestore element : featurestoreServiceClient + .listFeaturestores(listFeaturestoresRequest).iterateAll()) { + System.out.println(element); + } + } + } +} +// [END aiplatform_list_featurestores_sample] \ No newline at end of file diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java new file mode 100644 index 000000000..b8e80f320 --- /dev/null +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java @@ -0,0 +1,86 @@ +/* + * 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. + * + * + * Update featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * the code snippet + */ + +package aiplatform; + +// [START aiplatform_update_featurestore_fixed_nodes_sample] + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.aiplatform.v1.Featurestore; +import com.google.cloud.aiplatform.v1.Featurestore.OnlineServingConfig; +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.UpdateFeaturestoreOperationMetadata; +import com.google.cloud.aiplatform.v1.UpdateFeaturestoreRequest; +import java.io.IOException; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class UpdateFeaturestoreFixedNodesSample { + + 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 = 300; + updateFeaturestoreFixedNodesSample(project, featurestoreId, fixedNodeCount, location, endpoint, + timeout); + } + + static void updateFeaturestoreFixedNodesSample(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() + .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 Fixed Nodes Response"); + System.out.format("Name: %s%n", featurestoreResponse.getName()); + } + } +} +// [END aiplatform_update_featurestore_fixed_nodes_sample] \ No newline at end of file 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..397988d82 --- /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] \ No newline at end of file diff --git a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java new file mode 100644 index 000000000..7c1e65559 --- /dev/null +++ b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java @@ -0,0 +1,141 @@ +/* + * 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 FeaturestoreSamplesTest { + + 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 int FIXED_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, 60); + + // 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); + CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample(PROJECT_ID, id, + FIXED_NODE_COUNT, LOCATION, ENDPOINT, 900); + + // 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"); + + + // Update the featurestore with autoscaling + 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"); + + // List featurestores + ListFeaturestoresSample.listFeaturestoresSample(PROJECT_ID, LOCATION, ENDPOINT); + + // Assert + String listFeaturestoresResponse = bout.toString(); + assertThat(listFeaturestoresResponse).contains("List Featurestores Response"); + + // Update the featurestore with fixed nodes + UpdateFeaturestoreFixedNodesSample.updateFeaturestoreFixedNodesSample(PROJECT_ID, + featurestoreId, FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + + // Assert + String updateFeaturestoreFixedNodesResponse = bout.toString(); + assertThat(updateFeaturestoreFixedNodesResponse) + .contains("Update Featurestore Fixed Nodes Response"); + + // List featurestores + ListFeaturestoresAsyncSample.listFeaturestoresAsyncSample(PROJECT_ID, LOCATION, ENDPOINT); + + // Assert + String listFeaturestoresAsyncResponse = bout.toString(); + assertThat(listFeaturestoresAsyncResponse).contains("List Featurestores Async Response"); + } +} From 293e8146d299d4803c884d3f24781f2392e998fa Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Fri, 24 Jun 2022 12:51:44 +0000 Subject: [PATCH 3/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 | 6 +++ .../CreateFeaturestoreFixedNodesSample.java | 2 +- .../aiplatform/GetFeaturestoreSample.java | 2 +- .../ListFeaturestoresAsyncSample.java | 10 +++-- .../aiplatform/ListFeaturestoresSample.java | 14 ++++--- .../UpdateFeaturestoreFixedNodesSample.java | 31 +++++++++------ .../aiplatform/UpdateFeaturestoreSample.java | 38 ++++++++++++------- .../aiplatform/FeaturestoreSamplesTest.java | 17 ++++----- 8 files changed, 73 insertions(+), 47 deletions(-) diff --git a/README.md b/README.md index a3059d27e..cab92c04f 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 Fixed Nodes Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.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/CreateFeaturestoreFixedNodesSample.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) | @@ -148,6 +149,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-aiplatform/tr | Export Model Tabular Classification Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ExportModelTabularClassificationSample.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/ExportModelTabularClassificationSample.java) | | Export Model Video Action Recognition Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ExportModelVideoActionRecognitionSample.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/ExportModelVideoActionRecognitionSample.java) | | Get Batch Prediction Job Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/GetBatchPredictionJobSample.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/GetBatchPredictionJobSample.java) | +| Get Featurestore Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.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/GetFeaturestoreSample.java) | | Get Hyperparameter Tuning Job Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/GetHyperparameterTuningJobSample.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/GetHyperparameterTuningJobSample.java) | | Get Model Evaluation Image Classification Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/GetModelEvaluationImageClassificationSample.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/GetModelEvaluationImageClassificationSample.java) | | Get Model Evaluation Image Object Detection Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/GetModelEvaluationImageObjectDetectionSample.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/GetModelEvaluationImageObjectDetectionSample.java) | @@ -171,6 +173,8 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-aiplatform/tr | Import Data Video Action Recognition Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ImportDataVideoActionRecognitionSample.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/ImportDataVideoActionRecognitionSample.java) | | Import Data Video Classification Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ImportDataVideoClassificationSample.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/ImportDataVideoClassificationSample.java) | | Import Data Video Object Tracking Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ImportDataVideoObjectTrackingSample.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/ImportDataVideoObjectTrackingSample.java) | +| List Featurestores Async Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.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/ListFeaturestoresAsyncSample.java) | +| List Featurestores Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.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/ListFeaturestoresSample.java) | | List Model Evaluation Slice Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/ListModelEvaluationSliceSample.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/ListModelEvaluationSliceSample.java) | | Predict Custom Trained Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/PredictCustomTrainedModelSample.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/PredictCustomTrainedModelSample.java) | | Predict Image Classification Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/PredictImageClassificationSample.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/PredictImageClassificationSample.java) | @@ -181,6 +185,8 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-aiplatform/tr | Predict Text Entity Extraction Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/PredictTextEntityExtractionSample.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/PredictTextEntityExtractionSample.java) | | Predict Text Sentiment Analysis Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/PredictTextSentimentAnalysisSample.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/PredictTextSentimentAnalysisSample.java) | | Undeploy Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/UndeployModelSample.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/UndeployModelSample.java) | +| Update Featurestore Fixed Nodes Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.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/UpdateFeaturestoreFixedNodesSample.java) | +| Update Featurestore Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.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/UpdateFeaturestoreSample.java) | | Upload Model Sample | [source code](https://github.com/googleapis/java-aiplatform/blob/main/samples/snippets/src/main/java/aiplatform/UploadModelSample.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/UploadModelSample.java) | diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java index 58f0cd44e..69add3ff1 100644 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -92,4 +92,4 @@ static void createFeaturestoreFixedNodesSample( } } } -// [END aiplatform_create_featurestore_fixed_nodes_sample] \ No newline at end of file +// [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 index 0b8087389..1d8c4c77c 100644 --- a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -64,4 +64,4 @@ static void getFeaturestoreSample( } } } -// [END aiplatform_get_featurestore_sample] \ No newline at end of file +// [END aiplatform_get_featurestore_sample] diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java index 26211b3a5..16ce54f40 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java @@ -15,7 +15,7 @@ * * * List available featurestore details. 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 */ @@ -53,8 +53,10 @@ static void listFeaturestoresAsyncSample(String project, String location, String try (FeaturestoreServiceClient featurestoreServiceClient = FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() - .setParent(LocationName.of(project, location).toString()).build(); + ListFeaturestoresRequest listFeaturestoresRequest = + ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()) + .build(); System.out.println("List Featurestores Async Response"); while (true) { ListFeaturestoresResponse listFeaturestoresResponse = @@ -73,4 +75,4 @@ static void listFeaturestoresAsyncSample(String project, String location, String } } } -// [END aiplatform_list_featurestores_async_sample] \ No newline at end of file +// [END aiplatform_list_featurestores_async_sample] diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java index 28c1837ce..db4e5d7aa 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java @@ -15,7 +15,7 @@ * * * List available featurestore details. 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 */ @@ -51,15 +51,17 @@ static void listFeaturestoresSample(String project, String location, String endp try (FeaturestoreServiceClient featurestoreServiceClient = FeaturestoreServiceClient.create(featurestoreServiceSettings)) { - ListFeaturestoresRequest listFeaturestoresRequest = ListFeaturestoresRequest.newBuilder() - .setParent(LocationName.of(project, location).toString()).build(); + ListFeaturestoresRequest listFeaturestoresRequest = + ListFeaturestoresRequest.newBuilder() + .setParent(LocationName.of(project, location).toString()) + .build(); System.out.println("List Featurestores Response"); - for (Featurestore element : featurestoreServiceClient - .listFeaturestores(listFeaturestoresRequest).iterateAll()) { + for (Featurestore element : + featurestoreServiceClient.listFeaturestores(listFeaturestoresRequest).iterateAll()) { System.out.println(element); } } } } -// [END aiplatform_list_featurestores_sample] \ No newline at end of file +// [END aiplatform_list_featurestores_sample] diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java index b8e80f320..71ef51edc 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java @@ -14,8 +14,8 @@ * limitations under the License. * * - * Update featurestore. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * Update featurestore. See + * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running * the code snippet */ @@ -47,12 +47,17 @@ public static void main(String[] args) String location = "us-central1"; String endpoint = "us-central1-aiplatform.googleapis.com:443"; int timeout = 300; - updateFeaturestoreFixedNodesSample(project, featurestoreId, fixedNodeCount, location, endpoint, - timeout); + updateFeaturestoreFixedNodesSample( + project, featurestoreId, fixedNodeCount, location, endpoint, timeout); } - static void updateFeaturestoreFixedNodesSample(String project, String featurestoreId, - int fixedNodeCount, String location, String endpoint, int timeout) + static void updateFeaturestoreFixedNodesSample( + String project, + String featurestoreId, + int fixedNodeCount, + String location, + String endpoint, + int timeout) throws IOException, InterruptedException, ExecutionException, TimeoutException { FeaturestoreServiceSettings featurestoreServiceSettings = FeaturestoreServiceSettings.newBuilder().setEndpoint(endpoint).build(); @@ -65,17 +70,19 @@ static void updateFeaturestoreFixedNodesSample(String project, String featuresto OnlineServingConfig.Builder builderValue = OnlineServingConfig.newBuilder().setFixedNodeCount(fixedNodeCount); - Featurestore featurestore = Featurestore.newBuilder() - .setName(FeaturestoreName.of(project, location, featurestoreId).toString()) - .setOnlineServingConfig(builderValue).build(); + 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.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 Fixed Nodes Response"); @@ -83,4 +90,4 @@ static void updateFeaturestoreFixedNodesSample(String project, String featuresto } } } -// [END aiplatform_update_featurestore_fixed_nodes_sample] \ No newline at end of file +// [END aiplatform_update_featurestore_fixed_nodes_sample] diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java index 397988d82..7ccb0b0a1 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java @@ -14,8 +14,8 @@ * limitations under the License. * * - * Updates the parameters of a single featurestore. See - * https://cloud.google.com/vertex-ai/docs/featurestore/setup before running + * Updates the parameters of a single featurestore. See + * 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 = 300; - updateFeaturestoreSample(project, featurestoreId, minNodeCount, maxNodeCount, location, - endpoint, timeout); + 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) + 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(); @@ -65,19 +71,23 @@ static void updateFeaturestoreSample(String project, String featurestoreId, int 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(); + 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.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"); @@ -85,4 +95,4 @@ static void updateFeaturestoreSample(String project, String featurestoreId, int } } } -// [END aiplatform_update_featurestore_sample] \ No newline at end of file +// [END aiplatform_update_featurestore_sample] diff --git a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java index 7c1e65559..b0a207b22 100644 --- a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java +++ b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java @@ -73,8 +73,8 @@ public void tearDown() throws InterruptedException, ExecutionException, IOException, TimeoutException { // Delete the featurestore - DeleteFeaturestoreSample.deleteFeaturestoreSample(PROJECT_ID, featurestoreId, USE_FORCE, - LOCATION, ENDPOINT, 60); + DeleteFeaturestoreSample.deleteFeaturestoreSample( + PROJECT_ID, featurestoreId, USE_FORCE, LOCATION, ENDPOINT, 60); // Assert String deleteFeaturestoreResponse = bout.toString(); @@ -89,8 +89,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); - CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample(PROJECT_ID, id, - FIXED_NODE_COUNT, LOCATION, ENDPOINT, 900); + CreateFeaturestoreFixedNodesSample.createFeaturestoreFixedNodesSample( + PROJECT_ID, id, FIXED_NODE_COUNT, LOCATION, ENDPOINT, 900); // Assert String createFeaturestoreResponse = bout.toString(); @@ -106,10 +106,9 @@ public void testCreateFeaturestoreSample() String getFeaturestoreResponse = bout.toString(); assertThat(getFeaturestoreResponse).contains("Get Featurestore Response"); - // Update the featurestore with autoscaling - UpdateFeaturestoreSample.updateFeaturestoreSample(PROJECT_ID, featurestoreId, MIN_NODE_COUNT, - MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + UpdateFeaturestoreSample.updateFeaturestoreSample( + PROJECT_ID, featurestoreId, MIN_NODE_COUNT, MAX_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); // Assert String updateFeaturestoreResponse = bout.toString(); @@ -123,8 +122,8 @@ public void testCreateFeaturestoreSample() assertThat(listFeaturestoresResponse).contains("List Featurestores Response"); // Update the featurestore with fixed nodes - UpdateFeaturestoreFixedNodesSample.updateFeaturestoreFixedNodesSample(PROJECT_ID, - featurestoreId, FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); + UpdateFeaturestoreFixedNodesSample.updateFeaturestoreFixedNodesSample( + PROJECT_ID, featurestoreId, FIXED_NODE_COUNT, LOCATION, ENDPOINT, TIMEOUT); // Assert String updateFeaturestoreFixedNodesResponse = bout.toString(); From 56796bcbc3e58c48a6c537de2afb24cee30cb75c Mon Sep 17 00:00:00 2001 From: sai-chaithu Date: Tue, 28 Jun 2022 14:23:38 +0530 Subject: [PATCH 4/6] feat(samples): update all featurestore samples --- .../main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java | 1 + .../snippets/src/main/java/aiplatform/GetFeaturestoreSample.java | 1 + .../src/main/java/aiplatform/ListFeaturestoresAsyncSample.java | 1 + .../src/main/java/aiplatform/ListFeaturestoresSample.java | 1 + .../main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java | 1 + .../src/main/java/aiplatform/UpdateFeaturestoreSample.java | 1 + .../src/test/java/aiplatform/FeaturestoreSamplesTest.java | 1 + 7 files changed, 7 insertions(+) diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java index 69add3ff1..0bb2fbcc0 100644 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -93,3 +93,4 @@ static void createFeaturestoreFixedNodesSample( } } // [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 index 1d8c4c77c..84065b9a4 100644 --- a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -65,3 +65,4 @@ static void getFeaturestoreSample( } } // [END aiplatform_get_featurestore_sample] + diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java index 16ce54f40..82b0bdd47 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java @@ -76,3 +76,4 @@ static void listFeaturestoresAsyncSample(String project, String location, String } } // [END aiplatform_list_featurestores_async_sample] + diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java index db4e5d7aa..afdaaeb8b 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java @@ -65,3 +65,4 @@ static void listFeaturestoresSample(String project, String location, String endp } } // [END aiplatform_list_featurestores_sample] + diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java index 71ef51edc..3c932f179 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java @@ -91,3 +91,4 @@ static void updateFeaturestoreFixedNodesSample( } } // [END aiplatform_update_featurestore_fixed_nodes_sample] + diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java index 7ccb0b0a1..5384cb6c8 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java @@ -96,3 +96,4 @@ static void updateFeaturestoreSample( } } // [END aiplatform_update_featurestore_sample] + diff --git a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java index b0a207b22..ca458c47f 100644 --- a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java +++ b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java @@ -138,3 +138,4 @@ public void testCreateFeaturestoreSample() assertThat(listFeaturestoresAsyncResponse).contains("List Featurestores Async Response"); } } + From 1bd24f4612f936996e696688f84576823780fb97 Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 4 Jul 2022 12:52:05 +0000 Subject: [PATCH 5/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 | 4 ++-- .../java/aiplatform/CreateFeaturestoreFixedNodesSample.java | 1 - .../src/main/java/aiplatform/GetFeaturestoreSample.java | 1 - .../main/java/aiplatform/ListFeaturestoresAsyncSample.java | 1 - .../src/main/java/aiplatform/ListFeaturestoresSample.java | 1 - .../java/aiplatform/UpdateFeaturestoreFixedNodesSample.java | 1 - .../src/main/java/aiplatform/UpdateFeaturestoreSample.java | 1 - .../src/test/java/aiplatform/FeaturestoreSamplesTest.java | 1 - 8 files changed, 2 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index cab92c04f..2f649e783 100644 --- a/README.md +++ b/README.md @@ -45,13 +45,13 @@ implementation 'com.google.cloud:google-cloud-aiplatform' If you are using Gradle without BOM, add this to your dependencies ```Groovy -implementation 'com.google.cloud:google-cloud-aiplatform:2.9.8' +implementation 'com.google.cloud:google-cloud-aiplatform:3.0.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-aiplatform" % "2.9.8" +libraryDependencies += "com.google.cloud" % "google-cloud-aiplatform" % "3.0.0" ``` ## Authentication diff --git a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java index 0bb2fbcc0..69add3ff1 100644 --- a/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/CreateFeaturestoreFixedNodesSample.java @@ -93,4 +93,3 @@ static void createFeaturestoreFixedNodesSample( } } // [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 index 84065b9a4..1d8c4c77c 100644 --- a/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/GetFeaturestoreSample.java @@ -65,4 +65,3 @@ static void getFeaturestoreSample( } } // [END aiplatform_get_featurestore_sample] - diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java index 82b0bdd47..16ce54f40 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresAsyncSample.java @@ -76,4 +76,3 @@ static void listFeaturestoresAsyncSample(String project, String location, String } } // [END aiplatform_list_featurestores_async_sample] - diff --git a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java index afdaaeb8b..db4e5d7aa 100644 --- a/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java +++ b/samples/snippets/src/main/java/aiplatform/ListFeaturestoresSample.java @@ -65,4 +65,3 @@ static void listFeaturestoresSample(String project, String location, String endp } } // [END aiplatform_list_featurestores_sample] - diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java index 3c932f179..71ef51edc 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreFixedNodesSample.java @@ -91,4 +91,3 @@ static void updateFeaturestoreFixedNodesSample( } } // [END aiplatform_update_featurestore_fixed_nodes_sample] - diff --git a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java index 5384cb6c8..7ccb0b0a1 100644 --- a/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java +++ b/samples/snippets/src/main/java/aiplatform/UpdateFeaturestoreSample.java @@ -96,4 +96,3 @@ static void updateFeaturestoreSample( } } // [END aiplatform_update_featurestore_sample] - diff --git a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java index ca458c47f..b0a207b22 100644 --- a/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java +++ b/samples/snippets/src/test/java/aiplatform/FeaturestoreSamplesTest.java @@ -138,4 +138,3 @@ public void testCreateFeaturestoreSample() assertThat(listFeaturestoresAsyncResponse).contains("List Featurestores Async Response"); } } - From 4c03c2381f0f46862e9dbaa35a9c7a6af9b6a6fe Mon Sep 17 00:00:00 2001 From: Owl Bot Date: Mon, 11 Jul 2022 19:10:11 +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 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 3affb6682..8820b7d4a 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ If you are using Maven without BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:25.4.0') +implementation platform('com.google.cloud:libraries-bom:26.0.0') implementation 'com.google.cloud:google-cloud-aiplatform' ```