diff --git a/AiPlatform/metadata/V1/CustomJob.php b/AiPlatform/metadata/V1/CustomJob.php index bcf7dd165215..d749efaed206 100644 Binary files a/AiPlatform/metadata/V1/CustomJob.php and b/AiPlatform/metadata/V1/CustomJob.php differ diff --git a/AiPlatform/metadata/V1/Feature.php b/AiPlatform/metadata/V1/Feature.php index dc79b8173f22..29e4844cc922 100644 Binary files a/AiPlatform/metadata/V1/Feature.php and b/AiPlatform/metadata/V1/Feature.php differ diff --git a/AiPlatform/metadata/V1/FeatureGroup.php b/AiPlatform/metadata/V1/FeatureGroup.php new file mode 100644 index 000000000000..024f84b9afd2 Binary files /dev/null and b/AiPlatform/metadata/V1/FeatureGroup.php differ diff --git a/AiPlatform/metadata/V1/FeatureOnlineStore.php b/AiPlatform/metadata/V1/FeatureOnlineStore.php new file mode 100644 index 000000000000..03fbe6ab9e96 Binary files /dev/null and b/AiPlatform/metadata/V1/FeatureOnlineStore.php differ diff --git a/AiPlatform/metadata/V1/FeatureOnlineStoreAdminService.php b/AiPlatform/metadata/V1/FeatureOnlineStoreAdminService.php new file mode 100644 index 000000000000..368ae5e3a690 --- /dev/null +++ b/AiPlatform/metadata/V1/FeatureOnlineStoreAdminService.php @@ -0,0 +1,135 @@ +internalAddGeneratedFile( + ' +ˆ6 +Cgoogle/cloud/aiplatform/v1/feature_online_store_admin_service.protogoogle.cloud.aiplatform.v1google/api/client.protogoogle/api/field_behavior.protogoogle/api/resource.proto5google/cloud/aiplatform/v1/feature_online_store.proto-google/cloud/aiplatform/v1/feature_view.proto2google/cloud/aiplatform/v1/feature_view_sync.proto*google/cloud/aiplatform/v1/operation.proto#google/longrunning/operations.protogoogle/protobuf/empty.proto google/protobuf/field_mask.proto"à +CreateFeatureOnlineStoreRequestD +parent ( B4àAúA.,aiplatform.googleapis.com/FeatureOnlineStoreQ +feature_online_store ( 2..google.cloud.aiplatform.v1.FeatureOnlineStoreBàA$ +feature_online_store_id ( BàA"b +GetFeatureOnlineStoreRequestB +name ( B4àAúA. +,aiplatform.googleapis.com/FeatureOnlineStore"¯ +ListFeatureOnlineStoresRequestD +parent ( B4àAúA.,aiplatform.googleapis.com/FeatureOnlineStore +filter (  + page_size ( + +page_token (  +order_by ( "‰ +ListFeatureOnlineStoresResponseM +feature_online_stores ( 2..google.cloud.aiplatform.v1.FeatureOnlineStore +next_page_token ( "¥ +UpdateFeatureOnlineStoreRequestQ +feature_online_store ( 2..google.cloud.aiplatform.v1.FeatureOnlineStoreBàA/ + update_mask ( 2.google.protobuf.FieldMask"t +DeleteFeatureOnlineStoreRequestB +name ( B4àAúA. +,aiplatform.googleapis.com/FeatureOnlineStore +force ("å +CreateFeatureViewRequestD +parent ( B4àAúA. +,aiplatform.googleapis.com/FeatureOnlineStoreB + feature_view ( 2\'.google.cloud.aiplatform.v1.FeatureViewBàA +feature_view_id ( BàA! +run_sync_immediately (BàA"T +GetFeatureViewRequest; +name ( B-àAúA\' +%aiplatform.googleapis.com/FeatureView"¡ +ListFeatureViewsRequest= +parent ( B-àAúA\'%aiplatform.googleapis.com/FeatureView +filter (  + page_size ( + +page_token (  +order_by ( "s +ListFeatureViewsResponse> + feature_views ( 2\'.google.cloud.aiplatform.v1.FeatureView +next_page_token ( " +UpdateFeatureViewRequestB + feature_view ( 2\'.google.cloud.aiplatform.v1.FeatureViewBàA/ + update_mask ( 2.google.protobuf.FieldMask"W +DeleteFeatureViewRequest; +name ( B-àAúA\' +%aiplatform.googleapis.com/FeatureView"{ +)CreateFeatureOnlineStoreOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"{ +)UpdateFeatureOnlineStoreOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"t +"CreateFeatureViewOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"t +"UpdateFeatureViewOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"] +SyncFeatureViewRequestC + feature_view ( B-àAúA\' +%aiplatform.googleapis.com/FeatureView"4 +SyncFeatureViewResponse +feature_view_sync ( "\\ +GetFeatureViewSyncRequest? +name ( B1àAúA+ +)aiplatform.googleapis.com/FeatureViewSync"¥ +ListFeatureViewSyncsRequest= +parent ( B-àAúA\' +%aiplatform.googleapis.com/FeatureView +filter (  + page_size ( + +page_token (  +order_by ( "€ +ListFeatureViewSyncsResponseG +feature_view_syncs ( 2+.google.cloud.aiplatform.v1.FeatureViewSync +next_page_token ( 2Ð +FeatureOnlineStoreAdminServiceÆ +CreateFeatureOnlineStore;.google.cloud.aiplatform.v1.CreateFeatureOnlineStoreRequest.google.longrunning.Operation"Í‚Óä“O"7/v1/{parent=projects/*/locations/*}/featureOnlineStores:feature_online_storeÚA3parent,feature_online_store,feature_online_store_idÊA? +FeatureOnlineStore)CreateFeatureOnlineStoreOperationMetadataÉ +GetFeatureOnlineStore8.google.cloud.aiplatform.v1.GetFeatureOnlineStoreRequest..google.cloud.aiplatform.v1.FeatureOnlineStore"F‚Óä“97/v1/{name=projects/*/locations/*/featureOnlineStores/*}ÚAnameÜ +ListFeatureOnlineStores:.google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest;.google.cloud.aiplatform.v1.ListFeatureOnlineStoresResponse"H‚Óä“97/v1/{parent=projects/*/locations/*}/featureOnlineStoresÚAparentÈ +UpdateFeatureOnlineStore;.google.cloud.aiplatform.v1.UpdateFeatureOnlineStoreRequest.google.longrunning.Operation"Ï‚Óä“d2L/v1/{feature_online_store.name=projects/*/locations/*/featureOnlineStores/*}:feature_online_storeÚA feature_online_store,update_maskÊA? +FeatureOnlineStore)UpdateFeatureOnlineStoreOperationMetadata÷ +DeleteFeatureOnlineStore;.google.cloud.aiplatform.v1.DeleteFeatureOnlineStoreRequest.google.longrunning.Operation"‚Óä“9*7/v1/{name=projects/*/locations/*/featureOnlineStores/*}ÚA +name,forceÊA0 +google.protobuf.EmptyDeleteOperationMetadata¡ +CreateFeatureView4.google.cloud.aiplatform.v1.CreateFeatureViewRequest.google.longrunning.Operation"¶‚Óä“V"F/v1/{parent=projects/*/locations/*/featureOnlineStores/*}/featureViews: feature_viewÚA#parent,feature_view,feature_view_idÊA1 + FeatureView"CreateFeatureViewOperationMetadataà +GetFeatureView1.google.cloud.aiplatform.v1.GetFeatureViewRequest\'.google.cloud.aiplatform.v1.FeatureView"U‚Óä“HF/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}ÚAnameÖ +ListFeatureViews3.google.cloud.aiplatform.v1.ListFeatureViewsRequest4.google.cloud.aiplatform.v1.ListFeatureViewsResponse"W‚Óä“HF/v1/{parent=projects/*/locations/*/featureOnlineStores/*}/featureViewsÚAparent£ +UpdateFeatureView4.google.cloud.aiplatform.v1.UpdateFeatureViewRequest.google.longrunning.Operation"¸‚Óä“c2S/v1/{feature_view.name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}: feature_viewÚAfeature_view,update_maskÊA1 + FeatureView"UpdateFeatureViewOperationMetadataó +DeleteFeatureView4.google.cloud.aiplatform.v1.DeleteFeatureViewRequest.google.longrunning.Operation"ˆ‚Óä“H*F/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}ÚAnameÊA0 +google.protobuf.EmptyDeleteOperationMetadataé +SyncFeatureView2.google.cloud.aiplatform.v1.SyncFeatureViewRequest3.google.cloud.aiplatform.v1.SyncFeatureViewResponse"m‚Óä“X"S/v1/{feature_view=projects/*/locations/*/featureOnlineStores/*/featureViews/*}:sync:*ÚA feature_viewâ +GetFeatureViewSync5.google.cloud.aiplatform.v1.GetFeatureViewSyncRequest+.google.cloud.aiplatform.v1.FeatureViewSync"h‚Óä“[Y/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/featureViewSyncs/*}ÚAnameõ +ListFeatureViewSyncs7.google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest8.google.cloud.aiplatform.v1.ListFeatureViewSyncsResponse"j‚Óä“[Y/v1/{parent=projects/*/locations/*/featureOnlineStores/*/featureViews/*}/featureViewSyncsÚAparentMÊAaiplatform.googleapis.comÒA.https://www.googleapis.com/auth/cloud-platformBá +com.google.cloud.aiplatform.v1B#FeatureOnlineStoreAdminServiceProtoPZ>cloud.google.com/go/aiplatform/apiv1/aiplatformpb;aiplatformpbªGoogle.Cloud.AIPlatform.V1ÊGoogle\\Cloud\\AIPlatform\\V1êGoogle::Cloud::AIPlatform::V1bproto3' + , true); + + static::$is_initialized = true; + } +} + diff --git a/AiPlatform/metadata/V1/FeatureOnlineStoreService.php b/AiPlatform/metadata/V1/FeatureOnlineStoreService.php new file mode 100644 index 000000000000..47864cd2933a Binary files /dev/null and b/AiPlatform/metadata/V1/FeatureOnlineStoreService.php differ diff --git a/AiPlatform/metadata/V1/FeatureRegistryService.php b/AiPlatform/metadata/V1/FeatureRegistryService.php new file mode 100644 index 000000000000..0e381d4a48d8 --- /dev/null +++ b/AiPlatform/metadata/V1/FeatureRegistryService.php @@ -0,0 +1,89 @@ +internalAddGeneratedFile( + ' +Œ" +9google/cloud/aiplatform/v1/feature_registry_service.protogoogle.cloud.aiplatform.v1google/api/client.protogoogle/api/field_behavior.protogoogle/api/resource.proto(google/cloud/aiplatform/v1/feature.proto.google/cloud/aiplatform/v1/feature_group.proto5google/cloud/aiplatform/v1/featurestore_service.proto*google/cloud/aiplatform/v1/operation.proto#google/longrunning/operations.protogoogle/protobuf/empty.proto google/protobuf/field_mask.proto"À +CreateFeatureGroupRequest> +parent ( B.àAúA(&aiplatform.googleapis.com/FeatureGroupD + feature_group ( 2(.google.cloud.aiplatform.v1.FeatureGroupBàA +feature_group_id ( BàA"V +GetFeatureGroupRequest< +name ( B.àAúA( +&aiplatform.googleapis.com/FeatureGroup"£ +ListFeatureGroupsRequest> +parent ( B.àAúA(&aiplatform.googleapis.com/FeatureGroup +filter (  + page_size ( + +page_token (  +order_by ( "v +ListFeatureGroupsResponse@ +feature_groups ( 2(.google.cloud.aiplatform.v1.FeatureGroup +next_page_token ( "’ +UpdateFeatureGroupRequestD + feature_group ( 2(.google.cloud.aiplatform.v1.FeatureGroupBàA/ + update_mask ( 2.google.protobuf.FieldMask"h +DeleteFeatureGroupRequest< +name ( B.àAúA( +&aiplatform.googleapis.com/FeatureGroup +force ("u +#CreateFeatureGroupOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"u +#UpdateFeatureGroupOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"x +&CreateRegistryFeatureOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata"p +UpdateFeatureOperationMetadataN +generic_metadata ( 24.google.cloud.aiplatform.v1.GenericOperationMetadata2Æ +FeatureRegistryService“ +CreateFeatureGroup5.google.cloud.aiplatform.v1.CreateFeatureGroupRequest.google.longrunning.Operation"¦‚Óä“B"1/v1/{parent=projects/*/locations/*}/featureGroups: feature_groupÚA%parent,feature_group,feature_group_idÊA3 + FeatureGroup#CreateFeatureGroupOperationMetadata± +GetFeatureGroup2.google.cloud.aiplatform.v1.GetFeatureGroupRequest(.google.cloud.aiplatform.v1.FeatureGroup"@‚Óä“31/v1/{name=projects/*/locations/*/featureGroups/*}ÚAnameÄ +ListFeatureGroups4.google.cloud.aiplatform.v1.ListFeatureGroupsRequest5.google.cloud.aiplatform.v1.ListFeatureGroupsResponse"B‚Óä“31/v1/{parent=projects/*/locations/*}/featureGroupsÚAparent• +UpdateFeatureGroup5.google.cloud.aiplatform.v1.UpdateFeatureGroupRequest.google.longrunning.Operation"¨‚Óä“P2?/v1/{feature_group.name=projects/*/locations/*/featureGroups/*}: feature_groupÚAfeature_group,update_maskÊA3 + FeatureGroup#UpdateFeatureGroupOperationMetadataå +DeleteFeatureGroup5.google.cloud.aiplatform.v1.DeleteFeatureGroupRequest.google.longrunning.Operation"y‚Óä“3*1/v1/{name=projects/*/locations/*/featureGroups/*}ÚA +name,forceÊA0 +google.protobuf.EmptyDeleteOperationMetadataø + CreateFeature0.google.cloud.aiplatform.v1.CreateFeatureRequest.google.longrunning.Operation"•‚Óä“G"*cloud.google.com/go/aiplatform/apiv1/aiplatformpb;aiplatformpbªGoogle.Cloud.AIPlatform.V1ÊGoogle\\Cloud\\AIPlatform\\V1êGoogle::Cloud::AIPlatform::V1bproto3' + , true); + + static::$is_initialized = true; + } +} + diff --git a/AiPlatform/metadata/V1/FeatureView.php b/AiPlatform/metadata/V1/FeatureView.php new file mode 100644 index 000000000000..8767951117e2 Binary files /dev/null and b/AiPlatform/metadata/V1/FeatureView.php differ diff --git a/AiPlatform/metadata/V1/FeatureViewSync.php b/AiPlatform/metadata/V1/FeatureViewSync.php new file mode 100644 index 000000000000..8a5ea9117d75 --- /dev/null +++ b/AiPlatform/metadata/V1/FeatureViewSync.php @@ -0,0 +1,38 @@ +internalAddGeneratedFile( + ' +ž +2google/cloud/aiplatform/v1/feature_view_sync.protogoogle.cloud.aiplatform.v1google/api/resource.protogoogle/protobuf/timestamp.protogoogle/rpc/status.protogoogle/type/interval.proto"ý +FeatureViewSync +name ( BàA4 + create_time ( 2.google.protobuf.TimestampBàA, +run_time ( 2.google.type.IntervalBàA- + final_status ( 2.google.rpc.StatusBàA:ÃêA¿ +)aiplatform.googleapis.com/FeatureViewSync‘projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/feature_view_syncBÒ +com.google.cloud.aiplatform.v1BFeatureViewSyncProtoPZ>cloud.google.com/go/aiplatform/apiv1/aiplatformpb;aiplatformpbªGoogle.Cloud.AIPlatform.V1ÊGoogle\\Cloud\\AIPlatform\\V1êGoogle::Cloud::Aiplatform::V1bproto3' + , true); + + static::$is_initialized = true; + } +} + diff --git a/AiPlatform/metadata/V1/Index.php b/AiPlatform/metadata/V1/Index.php index 04059386a5e7..88647ddf7876 100644 Binary files a/AiPlatform/metadata/V1/Index.php and b/AiPlatform/metadata/V1/Index.php differ diff --git a/AiPlatform/metadata/V1/MachineResources.php b/AiPlatform/metadata/V1/MachineResources.php index 1e8653307b18..1adc07aab3c4 100644 --- a/AiPlatform/metadata/V1/MachineResources.php +++ b/AiPlatform/metadata/V1/MachineResources.php @@ -18,13 +18,14 @@ public static function initOnce() { \GPBMetadata\Google\Cloud\Aiplatform\V1\AcceleratorType::initOnce(); $pool->internalAddGeneratedFile( ' -¬ +Ç -2google/cloud/aiplatform/v1/machine_resources.protogoogle.cloud.aiplatform.v11google/cloud/aiplatform/v1/accelerator_type.proto" +2google/cloud/aiplatform/v1/machine_resources.protogoogle.cloud.aiplatform.v11google/cloud/aiplatform/v1/accelerator_type.proto"ª MachineSpec machine_type ( BàAJ accelerator_type (2+.google.cloud.aiplatform.v1.AcceleratorTypeBàA -accelerator_count ("ø +accelerator_count ( + tpu_topology ( BàA"ø DedicatedResourcesE machine_spec ( 2\'.google.cloud.aiplatform.v1.MachineSpecBàAàA! min_replica_count (BàAàA diff --git a/AiPlatform/metadata/V1/PredictionService.php b/AiPlatform/metadata/V1/PredictionService.php index b482d2f65916..e1047b52a254 100644 --- a/AiPlatform/metadata/V1/PredictionService.php +++ b/AiPlatform/metadata/V1/PredictionService.php @@ -24,7 +24,7 @@ public static function initOnce() { \GPBMetadata\Google\Protobuf\Struct::initOnce(); $pool->internalAddGeneratedFile( ' -Ý +² 3google/cloud/aiplatform/v1/prediction_service.protogoogle.cloud.aiplatform.v1google/api/client.protogoogle/api/field_behavior.protogoogle/api/httpbody.protogoogle/api/resource.proto,google/cloud/aiplatform/v1/explanation.proto&google/cloud/aiplatform/v1/types.protogoogle/protobuf/struct.proto"ª PredictRequest< endpoint ( B*àAúA$ @@ -65,7 +65,14 @@ public static function initOnce() { ExplainResponse= explanations ( 2\'.google.cloud.aiplatform.v1.Explanation deployed_model_id ( + - predictions ( 2.google.protobuf.Value2 + predictions ( 2.google.protobuf.Value"‚ +CountTokensRequest< +endpoint ( B*àAúA$ +"aiplatform.googleapis.com/Endpoint. + instances ( 2.google.protobuf.ValueBàA"N +CountTokensResponse + total_tokens (! +total_billable_characters (2 PredictionService” Predict*.google.cloud.aiplatform.v1.PredictRequest+.google.cloud.aiplatform.v1.PredictResponse"¯‚Ó䓈"9/v1/{endpoint=projects/*/locations/*/endpoints/*}:predict:*ZH"C/v1/{endpoint=projects/*/locations/*/publishers/*/models/*}:predict:*ÚAendpoint,instances,parametersþ diff --git a/AiPlatform/metadata/V1/Study.php b/AiPlatform/metadata/V1/Study.php index 375ccf418ffc..3ae80bd2bebb 100644 Binary files a/AiPlatform/metadata/V1/Study.php and b/AiPlatform/metadata/V1/Study.php differ diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_online_store.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_online_store.php new file mode 100644 index 000000000000..147b01b48be1 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_online_store.php @@ -0,0 +1,98 @@ +setParent($formattedParent) + ->setFeatureOnlineStore($featureOnlineStore) + ->setFeatureOnlineStoreId($featureOnlineStoreId); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->createFeatureOnlineStore($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureOnlineStore $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureOnlineStoreAdminServiceClient::locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStoreId = '[FEATURE_ONLINE_STORE_ID]'; + + create_feature_online_store_sample($formattedParent, $featureOnlineStoreId); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_CreateFeatureOnlineStore_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_view.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_view.php new file mode 100644 index 000000000000..61b0a90a8a91 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_view.php @@ -0,0 +1,100 @@ +setParent($formattedParent) + ->setFeatureView($featureView) + ->setFeatureViewId($featureViewId); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->createFeatureView($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureView $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]' + ); + $featureViewId = '[FEATURE_VIEW_ID]'; + + create_feature_view_sample($formattedParent, $featureViewId); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_CreateFeatureView_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_online_store.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_online_store.php new file mode 100644 index 000000000000..6725af9e7d00 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_online_store.php @@ -0,0 +1,87 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->deleteFeatureOnlineStore($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + printf('Operation completed successfully.' . PHP_EOL); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]' + ); + + delete_feature_online_store_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_DeleteFeatureOnlineStore_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_view.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_view.php new file mode 100644 index 000000000000..593ec1d30104 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_view.php @@ -0,0 +1,87 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->deleteFeatureView($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + printf('Operation completed successfully.' . PHP_EOL); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureOnlineStoreAdminServiceClient::featureViewName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + delete_feature_view_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_DeleteFeatureView_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_online_store.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_online_store.php new file mode 100644 index 000000000000..31bd242292c9 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_online_store.php @@ -0,0 +1,75 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var FeatureOnlineStore $response */ + $response = $featureOnlineStoreAdminServiceClient->getFeatureOnlineStore($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]' + ); + + get_feature_online_store_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_GetFeatureOnlineStore_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view.php new file mode 100644 index 000000000000..592f9a7dedc8 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view.php @@ -0,0 +1,78 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var FeatureView $response */ + $response = $featureOnlineStoreAdminServiceClient->getFeatureView($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureOnlineStoreAdminServiceClient::featureViewName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + get_feature_view_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_GetFeatureView_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view_sync.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view_sync.php new file mode 100644 index 000000000000..34204f62f2ad --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view_sync.php @@ -0,0 +1,78 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var FeatureViewSync $response */ + $response = $featureOnlineStoreAdminServiceClient->getFeatureViewSync($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureOnlineStoreAdminServiceClient::featureViewSyncName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + get_feature_view_sync_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_GetFeatureViewSync_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_iam_policy.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_iam_policy.php new file mode 100644 index 000000000000..561e05a94558 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_iam_policy.php @@ -0,0 +1,72 @@ +setResource($resource); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureOnlineStoreAdminServiceClient->getIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + get_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_GetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_location.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_location.php new file mode 100644 index 000000000000..6bd35a4ea74c --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/get_location.php @@ -0,0 +1,57 @@ +getLocation($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_GetLocation_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_online_stores.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_online_stores.php new file mode 100644 index 000000000000..1c8f77b1bfdb --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_online_stores.php @@ -0,0 +1,78 @@ +setParent($formattedParent); + + // Call the API and handle any network failures. + try { + /** @var PagedListResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->listFeatureOnlineStores($request); + + /** @var FeatureOnlineStore $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureOnlineStoreAdminServiceClient::locationName('[PROJECT]', '[LOCATION]'); + + list_feature_online_stores_sample($formattedParent); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_ListFeatureOnlineStores_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_view_syncs.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_view_syncs.php new file mode 100644 index 000000000000..23017e65b8b3 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_view_syncs.php @@ -0,0 +1,83 @@ +setParent($formattedParent); + + // Call the API and handle any network failures. + try { + /** @var PagedListResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->listFeatureViewSyncs($request); + + /** @var FeatureViewSync $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureOnlineStoreAdminServiceClient::featureViewName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + list_feature_view_syncs_sample($formattedParent); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_ListFeatureViewSyncs_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_views.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_views.php new file mode 100644 index 000000000000..0c1f9df2987d --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_views.php @@ -0,0 +1,82 @@ +setParent($formattedParent); + + // Call the API and handle any network failures. + try { + /** @var PagedListResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->listFeatureViews($request); + + /** @var FeatureView $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]' + ); + + list_feature_views_sample($formattedParent); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_ListFeatureViews_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_locations.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_locations.php new file mode 100644 index 000000000000..df76c4901fd6 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/list_locations.php @@ -0,0 +1,62 @@ +listLocations($request); + + /** @var Location $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_ListLocations_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/set_iam_policy.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/set_iam_policy.php new file mode 100644 index 000000000000..444c85020f20 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/set_iam_policy.php @@ -0,0 +1,77 @@ +setResource($resource) + ->setPolicy($policy); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureOnlineStoreAdminServiceClient->setIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + set_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_SetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/sync_feature_view.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/sync_feature_view.php new file mode 100644 index 000000000000..1e071395beba --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/sync_feature_view.php @@ -0,0 +1,77 @@ +setFeatureView($formattedFeatureView); + + // Call the API and handle any network failures. + try { + /** @var SyncFeatureViewResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->syncFeatureView($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedFeatureView = FeatureOnlineStoreAdminServiceClient::featureViewName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + sync_feature_view_sample($formattedFeatureView); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_SyncFeatureView_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/test_iam_permissions.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/test_iam_permissions.php new file mode 100644 index 000000000000..a010efa59cd5 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/test_iam_permissions.php @@ -0,0 +1,84 @@ +setResource($resource) + ->setPermissions($permissions); + + // Call the API and handle any network failures. + try { + /** @var TestIamPermissionsResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->testIamPermissions($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + $permissionsElement = '[PERMISSIONS]'; + + test_iam_permissions_sample($resource, $permissionsElement); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_TestIamPermissions_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_online_store.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_online_store.php new file mode 100644 index 000000000000..7141925d68a6 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_online_store.php @@ -0,0 +1,71 @@ +setFeatureOnlineStore($featureOnlineStore); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->updateFeatureOnlineStore($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureOnlineStore $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_UpdateFeatureOnlineStore_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_view.php b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_view.php new file mode 100644 index 000000000000..ccf1cd5ad550 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_view.php @@ -0,0 +1,71 @@ +setFeatureView($featureView); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureOnlineStoreAdminServiceClient->updateFeatureView($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureView $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreAdminService_UpdateFeatureView_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/fetch_feature_values.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/fetch_feature_values.php new file mode 100644 index 000000000000..0c098b7b924f --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/fetch_feature_values.php @@ -0,0 +1,77 @@ +setFeatureView($formattedFeatureView); + + // Call the API and handle any network failures. + try { + /** @var FetchFeatureValuesResponse $response */ + $response = $featureOnlineStoreServiceClient->fetchFeatureValues($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedFeatureView = FeatureOnlineStoreServiceClient::featureViewName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_ONLINE_STORE]', + '[FEATURE_VIEW]' + ); + + fetch_feature_values_sample($formattedFeatureView); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_FetchFeatureValues_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_iam_policy.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_iam_policy.php new file mode 100644 index 000000000000..dc17d2caaace --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_iam_policy.php @@ -0,0 +1,72 @@ +setResource($resource); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureOnlineStoreServiceClient->getIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + get_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_GetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_location.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_location.php new file mode 100644 index 000000000000..0e5e2ab3c47d --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/get_location.php @@ -0,0 +1,57 @@ +getLocation($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_GetLocation_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/list_locations.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/list_locations.php new file mode 100644 index 000000000000..7e9afed46553 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/list_locations.php @@ -0,0 +1,62 @@ +listLocations($request); + + /** @var Location $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_ListLocations_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/set_iam_policy.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/set_iam_policy.php new file mode 100644 index 000000000000..9bf84ea38ecd --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/set_iam_policy.php @@ -0,0 +1,77 @@ +setResource($resource) + ->setPolicy($policy); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureOnlineStoreServiceClient->setIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + set_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_SetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/test_iam_permissions.php b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/test_iam_permissions.php new file mode 100644 index 000000000000..f2082dc68612 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureOnlineStoreServiceClient/test_iam_permissions.php @@ -0,0 +1,84 @@ +setResource($resource) + ->setPermissions($permissions); + + // Call the API and handle any network failures. + try { + /** @var TestIamPermissionsResponse $response */ + $response = $featureOnlineStoreServiceClient->testIamPermissions($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + $permissionsElement = '[PERMISSIONS]'; + + test_iam_permissions_sample($resource, $permissionsElement); +} +// [END aiplatform_v1_generated_FeatureOnlineStoreService_TestIamPermissions_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature.php new file mode 100644 index 000000000000..8fe1c7ad7b25 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature.php @@ -0,0 +1,103 @@ +setParent($formattedParent) + ->setFeature($feature) + ->setFeatureId($featureId); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->createFeature($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var Feature $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureRegistryServiceClient::entityTypeName( + '[PROJECT]', + '[LOCATION]', + '[FEATURESTORE]', + '[ENTITY_TYPE]' + ); + $featureId = '[FEATURE_ID]'; + + create_feature_sample($formattedParent, $featureId); +} +// [END aiplatform_v1_generated_FeatureRegistryService_CreateFeature_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature_group.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature_group.php new file mode 100644 index 000000000000..8090303c9000 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/create_feature_group.php @@ -0,0 +1,96 @@ +setParent($formattedParent) + ->setFeatureGroup($featureGroup) + ->setFeatureGroupId($featureGroupId); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->createFeatureGroup($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureGroup $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureRegistryServiceClient::locationName('[PROJECT]', '[LOCATION]'); + $featureGroupId = '[FEATURE_GROUP_ID]'; + + create_feature_group_sample($formattedParent, $featureGroupId); +} +// [END aiplatform_v1_generated_FeatureRegistryService_CreateFeatureGroup_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature.php new file mode 100644 index 000000000000..ce46996fc790 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature.php @@ -0,0 +1,89 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->deleteFeature($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + printf('Operation completed successfully.' . PHP_EOL); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureRegistryServiceClient::featureName( + '[PROJECT]', + '[LOCATION]', + '[FEATURESTORE]', + '[ENTITY_TYPE]', + '[FEATURE]' + ); + + delete_feature_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureRegistryService_DeleteFeature_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature_group.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature_group.php new file mode 100644 index 000000000000..9a43cb746fc9 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/delete_feature_group.php @@ -0,0 +1,86 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->deleteFeatureGroup($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + printf('Operation completed successfully.' . PHP_EOL); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureRegistryServiceClient::featureGroupName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_GROUP]' + ); + + delete_feature_group_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureRegistryService_DeleteFeatureGroup_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature.php new file mode 100644 index 000000000000..9e2832134f38 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature.php @@ -0,0 +1,81 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var Feature $response */ + $response = $featureRegistryServiceClient->getFeature($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureRegistryServiceClient::featureName( + '[PROJECT]', + '[LOCATION]', + '[FEATURESTORE]', + '[ENTITY_TYPE]', + '[FEATURE]' + ); + + get_feature_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureRegistryService_GetFeature_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature_group.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature_group.php new file mode 100644 index 000000000000..0e720099cb5e --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_feature_group.php @@ -0,0 +1,75 @@ +setName($formattedName); + + // Call the API and handle any network failures. + try { + /** @var FeatureGroup $response */ + $response = $featureRegistryServiceClient->getFeatureGroup($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedName = FeatureRegistryServiceClient::featureGroupName( + '[PROJECT]', + '[LOCATION]', + '[FEATURE_GROUP]' + ); + + get_feature_group_sample($formattedName); +} +// [END aiplatform_v1_generated_FeatureRegistryService_GetFeatureGroup_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_iam_policy.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_iam_policy.php new file mode 100644 index 000000000000..f94e5c331713 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_iam_policy.php @@ -0,0 +1,72 @@ +setResource($resource); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureRegistryServiceClient->getIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + get_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureRegistryService_GetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_location.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_location.php new file mode 100644 index 000000000000..5f30a812a04b --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/get_location.php @@ -0,0 +1,57 @@ +getLocation($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureRegistryService_GetLocation_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_feature_groups.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_feature_groups.php new file mode 100644 index 000000000000..7d83529a2dc0 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_feature_groups.php @@ -0,0 +1,78 @@ +setParent($formattedParent); + + // Call the API and handle any network failures. + try { + /** @var PagedListResponse $response */ + $response = $featureRegistryServiceClient->listFeatureGroups($request); + + /** @var FeatureGroup $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureRegistryServiceClient::locationName('[PROJECT]', '[LOCATION]'); + + list_feature_groups_sample($formattedParent); +} +// [END aiplatform_v1_generated_FeatureRegistryService_ListFeatureGroups_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_features.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_features.php new file mode 100644 index 000000000000..ba4ced1bfdc6 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_features.php @@ -0,0 +1,85 @@ +setParent($formattedParent); + + // Call the API and handle any network failures. + try { + /** @var PagedListResponse $response */ + $response = $featureRegistryServiceClient->listFeatures($request); + + /** @var Feature $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $formattedParent = FeatureRegistryServiceClient::entityTypeName( + '[PROJECT]', + '[LOCATION]', + '[FEATURESTORE]', + '[ENTITY_TYPE]' + ); + + list_features_sample($formattedParent); +} +// [END aiplatform_v1_generated_FeatureRegistryService_ListFeatures_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_locations.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_locations.php new file mode 100644 index 000000000000..f8a8a3cfcabe --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/list_locations.php @@ -0,0 +1,62 @@ +listLocations($request); + + /** @var Location $element */ + foreach ($response as $element) { + printf('Element data: %s' . PHP_EOL, $element->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureRegistryService_ListLocations_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/set_iam_policy.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/set_iam_policy.php new file mode 100644 index 000000000000..73d3fb1b3b6a --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/set_iam_policy.php @@ -0,0 +1,77 @@ +setResource($resource) + ->setPolicy($policy); + + // Call the API and handle any network failures. + try { + /** @var Policy $response */ + $response = $featureRegistryServiceClient->setIamPolicy($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + + set_iam_policy_sample($resource); +} +// [END aiplatform_v1_generated_FeatureRegistryService_SetIamPolicy_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/test_iam_permissions.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/test_iam_permissions.php new file mode 100644 index 000000000000..01e82d57f4cf --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/test_iam_permissions.php @@ -0,0 +1,84 @@ +setResource($resource) + ->setPermissions($permissions); + + // Call the API and handle any network failures. + try { + /** @var TestIamPermissionsResponse $response */ + $response = $featureRegistryServiceClient->testIamPermissions($request); + printf('Response data: %s' . PHP_EOL, $response->serializeToJsonString()); + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} + +/** + * Helper to execute the sample. + * + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. + */ +function callSample(): void +{ + $resource = '[RESOURCE]'; + $permissionsElement = '[PERMISSIONS]'; + + test_iam_permissions_sample($resource, $permissionsElement); +} +// [END aiplatform_v1_generated_FeatureRegistryService_TestIamPermissions_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature.php new file mode 100644 index 000000000000..996cd3a8e8c2 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature.php @@ -0,0 +1,71 @@ +setFeature($feature); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->updateFeature($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var Feature $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureRegistryService_UpdateFeature_sync] diff --git a/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature_group.php b/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature_group.php new file mode 100644 index 000000000000..c44a4f9b0b82 --- /dev/null +++ b/AiPlatform/samples/V1/FeatureRegistryServiceClient/update_feature_group.php @@ -0,0 +1,71 @@ +setFeatureGroup($featureGroup); + + // Call the API and handle any network failures. + try { + /** @var OperationResponse $response */ + $response = $featureRegistryServiceClient->updateFeatureGroup($request); + $response->pollUntilComplete(); + + if ($response->operationSucceeded()) { + /** @var FeatureGroup $result */ + $result = $response->getResult(); + printf('Operation successful with response data: %s' . PHP_EOL, $result->serializeToJsonString()); + } else { + /** @var Status $error */ + $error = $response->getError(); + printf('Operation failed with error data: %s' . PHP_EOL, $error->serializeToJsonString()); + } + } catch (ApiException $ex) { + printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); + } +} +// [END aiplatform_v1_generated_FeatureRegistryService_UpdateFeatureGroup_sync] diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/batch_create_features.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/batch_create_features.php index 80f4b4be65d3..2f5a4359b324 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/batch_create_features.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/batch_create_features.php @@ -30,41 +30,39 @@ use Google\Cloud\AIPlatform\V1\Client\FeaturestoreServiceClient; use Google\Cloud\AIPlatform\V1\CreateFeatureRequest; use Google\Cloud\AIPlatform\V1\Feature; -use Google\Cloud\AIPlatform\V1\Feature\ValueType; use Google\Rpc\Status; /** * Creates a batch of Features in a given EntityType. * - * @param string $formattedParent The resource name of the EntityType to create the batch of - * Features under. Format: - * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` - * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. - * @param string $formattedRequestsParent The resource name of the EntityType to create a Feature. - * Format: - * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` - * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. - * @param int $requestsFeatureValueType Immutable. Type of Feature value. - * @param string $requestsFeatureId The ID to use for the Feature, which will become the final - * component of the Feature's resource name. + * @param string $formattedParent The resource name of the EntityType to create the batch of + * Features under. Format: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. + * @param string $formattedRequestsParent The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. + * @param string $requestsFeatureId The ID to use for the Feature, which will become the final + * component of the Feature's resource name. * - * This value may be up to 128 characters, and valid characters are - * `[a-z0-9_]`. The first character cannot be a number. + * This value may be up to 128 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. * - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. */ function batch_create_features_sample( string $formattedParent, string $formattedRequestsParent, - int $requestsFeatureValueType, string $requestsFeatureId ): void { // Create a client. $featurestoreServiceClient = new FeaturestoreServiceClient(); // Prepare the request message. - $requestsFeature = (new Feature()) - ->setValueType($requestsFeatureValueType); + $requestsFeature = new Feature(); $createFeatureRequest = (new CreateFeatureRequest()) ->setParent($formattedRequestsParent) ->setFeature($requestsFeature) @@ -117,14 +115,8 @@ function callSample(): void '[FEATURESTORE]', '[ENTITY_TYPE]' ); - $requestsFeatureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; $requestsFeatureId = '[FEATURE_ID]'; - batch_create_features_sample( - $formattedParent, - $formattedRequestsParent, - $requestsFeatureValueType, - $requestsFeatureId - ); + batch_create_features_sample($formattedParent, $formattedRequestsParent, $requestsFeatureId); } // [END aiplatform_v1_generated_FeaturestoreService_BatchCreateFeatures_sync] diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/create_feature.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/create_feature.php index 44d8f019e31d..b8c28297d8e0 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/create_feature.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/create_feature.php @@ -28,36 +28,32 @@ use Google\Cloud\AIPlatform\V1\Client\FeaturestoreServiceClient; use Google\Cloud\AIPlatform\V1\CreateFeatureRequest; use Google\Cloud\AIPlatform\V1\Feature; -use Google\Cloud\AIPlatform\V1\Feature\ValueType; use Google\Rpc\Status; /** * Creates a new Feature in a given EntityType. * - * @param string $formattedParent The resource name of the EntityType to create a Feature. - * Format: - * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` - * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. - * @param int $featureValueType Immutable. Type of Feature value. - * @param string $featureId The ID to use for the Feature, which will become the final - * component of the Feature's resource name. + * @param string $formattedParent The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. + * @param string $featureId The ID to use for the Feature, which will become the final + * component of the Feature's resource name. * - * This value may be up to 128 characters, and valid characters are - * `[a-z0-9_]`. The first character cannot be a number. + * This value may be up to 128 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. * - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. */ -function create_feature_sample( - string $formattedParent, - int $featureValueType, - string $featureId -): void { +function create_feature_sample(string $formattedParent, string $featureId): void +{ // Create a client. $featurestoreServiceClient = new FeaturestoreServiceClient(); // Prepare the request message. - $feature = (new Feature()) - ->setValueType($featureValueType); + $feature = new Feature(); $request = (new CreateFeatureRequest()) ->setParent($formattedParent) ->setFeature($feature) @@ -100,9 +96,8 @@ function callSample(): void '[FEATURESTORE]', '[ENTITY_TYPE]' ); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; $featureId = '[FEATURE_ID]'; - create_feature_sample($formattedParent, $featureValueType, $featureId); + create_feature_sample($formattedParent, $featureId); } // [END aiplatform_v1_generated_FeaturestoreService_CreateFeature_sync] diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/delete_feature.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/delete_feature.php index 410cfd8870bd..8294976c396e 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/delete_feature.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/delete_feature.php @@ -35,6 +35,7 @@ * @param string $formattedName The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * Please see {@see FeaturestoreServiceClient::featureName()} for help formatting this field. */ function delete_feature_sample(string $formattedName): void diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/get_feature.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/get_feature.php index fc462498f8e5..b4a2f36ce178 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/get_feature.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/get_feature.php @@ -32,8 +32,10 @@ * Gets details of a single Feature. * * @param string $formattedName The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::featureName()} for help formatting this field. */ function get_feature_sample(string $formattedName): void diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/list_features.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/list_features.php index 82414e2a79a1..f1d51f187b2f 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/list_features.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/list_features.php @@ -33,8 +33,10 @@ * Lists Features in a given EntityType. * * @param string $formattedParent The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. */ function list_features_sample(string $formattedParent): void diff --git a/AiPlatform/samples/V1/FeaturestoreServiceClient/update_feature.php b/AiPlatform/samples/V1/FeaturestoreServiceClient/update_feature.php index 3405e3ff8564..5a456786b8fa 100644 --- a/AiPlatform/samples/V1/FeaturestoreServiceClient/update_feature.php +++ b/AiPlatform/samples/V1/FeaturestoreServiceClient/update_feature.php @@ -26,22 +26,24 @@ use Google\ApiCore\ApiException; use Google\Cloud\AIPlatform\V1\Client\FeaturestoreServiceClient; use Google\Cloud\AIPlatform\V1\Feature; -use Google\Cloud\AIPlatform\V1\Feature\ValueType; use Google\Cloud\AIPlatform\V1\UpdateFeatureRequest; /** * Updates the parameters of a single Feature. * - * @param int $featureValueType Immutable. Type of Feature value. + * This sample has been automatically generated and should be regarded as a code + * template only. It will require modifications to work: + * - It may require correct/in-range values for request initialization. + * - It may require specifying regional endpoints when creating the service client, + * please see the apiEndpoint client configuration option for more details. */ -function update_feature_sample(int $featureValueType): void +function update_feature_sample(): void { // Create a client. $featurestoreServiceClient = new FeaturestoreServiceClient(); // Prepare the request message. - $feature = (new Feature()) - ->setValueType($featureValueType); + $feature = new Feature(); $request = (new UpdateFeatureRequest()) ->setFeature($feature); @@ -54,20 +56,4 @@ function update_feature_sample(int $featureValueType): void printf('Call failed with message: %s' . PHP_EOL, $ex->getMessage()); } } - -/** - * Helper to execute the sample. - * - * This sample has been automatically generated and should be regarded as a code - * template only. It will require modifications to work: - * - It may require correct/in-range values for request initialization. - * - It may require specifying regional endpoints when creating the service client, - * please see the apiEndpoint client configuration option for more details. - */ -function callSample(): void -{ - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - - update_feature_sample($featureValueType); -} // [END aiplatform_v1_generated_FeaturestoreService_UpdateFeature_sync] diff --git a/AiPlatform/src/V1/Client/FeatureOnlineStoreAdminServiceClient.php b/AiPlatform/src/V1/Client/FeatureOnlineStoreAdminServiceClient.php new file mode 100644 index 000000000000..3ad28bc04505 --- /dev/null +++ b/AiPlatform/src/V1/Client/FeatureOnlineStoreAdminServiceClient.php @@ -0,0 +1,849 @@ + self::SERVICE_NAME, + 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => __DIR__ . '/../resources/feature_online_store_admin_service_client_config.json', + 'descriptorsConfigPath' => __DIR__ . '/../resources/feature_online_store_admin_service_descriptor_config.php', + 'gcpApiConfigPath' => __DIR__ . '/../resources/feature_online_store_admin_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => __DIR__ . '/../resources/feature_online_store_admin_service_rest_client_config.php', + ], + ], + ]; + } + + /** + * Return an OperationsClient object with the same endpoint as $this. + * + * @return OperationsClient + */ + public function getOperationsClient() + { + return $this->operationsClient; + } + + /** + * Resume an existing long running operation that was previously started by a long + * running API method. If $methodName is not provided, or does not match a long + * running API method, then the operation can still be resumed, but the + * OperationResponse object will not deserialize the final response. + * + * @param string $operationName The name of the long running operation + * @param string $methodName The name of the method used to start the operation + * + * @return OperationResponse + */ + public function resumeOperation($operationName, $methodName = null) + { + $options = isset($this->descriptors[$methodName]['longRunning']) ? $this->descriptors[$methodName]['longRunning'] : []; + $operation = new OperationResponse($operationName, $this->getOperationsClient(), $options); + $operation->reload(); + return $operation; + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_online_store resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * + * @return string The formatted feature_online_store resource. + */ + public static function featureOnlineStoreName(string $project, string $location, string $featureOnlineStore): string + { + return self::getPathTemplate('featureOnlineStore')->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a feature_view + * resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view resource. + */ + public static function featureViewName(string $project, string $location, string $featureOnlineStore, string $featureView): string + { + return self::getPathTemplate('featureView')->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_view_sync resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view_sync resource. + */ + public static function featureViewSyncName(string $project, string $location, string $featureOnlineStore, string $featureView): string + { + return self::getPathTemplate('featureViewSync')->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a location + * resource. + * + * @param string $project + * @param string $location + * + * @return string The formatted location resource. + */ + public static function locationName(string $project, string $location): string + { + return self::getPathTemplate('location')->render([ + 'project' => $project, + 'location' => $location, + ]); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - featureOnlineStore: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store} + * - featureView: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view} + * - featureViewSync: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/feature_view_sync + * - location: projects/{project}/locations/{location} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName(string $formattedName, string $template = null): array + { + return self::parseFormattedName($formattedName, $template); + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + $this->operationsClient = $this->createOperationsClient($clientOptions); + } + + /** Handles execution of the async variants for each documented method. */ + public function __call($method, $args) + { + if (substr($method, -5) !== 'Async') { + trigger_error('Call to undefined method ' . __CLASS__ . "::$method()", E_USER_ERROR); + } + + array_unshift($args, substr($method, 0, -5)); + return call_user_func_array([$this, 'startAsyncCall'], $args); + } + + /** + * Creates a new FeatureOnlineStore in a given project and location. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::createFeatureOnlineStoreAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_online_store.php + * + * @param CreateFeatureOnlineStoreRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function createFeatureOnlineStore(CreateFeatureOnlineStoreRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('CreateFeatureOnlineStore', $request, $callOptions)->wait(); + } + + /** + * Creates a new FeatureView in a given FeatureOnlineStore. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::createFeatureViewAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/create_feature_view.php + * + * @param CreateFeatureViewRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function createFeatureView(CreateFeatureViewRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('CreateFeatureView', $request, $callOptions)->wait(); + } + + /** + * Deletes a single FeatureOnlineStore. The FeatureOnlineStore must not + * contain any FeatureViews. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::deleteFeatureOnlineStoreAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_online_store.php + * + * @param DeleteFeatureOnlineStoreRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function deleteFeatureOnlineStore(DeleteFeatureOnlineStoreRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('DeleteFeatureOnlineStore', $request, $callOptions)->wait(); + } + + /** + * Deletes a single FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::deleteFeatureViewAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/delete_feature_view.php + * + * @param DeleteFeatureViewRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function deleteFeatureView(DeleteFeatureViewRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('DeleteFeatureView', $request, $callOptions)->wait(); + } + + /** + * Gets details of a single FeatureOnlineStore. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::getFeatureOnlineStoreAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_online_store.php + * + * @param GetFeatureOnlineStoreRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return FeatureOnlineStore + * + * @throws ApiException Thrown if the API call fails. + */ + public function getFeatureOnlineStore(GetFeatureOnlineStoreRequest $request, array $callOptions = []): FeatureOnlineStore + { + return $this->startApiCall('GetFeatureOnlineStore', $request, $callOptions)->wait(); + } + + /** + * Gets details of a single FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::getFeatureViewAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view.php + * + * @param GetFeatureViewRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return FeatureView + * + * @throws ApiException Thrown if the API call fails. + */ + public function getFeatureView(GetFeatureViewRequest $request, array $callOptions = []): FeatureView + { + return $this->startApiCall('GetFeatureView', $request, $callOptions)->wait(); + } + + /** + * Gets details of a single FeatureViewSync. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::getFeatureViewSyncAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/get_feature_view_sync.php + * + * @param GetFeatureViewSyncRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return FeatureViewSync + * + * @throws ApiException Thrown if the API call fails. + */ + public function getFeatureViewSync(GetFeatureViewSyncRequest $request, array $callOptions = []): FeatureViewSync + { + return $this->startApiCall('GetFeatureViewSync', $request, $callOptions)->wait(); + } + + /** + * Lists FeatureOnlineStores in a given project and location. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::listFeatureOnlineStoresAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_online_stores.php + * + * @param ListFeatureOnlineStoresRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listFeatureOnlineStores(ListFeatureOnlineStoresRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListFeatureOnlineStores', $request, $callOptions); + } + + /** + * Lists FeatureViewSyncs in a given FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::listFeatureViewSyncsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_view_syncs.php + * + * @param ListFeatureViewSyncsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listFeatureViewSyncs(ListFeatureViewSyncsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListFeatureViewSyncs', $request, $callOptions); + } + + /** + * Lists FeatureViews in a given FeatureOnlineStore. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::listFeatureViewsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/list_feature_views.php + * + * @param ListFeatureViewsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listFeatureViews(ListFeatureViewsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListFeatureViews', $request, $callOptions); + } + + /** + * Triggers on-demand sync for the FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::syncFeatureViewAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/sync_feature_view.php + * + * @param SyncFeatureViewRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return SyncFeatureViewResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function syncFeatureView(SyncFeatureViewRequest $request, array $callOptions = []): SyncFeatureViewResponse + { + return $this->startApiCall('SyncFeatureView', $request, $callOptions)->wait(); + } + + /** + * Updates the parameters of a single FeatureOnlineStore. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::updateFeatureOnlineStoreAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_online_store.php + * + * @param UpdateFeatureOnlineStoreRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function updateFeatureOnlineStore(UpdateFeatureOnlineStoreRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('UpdateFeatureOnlineStore', $request, $callOptions)->wait(); + } + + /** + * Updates the parameters of a single FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::updateFeatureViewAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/update_feature_view.php + * + * @param UpdateFeatureViewRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function updateFeatureView(UpdateFeatureViewRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('UpdateFeatureView', $request, $callOptions)->wait(); + } + + /** + * Gets information about a location. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::getLocationAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/get_location.php + * + * @param GetLocationRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Location + * + * @throws ApiException Thrown if the API call fails. + */ + public function getLocation(GetLocationRequest $request, array $callOptions = []): Location + { + return $this->startApiCall('GetLocation', $request, $callOptions)->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::listLocationsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/list_locations.php + * + * @param ListLocationsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listLocations(ListLocationsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListLocations', $request, $callOptions); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::getIamPolicyAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/get_iam_policy.php + * + * @param GetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function getIamPolicy(GetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('GetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::setIamPolicyAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/set_iam_policy.php + * + * @param SetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function setIamPolicy(SetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('SetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * The async variant is + * {@see FeatureOnlineStoreAdminServiceClient::testIamPermissionsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreAdminServiceClient/test_iam_permissions.php + * + * @param TestIamPermissionsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return TestIamPermissionsResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function testIamPermissions(TestIamPermissionsRequest $request, array $callOptions = []): TestIamPermissionsResponse + { + return $this->startApiCall('TestIamPermissions', $request, $callOptions)->wait(); + } +} diff --git a/AiPlatform/src/V1/Client/FeatureOnlineStoreServiceClient.php b/AiPlatform/src/V1/Client/FeatureOnlineStoreServiceClient.php new file mode 100644 index 000000000000..d9c9b07afe8a --- /dev/null +++ b/AiPlatform/src/V1/Client/FeatureOnlineStoreServiceClient.php @@ -0,0 +1,401 @@ + self::SERVICE_NAME, + 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => __DIR__ . '/../resources/feature_online_store_service_client_config.json', + 'descriptorsConfigPath' => __DIR__ . '/../resources/feature_online_store_service_descriptor_config.php', + 'gcpApiConfigPath' => __DIR__ . '/../resources/feature_online_store_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => __DIR__ . '/../resources/feature_online_store_service_rest_client_config.php', + ], + ], + ]; + } + + /** + * Formats a string containing the fully-qualified path to represent a feature_view + * resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view resource. + */ + public static function featureViewName(string $project, string $location, string $featureOnlineStore, string $featureView): string + { + return self::getPathTemplate('featureView')->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - featureView: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName(string $formattedName, string $template = null): array + { + return self::parseFormattedName($formattedName, $template); + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + } + + /** Handles execution of the async variants for each documented method. */ + public function __call($method, $args) + { + if (substr($method, -5) !== 'Async') { + trigger_error('Call to undefined method ' . __CLASS__ . "::$method()", E_USER_ERROR); + } + + array_unshift($args, substr($method, 0, -5)); + return call_user_func_array([$this, 'startAsyncCall'], $args); + } + + /** + * Fetch feature values under a FeatureView. + * + * The async variant is + * {@see FeatureOnlineStoreServiceClient::fetchFeatureValuesAsync()} . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/fetch_feature_values.php + * + * @param FetchFeatureValuesRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return FetchFeatureValuesResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function fetchFeatureValues(FetchFeatureValuesRequest $request, array $callOptions = []): FetchFeatureValuesResponse + { + return $this->startApiCall('FetchFeatureValues', $request, $callOptions)->wait(); + } + + /** + * Gets information about a location. + * + * The async variant is {@see FeatureOnlineStoreServiceClient::getLocationAsync()} + * . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/get_location.php + * + * @param GetLocationRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Location + * + * @throws ApiException Thrown if the API call fails. + */ + public function getLocation(GetLocationRequest $request, array $callOptions = []): Location + { + return $this->startApiCall('GetLocation', $request, $callOptions)->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * The async variant is + * {@see FeatureOnlineStoreServiceClient::listLocationsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/list_locations.php + * + * @param ListLocationsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listLocations(ListLocationsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListLocations', $request, $callOptions); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * The async variant is {@see FeatureOnlineStoreServiceClient::getIamPolicyAsync()} + * . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/get_iam_policy.php + * + * @param GetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function getIamPolicy(GetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('GetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * The async variant is {@see FeatureOnlineStoreServiceClient::setIamPolicyAsync()} + * . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/set_iam_policy.php + * + * @param SetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function setIamPolicy(SetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('SetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * The async variant is + * {@see FeatureOnlineStoreServiceClient::testIamPermissionsAsync()} . + * + * @example samples/V1/FeatureOnlineStoreServiceClient/test_iam_permissions.php + * + * @param TestIamPermissionsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return TestIamPermissionsResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function testIamPermissions(TestIamPermissionsRequest $request, array $callOptions = []): TestIamPermissionsResponse + { + return $this->startApiCall('TestIamPermissions', $request, $callOptions)->wait(); + } +} diff --git a/AiPlatform/src/V1/Client/FeatureRegistryServiceClient.php b/AiPlatform/src/V1/Client/FeatureRegistryServiceClient.php new file mode 100644 index 000000000000..1f0eda8d2ce8 --- /dev/null +++ b/AiPlatform/src/V1/Client/FeatureRegistryServiceClient.php @@ -0,0 +1,798 @@ + self::SERVICE_NAME, + 'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => __DIR__ . '/../resources/feature_registry_service_client_config.json', + 'descriptorsConfigPath' => __DIR__ . '/../resources/feature_registry_service_descriptor_config.php', + 'gcpApiConfigPath' => __DIR__ . '/../resources/feature_registry_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => __DIR__ . '/../resources/feature_registry_service_rest_client_config.php', + ], + ], + ]; + } + + /** + * Return an OperationsClient object with the same endpoint as $this. + * + * @return OperationsClient + */ + public function getOperationsClient() + { + return $this->operationsClient; + } + + /** + * Resume an existing long running operation that was previously started by a long + * running API method. If $methodName is not provided, or does not match a long + * running API method, then the operation can still be resumed, but the + * OperationResponse object will not deserialize the final response. + * + * @param string $operationName The name of the long running operation + * @param string $methodName The name of the method used to start the operation + * + * @return OperationResponse + */ + public function resumeOperation($operationName, $methodName = null) + { + $options = isset($this->descriptors[$methodName]['longRunning']) ? $this->descriptors[$methodName]['longRunning'] : []; + $operation = new OperationResponse($operationName, $this->getOperationsClient(), $options); + $operation->reload(); + return $operation; + } + + /** + * Formats a string containing the fully-qualified path to represent a entity_type + * resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * + * @return string The formatted entity_type resource. + */ + public static function entityTypeName(string $project, string $location, string $featurestore, string $entityType): string + { + return self::getPathTemplate('entityType')->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a feature + * resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted feature resource. + */ + public static function featureName(string $project, string $location, string $featurestore, string $entityType, string $feature): string + { + return self::getPathTemplate('feature')->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_group resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * + * @return string The formatted feature_group resource. + */ + public static function featureGroupName(string $project, string $location, string $featureGroup): string + { + return self::getPathTemplate('featureGroup')->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a location + * resource. + * + * @param string $project + * @param string $location + * + * @return string The formatted location resource. + */ + public static function locationName(string $project, string $location): string + { + return self::getPathTemplate('location')->render([ + 'project' => $project, + 'location' => $location, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_feature_group_feature resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * @param string $feature + * + * @return string The formatted project_location_feature_group_feature resource. + */ + public static function projectLocationFeatureGroupFeatureName(string $project, string $location, string $featureGroup, string $feature): string + { + return self::getPathTemplate('projectLocationFeatureGroupFeature')->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + 'feature' => $feature, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_featurestore_entity_type_feature resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted project_location_featurestore_entity_type_feature resource. + */ + public static function projectLocationFeaturestoreEntityTypeFeatureName(string $project, string $location, string $featurestore, string $entityType, string $feature): string + { + return self::getPathTemplate('projectLocationFeaturestoreEntityTypeFeature')->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ]); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - entityType: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type} + * - feature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * - featureGroup: projects/{project}/locations/{location}/featureGroups/{feature_group} + * - location: projects/{project}/locations/{location} + * - projectLocationFeatureGroupFeature: projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature} + * - projectLocationFeaturestoreEntityTypeFeature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName(string $formattedName, string $template = null): array + { + return self::parseFormattedName($formattedName, $template); + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + $this->operationsClient = $this->createOperationsClient($clientOptions); + } + + /** Handles execution of the async variants for each documented method. */ + public function __call($method, $args) + { + if (substr($method, -5) !== 'Async') { + trigger_error('Call to undefined method ' . __CLASS__ . "::$method()", E_USER_ERROR); + } + + array_unshift($args, substr($method, 0, -5)); + return call_user_func_array([$this, 'startAsyncCall'], $args); + } + + /** + * Creates a new Feature in a given FeatureGroup. + * + * The async variant is {@see FeatureRegistryServiceClient::createFeatureAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/create_feature.php + * + * @param CreateFeatureRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function createFeature(CreateFeatureRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('CreateFeature', $request, $callOptions)->wait(); + } + + /** + * Creates a new FeatureGroup in a given project and location. + * + * The async variant is + * {@see FeatureRegistryServiceClient::createFeatureGroupAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/create_feature_group.php + * + * @param CreateFeatureGroupRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function createFeatureGroup(CreateFeatureGroupRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('CreateFeatureGroup', $request, $callOptions)->wait(); + } + + /** + * Deletes a single Feature. + * + * The async variant is {@see FeatureRegistryServiceClient::deleteFeatureAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/delete_feature.php + * + * @param DeleteFeatureRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function deleteFeature(DeleteFeatureRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('DeleteFeature', $request, $callOptions)->wait(); + } + + /** + * Deletes a single FeatureGroup. + * + * The async variant is + * {@see FeatureRegistryServiceClient::deleteFeatureGroupAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/delete_feature_group.php + * + * @param DeleteFeatureGroupRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function deleteFeatureGroup(DeleteFeatureGroupRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('DeleteFeatureGroup', $request, $callOptions)->wait(); + } + + /** + * Gets details of a single Feature. + * + * The async variant is {@see FeatureRegistryServiceClient::getFeatureAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/get_feature.php + * + * @param GetFeatureRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Feature + * + * @throws ApiException Thrown if the API call fails. + */ + public function getFeature(GetFeatureRequest $request, array $callOptions = []): Feature + { + return $this->startApiCall('GetFeature', $request, $callOptions)->wait(); + } + + /** + * Gets details of a single FeatureGroup. + * + * The async variant is {@see FeatureRegistryServiceClient::getFeatureGroupAsync()} + * . + * + * @example samples/V1/FeatureRegistryServiceClient/get_feature_group.php + * + * @param GetFeatureGroupRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return FeatureGroup + * + * @throws ApiException Thrown if the API call fails. + */ + public function getFeatureGroup(GetFeatureGroupRequest $request, array $callOptions = []): FeatureGroup + { + return $this->startApiCall('GetFeatureGroup', $request, $callOptions)->wait(); + } + + /** + * Lists FeatureGroups in a given project and location. + * + * The async variant is + * {@see FeatureRegistryServiceClient::listFeatureGroupsAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/list_feature_groups.php + * + * @param ListFeatureGroupsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listFeatureGroups(ListFeatureGroupsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListFeatureGroups', $request, $callOptions); + } + + /** + * Lists Features in a given FeatureGroup. + * + * The async variant is {@see FeatureRegistryServiceClient::listFeaturesAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/list_features.php + * + * @param ListFeaturesRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listFeatures(ListFeaturesRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListFeatures', $request, $callOptions); + } + + /** + * Updates the parameters of a single Feature. + * + * The async variant is {@see FeatureRegistryServiceClient::updateFeatureAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/update_feature.php + * + * @param UpdateFeatureRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function updateFeature(UpdateFeatureRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('UpdateFeature', $request, $callOptions)->wait(); + } + + /** + * Updates the parameters of a single FeatureGroup. + * + * The async variant is + * {@see FeatureRegistryServiceClient::updateFeatureGroupAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/update_feature_group.php + * + * @param UpdateFeatureGroupRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return OperationResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function updateFeatureGroup(UpdateFeatureGroupRequest $request, array $callOptions = []): OperationResponse + { + return $this->startApiCall('UpdateFeatureGroup', $request, $callOptions)->wait(); + } + + /** + * Gets information about a location. + * + * The async variant is {@see FeatureRegistryServiceClient::getLocationAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/get_location.php + * + * @param GetLocationRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Location + * + * @throws ApiException Thrown if the API call fails. + */ + public function getLocation(GetLocationRequest $request, array $callOptions = []): Location + { + return $this->startApiCall('GetLocation', $request, $callOptions)->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * The async variant is {@see FeatureRegistryServiceClient::listLocationsAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/list_locations.php + * + * @param ListLocationsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return PagedListResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function listLocations(ListLocationsRequest $request, array $callOptions = []): PagedListResponse + { + return $this->startApiCall('ListLocations', $request, $callOptions); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * The async variant is {@see FeatureRegistryServiceClient::getIamPolicyAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/get_iam_policy.php + * + * @param GetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function getIamPolicy(GetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('GetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * The async variant is {@see FeatureRegistryServiceClient::setIamPolicyAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/set_iam_policy.php + * + * @param SetIamPolicyRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return Policy + * + * @throws ApiException Thrown if the API call fails. + */ + public function setIamPolicy(SetIamPolicyRequest $request, array $callOptions = []): Policy + { + return $this->startApiCall('SetIamPolicy', $request, $callOptions)->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * The async variant is + * {@see FeatureRegistryServiceClient::testIamPermissionsAsync()} . + * + * @example samples/V1/FeatureRegistryServiceClient/test_iam_permissions.php + * + * @param TestIamPermissionsRequest $request A request to house fields associated with the call. + * @param array $callOptions { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return TestIamPermissionsResponse + * + * @throws ApiException Thrown if the API call fails. + */ + public function testIamPermissions(TestIamPermissionsRequest $request, array $callOptions = []): TestIamPermissionsResponse + { + return $this->startApiCall('TestIamPermissions', $request, $callOptions)->wait(); + } +} diff --git a/AiPlatform/src/V1/Client/FeaturestoreServiceClient.php b/AiPlatform/src/V1/Client/FeaturestoreServiceClient.php index 3c0299ea6172..1bac6e3a04e1 100644 --- a/AiPlatform/src/V1/Client/FeaturestoreServiceClient.php +++ b/AiPlatform/src/V1/Client/FeaturestoreServiceClient.php @@ -230,6 +230,25 @@ public static function featureName(string $project, string $location, string $fe ]); } + /** + * Formats a string containing the fully-qualified path to represent a + * feature_group resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * + * @return string The formatted feature_group resource. + */ + public static function featureGroupName(string $project, string $location, string $featureGroup): string + { + return self::getPathTemplate('featureGroup')->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + ]); + } + /** * Formats a string containing the fully-qualified path to represent a featurestore * resource. @@ -266,14 +285,61 @@ public static function locationName(string $project, string $location): string ]); } + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_feature_group_feature resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * @param string $feature + * + * @return string The formatted project_location_feature_group_feature resource. + */ + public static function projectLocationFeatureGroupFeatureName(string $project, string $location, string $featureGroup, string $feature): string + { + return self::getPathTemplate('projectLocationFeatureGroupFeature')->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + 'feature' => $feature, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_featurestore_entity_type_feature resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted project_location_featurestore_entity_type_feature resource. + */ + public static function projectLocationFeaturestoreEntityTypeFeatureName(string $project, string $location, string $featurestore, string $entityType, string $feature): string + { + return self::getPathTemplate('projectLocationFeaturestoreEntityTypeFeature')->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ]); + } + /** * Parses a formatted name string and returns an associative array of the components in the name. * The following name formats are supported: * Template: Pattern * - entityType: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type} * - feature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * - featureGroup: projects/{project}/locations/{location}/featureGroups/{feature_group} * - featurestore: projects/{project}/locations/{location}/featurestores/{featurestore} * - location: projects/{project}/locations/{location} + * - projectLocationFeatureGroupFeature: projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature} + * - projectLocationFeaturestoreEntityTypeFeature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} * * The optional $template argument can be supplied to specify a particular pattern, * and must match one of the templates listed above. If no $template argument is diff --git a/AiPlatform/src/V1/CountTokensRequest.php b/AiPlatform/src/V1/CountTokensRequest.php new file mode 100644 index 000000000000..ae7c7bef92dd --- /dev/null +++ b/AiPlatform/src/V1/CountTokensRequest.php @@ -0,0 +1,113 @@ +google.cloud.aiplatform.v1.CountTokensRequest + */ +class CountTokensRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the Endpoint requested to perform token counting. + * Format: + * `projects/{project}/locations/{location}/endpoints/{endpoint}` + * + * Generated from protobuf field string endpoint = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $endpoint = ''; + /** + * Required. The instances that are the input to token counting call. + * Schema is identical to the prediction schema of the underlying model. + * + * Generated from protobuf field repeated .google.protobuf.Value instances = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $instances; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $endpoint + * Required. The name of the Endpoint requested to perform token counting. + * Format: + * `projects/{project}/locations/{location}/endpoints/{endpoint}` + * @type array<\Google\Protobuf\Value>|\Google\Protobuf\Internal\RepeatedField $instances + * Required. The instances that are the input to token counting call. + * Schema is identical to the prediction schema of the underlying model. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\PredictionService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the Endpoint requested to perform token counting. + * Format: + * `projects/{project}/locations/{location}/endpoints/{endpoint}` + * + * Generated from protobuf field string endpoint = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getEndpoint() + { + return $this->endpoint; + } + + /** + * Required. The name of the Endpoint requested to perform token counting. + * Format: + * `projects/{project}/locations/{location}/endpoints/{endpoint}` + * + * Generated from protobuf field string endpoint = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setEndpoint($var) + { + GPBUtil::checkString($var, True); + $this->endpoint = $var; + + return $this; + } + + /** + * Required. The instances that are the input to token counting call. + * Schema is identical to the prediction schema of the underlying model. + * + * Generated from protobuf field repeated .google.protobuf.Value instances = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getInstances() + { + return $this->instances; + } + + /** + * Required. The instances that are the input to token counting call. + * Schema is identical to the prediction schema of the underlying model. + * + * Generated from protobuf field repeated .google.protobuf.Value instances = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param array<\Google\Protobuf\Value>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setInstances($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Protobuf\Value::class); + $this->instances = $arr; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CountTokensResponse.php b/AiPlatform/src/V1/CountTokensResponse.php new file mode 100644 index 000000000000..e98664712b04 --- /dev/null +++ b/AiPlatform/src/V1/CountTokensResponse.php @@ -0,0 +1,105 @@ +google.cloud.aiplatform.v1.CountTokensResponse + */ +class CountTokensResponse extends \Google\Protobuf\Internal\Message +{ + /** + * The total number of tokens counted across all instances from the request. + * + * Generated from protobuf field int32 total_tokens = 1; + */ + private $total_tokens = 0; + /** + * The total number of billable characters counted across all instances from + * the request. + * + * Generated from protobuf field int32 total_billable_characters = 2; + */ + private $total_billable_characters = 0; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type int $total_tokens + * The total number of tokens counted across all instances from the request. + * @type int $total_billable_characters + * The total number of billable characters counted across all instances from + * the request. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\PredictionService::initOnce(); + parent::__construct($data); + } + + /** + * The total number of tokens counted across all instances from the request. + * + * Generated from protobuf field int32 total_tokens = 1; + * @return int + */ + public function getTotalTokens() + { + return $this->total_tokens; + } + + /** + * The total number of tokens counted across all instances from the request. + * + * Generated from protobuf field int32 total_tokens = 1; + * @param int $var + * @return $this + */ + public function setTotalTokens($var) + { + GPBUtil::checkInt32($var); + $this->total_tokens = $var; + + return $this; + } + + /** + * The total number of billable characters counted across all instances from + * the request. + * + * Generated from protobuf field int32 total_billable_characters = 2; + * @return int + */ + public function getTotalBillableCharacters() + { + return $this->total_billable_characters; + } + + /** + * The total number of billable characters counted across all instances from + * the request. + * + * Generated from protobuf field int32 total_billable_characters = 2; + * @param int $var + * @return $this + */ + public function setTotalBillableCharacters($var) + { + GPBUtil::checkInt32($var); + $this->total_billable_characters = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureGroupOperationMetadata.php b/AiPlatform/src/V1/CreateFeatureGroupOperationMetadata.php new file mode 100644 index 000000000000..ba561350a538 --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureGroupOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.CreateFeatureGroupOperationMetadata + */ +class CreateFeatureGroupOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureGroup. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureGroupRequest.php b/AiPlatform/src/V1/CreateFeatureGroupRequest.php new file mode 100644 index 000000000000..e935a34493bd --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureGroupRequest.php @@ -0,0 +1,196 @@ +google.cloud.aiplatform.v1.CreateFeatureGroupRequest + */ +class CreateFeatureGroupRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Required. The FeatureGroup to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_group = null; + /** + * Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_group_id = 3 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_group_id = ''; + + /** + * @param string $parent Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * Please see {@see FeatureRegistryServiceClient::locationName()} for help formatting this field. + * @param \Google\Cloud\AIPlatform\V1\FeatureGroup $featureGroup Required. The FeatureGroup to create. + * @param string $featureGroupId Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within the project and location. + * + * @return \Google\Cloud\AIPlatform\V1\CreateFeatureGroupRequest + * + * @experimental + */ + public static function build(string $parent, \Google\Cloud\AIPlatform\V1\FeatureGroup $featureGroup, string $featureGroupId): self + { + return (new self()) + ->setParent($parent) + ->setFeatureGroup($featureGroup) + ->setFeatureGroupId($featureGroupId); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * @type \Google\Cloud\AIPlatform\V1\FeatureGroup $feature_group + * Required. The FeatureGroup to create. + * @type string $feature_group_id + * Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Required. The FeatureGroup to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureGroup|null + */ + public function getFeatureGroup() + { + return $this->feature_group; + } + + public function hasFeatureGroup() + { + return isset($this->feature_group); + } + + public function clearFeatureGroup() + { + unset($this->feature_group); + } + + /** + * Required. The FeatureGroup to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureGroup $var + * @return $this + */ + public function setFeatureGroup($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureGroup::class); + $this->feature_group = $var; + + return $this; + } + + /** + * Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_group_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getFeatureGroupId() + { + return $this->feature_group_id; + } + + /** + * Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_group_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setFeatureGroupId($var) + { + GPBUtil::checkString($var, True); + $this->feature_group_id = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureOnlineStoreOperationMetadata.php b/AiPlatform/src/V1/CreateFeatureOnlineStoreOperationMetadata.php new file mode 100644 index 000000000000..ad71a018d8c7 --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureOnlineStoreOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.CreateFeatureOnlineStoreOperationMetadata + */ +class CreateFeatureOnlineStoreOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureOnlineStore. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureOnlineStoreRequest.php b/AiPlatform/src/V1/CreateFeatureOnlineStoreRequest.php new file mode 100644 index 000000000000..ed43426a248f --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureOnlineStoreRequest.php @@ -0,0 +1,196 @@ +google.cloud.aiplatform.v1.CreateFeatureOnlineStoreRequest + */ +class CreateFeatureOnlineStoreRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Required. The FeatureOnlineStore to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_online_store = null; + /** + * Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_online_store_id = 3 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_online_store_id = ''; + + /** + * @param string $parent Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * Please see {@see FeatureOnlineStoreAdminServiceClient::locationName()} for help formatting this field. + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $featureOnlineStore Required. The FeatureOnlineStore to create. + * @param string $featureOnlineStoreId Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within the project and location. + * + * @return \Google\Cloud\AIPlatform\V1\CreateFeatureOnlineStoreRequest + * + * @experimental + */ + public static function build(string $parent, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $featureOnlineStore, string $featureOnlineStoreId): self + { + return (new self()) + ->setParent($parent) + ->setFeatureOnlineStore($featureOnlineStore) + ->setFeatureOnlineStoreId($featureOnlineStoreId); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * @type \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $feature_online_store + * Required. The FeatureOnlineStore to create. + * @type string $feature_online_store_id + * Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Required. The FeatureOnlineStore to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureOnlineStore|null + */ + public function getFeatureOnlineStore() + { + return $this->feature_online_store; + } + + public function hasFeatureOnlineStore() + { + return isset($this->feature_online_store); + } + + public function clearFeatureOnlineStore() + { + unset($this->feature_online_store); + } + + /** + * Required. The FeatureOnlineStore to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $var + * @return $this + */ + public function setFeatureOnlineStore($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore::class); + $this->feature_online_store = $var; + + return $this; + } + + /** + * Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_online_store_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getFeatureOnlineStoreId() + { + return $this->feature_online_store_id; + } + + /** + * Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within the project and location. + * + * Generated from protobuf field string feature_online_store_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setFeatureOnlineStoreId($var) + { + GPBUtil::checkString($var, True); + $this->feature_online_store_id = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureRequest.php b/AiPlatform/src/V1/CreateFeatureRequest.php index 832c1189e70a..7f1bef81f3af 100644 --- a/AiPlatform/src/V1/CreateFeatureRequest.php +++ b/AiPlatform/src/V1/CreateFeatureRequest.php @@ -11,15 +11,19 @@ /** * Request message for * [FeaturestoreService.CreateFeature][google.cloud.aiplatform.v1.FeaturestoreService.CreateFeature]. + * Request message for + * [FeatureRegistryService.CreateFeature][google.cloud.aiplatform.v1.FeatureRegistryService.CreateFeature]. * * Generated from protobuf message google.cloud.aiplatform.v1.CreateFeatureRequest */ class CreateFeatureRequest extends \Google\Protobuf\Internal\Message { /** - * Required. The resource name of the EntityType to create a Feature. - * Format: + * Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ @@ -35,16 +39,18 @@ class CreateFeatureRequest extends \Google\Protobuf\Internal\Message * component of the Feature's resource name. * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * * Generated from protobuf field string feature_id = 3 [(.google.api.field_behavior) = REQUIRED]; */ private $feature_id = ''; /** - * @param string $parent Required. The resource name of the EntityType to create a Feature. - * Format: + * @param string $parent Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. * @param \Google\Cloud\AIPlatform\V1\Feature $feature Required. The Feature to create. * @@ -60,9 +66,11 @@ public static function build(string $parent, \Google\Cloud\AIPlatform\V1\Feature } /** - * @param string $parent Required. The resource name of the EntityType to create a Feature. - * Format: + * @param string $parent Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. * @param \Google\Cloud\AIPlatform\V1\Feature $feature Required. The Feature to create. * @param string $featureId Required. The ID to use for the Feature, which will become the final @@ -71,7 +79,7 @@ public static function build(string $parent, \Google\Cloud\AIPlatform\V1\Feature * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. * - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * * @return \Google\Cloud\AIPlatform\V1\CreateFeatureRequest * @@ -92,9 +100,11 @@ public static function buildFromParentFeatureFeatureId(string $parent, \Google\C * Optional. Data for populating the Message object. * * @type string $parent - * Required. The resource name of the EntityType to create a Feature. - * Format: + * Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * @type \Google\Cloud\AIPlatform\V1\Feature $feature * Required. The Feature to create. * @type string $feature_id @@ -102,7 +112,7 @@ public static function buildFromParentFeatureFeatureId(string $parent, \Google\C * component of the Feature's resource name. * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * } */ public function __construct($data = NULL) { @@ -111,9 +121,11 @@ public function __construct($data = NULL) { } /** - * Required. The resource name of the EntityType to create a Feature. - * Format: + * Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @return string @@ -124,9 +136,11 @@ public function getParent() } /** - * Required. The resource name of the EntityType to create a Feature. - * Format: + * Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @param string $var @@ -181,7 +195,7 @@ public function setFeature($var) * component of the Feature's resource name. * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * * Generated from protobuf field string feature_id = 3 [(.google.api.field_behavior) = REQUIRED]; * @return string @@ -196,7 +210,7 @@ public function getFeatureId() * component of the Feature's resource name. * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * * Generated from protobuf field string feature_id = 3 [(.google.api.field_behavior) = REQUIRED]; * @param string $var diff --git a/AiPlatform/src/V1/CreateFeatureViewOperationMetadata.php b/AiPlatform/src/V1/CreateFeatureViewOperationMetadata.php new file mode 100644 index 000000000000..7174e458fce5 --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureViewOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.CreateFeatureViewOperationMetadata + */ +class CreateFeatureViewOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureView Create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureView Create. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureView Create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureView Create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateFeatureViewRequest.php b/AiPlatform/src/V1/CreateFeatureViewRequest.php new file mode 100644 index 000000000000..cfd003e0d168 --- /dev/null +++ b/AiPlatform/src/V1/CreateFeatureViewRequest.php @@ -0,0 +1,242 @@ +google.cloud.aiplatform.v1.CreateFeatureViewRequest + */ +class CreateFeatureViewRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Required. The FeatureView to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_view = null; + /** + * Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within a FeatureOnlineStore. + * + * Generated from protobuf field string feature_view_id = 3 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_view_id = ''; + /** + * Immutable. If set to true, one on demand sync will be run immediately, + * regardless whether the + * [FeatureView.sync_config][google.cloud.aiplatform.v1.FeatureView.sync_config] + * is configured or not. + * + * Generated from protobuf field bool run_sync_immediately = 4 [(.google.api.field_behavior) = IMMUTABLE]; + */ + private $run_sync_immediately = false; + + /** + * @param string $parent Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName()} for help formatting this field. + * @param \Google\Cloud\AIPlatform\V1\FeatureView $featureView Required. The FeatureView to create. + * @param string $featureViewId Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within a FeatureOnlineStore. + * + * @return \Google\Cloud\AIPlatform\V1\CreateFeatureViewRequest + * + * @experimental + */ + public static function build(string $parent, \Google\Cloud\AIPlatform\V1\FeatureView $featureView, string $featureViewId): self + { + return (new self()) + ->setParent($parent) + ->setFeatureView($featureView) + ->setFeatureViewId($featureViewId); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @type \Google\Cloud\AIPlatform\V1\FeatureView $feature_view + * Required. The FeatureView to create. + * @type string $feature_view_id + * Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within a FeatureOnlineStore. + * @type bool $run_sync_immediately + * Immutable. If set to true, one on demand sync will be run immediately, + * regardless whether the + * [FeatureView.sync_config][google.cloud.aiplatform.v1.FeatureView.sync_config] + * is configured or not. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Required. The FeatureView to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureView|null + */ + public function getFeatureView() + { + return $this->feature_view; + } + + public function hasFeatureView() + { + return isset($this->feature_view); + } + + public function clearFeatureView() + { + unset($this->feature_view); + } + + /** + * Required. The FeatureView to create. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureView $var + * @return $this + */ + public function setFeatureView($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureView::class); + $this->feature_view = $var; + + return $this; + } + + /** + * Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within a FeatureOnlineStore. + * + * Generated from protobuf field string feature_view_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getFeatureViewId() + { + return $this->feature_view_id; + } + + /** + * Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * The value must be unique within a FeatureOnlineStore. + * + * Generated from protobuf field string feature_view_id = 3 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setFeatureViewId($var) + { + GPBUtil::checkString($var, True); + $this->feature_view_id = $var; + + return $this; + } + + /** + * Immutable. If set to true, one on demand sync will be run immediately, + * regardless whether the + * [FeatureView.sync_config][google.cloud.aiplatform.v1.FeatureView.sync_config] + * is configured or not. + * + * Generated from protobuf field bool run_sync_immediately = 4 [(.google.api.field_behavior) = IMMUTABLE]; + * @return bool + */ + public function getRunSyncImmediately() + { + return $this->run_sync_immediately; + } + + /** + * Immutable. If set to true, one on demand sync will be run immediately, + * regardless whether the + * [FeatureView.sync_config][google.cloud.aiplatform.v1.FeatureView.sync_config] + * is configured or not. + * + * Generated from protobuf field bool run_sync_immediately = 4 [(.google.api.field_behavior) = IMMUTABLE]; + * @param bool $var + * @return $this + */ + public function setRunSyncImmediately($var) + { + GPBUtil::checkBool($var); + $this->run_sync_immediately = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CreateRegistryFeatureOperationMetadata.php b/AiPlatform/src/V1/CreateRegistryFeatureOperationMetadata.php new file mode 100644 index 000000000000..8f9bd4e0e2ed --- /dev/null +++ b/AiPlatform/src/V1/CreateRegistryFeatureOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.CreateRegistryFeatureOperationMetadata + */ +class CreateRegistryFeatureOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for Feature. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for Feature. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for Feature. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for Feature. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/CustomJobSpec.php b/AiPlatform/src/V1/CustomJobSpec.php index 1db9b9b2ae3a..3139e33c6a45 100644 --- a/AiPlatform/src/V1/CustomJobSpec.php +++ b/AiPlatform/src/V1/CustomJobSpec.php @@ -87,6 +87,15 @@ class CustomJobSpec extends \Google\Protobuf\Internal\Message * Generated from protobuf field .google.cloud.aiplatform.v1.GcsDestination base_output_directory = 6; */ private $base_output_directory = null; + /** + * The ID of the location to store protected artifacts. e.g. us-central1. + * Populate only when the location is different than CustomJob location. + * List of supported locations: + * https://cloud.google.com/vertex-ai/docs/general/locations + * + * Generated from protobuf field string protected_artifact_location_id = 19; + */ + private $protected_artifact_location_id = ''; /** * Optional. The name of a Vertex AI * [Tensorboard][google.cloud.aiplatform.v1.Tensorboard] resource to which @@ -196,6 +205,11 @@ class CustomJobSpec extends \Google\Protobuf\Internal\Message * * AIP_MODEL_DIR = `//model/` * * AIP_CHECKPOINT_DIR = `//checkpoints/` * * AIP_TENSORBOARD_LOG_DIR = `//logs/` + * @type string $protected_artifact_location_id + * The ID of the location to store protected artifacts. e.g. us-central1. + * Populate only when the location is different than CustomJob location. + * List of supported locations: + * https://cloud.google.com/vertex-ai/docs/general/locations * @type string $tensorboard * Optional. The name of a Vertex AI * [Tensorboard][google.cloud.aiplatform.v1.Tensorboard] resource to which @@ -485,6 +499,38 @@ public function setBaseOutputDirectory($var) return $this; } + /** + * The ID of the location to store protected artifacts. e.g. us-central1. + * Populate only when the location is different than CustomJob location. + * List of supported locations: + * https://cloud.google.com/vertex-ai/docs/general/locations + * + * Generated from protobuf field string protected_artifact_location_id = 19; + * @return string + */ + public function getProtectedArtifactLocationId() + { + return $this->protected_artifact_location_id; + } + + /** + * The ID of the location to store protected artifacts. e.g. us-central1. + * Populate only when the location is different than CustomJob location. + * List of supported locations: + * https://cloud.google.com/vertex-ai/docs/general/locations + * + * Generated from protobuf field string protected_artifact_location_id = 19; + * @param string $var + * @return $this + */ + public function setProtectedArtifactLocationId($var) + { + GPBUtil::checkString($var, True); + $this->protected_artifact_location_id = $var; + + return $this; + } + /** * Optional. The name of a Vertex AI * [Tensorboard][google.cloud.aiplatform.v1.Tensorboard] resource to which diff --git a/AiPlatform/src/V1/DeleteFeatureGroupRequest.php b/AiPlatform/src/V1/DeleteFeatureGroupRequest.php new file mode 100644 index 000000000000..ca5dc0851a28 --- /dev/null +++ b/AiPlatform/src/V1/DeleteFeatureGroupRequest.php @@ -0,0 +1,138 @@ +google.cloud.aiplatform.v1.DeleteFeatureGroupRequest + */ +class DeleteFeatureGroupRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + /** + * If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * + * Generated from protobuf field bool force = 2; + */ + private $force = false; + + /** + * @param string $name Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * Please see {@see FeatureRegistryServiceClient::featureGroupName()} for help formatting this field. + * @param bool $force If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * + * @return \Google\Cloud\AIPlatform\V1\DeleteFeatureGroupRequest + * + * @experimental + */ + public static function build(string $name, bool $force): self + { + return (new self()) + ->setName($name) + ->setForce($force); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @type bool $force + * If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * + * Generated from protobuf field bool force = 2; + * @return bool + */ + public function getForce() + { + return $this->force; + } + + /** + * If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * + * Generated from protobuf field bool force = 2; + * @param bool $var + * @return $this + */ + public function setForce($var) + { + GPBUtil::checkBool($var); + $this->force = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/DeleteFeatureOnlineStoreRequest.php b/AiPlatform/src/V1/DeleteFeatureOnlineStoreRequest.php new file mode 100644 index 000000000000..34c4f5474622 --- /dev/null +++ b/AiPlatform/src/V1/DeleteFeatureOnlineStoreRequest.php @@ -0,0 +1,138 @@ +google.cloud.aiplatform.v1.DeleteFeatureOnlineStoreRequest + */ +class DeleteFeatureOnlineStoreRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + /** + * If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * + * Generated from protobuf field bool force = 2; + */ + private $force = false; + + /** + * @param string $name Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName()} for help formatting this field. + * @param bool $force If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * + * @return \Google\Cloud\AIPlatform\V1\DeleteFeatureOnlineStoreRequest + * + * @experimental + */ + public static function build(string $name, bool $force): self + { + return (new self()) + ->setName($name) + ->setForce($force); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @type bool $force + * If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * + * Generated from protobuf field bool force = 2; + * @return bool + */ + public function getForce() + { + return $this->force; + } + + /** + * If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * + * Generated from protobuf field bool force = 2; + * @param bool $var + * @return $this + */ + public function setForce($var) + { + GPBUtil::checkBool($var); + $this->force = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/DeleteFeatureRequest.php b/AiPlatform/src/V1/DeleteFeatureRequest.php index 6f260c0dfdc5..4c0dd9c61b5b 100644 --- a/AiPlatform/src/V1/DeleteFeatureRequest.php +++ b/AiPlatform/src/V1/DeleteFeatureRequest.php @@ -11,6 +11,8 @@ /** * Request message for * [FeaturestoreService.DeleteFeature][google.cloud.aiplatform.v1.FeaturestoreService.DeleteFeature]. + * Request message for + * [FeatureRegistryService.DeleteFeature][google.cloud.aiplatform.v1.FeatureRegistryService.DeleteFeature]. * * Generated from protobuf message google.cloud.aiplatform.v1.DeleteFeatureRequest */ @@ -20,6 +22,7 @@ class DeleteFeatureRequest extends \Google\Protobuf\Internal\Message * Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ @@ -29,6 +32,7 @@ class DeleteFeatureRequest extends \Google\Protobuf\Internal\Message * @param string $name Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * Please see {@see FeaturestoreServiceClient::featureName()} for help formatting this field. * * @return \Google\Cloud\AIPlatform\V1\DeleteFeatureRequest @@ -51,6 +55,7 @@ public static function build(string $name): self * Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * } */ public function __construct($data = NULL) { @@ -62,6 +67,7 @@ public function __construct($data = NULL) { * Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @return string @@ -75,6 +81,7 @@ public function getName() * Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @param string $var diff --git a/AiPlatform/src/V1/DeleteFeatureViewRequest.php b/AiPlatform/src/V1/DeleteFeatureViewRequest.php new file mode 100644 index 000000000000..fc8fdac76994 --- /dev/null +++ b/AiPlatform/src/V1/DeleteFeatureViewRequest.php @@ -0,0 +1,91 @@ +google.cloud.aiplatform.v1.DeleteFeatureViewRequest + */ +class DeleteFeatureViewRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + + /** + * @param string $name Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureViewName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\DeleteFeatureViewRequest + * + * @experimental + */ + public static function build(string $name): self + { + return (new self()) + ->setName($name); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/DeployedIndex.php b/AiPlatform/src/V1/DeployedIndex.php index 592d05c46cca..bf99aebf90a4 100644 --- a/AiPlatform/src/V1/DeployedIndex.php +++ b/AiPlatform/src/V1/DeployedIndex.php @@ -86,10 +86,11 @@ class DeployedIndex extends \Google\Protobuf\Internal\Message private $automatic_resources = null; /** * Optional. A description of resources that are dedicated to the - * DeployedIndex, and that need a higher degree of manual configuration. If - * min_replica_count is not set, the default value is 2 (we don't provide SLA - * when min_replica_count=1). If max_replica_count is not set, the default - * value is min_replica_count. The max allowed replica count is 1000. + * DeployedIndex, and that need a higher degree of manual configuration. The + * field min_replica_count must be set to a value strictly greater than 0, or + * else validation will fail. We don't provide SLA when min_replica_count=1. + * If max_replica_count is not set, the default value is min_replica_count. + * The max allowed replica count is 1000. * Available machine types for SMALL shard: * e2-standard-2 and all machine types available for MEDIUM and LARGE shard. * Available machine types for MEDIUM shard: @@ -200,10 +201,11 @@ class DeployedIndex extends \Google\Protobuf\Internal\Message * 1000. * @type \Google\Cloud\AIPlatform\V1\DedicatedResources $dedicated_resources * Optional. A description of resources that are dedicated to the - * DeployedIndex, and that need a higher degree of manual configuration. If - * min_replica_count is not set, the default value is 2 (we don't provide SLA - * when min_replica_count=1). If max_replica_count is not set, the default - * value is min_replica_count. The max allowed replica count is 1000. + * DeployedIndex, and that need a higher degree of manual configuration. The + * field min_replica_count must be set to a value strictly greater than 0, or + * else validation will fail. We don't provide SLA when min_replica_count=1. + * If max_replica_count is not set, the default value is min_replica_count. + * The max allowed replica count is 1000. * Available machine types for SMALL shard: * e2-standard-2 and all machine types available for MEDIUM and LARGE shard. * Available machine types for MEDIUM shard: @@ -529,10 +531,11 @@ public function setAutomaticResources($var) /** * Optional. A description of resources that are dedicated to the - * DeployedIndex, and that need a higher degree of manual configuration. If - * min_replica_count is not set, the default value is 2 (we don't provide SLA - * when min_replica_count=1). If max_replica_count is not set, the default - * value is min_replica_count. The max allowed replica count is 1000. + * DeployedIndex, and that need a higher degree of manual configuration. The + * field min_replica_count must be set to a value strictly greater than 0, or + * else validation will fail. We don't provide SLA when min_replica_count=1. + * If max_replica_count is not set, the default value is min_replica_count. + * The max allowed replica count is 1000. * Available machine types for SMALL shard: * e2-standard-2 and all machine types available for MEDIUM and LARGE shard. * Available machine types for MEDIUM shard: @@ -562,10 +565,11 @@ public function clearDedicatedResources() /** * Optional. A description of resources that are dedicated to the - * DeployedIndex, and that need a higher degree of manual configuration. If - * min_replica_count is not set, the default value is 2 (we don't provide SLA - * when min_replica_count=1). If max_replica_count is not set, the default - * value is min_replica_count. The max allowed replica count is 1000. + * DeployedIndex, and that need a higher degree of manual configuration. The + * field min_replica_count must be set to a value strictly greater than 0, or + * else validation will fail. We don't provide SLA when min_replica_count=1. + * If max_replica_count is not set, the default value is min_replica_count. + * The max allowed replica count is 1000. * Available machine types for SMALL shard: * e2-standard-2 and all machine types available for MEDIUM and LARGE shard. * Available machine types for MEDIUM shard: diff --git a/AiPlatform/src/V1/Feature.php b/AiPlatform/src/V1/Feature.php index 7b02337fd0e8..b21f4d6573f1 100644 --- a/AiPlatform/src/V1/Feature.php +++ b/AiPlatform/src/V1/Feature.php @@ -9,9 +9,8 @@ use Google\Protobuf\Internal\GPBUtil; /** - * Feature Metadata information that describes an attribute of an entity type. - * For example, apple is an entity type, and color is a feature that describes - * apple. + * Feature Metadata information. + * For example, color is a feature that describes an apple. * * Generated from protobuf message google.cloud.aiplatform.v1.Feature */ @@ -21,6 +20,7 @@ class Feature extends \Google\Protobuf\Internal\Message * Immutable. Name of the Feature. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * The last part feature is assigned by the client. The feature can be up to * 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, * underscore(_), and ASCII digits 0-9 starting with a letter. The value will @@ -36,19 +36,22 @@ class Feature extends \Google\Protobuf\Internal\Message */ private $description = ''; /** - * Required. Immutable. Type of Feature value. + * Immutable. Only applicable for Vertex AI Feature Store (Legacy). + * Type of Feature value. * - * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.field_behavior) = IMMUTABLE]; + * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = IMMUTABLE]; */ private $value_type = 0; /** - * Output only. Timestamp when this EntityType was created. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was created. * * Generated from protobuf field .google.protobuf.Timestamp create_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; */ private $create_time = null; /** - * Output only. Timestamp when this EntityType was most recently updated. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was most recently updated. * * Generated from protobuf field .google.protobuf.Timestamp update_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; */ @@ -75,8 +78,10 @@ class Feature extends \Google\Protobuf\Internal\Message */ private $etag = ''; /** - * Optional. If not set, use the monitoring_config defined for the EntityType - * this Feature belongs to. Only Features with type + * Optional. Only applicable for Vertex AI Feature Store (Legacy). + * If not set, use the monitoring_config defined for the EntityType this + * Feature belongs to. + * Only Features with type * ([Feature.ValueType][google.cloud.aiplatform.v1.Feature.ValueType]) BOOL, * STRING, DOUBLE or INT64 can enable monitoring. * If set to true, all types of data monitoring are disabled despite the @@ -86,12 +91,20 @@ class Feature extends \Google\Protobuf\Internal\Message */ private $disable_monitoring = false; /** - * Output only. The list of historical stats and anomalies with specified - * objectives. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * The list of historical stats and anomalies with specified objectives. * * Generated from protobuf field repeated .google.cloud.aiplatform.v1.Feature.MonitoringStatsAnomaly monitoring_stats_anomalies = 11 [(.google.api.field_behavior) = OUTPUT_ONLY]; */ private $monitoring_stats_anomalies; + /** + * Only applicable for Vertex AI Feature Store. + * The name of the BigQuery Table/View columnn hosting data for this version. + * If no value is provided, will use feature_id. + * + * Generated from protobuf field string version_column_name = 106; + */ + private $version_column_name = ''; /** * Constructor. @@ -103,6 +116,7 @@ class Feature extends \Google\Protobuf\Internal\Message * Immutable. Name of the Feature. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * The last part feature is assigned by the client. The feature can be up to * 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, * underscore(_), and ASCII digits 0-9 starting with a letter. The value will @@ -110,11 +124,14 @@ class Feature extends \Google\Protobuf\Internal\Message * @type string $description * Description of the Feature. * @type int $value_type - * Required. Immutable. Type of Feature value. + * Immutable. Only applicable for Vertex AI Feature Store (Legacy). + * Type of Feature value. * @type \Google\Protobuf\Timestamp $create_time - * Output only. Timestamp when this EntityType was created. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was created. * @type \Google\Protobuf\Timestamp $update_time - * Output only. Timestamp when this EntityType was most recently updated. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was most recently updated. * @type array|\Google\Protobuf\Internal\MapField $labels * Optional. The labels with user-defined metadata to organize your Features. * Label keys and values can be no longer than 64 characters @@ -129,15 +146,21 @@ class Feature extends \Google\Protobuf\Internal\Message * Used to perform a consistent read-modify-write updates. If not set, a blind * "overwrite" update happens. * @type bool $disable_monitoring - * Optional. If not set, use the monitoring_config defined for the EntityType - * this Feature belongs to. Only Features with type + * Optional. Only applicable for Vertex AI Feature Store (Legacy). + * If not set, use the monitoring_config defined for the EntityType this + * Feature belongs to. + * Only Features with type * ([Feature.ValueType][google.cloud.aiplatform.v1.Feature.ValueType]) BOOL, * STRING, DOUBLE or INT64 can enable monitoring. * If set to true, all types of data monitoring are disabled despite the * config on EntityType. * @type array<\Google\Cloud\AIPlatform\V1\Feature\MonitoringStatsAnomaly>|\Google\Protobuf\Internal\RepeatedField $monitoring_stats_anomalies - * Output only. The list of historical stats and anomalies with specified - * objectives. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * The list of historical stats and anomalies with specified objectives. + * @type string $version_column_name + * Only applicable for Vertex AI Feature Store. + * The name of the BigQuery Table/View columnn hosting data for this version. + * If no value is provided, will use feature_id. * } */ public function __construct($data = NULL) { @@ -149,6 +172,7 @@ public function __construct($data = NULL) { * Immutable. Name of the Feature. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * The last part feature is assigned by the client. The feature can be up to * 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, * underscore(_), and ASCII digits 0-9 starting with a letter. The value will @@ -166,6 +190,7 @@ public function getName() * Immutable. Name of the Feature. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * The last part feature is assigned by the client. The feature can be up to * 64 characters long and can consist only of ASCII Latin letters A-Z and a-z, * underscore(_), and ASCII digits 0-9 starting with a letter. The value will @@ -210,9 +235,10 @@ public function setDescription($var) } /** - * Required. Immutable. Type of Feature value. + * Immutable. Only applicable for Vertex AI Feature Store (Legacy). + * Type of Feature value. * - * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.field_behavior) = IMMUTABLE]; + * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = IMMUTABLE]; * @return int */ public function getValueType() @@ -221,9 +247,10 @@ public function getValueType() } /** - * Required. Immutable. Type of Feature value. + * Immutable. Only applicable for Vertex AI Feature Store (Legacy). + * Type of Feature value. * - * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = REQUIRED, (.google.api.field_behavior) = IMMUTABLE]; + * Generated from protobuf field .google.cloud.aiplatform.v1.Feature.ValueType value_type = 3 [(.google.api.field_behavior) = IMMUTABLE]; * @param int $var * @return $this */ @@ -236,7 +263,8 @@ public function setValueType($var) } /** - * Output only. Timestamp when this EntityType was created. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was created. * * Generated from protobuf field .google.protobuf.Timestamp create_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return \Google\Protobuf\Timestamp|null @@ -257,7 +285,8 @@ public function clearCreateTime() } /** - * Output only. Timestamp when this EntityType was created. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was created. * * Generated from protobuf field .google.protobuf.Timestamp create_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @param \Google\Protobuf\Timestamp $var @@ -272,7 +301,8 @@ public function setCreateTime($var) } /** - * Output only. Timestamp when this EntityType was most recently updated. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was most recently updated. * * Generated from protobuf field .google.protobuf.Timestamp update_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return \Google\Protobuf\Timestamp|null @@ -293,7 +323,8 @@ public function clearUpdateTime() } /** - * Output only. Timestamp when this EntityType was most recently updated. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * Timestamp when this EntityType was most recently updated. * * Generated from protobuf field .google.protobuf.Timestamp update_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @param \Google\Protobuf\Timestamp $var @@ -378,8 +409,10 @@ public function setEtag($var) } /** - * Optional. If not set, use the monitoring_config defined for the EntityType - * this Feature belongs to. Only Features with type + * Optional. Only applicable for Vertex AI Feature Store (Legacy). + * If not set, use the monitoring_config defined for the EntityType this + * Feature belongs to. + * Only Features with type * ([Feature.ValueType][google.cloud.aiplatform.v1.Feature.ValueType]) BOOL, * STRING, DOUBLE or INT64 can enable monitoring. * If set to true, all types of data monitoring are disabled despite the @@ -394,8 +427,10 @@ public function getDisableMonitoring() } /** - * Optional. If not set, use the monitoring_config defined for the EntityType - * this Feature belongs to. Only Features with type + * Optional. Only applicable for Vertex AI Feature Store (Legacy). + * If not set, use the monitoring_config defined for the EntityType this + * Feature belongs to. + * Only Features with type * ([Feature.ValueType][google.cloud.aiplatform.v1.Feature.ValueType]) BOOL, * STRING, DOUBLE or INT64 can enable monitoring. * If set to true, all types of data monitoring are disabled despite the @@ -414,8 +449,8 @@ public function setDisableMonitoring($var) } /** - * Output only. The list of historical stats and anomalies with specified - * objectives. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * The list of historical stats and anomalies with specified objectives. * * Generated from protobuf field repeated .google.cloud.aiplatform.v1.Feature.MonitoringStatsAnomaly monitoring_stats_anomalies = 11 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @return \Google\Protobuf\Internal\RepeatedField @@ -426,8 +461,8 @@ public function getMonitoringStatsAnomalies() } /** - * Output only. The list of historical stats and anomalies with specified - * objectives. + * Output only. Only applicable for Vertex AI Feature Store (Legacy). + * The list of historical stats and anomalies with specified objectives. * * Generated from protobuf field repeated .google.cloud.aiplatform.v1.Feature.MonitoringStatsAnomaly monitoring_stats_anomalies = 11 [(.google.api.field_behavior) = OUTPUT_ONLY]; * @param array<\Google\Cloud\AIPlatform\V1\Feature\MonitoringStatsAnomaly>|\Google\Protobuf\Internal\RepeatedField $var @@ -441,5 +476,35 @@ public function setMonitoringStatsAnomalies($var) return $this; } + /** + * Only applicable for Vertex AI Feature Store. + * The name of the BigQuery Table/View columnn hosting data for this version. + * If no value is provided, will use feature_id. + * + * Generated from protobuf field string version_column_name = 106; + * @return string + */ + public function getVersionColumnName() + { + return $this->version_column_name; + } + + /** + * Only applicable for Vertex AI Feature Store. + * The name of the BigQuery Table/View columnn hosting data for this version. + * If no value is provided, will use feature_id. + * + * Generated from protobuf field string version_column_name = 106; + * @param string $var + * @return $this + */ + public function setVersionColumnName($var) + { + GPBUtil::checkString($var, True); + $this->version_column_name = $var; + + return $this; + } + } diff --git a/AiPlatform/src/V1/Feature/ValueType.php b/AiPlatform/src/V1/Feature/ValueType.php index dad304afa0c7..bdf839d57f13 100644 --- a/AiPlatform/src/V1/Feature/ValueType.php +++ b/AiPlatform/src/V1/Feature/ValueType.php @@ -7,6 +7,7 @@ use UnexpectedValueException; /** + * Only applicable for Vertex AI Legacy Feature Store. * An enum representing the value type of a feature. * * Protobuf type google.cloud.aiplatform.v1.Feature.ValueType diff --git a/AiPlatform/src/V1/FeatureGroup.php b/AiPlatform/src/V1/FeatureGroup.php new file mode 100644 index 000000000000..69e231b78da0 --- /dev/null +++ b/AiPlatform/src/V1/FeatureGroup.php @@ -0,0 +1,348 @@ +google.cloud.aiplatform.v1.FeatureGroup + */ +class FeatureGroup extends \Google\Protobuf\Internal\Message +{ + /** + * Output only. Name of the FeatureGroup. Format: + * `projects/{project}/locations/{location}/featureGroups/{featureGroup}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $name = ''; + /** + * Output only. Timestamp when this FeatureGroup was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $create_time = null; + /** + * Output only. Timestamp when this FeatureGroup was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $update_time = null; + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $etag = ''; + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureGroup. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureGroup(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $labels; + /** + * Optional. Description of the FeatureGroup. + * + * Generated from protobuf field string description = 6 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $description = ''; + protected $source; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureGroup\BigQuery $big_query + * Indicates that features for this group come from BigQuery Table/View. + * By default treats the source as a sparse time series source, which is + * required to have an entity_id and a feature_timestamp column in the + * source. + * @type string $name + * Output only. Name of the FeatureGroup. Format: + * `projects/{project}/locations/{location}/featureGroups/{featureGroup}` + * @type \Google\Protobuf\Timestamp $create_time + * Output only. Timestamp when this FeatureGroup was created. + * @type \Google\Protobuf\Timestamp $update_time + * Output only. Timestamp when this FeatureGroup was last updated. + * @type string $etag + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * @type array|\Google\Protobuf\Internal\MapField $labels + * Optional. The labels with user-defined metadata to organize your + * FeatureGroup. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureGroup(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * @type string $description + * Optional. Description of the FeatureGroup. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureGroup::initOnce(); + parent::__construct($data); + } + + /** + * Indicates that features for this group come from BigQuery Table/View. + * By default treats the source as a sparse time series source, which is + * required to have an entity_id and a feature_timestamp column in the + * source. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup.BigQuery big_query = 7; + * @return \Google\Cloud\AIPlatform\V1\FeatureGroup\BigQuery|null + */ + public function getBigQuery() + { + return $this->readOneof(7); + } + + public function hasBigQuery() + { + return $this->hasOneof(7); + } + + /** + * Indicates that features for this group come from BigQuery Table/View. + * By default treats the source as a sparse time series source, which is + * required to have an entity_id and a feature_timestamp column in the + * source. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup.BigQuery big_query = 7; + * @param \Google\Cloud\AIPlatform\V1\FeatureGroup\BigQuery $var + * @return $this + */ + public function setBigQuery($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureGroup\BigQuery::class); + $this->writeOneof(7, $var); + + return $this; + } + + /** + * Output only. Name of the FeatureGroup. Format: + * `projects/{project}/locations/{location}/featureGroups/{featureGroup}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Output only. Name of the FeatureGroup. Format: + * `projects/{project}/locations/{location}/featureGroups/{featureGroup}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureGroup was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getCreateTime() + { + return $this->create_time; + } + + public function hasCreateTime() + { + return isset($this->create_time); + } + + public function clearCreateTime() + { + unset($this->create_time); + } + + /** + * Output only. Timestamp when this FeatureGroup was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setCreateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->create_time = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureGroup was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getUpdateTime() + { + return $this->update_time; + } + + public function hasUpdateTime() + { + return isset($this->update_time); + } + + public function clearUpdateTime() + { + unset($this->update_time); + } + + /** + * Output only. Timestamp when this FeatureGroup was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setUpdateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->update_time = $var; + + return $this; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + * @return string + */ + public function getEtag() + { + return $this->etag; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + * @param string $var + * @return $this + */ + public function setEtag($var) + { + GPBUtil::checkString($var, True); + $this->etag = $var; + + return $this; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureGroup. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureGroup(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\MapField + */ + public function getLabels() + { + return $this->labels; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureGroup. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureGroup(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\MapField $var + * @return $this + */ + public function setLabels($var) + { + $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING); + $this->labels = $arr; + + return $this; + } + + /** + * Optional. Description of the FeatureGroup. + * + * Generated from protobuf field string description = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @return string + */ + public function getDescription() + { + return $this->description; + } + + /** + * Optional. Description of the FeatureGroup. + * + * Generated from protobuf field string description = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @param string $var + * @return $this + */ + public function setDescription($var) + { + GPBUtil::checkString($var, True); + $this->description = $var; + + return $this; + } + + /** + * @return string + */ + public function getSource() + { + return $this->whichOneof("source"); + } + +} + diff --git a/AiPlatform/src/V1/FeatureGroup/BigQuery.php b/AiPlatform/src/V1/FeatureGroup/BigQuery.php new file mode 100644 index 000000000000..75316ae94485 --- /dev/null +++ b/AiPlatform/src/V1/FeatureGroup/BigQuery.php @@ -0,0 +1,120 @@ +google.cloud.aiplatform.v1.FeatureGroup.BigQuery + */ +class BigQuery extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Immutable. The BigQuery source URI that points to either a + * BigQuery Table or View. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.BigQuerySource big_query_source = 1 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = REQUIRED]; + */ + private $big_query_source = null; + /** + * Optional. Columns to construct entity_id / row keys. Currently only + * supports 1 entity_id_column. If not provided defaults to `entity_id`. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $entity_id_columns; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\BigQuerySource $big_query_source + * Required. Immutable. The BigQuery source URI that points to either a + * BigQuery Table or View. + * @type array|\Google\Protobuf\Internal\RepeatedField $entity_id_columns + * Optional. Columns to construct entity_id / row keys. Currently only + * supports 1 entity_id_column. If not provided defaults to `entity_id`. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureGroup::initOnce(); + parent::__construct($data); + } + + /** + * Required. Immutable. The BigQuery source URI that points to either a + * BigQuery Table or View. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.BigQuerySource big_query_source = 1 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\BigQuerySource|null + */ + public function getBigQuerySource() + { + return $this->big_query_source; + } + + public function hasBigQuerySource() + { + return isset($this->big_query_source); + } + + public function clearBigQuerySource() + { + unset($this->big_query_source); + } + + /** + * Required. Immutable. The BigQuery source URI that points to either a + * BigQuery Table or View. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.BigQuerySource big_query_source = 1 [(.google.api.field_behavior) = IMMUTABLE, (.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\BigQuerySource $var + * @return $this + */ + public function setBigQuerySource($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\BigQuerySource::class); + $this->big_query_source = $var; + + return $this; + } + + /** + * Optional. Columns to construct entity_id / row keys. Currently only + * supports 1 entity_id_column. If not provided defaults to `entity_id`. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getEntityIdColumns() + { + return $this->entity_id_columns; + } + + /** + * Optional. Columns to construct entity_id / row keys. Currently only + * supports 1 entity_id_column. If not provided defaults to `entity_id`. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setEntityIdColumns($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->entity_id_columns = $arr; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureOnlineStore.php b/AiPlatform/src/V1/FeatureOnlineStore.php new file mode 100644 index 000000000000..6fa9d602cb72 --- /dev/null +++ b/AiPlatform/src/V1/FeatureOnlineStore.php @@ -0,0 +1,347 @@ +google.cloud.aiplatform.v1.FeatureOnlineStore + */ +class FeatureOnlineStore extends \Google\Protobuf\Internal\Message +{ + /** + * Output only. Name of the FeatureOnlineStore. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $name = ''; + /** + * Output only. Timestamp when this FeatureOnlineStore was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $create_time = null; + /** + * Output only. Timestamp when this FeatureOnlineStore was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $update_time = null; + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 5 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $etag = ''; + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureOnlineStore. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 6 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $labels; + /** + * Output only. State of the featureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.State state = 7 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $state = 0; + protected $storage_type; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable $bigtable + * Contains settings for the Cloud Bigtable instance that will be created + * to serve featureValues for all FeatureViews under this + * FeatureOnlineStore. + * @type string $name + * Output only. Name of the FeatureOnlineStore. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}` + * @type \Google\Protobuf\Timestamp $create_time + * Output only. Timestamp when this FeatureOnlineStore was created. + * @type \Google\Protobuf\Timestamp $update_time + * Output only. Timestamp when this FeatureOnlineStore was last updated. + * @type string $etag + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * @type array|\Google\Protobuf\Internal\MapField $labels + * Optional. The labels with user-defined metadata to organize your + * FeatureOnlineStore. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * @type int $state + * Output only. State of the featureOnlineStore. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStore::initOnce(); + parent::__construct($data); + } + + /** + * Contains settings for the Cloud Bigtable instance that will be created + * to serve featureValues for all FeatureViews under this + * FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable bigtable = 8; + * @return \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable|null + */ + public function getBigtable() + { + return $this->readOneof(8); + } + + public function hasBigtable() + { + return $this->hasOneof(8); + } + + /** + * Contains settings for the Cloud Bigtable instance that will be created + * to serve featureValues for all FeatureViews under this + * FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable bigtable = 8; + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable $var + * @return $this + */ + public function setBigtable($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable::class); + $this->writeOneof(8, $var); + + return $this; + } + + /** + * Output only. Name of the FeatureOnlineStore. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Output only. Name of the FeatureOnlineStore. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureOnlineStore was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getCreateTime() + { + return $this->create_time; + } + + public function hasCreateTime() + { + return isset($this->create_time); + } + + public function clearCreateTime() + { + unset($this->create_time); + } + + /** + * Output only. Timestamp when this FeatureOnlineStore was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setCreateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->create_time = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureOnlineStore was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getUpdateTime() + { + return $this->update_time; + } + + public function hasUpdateTime() + { + return isset($this->update_time); + } + + public function clearUpdateTime() + { + unset($this->update_time); + } + + /** + * Output only. Timestamp when this FeatureOnlineStore was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setUpdateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->update_time = $var; + + return $this; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @return string + */ + public function getEtag() + { + return $this->etag; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @param string $var + * @return $this + */ + public function setEtag($var) + { + GPBUtil::checkString($var, True); + $this->etag = $var; + + return $this; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureOnlineStore. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\MapField + */ + public function getLabels() + { + return $this->labels; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureOnlineStore. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\MapField $var + * @return $this + */ + public function setLabels($var) + { + $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING); + $this->labels = $arr; + + return $this; + } + + /** + * Output only. State of the featureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.State state = 7 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return int + */ + public function getState() + { + return $this->state; + } + + /** + * Output only. State of the featureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.State state = 7 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param int $var + * @return $this + */ + public function setState($var) + { + GPBUtil::checkEnum($var, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\State::class); + $this->state = $var; + + return $this; + } + + /** + * @return string + */ + public function getStorageType() + { + return $this->whichOneof("storage_type"); + } + +} + diff --git a/AiPlatform/src/V1/FeatureOnlineStore/Bigtable.php b/AiPlatform/src/V1/FeatureOnlineStore/Bigtable.php new file mode 100644 index 000000000000..fdb115794a7d --- /dev/null +++ b/AiPlatform/src/V1/FeatureOnlineStore/Bigtable.php @@ -0,0 +1,76 @@ +google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable + */ +class Bigtable extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Autoscaling config applied to Bigtable Instance. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable.AutoScaling auto_scaling = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $auto_scaling = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable\AutoScaling $auto_scaling + * Required. Autoscaling config applied to Bigtable Instance. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStore::initOnce(); + parent::__construct($data); + } + + /** + * Required. Autoscaling config applied to Bigtable Instance. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable.AutoScaling auto_scaling = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable\AutoScaling|null + */ + public function getAutoScaling() + { + return $this->auto_scaling; + } + + public function hasAutoScaling() + { + return isset($this->auto_scaling); + } + + public function clearAutoScaling() + { + unset($this->auto_scaling); + } + + /** + * Required. Autoscaling config applied to Bigtable Instance. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable.AutoScaling auto_scaling = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable\AutoScaling $var + * @return $this + */ + public function setAutoScaling($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore\Bigtable\AutoScaling::class); + $this->auto_scaling = $var; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureOnlineStore/Bigtable/AutoScaling.php b/AiPlatform/src/V1/FeatureOnlineStore/Bigtable/AutoScaling.php new file mode 100644 index 000000000000..641364326c10 --- /dev/null +++ b/AiPlatform/src/V1/FeatureOnlineStore/Bigtable/AutoScaling.php @@ -0,0 +1,162 @@ +google.cloud.aiplatform.v1.FeatureOnlineStore.Bigtable.AutoScaling + */ +class AutoScaling extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The minimum number of nodes to scale down to. Must be greater + * than or equal to 1. + * + * Generated from protobuf field int32 min_node_count = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $min_node_count = 0; + /** + * Required. The maximum number of nodes to scale up to. Must be greater + * than or equal to min_node_count, and less than or equal to 10 times of + * 'min_node_count'. + * + * Generated from protobuf field int32 max_node_count = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $max_node_count = 0; + /** + * Optional. A percentage of the cluster's CPU capacity. Can be from 10% + * to 80%. When a cluster's CPU utilization exceeds the target that you + * have set, Bigtable immediately adds nodes to the cluster. When CPU + * utilization is substantially lower than the target, Bigtable removes + * nodes. If not set will default to 50%. + * + * Generated from protobuf field int32 cpu_utilization_target = 3 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $cpu_utilization_target = 0; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type int $min_node_count + * Required. The minimum number of nodes to scale down to. Must be greater + * than or equal to 1. + * @type int $max_node_count + * Required. The maximum number of nodes to scale up to. Must be greater + * than or equal to min_node_count, and less than or equal to 10 times of + * 'min_node_count'. + * @type int $cpu_utilization_target + * Optional. A percentage of the cluster's CPU capacity. Can be from 10% + * to 80%. When a cluster's CPU utilization exceeds the target that you + * have set, Bigtable immediately adds nodes to the cluster. When CPU + * utilization is substantially lower than the target, Bigtable removes + * nodes. If not set will default to 50%. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStore::initOnce(); + parent::__construct($data); + } + + /** + * Required. The minimum number of nodes to scale down to. Must be greater + * than or equal to 1. + * + * Generated from protobuf field int32 min_node_count = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return int + */ + public function getMinNodeCount() + { + return $this->min_node_count; + } + + /** + * Required. The minimum number of nodes to scale down to. Must be greater + * than or equal to 1. + * + * Generated from protobuf field int32 min_node_count = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param int $var + * @return $this + */ + public function setMinNodeCount($var) + { + GPBUtil::checkInt32($var); + $this->min_node_count = $var; + + return $this; + } + + /** + * Required. The maximum number of nodes to scale up to. Must be greater + * than or equal to min_node_count, and less than or equal to 10 times of + * 'min_node_count'. + * + * Generated from protobuf field int32 max_node_count = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return int + */ + public function getMaxNodeCount() + { + return $this->max_node_count; + } + + /** + * Required. The maximum number of nodes to scale up to. Must be greater + * than or equal to min_node_count, and less than or equal to 10 times of + * 'min_node_count'. + * + * Generated from protobuf field int32 max_node_count = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param int $var + * @return $this + */ + public function setMaxNodeCount($var) + { + GPBUtil::checkInt32($var); + $this->max_node_count = $var; + + return $this; + } + + /** + * Optional. A percentage of the cluster's CPU capacity. Can be from 10% + * to 80%. When a cluster's CPU utilization exceeds the target that you + * have set, Bigtable immediately adds nodes to the cluster. When CPU + * utilization is substantially lower than the target, Bigtable removes + * nodes. If not set will default to 50%. + * + * Generated from protobuf field int32 cpu_utilization_target = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @return int + */ + public function getCpuUtilizationTarget() + { + return $this->cpu_utilization_target; + } + + /** + * Optional. A percentage of the cluster's CPU capacity. Can be from 10% + * to 80%. When a cluster's CPU utilization exceeds the target that you + * have set, Bigtable immediately adds nodes to the cluster. When CPU + * utilization is substantially lower than the target, Bigtable removes + * nodes. If not set will default to 50%. + * + * Generated from protobuf field int32 cpu_utilization_target = 3 [(.google.api.field_behavior) = OPTIONAL]; + * @param int $var + * @return $this + */ + public function setCpuUtilizationTarget($var) + { + GPBUtil::checkInt32($var); + $this->cpu_utilization_target = $var; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureOnlineStore/State.php b/AiPlatform/src/V1/FeatureOnlineStore/State.php new file mode 100644 index 000000000000..0ea52841b77d --- /dev/null +++ b/AiPlatform/src/V1/FeatureOnlineStore/State.php @@ -0,0 +1,67 @@ +google.cloud.aiplatform.v1.FeatureOnlineStore.State + */ +class State +{ + /** + * Default value. This value is unused. + * + * Generated from protobuf enum STATE_UNSPECIFIED = 0; + */ + const STATE_UNSPECIFIED = 0; + /** + * State when the featureOnlineStore configuration is not being updated and + * the fields reflect the current configuration of the featureOnlineStore. + * The featureOnlineStore is usable in this state. + * + * Generated from protobuf enum STABLE = 1; + */ + const STABLE = 1; + /** + * The state of the featureOnlineStore configuration when it is being + * updated. During an update, the fields reflect either the original + * configuration or the updated configuration of the featureOnlineStore. The + * featureOnlineStore is still usable in this state. + * + * Generated from protobuf enum UPDATING = 2; + */ + const UPDATING = 2; + + private static $valueToName = [ + self::STATE_UNSPECIFIED => 'STATE_UNSPECIFIED', + self::STABLE => 'STABLE', + self::UPDATING => 'UPDATING', + ]; + + public static function name($value) + { + if (!isset(self::$valueToName[$value])) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no name defined for value %s', __CLASS__, $value)); + } + return self::$valueToName[$value]; + } + + + public static function value($name) + { + $const = __CLASS__ . '::' . strtoupper($name); + if (!defined($const)) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no value defined for name %s', __CLASS__, $name)); + } + return constant($const); + } +} + + diff --git a/AiPlatform/src/V1/FeatureOnlineStoreAdminServiceClient.php b/AiPlatform/src/V1/FeatureOnlineStoreAdminServiceClient.php new file mode 100644 index 000000000000..25cf712fc925 --- /dev/null +++ b/AiPlatform/src/V1/FeatureOnlineStoreAdminServiceClient.php @@ -0,0 +1,34 @@ +google.cloud.aiplatform.v1.FeatureView + */ +class FeatureView extends \Google\Protobuf\Internal\Message +{ + /** + * Output only. Name of the FeatureView. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $name = ''; + /** + * Output only. Timestamp when this FeatureView was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $create_time = null; + /** + * Output only. Timestamp when this FeatureView was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $update_time = null; + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $etag = ''; + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureViews. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $labels; + /** + * Configures when data is to be synced/updated for this FeatureView. At the + * end of the sync the latest featureValues for each entityId of this + * FeatureView are made ready for online serving. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.SyncConfig sync_config = 7; + */ + private $sync_config = null; + protected $source; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureView\BigQuerySource $big_query_source + * Optional. Configures how data is supposed to be extracted from a BigQuery + * source to be loaded onto the FeatureOnlineStore. + * @type \Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource $feature_registry_source + * Optional. Configures the features from a Feature Registry source that + * need to be loaded onto the FeatureOnlineStore. + * @type string $name + * Output only. Name of the FeatureView. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @type \Google\Protobuf\Timestamp $create_time + * Output only. Timestamp when this FeatureView was created. + * @type \Google\Protobuf\Timestamp $update_time + * Output only. Timestamp when this FeatureView was last updated. + * @type string $etag + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * @type array|\Google\Protobuf\Internal\MapField $labels + * Optional. The labels with user-defined metadata to organize your + * FeatureViews. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * @type \Google\Cloud\AIPlatform\V1\FeatureView\SyncConfig $sync_config + * Configures when data is to be synced/updated for this FeatureView. At the + * end of the sync the latest featureValues for each entityId of this + * FeatureView are made ready for online serving. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureView::initOnce(); + parent::__construct($data); + } + + /** + * Optional. Configures how data is supposed to be extracted from a BigQuery + * source to be loaded onto the FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.BigQuerySource big_query_source = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Cloud\AIPlatform\V1\FeatureView\BigQuerySource|null + */ + public function getBigQuerySource() + { + return $this->readOneof(6); + } + + public function hasBigQuerySource() + { + return $this->hasOneof(6); + } + + /** + * Optional. Configures how data is supposed to be extracted from a BigQuery + * source to be loaded onto the FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.BigQuerySource big_query_source = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @param \Google\Cloud\AIPlatform\V1\FeatureView\BigQuerySource $var + * @return $this + */ + public function setBigQuerySource($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureView\BigQuerySource::class); + $this->writeOneof(6, $var); + + return $this; + } + + /** + * Optional. Configures the features from a Feature Registry source that + * need to be loaded onto the FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource feature_registry_source = 9 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource|null + */ + public function getFeatureRegistrySource() + { + return $this->readOneof(9); + } + + public function hasFeatureRegistrySource() + { + return $this->hasOneof(9); + } + + /** + * Optional. Configures the features from a Feature Registry source that + * need to be loaded onto the FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource feature_registry_source = 9 [(.google.api.field_behavior) = OPTIONAL]; + * @param \Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource $var + * @return $this + */ + public function setFeatureRegistrySource($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource::class); + $this->writeOneof(9, $var); + + return $this; + } + + /** + * Output only. Name of the FeatureView. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Output only. Name of the FeatureView. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureView was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getCreateTime() + { + return $this->create_time; + } + + public function hasCreateTime() + { + return isset($this->create_time); + } + + public function clearCreateTime() + { + unset($this->create_time); + } + + /** + * Output only. Timestamp when this FeatureView was created. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setCreateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->create_time = $var; + + return $this; + } + + /** + * Output only. Timestamp when this FeatureView was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getUpdateTime() + { + return $this->update_time; + } + + public function hasUpdateTime() + { + return isset($this->update_time); + } + + public function clearUpdateTime() + { + unset($this->update_time); + } + + /** + * Output only. Timestamp when this FeatureView was last updated. + * + * Generated from protobuf field .google.protobuf.Timestamp update_time = 3 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setUpdateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->update_time = $var; + + return $this; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + * @return string + */ + public function getEtag() + { + return $this->etag; + } + + /** + * Optional. Used to perform consistent read-modify-write updates. If not set, + * a blind "overwrite" update happens. + * + * Generated from protobuf field string etag = 4 [(.google.api.field_behavior) = OPTIONAL]; + * @param string $var + * @return $this + */ + public function setEtag($var) + { + GPBUtil::checkString($var, True); + $this->etag = $var; + + return $this; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureViews. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\MapField + */ + public function getLabels() + { + return $this->labels; + } + + /** + * Optional. The labels with user-defined metadata to organize your + * FeatureViews. + * Label keys and values can be no longer than 64 characters + * (Unicode codepoints), can only contain lowercase letters, numeric + * characters, underscores and dashes. International characters are allowed. + * See https://goo.gl/xmQnxf for more information on and examples of labels. + * No more than 64 user labels can be associated with one + * FeatureOnlineStore(System labels are excluded)." System reserved label keys + * are prefixed with "aiplatform.googleapis.com/" and are immutable. + * + * Generated from protobuf field map labels = 5 [(.google.api.field_behavior) = OPTIONAL]; + * @param array|\Google\Protobuf\Internal\MapField $var + * @return $this + */ + public function setLabels($var) + { + $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING); + $this->labels = $arr; + + return $this; + } + + /** + * Configures when data is to be synced/updated for this FeatureView. At the + * end of the sync the latest featureValues for each entityId of this + * FeatureView are made ready for online serving. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.SyncConfig sync_config = 7; + * @return \Google\Cloud\AIPlatform\V1\FeatureView\SyncConfig|null + */ + public function getSyncConfig() + { + return $this->sync_config; + } + + public function hasSyncConfig() + { + return isset($this->sync_config); + } + + public function clearSyncConfig() + { + unset($this->sync_config); + } + + /** + * Configures when data is to be synced/updated for this FeatureView. At the + * end of the sync the latest featureValues for each entityId of this + * FeatureView are made ready for online serving. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView.SyncConfig sync_config = 7; + * @param \Google\Cloud\AIPlatform\V1\FeatureView\SyncConfig $var + * @return $this + */ + public function setSyncConfig($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureView\SyncConfig::class); + $this->sync_config = $var; + + return $this; + } + + /** + * @return string + */ + public function getSource() + { + return $this->whichOneof("source"); + } + +} + diff --git a/AiPlatform/src/V1/FeatureView/BigQuerySource.php b/AiPlatform/src/V1/FeatureView/BigQuerySource.php new file mode 100644 index 000000000000..778af61cea8c --- /dev/null +++ b/AiPlatform/src/V1/FeatureView/BigQuerySource.php @@ -0,0 +1,108 @@ +google.cloud.aiplatform.v1.FeatureView.BigQuerySource + */ +class BigQuerySource extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The BigQuery view URI that will be materialized on each sync + * trigger based on FeatureView.SyncConfig. + * + * Generated from protobuf field string uri = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $uri = ''; + /** + * Required. Columns to construct entity_id / row keys. Start by supporting + * 1 only. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $entity_id_columns; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $uri + * Required. The BigQuery view URI that will be materialized on each sync + * trigger based on FeatureView.SyncConfig. + * @type array|\Google\Protobuf\Internal\RepeatedField $entity_id_columns + * Required. Columns to construct entity_id / row keys. Start by supporting + * 1 only. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureView::initOnce(); + parent::__construct($data); + } + + /** + * Required. The BigQuery view URI that will be materialized on each sync + * trigger based on FeatureView.SyncConfig. + * + * Generated from protobuf field string uri = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getUri() + { + return $this->uri; + } + + /** + * Required. The BigQuery view URI that will be materialized on each sync + * trigger based on FeatureView.SyncConfig. + * + * Generated from protobuf field string uri = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setUri($var) + { + GPBUtil::checkString($var, True); + $this->uri = $var; + + return $this; + } + + /** + * Required. Columns to construct entity_id / row keys. Start by supporting + * 1 only. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getEntityIdColumns() + { + return $this->entity_id_columns; + } + + /** + * Required. Columns to construct entity_id / row keys. Start by supporting + * 1 only. + * + * Generated from protobuf field repeated string entity_id_columns = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setEntityIdColumns($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->entity_id_columns = $arr; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureView/FeatureRegistrySource.php b/AiPlatform/src/V1/FeatureView/FeatureRegistrySource.php new file mode 100644 index 000000000000..a0fa30907bb8 --- /dev/null +++ b/AiPlatform/src/V1/FeatureView/FeatureRegistrySource.php @@ -0,0 +1,69 @@ +google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource + */ +class FeatureRegistrySource extends \Google\Protobuf\Internal\Message +{ + /** + * Required. List of features that need to be synced to Online Store. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource.FeatureGroup feature_groups = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_groups; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource\FeatureGroup>|\Google\Protobuf\Internal\RepeatedField $feature_groups + * Required. List of features that need to be synced to Online Store. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureView::initOnce(); + parent::__construct($data); + } + + /** + * Required. List of features that need to be synced to Online Store. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource.FeatureGroup feature_groups = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureGroups() + { + return $this->feature_groups; + } + + /** + * Required. List of features that need to be synced to Online Store. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource.FeatureGroup feature_groups = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param array<\Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource\FeatureGroup>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureGroups($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FeatureView\FeatureRegistrySource\FeatureGroup::class); + $this->feature_groups = $arr; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureView/FeatureRegistrySource/FeatureGroup.php b/AiPlatform/src/V1/FeatureView/FeatureRegistrySource/FeatureGroup.php new file mode 100644 index 000000000000..d4f7da0ef505 --- /dev/null +++ b/AiPlatform/src/V1/FeatureView/FeatureRegistrySource/FeatureGroup.php @@ -0,0 +1,103 @@ +google.cloud.aiplatform.v1.FeatureView.FeatureRegistrySource.FeatureGroup + */ +class FeatureGroup extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Identifier of the feature group. + * + * Generated from protobuf field string feature_group_id = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_group_id = ''; + /** + * Required. Identifiers of features under the feature group. + * + * Generated from protobuf field repeated string feature_ids = 2 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_ids; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $feature_group_id + * Required. Identifier of the feature group. + * @type array|\Google\Protobuf\Internal\RepeatedField $feature_ids + * Required. Identifiers of features under the feature group. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureView::initOnce(); + parent::__construct($data); + } + + /** + * Required. Identifier of the feature group. + * + * Generated from protobuf field string feature_group_id = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return string + */ + public function getFeatureGroupId() + { + return $this->feature_group_id; + } + + /** + * Required. Identifier of the feature group. + * + * Generated from protobuf field string feature_group_id = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param string $var + * @return $this + */ + public function setFeatureGroupId($var) + { + GPBUtil::checkString($var, True); + $this->feature_group_id = $var; + + return $this; + } + + /** + * Required. Identifiers of features under the feature group. + * + * Generated from protobuf field repeated string feature_ids = 2 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureIds() + { + return $this->feature_ids; + } + + /** + * Required. Identifiers of features under the feature group. + * + * Generated from protobuf field repeated string feature_ids = 2 [(.google.api.field_behavior) = REQUIRED]; + * @param array|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureIds($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING); + $this->feature_ids = $arr; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureView/SyncConfig.php b/AiPlatform/src/V1/FeatureView/SyncConfig.php new file mode 100644 index 000000000000..8e015e4451f3 --- /dev/null +++ b/AiPlatform/src/V1/FeatureView/SyncConfig.php @@ -0,0 +1,86 @@ +google.cloud.aiplatform.v1.FeatureView.SyncConfig + */ +class SyncConfig extends \Google\Protobuf\Internal\Message +{ + /** + * Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled + * runs. To explicitly set a timezone to the cron tab, apply a prefix in + * the cron tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". + * The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone + * database. For example, "CRON_TZ=America/New_York 1 * * * *", or + * "TZ=America/New_York 1 * * * *". + * + * Generated from protobuf field string cron = 1; + */ + private $cron = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $cron + * Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled + * runs. To explicitly set a timezone to the cron tab, apply a prefix in + * the cron tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". + * The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone + * database. For example, "CRON_TZ=America/New_York 1 * * * *", or + * "TZ=America/New_York 1 * * * *". + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureView::initOnce(); + parent::__construct($data); + } + + /** + * Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled + * runs. To explicitly set a timezone to the cron tab, apply a prefix in + * the cron tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". + * The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone + * database. For example, "CRON_TZ=America/New_York 1 * * * *", or + * "TZ=America/New_York 1 * * * *". + * + * Generated from protobuf field string cron = 1; + * @return string + */ + public function getCron() + { + return $this->cron; + } + + /** + * Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled + * runs. To explicitly set a timezone to the cron tab, apply a prefix in + * the cron tab: "CRON_TZ=${IANA_TIME_ZONE}" or "TZ=${IANA_TIME_ZONE}". + * The ${IANA_TIME_ZONE} may only be a valid string from IANA time zone + * database. For example, "CRON_TZ=America/New_York 1 * * * *", or + * "TZ=America/New_York 1 * * * *". + * + * Generated from protobuf field string cron = 1; + * @param string $var + * @return $this + */ + public function setCron($var) + { + GPBUtil::checkString($var, True); + $this->cron = $var; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FeatureViewDataFormat.php b/AiPlatform/src/V1/FeatureViewDataFormat.php new file mode 100644 index 000000000000..621918058759 --- /dev/null +++ b/AiPlatform/src/V1/FeatureViewDataFormat.php @@ -0,0 +1,61 @@ +google.cloud.aiplatform.v1.FeatureViewDataFormat + */ +class FeatureViewDataFormat +{ + /** + * Not set. Will be treated as the KeyValue format. + * + * Generated from protobuf enum FEATURE_VIEW_DATA_FORMAT_UNSPECIFIED = 0; + */ + const FEATURE_VIEW_DATA_FORMAT_UNSPECIFIED = 0; + /** + * Return response data in key-value format. + * + * Generated from protobuf enum KEY_VALUE = 1; + */ + const KEY_VALUE = 1; + /** + * Return response data in proto Struct format. + * + * Generated from protobuf enum PROTO_STRUCT = 2; + */ + const PROTO_STRUCT = 2; + + private static $valueToName = [ + self::FEATURE_VIEW_DATA_FORMAT_UNSPECIFIED => 'FEATURE_VIEW_DATA_FORMAT_UNSPECIFIED', + self::KEY_VALUE => 'KEY_VALUE', + self::PROTO_STRUCT => 'PROTO_STRUCT', + ]; + + public static function name($value) + { + if (!isset(self::$valueToName[$value])) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no name defined for value %s', __CLASS__, $value)); + } + return self::$valueToName[$value]; + } + + + public static function value($name) + { + $const = __CLASS__ . '::' . strtoupper($name); + if (!defined($const)) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no value defined for name %s', __CLASS__, $name)); + } + return constant($const); + } +} + diff --git a/AiPlatform/src/V1/FeatureViewDataKey.php b/AiPlatform/src/V1/FeatureViewDataKey.php new file mode 100644 index 000000000000..7c8502400c07 --- /dev/null +++ b/AiPlatform/src/V1/FeatureViewDataKey.php @@ -0,0 +1,75 @@ +google.cloud.aiplatform.v1.FeatureViewDataKey + */ +class FeatureViewDataKey extends \Google\Protobuf\Internal\Message +{ + protected $key_oneof; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $key + * String key to use for lookup. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreService::initOnce(); + parent::__construct($data); + } + + /** + * String key to use for lookup. + * + * Generated from protobuf field string key = 1; + * @return string + */ + public function getKey() + { + return $this->readOneof(1); + } + + public function hasKey() + { + return $this->hasOneof(1); + } + + /** + * String key to use for lookup. + * + * Generated from protobuf field string key = 1; + * @param string $var + * @return $this + */ + public function setKey($var) + { + GPBUtil::checkString($var, True); + $this->writeOneof(1, $var); + + return $this; + } + + /** + * @return string + */ + public function getKeyOneof() + { + return $this->whichOneof("key_oneof"); + } + +} + diff --git a/AiPlatform/src/V1/FeatureViewSync.php b/AiPlatform/src/V1/FeatureViewSync.php new file mode 100644 index 000000000000..4b68e2b4a66b --- /dev/null +++ b/AiPlatform/src/V1/FeatureViewSync.php @@ -0,0 +1,212 @@ +google.cloud.aiplatform.v1.FeatureViewSync + */ +class FeatureViewSync extends \Google\Protobuf\Internal\Message +{ + /** + * Output only. Name of the FeatureViewSync. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $name = ''; + /** + * Output only. Time when this FeatureViewSync is created. Creation of a + * FeatureViewSync means that the job is pending / waiting for sufficient + * resources but may not have started the actual data transfer yet. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $create_time = null; + /** + * Output only. Time when this FeatureViewSync is finished. + * + * Generated from protobuf field .google.type.Interval run_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $run_time = null; + /** + * Output only. Final status of the FeatureViewSync. + * + * Generated from protobuf field .google.rpc.Status final_status = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + */ + private $final_status = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Output only. Name of the FeatureViewSync. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * @type \Google\Protobuf\Timestamp $create_time + * Output only. Time when this FeatureViewSync is created. Creation of a + * FeatureViewSync means that the job is pending / waiting for sufficient + * resources but may not have started the actual data transfer yet. + * @type \Google\Type\Interval $run_time + * Output only. Time when this FeatureViewSync is finished. + * @type \Google\Rpc\Status $final_status + * Output only. Final status of the FeatureViewSync. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureViewSync::initOnce(); + parent::__construct($data); + } + + /** + * Output only. Name of the FeatureViewSync. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Output only. Name of the FeatureViewSync. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * Output only. Time when this FeatureViewSync is created. Creation of a + * FeatureViewSync means that the job is pending / waiting for sufficient + * resources but may not have started the actual data transfer yet. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Protobuf\Timestamp|null + */ + public function getCreateTime() + { + return $this->create_time; + } + + public function hasCreateTime() + { + return isset($this->create_time); + } + + public function clearCreateTime() + { + unset($this->create_time); + } + + /** + * Output only. Time when this FeatureViewSync is created. Creation of a + * FeatureViewSync means that the job is pending / waiting for sufficient + * resources but may not have started the actual data transfer yet. + * + * Generated from protobuf field .google.protobuf.Timestamp create_time = 2 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setCreateTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->create_time = $var; + + return $this; + } + + /** + * Output only. Time when this FeatureViewSync is finished. + * + * Generated from protobuf field .google.type.Interval run_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Type\Interval|null + */ + public function getRunTime() + { + return $this->run_time; + } + + public function hasRunTime() + { + return isset($this->run_time); + } + + public function clearRunTime() + { + unset($this->run_time); + } + + /** + * Output only. Time when this FeatureViewSync is finished. + * + * Generated from protobuf field .google.type.Interval run_time = 5 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Type\Interval $var + * @return $this + */ + public function setRunTime($var) + { + GPBUtil::checkMessage($var, \Google\Type\Interval::class); + $this->run_time = $var; + + return $this; + } + + /** + * Output only. Final status of the FeatureViewSync. + * + * Generated from protobuf field .google.rpc.Status final_status = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @return \Google\Rpc\Status|null + */ + public function getFinalStatus() + { + return $this->final_status; + } + + public function hasFinalStatus() + { + return isset($this->final_status); + } + + public function clearFinalStatus() + { + unset($this->final_status); + } + + /** + * Output only. Final status of the FeatureViewSync. + * + * Generated from protobuf field .google.rpc.Status final_status = 4 [(.google.api.field_behavior) = OUTPUT_ONLY]; + * @param \Google\Rpc\Status $var + * @return $this + */ + public function setFinalStatus($var) + { + GPBUtil::checkMessage($var, \Google\Rpc\Status::class); + $this->final_status = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/FetchFeatureValuesRequest.php b/AiPlatform/src/V1/FetchFeatureValuesRequest.php new file mode 100644 index 000000000000..26a729292741 --- /dev/null +++ b/AiPlatform/src/V1/FetchFeatureValuesRequest.php @@ -0,0 +1,176 @@ +google.cloud.aiplatform.v1.FetchFeatureValuesRequest + */ +class FetchFeatureValuesRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $feature_view = ''; + /** + * Optional. The request key to fetch feature values for. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataKey data_key = 6 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $data_key = null; + /** + * Optional. Response data format. If not set, + * [FeatureViewDataFormat.KEY_VALUE][google.cloud.aiplatform.v1.FeatureViewDataFormat.KEY_VALUE] + * will be used. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataFormat data_format = 7 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $data_format = 0; + + /** + * @param string $featureView Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * Please see {@see FeatureOnlineStoreServiceClient::featureViewName()} for help formatting this field. + * @param \Google\Cloud\AIPlatform\V1\FeatureViewDataKey $dataKey Optional. The request key to fetch feature values for. + * + * @return \Google\Cloud\AIPlatform\V1\FetchFeatureValuesRequest + * + * @experimental + */ + public static function build(string $featureView, \Google\Cloud\AIPlatform\V1\FeatureViewDataKey $dataKey): self + { + return (new self()) + ->setFeatureView($featureView) + ->setDataKey($dataKey); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $feature_view + * Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * @type \Google\Cloud\AIPlatform\V1\FeatureViewDataKey $data_key + * Optional. The request key to fetch feature values for. + * @type int $data_format + * Optional. Response data format. If not set, + * [FeatureViewDataFormat.KEY_VALUE][google.cloud.aiplatform.v1.FeatureViewDataFormat.KEY_VALUE] + * will be used. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreService::initOnce(); + parent::__construct($data); + } + + /** + * Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getFeatureView() + { + return $this->feature_view; + } + + /** + * Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setFeatureView($var) + { + GPBUtil::checkString($var, True); + $this->feature_view = $var; + + return $this; + } + + /** + * Optional. The request key to fetch feature values for. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataKey data_key = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Cloud\AIPlatform\V1\FeatureViewDataKey|null + */ + public function getDataKey() + { + return $this->data_key; + } + + public function hasDataKey() + { + return isset($this->data_key); + } + + public function clearDataKey() + { + unset($this->data_key); + } + + /** + * Optional. The request key to fetch feature values for. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataKey data_key = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @param \Google\Cloud\AIPlatform\V1\FeatureViewDataKey $var + * @return $this + */ + public function setDataKey($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureViewDataKey::class); + $this->data_key = $var; + + return $this; + } + + /** + * Optional. Response data format. If not set, + * [FeatureViewDataFormat.KEY_VALUE][google.cloud.aiplatform.v1.FeatureViewDataFormat.KEY_VALUE] + * will be used. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataFormat data_format = 7 [(.google.api.field_behavior) = OPTIONAL]; + * @return int + */ + public function getDataFormat() + { + return $this->data_format; + } + + /** + * Optional. Response data format. If not set, + * [FeatureViewDataFormat.KEY_VALUE][google.cloud.aiplatform.v1.FeatureViewDataFormat.KEY_VALUE] + * will be used. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureViewDataFormat data_format = 7 [(.google.api.field_behavior) = OPTIONAL]; + * @param int $var + * @return $this + */ + public function setDataFormat($var) + { + GPBUtil::checkEnum($var, \Google\Cloud\AIPlatform\V1\FeatureViewDataFormat::class); + $this->data_format = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/FetchFeatureValuesResponse.php b/AiPlatform/src/V1/FetchFeatureValuesResponse.php new file mode 100644 index 000000000000..c31c1c346d76 --- /dev/null +++ b/AiPlatform/src/V1/FetchFeatureValuesResponse.php @@ -0,0 +1,109 @@ +google.cloud.aiplatform.v1.FetchFeatureValuesResponse + */ +class FetchFeatureValuesResponse extends \Google\Protobuf\Internal\Message +{ + protected $format; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList $key_values + * Feature values in KeyValue format. + * @type \Google\Protobuf\Struct $proto_struct + * Feature values in proto Struct format. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreService::initOnce(); + parent::__construct($data); + } + + /** + * Feature values in KeyValue format. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList key_values = 3; + * @return \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList|null + */ + public function getKeyValues() + { + return $this->readOneof(3); + } + + public function hasKeyValues() + { + return $this->hasOneof(3); + } + + /** + * Feature values in KeyValue format. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList key_values = 3; + * @param \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList $var + * @return $this + */ + public function setKeyValues($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList::class); + $this->writeOneof(3, $var); + + return $this; + } + + /** + * Feature values in proto Struct format. + * + * Generated from protobuf field .google.protobuf.Struct proto_struct = 2; + * @return \Google\Protobuf\Struct|null + */ + public function getProtoStruct() + { + return $this->readOneof(2); + } + + public function hasProtoStruct() + { + return $this->hasOneof(2); + } + + /** + * Feature values in proto Struct format. + * + * Generated from protobuf field .google.protobuf.Struct proto_struct = 2; + * @param \Google\Protobuf\Struct $var + * @return $this + */ + public function setProtoStruct($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Struct::class); + $this->writeOneof(2, $var); + + return $this; + } + + /** + * @return string + */ + public function getFormat() + { + return $this->whichOneof("format"); + } + +} + diff --git a/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList.php b/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList.php new file mode 100644 index 000000000000..427b1ddb342f --- /dev/null +++ b/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList.php @@ -0,0 +1,69 @@ +google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList + */ +class FeatureNameValuePairList extends \Google\Protobuf\Internal\Message +{ + /** + * List of feature names and values. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList.FeatureNameValuePair features = 1; + */ + private $features; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList\FeatureNameValuePair>|\Google\Protobuf\Internal\RepeatedField $features + * List of feature names and values. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreService::initOnce(); + parent::__construct($data); + } + + /** + * List of feature names and values. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList.FeatureNameValuePair features = 1; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatures() + { + return $this->features; + } + + /** + * List of feature names and values. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList.FeatureNameValuePair features = 1; + * @param array<\Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList\FeatureNameValuePair>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatures($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse\FeatureNameValuePairList\FeatureNameValuePair::class); + $this->features = $arr; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList/FeatureNameValuePair.php b/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList/FeatureNameValuePair.php new file mode 100644 index 000000000000..57053a6b5189 --- /dev/null +++ b/AiPlatform/src/V1/FetchFeatureValuesResponse/FeatureNameValuePairList/FeatureNameValuePair.php @@ -0,0 +1,110 @@ +google.cloud.aiplatform.v1.FetchFeatureValuesResponse.FeatureNameValuePairList.FeatureNameValuePair + */ +class FeatureNameValuePair extends \Google\Protobuf\Internal\Message +{ + /** + * Feature short name. + * + * Generated from protobuf field string name = 1; + */ + private $name = ''; + protected $data; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureValue $value + * Feature value. + * @type string $name + * Feature short name. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreService::initOnce(); + parent::__construct($data); + } + + /** + * Feature value. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureValue value = 2; + * @return \Google\Cloud\AIPlatform\V1\FeatureValue|null + */ + public function getValue() + { + return $this->readOneof(2); + } + + public function hasValue() + { + return $this->hasOneof(2); + } + + /** + * Feature value. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureValue value = 2; + * @param \Google\Cloud\AIPlatform\V1\FeatureValue $var + * @return $this + */ + public function setValue($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureValue::class); + $this->writeOneof(2, $var); + + return $this; + } + + /** + * Feature short name. + * + * Generated from protobuf field string name = 1; + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Feature short name. + * + * Generated from protobuf field string name = 1; + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + + /** + * @return string + */ + public function getData() + { + return $this->whichOneof("data"); + } + +} + + diff --git a/AiPlatform/src/V1/Gapic/FeatureOnlineStoreAdminServiceGapicClient.php b/AiPlatform/src/V1/Gapic/FeatureOnlineStoreAdminServiceGapicClient.php new file mode 100644 index 000000000000..23c1aed4f0cf --- /dev/null +++ b/AiPlatform/src/V1/Gapic/FeatureOnlineStoreAdminServiceGapicClient.php @@ -0,0 +1,1877 @@ +locationName('[PROJECT]', '[LOCATION]'); + * $featureOnlineStore = new FeatureOnlineStore(); + * $featureOnlineStoreId = 'feature_online_store_id'; + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'createFeatureOnlineStore'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * Many parameters require resource names to be formatted in a particular way. To + * assist with these names, this class includes a format method for each type of + * name, and additionally a parseName method to extract the individual identifiers + * contained within formatted names that are returned by the API. + * + * This service has a new (beta) implementation. See {@see + * \Google\Cloud\AIPlatform\V1\Client\FeatureOnlineStoreAdminServiceClient} to use + * the new surface. + */ +class FeatureOnlineStoreAdminServiceGapicClient +{ + use GapicClientTrait; + + /** The name of the service. */ + const SERVICE_NAME = 'google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService'; + + /** The default address of the service. */ + const SERVICE_ADDRESS = 'aiplatform.googleapis.com'; + + /** The default port of the service. */ + const DEFAULT_SERVICE_PORT = 443; + + /** The name of the code generator, to be included in the agent header. */ + const CODEGEN_NAME = 'gapic'; + + /** The default scopes required by the service. */ + public static $serviceScopes = [ + 'https://www.googleapis.com/auth/cloud-platform', + ]; + + private static $featureOnlineStoreNameTemplate; + + private static $featureViewNameTemplate; + + private static $featureViewSyncNameTemplate; + + private static $locationNameTemplate; + + private static $pathTemplateMap; + + private $operationsClient; + + private static function getClientDefaults() + { + return [ + 'serviceName' => self::SERVICE_NAME, + 'apiEndpoint' => + self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => + __DIR__ . + '/../resources/feature_online_store_admin_service_client_config.json', + 'descriptorsConfigPath' => + __DIR__ . + '/../resources/feature_online_store_admin_service_descriptor_config.php', + 'gcpApiConfigPath' => + __DIR__ . + '/../resources/feature_online_store_admin_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => + __DIR__ . + '/../resources/feature_online_store_admin_service_rest_client_config.php', + ], + ], + ]; + } + + private static function getFeatureOnlineStoreNameTemplate() + { + if (self::$featureOnlineStoreNameTemplate == null) { + self::$featureOnlineStoreNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}' + ); + } + + return self::$featureOnlineStoreNameTemplate; + } + + private static function getFeatureViewNameTemplate() + { + if (self::$featureViewNameTemplate == null) { + self::$featureViewNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}' + ); + } + + return self::$featureViewNameTemplate; + } + + private static function getFeatureViewSyncNameTemplate() + { + if (self::$featureViewSyncNameTemplate == null) { + self::$featureViewSyncNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/feature_view_sync' + ); + } + + return self::$featureViewSyncNameTemplate; + } + + private static function getLocationNameTemplate() + { + if (self::$locationNameTemplate == null) { + self::$locationNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}' + ); + } + + return self::$locationNameTemplate; + } + + private static function getPathTemplateMap() + { + if (self::$pathTemplateMap == null) { + self::$pathTemplateMap = [ + 'featureOnlineStore' => self::getFeatureOnlineStoreNameTemplate(), + 'featureView' => self::getFeatureViewNameTemplate(), + 'featureViewSync' => self::getFeatureViewSyncNameTemplate(), + 'location' => self::getLocationNameTemplate(), + ]; + } + + return self::$pathTemplateMap; + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_online_store resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * + * @return string The formatted feature_online_store resource. + */ + public static function featureOnlineStoreName( + $project, + $location, + $featureOnlineStore + ) { + return self::getFeatureOnlineStoreNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a feature_view + * resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view resource. + */ + public static function featureViewName( + $project, + $location, + $featureOnlineStore, + $featureView + ) { + return self::getFeatureViewNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_view_sync resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view_sync resource. + */ + public static function featureViewSyncName( + $project, + $location, + $featureOnlineStore, + $featureView + ) { + return self::getFeatureViewSyncNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a location + * resource. + * + * @param string $project + * @param string $location + * + * @return string The formatted location resource. + */ + public static function locationName($project, $location) + { + return self::getLocationNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + ]); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - featureOnlineStore: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store} + * - featureView: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view} + * - featureViewSync: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/feature_view_sync + * - location: projects/{project}/locations/{location} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName($formattedName, $template = null) + { + $templateMap = self::getPathTemplateMap(); + if ($template) { + if (!isset($templateMap[$template])) { + throw new ValidationException( + "Template name $template does not exist" + ); + } + + return $templateMap[$template]->match($formattedName); + } + + foreach ($templateMap as $templateName => $pathTemplate) { + try { + return $pathTemplate->match($formattedName); + } catch (ValidationException $ex) { + // Swallow the exception to continue trying other path templates + } + } + + throw new ValidationException( + "Input did not match any known format. Input: $formattedName" + ); + } + + /** + * Return an OperationsClient object with the same endpoint as $this. + * + * @return OperationsClient + */ + public function getOperationsClient() + { + return $this->operationsClient; + } + + /** + * Resume an existing long running operation that was previously started by a long + * running API method. If $methodName is not provided, or does not match a long + * running API method, then the operation can still be resumed, but the + * OperationResponse object will not deserialize the final response. + * + * @param string $operationName The name of the long running operation + * @param string $methodName The name of the method used to start the operation + * + * @return OperationResponse + */ + public function resumeOperation($operationName, $methodName = null) + { + $options = isset($this->descriptors[$methodName]['longRunning']) + ? $this->descriptors[$methodName]['longRunning'] + : []; + $operation = new OperationResponse( + $operationName, + $this->getOperationsClient(), + $options + ); + $operation->reload(); + return $operation; + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + $this->operationsClient = $this->createOperationsClient($clientOptions); + } + + /** + * Creates a new FeatureOnlineStore in a given project and location. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedParent = $featureOnlineStoreAdminServiceClient->locationName('[PROJECT]', '[LOCATION]'); + * $featureOnlineStore = new FeatureOnlineStore(); + * $featureOnlineStoreId = 'feature_online_store_id'; + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'createFeatureOnlineStore'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the Location to create FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}'` + * @param FeatureOnlineStore $featureOnlineStore Required. The FeatureOnlineStore to create. + * @param string $featureOnlineStoreId Required. The ID to use for this FeatureOnlineStore, which will become the + * final component of the FeatureOnlineStore's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within the project and location. + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function createFeatureOnlineStore( + $parent, + $featureOnlineStore, + $featureOnlineStoreId, + array $optionalArgs = [] + ) { + $request = new CreateFeatureOnlineStoreRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $request->setFeatureOnlineStore($featureOnlineStore); + $request->setFeatureOnlineStoreId($featureOnlineStoreId); + $requestParamHeaders['parent'] = $parent; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'CreateFeatureOnlineStore', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Creates a new FeatureView in a given FeatureOnlineStore. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedParent = $featureOnlineStoreAdminServiceClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + * $featureView = new FeatureView(); + * $featureViewId = 'feature_view_id'; + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureView($formattedParent, $featureView, $featureViewId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->createFeatureView($formattedParent, $featureView, $featureViewId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'createFeatureView'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the FeatureOnlineStore to create + * FeatureViews. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @param FeatureView $featureView Required. The FeatureView to create. + * @param string $featureViewId Required. The ID to use for the FeatureView, which will become the final + * component of the FeatureView's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within a FeatureOnlineStore. + * @param array $optionalArgs { + * Optional. + * + * @type bool $runSyncImmediately + * Immutable. If set to true, one on demand sync will be run immediately, + * regardless whether the + * [FeatureView.sync_config][google.cloud.aiplatform.v1.FeatureView.sync_config] + * is configured or not. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function createFeatureView( + $parent, + $featureView, + $featureViewId, + array $optionalArgs = [] + ) { + $request = new CreateFeatureViewRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $request->setFeatureView($featureView); + $request->setFeatureViewId($featureViewId); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['runSyncImmediately'])) { + $request->setRunSyncImmediately( + $optionalArgs['runSyncImmediately'] + ); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'CreateFeatureView', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Deletes a single FeatureOnlineStore. The FeatureOnlineStore must not + * contain any FeatureViews. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedName = $featureOnlineStoreAdminServiceClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + * $operationResponse = $featureOnlineStoreAdminServiceClient->deleteFeatureOnlineStore($formattedName); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->deleteFeatureOnlineStore($formattedName); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'deleteFeatureOnlineStore'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureOnlineStore to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @param array $optionalArgs { + * Optional. + * + * @type bool $force + * If set to true, any FeatureViews and Features for this FeatureOnlineStore + * will also be deleted. (Otherwise, the request will only work if the + * FeatureOnlineStore has no FeatureViews.) + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function deleteFeatureOnlineStore($name, array $optionalArgs = []) + { + $request = new DeleteFeatureOnlineStoreRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + if (isset($optionalArgs['force'])) { + $request->setForce($optionalArgs['force']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'DeleteFeatureOnlineStore', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Deletes a single FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedName = $featureOnlineStoreAdminServiceClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $operationResponse = $featureOnlineStoreAdminServiceClient->deleteFeatureView($formattedName); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->deleteFeatureView($formattedName); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'deleteFeatureView'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureView to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function deleteFeatureView($name, array $optionalArgs = []) + { + $request = new DeleteFeatureViewRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'DeleteFeatureView', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Gets details of a single FeatureOnlineStore. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedName = $featureOnlineStoreAdminServiceClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + * $response = $featureOnlineStoreAdminServiceClient->getFeatureOnlineStore($formattedName); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureOnlineStore resource. + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\FeatureOnlineStore + * + * @throws ApiException if the remote call fails + */ + public function getFeatureOnlineStore($name, array $optionalArgs = []) + { + $request = new GetFeatureOnlineStoreRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetFeatureOnlineStore', + FeatureOnlineStore::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Gets details of a single FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedName = $featureOnlineStoreAdminServiceClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $response = $featureOnlineStoreAdminServiceClient->getFeatureView($formattedName); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\FeatureView + * + * @throws ApiException if the remote call fails + */ + public function getFeatureView($name, array $optionalArgs = []) + { + $request = new GetFeatureViewRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetFeatureView', + FeatureView::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Gets details of a single FeatureViewSync. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedName = $featureOnlineStoreAdminServiceClient->featureViewSyncName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $response = $featureOnlineStoreAdminServiceClient->getFeatureViewSync($formattedName); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\FeatureViewSync + * + * @throws ApiException if the remote call fails + */ + public function getFeatureViewSync($name, array $optionalArgs = []) + { + $request = new GetFeatureViewSyncRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetFeatureViewSync', + FeatureViewSync::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Lists FeatureOnlineStores in a given project and location. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedParent = $featureOnlineStoreAdminServiceClient->locationName('[PROJECT]', '[LOCATION]'); + * // Iterate over pages of elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureOnlineStores($formattedParent); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureOnlineStores($formattedParent); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * @param array $optionalArgs { + * Optional. + * + * @type string $filter + * Lists the FeatureOnlineStores that match the filter expression. The + * following fields are supported: + * + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * + * Examples: + * + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureOnlineStores created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureOnlineStores with label "env" set to "prod". + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type string $orderBy + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * + * * `create_time` + * * `update_time` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listFeatureOnlineStores($parent, array $optionalArgs = []) + { + $request = new ListFeatureOnlineStoresRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + if (isset($optionalArgs['orderBy'])) { + $request->setOrderBy($optionalArgs['orderBy']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListFeatureOnlineStores', + $optionalArgs, + ListFeatureOnlineStoresResponse::class, + $request + ); + } + + /** + * Lists FeatureViewSyncs in a given FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedParent = $featureOnlineStoreAdminServiceClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * // Iterate over pages of elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureViewSyncs($formattedParent); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureViewSyncs($formattedParent); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param array $optionalArgs { + * Optional. + * + * @type string $filter + * Lists the FeatureViewSyncs that match the filter expression. The following + * filters are supported: + * + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * + * Examples: + * + * * `create_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViewSyncs + * created after 2020-01-31T15:30:00.000000Z. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type string $orderBy + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * + * Supported fields: + * + * * `create_time` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listFeatureViewSyncs($parent, array $optionalArgs = []) + { + $request = new ListFeatureViewSyncsRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + if (isset($optionalArgs['orderBy'])) { + $request->setOrderBy($optionalArgs['orderBy']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListFeatureViewSyncs', + $optionalArgs, + ListFeatureViewSyncsResponse::class, + $request + ); + } + + /** + * Lists FeatureViews in a given FeatureOnlineStore. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedParent = $featureOnlineStoreAdminServiceClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + * // Iterate over pages of elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureViews($formattedParent); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listFeatureViews($formattedParent); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @param array $optionalArgs { + * Optional. + * + * @type string $filter + * Lists the FeatureViews that match the filter expression. The following + * filters are supported: + * + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * + * Examples: + * + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViews + * created or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> FeatureViews having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any FeatureView which has a label with 'env' as the + * key. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type string $orderBy + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * + * Supported fields: + * + * * `feature_view_id` + * * `create_time` + * * `update_time` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listFeatureViews($parent, array $optionalArgs = []) + { + $request = new ListFeatureViewsRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + if (isset($optionalArgs['orderBy'])) { + $request->setOrderBy($optionalArgs['orderBy']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListFeatureViews', + $optionalArgs, + ListFeatureViewsResponse::class, + $request + ); + } + + /** + * Triggers on-demand sync for the FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $formattedFeatureView = $featureOnlineStoreAdminServiceClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $response = $featureOnlineStoreAdminServiceClient->syncFeatureView($formattedFeatureView); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $featureView Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\SyncFeatureViewResponse + * + * @throws ApiException if the remote call fails + */ + public function syncFeatureView($featureView, array $optionalArgs = []) + { + $request = new SyncFeatureViewRequest(); + $requestParamHeaders = []; + $request->setFeatureView($featureView); + $requestParamHeaders['feature_view'] = $featureView; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'SyncFeatureView', + SyncFeatureViewResponse::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Updates the parameters of a single FeatureOnlineStore. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $featureOnlineStore = new FeatureOnlineStore(); + * $operationResponse = $featureOnlineStoreAdminServiceClient->updateFeatureOnlineStore($featureOnlineStore); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->updateFeatureOnlineStore($featureOnlineStore); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'updateFeatureOnlineStore'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param FeatureOnlineStore $featureOnlineStore Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `big_query_source` + * * `labels` + * * `sync_config` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function updateFeatureOnlineStore( + $featureOnlineStore, + array $optionalArgs = [] + ) { + $request = new UpdateFeatureOnlineStoreRequest(); + $requestParamHeaders = []; + $request->setFeatureOnlineStore($featureOnlineStore); + $requestParamHeaders[ + 'feature_online_store.name' + ] = $featureOnlineStore->getName(); + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'UpdateFeatureOnlineStore', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Updates the parameters of a single FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $featureView = new FeatureView(); + * $operationResponse = $featureOnlineStoreAdminServiceClient->updateFeatureView($featureView); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureOnlineStoreAdminServiceClient->updateFeatureView($featureView); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureOnlineStoreAdminServiceClient->resumeOperation($operationName, 'updateFeatureView'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param FeatureView $featureView Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `labels` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function updateFeatureView($featureView, array $optionalArgs = []) + { + $request = new UpdateFeatureViewRequest(); + $requestParamHeaders = []; + $request->setFeatureView($featureView); + $requestParamHeaders['feature_view.name'] = $featureView->getName(); + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'UpdateFeatureView', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Gets information about a location. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $response = $featureOnlineStoreAdminServiceClient->getLocation(); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * Resource name for the location. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Location\Location + * + * @throws ApiException if the remote call fails + */ + public function getLocation(array $optionalArgs = []) + { + $request = new GetLocationRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetLocation', + Location::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.cloud.location.Locations' + )->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * // Iterate over pages of elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listLocations(); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureOnlineStoreAdminServiceClient->listLocations(); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * The resource that owns the locations collection, if applicable. + * @type string $filter + * The standard list filter. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listLocations(array $optionalArgs = []) + { + $request = new ListLocationsRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListLocations', + $optionalArgs, + ListLocationsResponse::class, + $request, + 'google.cloud.location.Locations' + ); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $resource = 'resource'; + * $response = $featureOnlineStoreAdminServiceClient->getIamPolicy($resource); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being requested. + * See the operation documentation for the appropriate value for this field. + * @param array $optionalArgs { + * Optional. + * + * @type GetPolicyOptions $options + * OPTIONAL: A `GetPolicyOptions` object for specifying options to + * `GetIamPolicy`. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function getIamPolicy($resource, array $optionalArgs = []) + { + $request = new GetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['options'])) { + $request->setOptions($optionalArgs['options']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $resource = 'resource'; + * $policy = new Policy(); + * $response = $featureOnlineStoreAdminServiceClient->setIamPolicy($resource, $policy); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being specified. + * See the operation documentation for the appropriate value for this field. + * @param Policy $policy REQUIRED: The complete policy to be applied to the `resource`. The size of + * the policy is limited to a few 10s of KB. An empty policy is a + * valid policy but certain Cloud Platform services (such as Projects) + * might reject them. + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only + * the fields in the mask will be modified. If no mask is provided, the + * following default mask is used: + * + * `paths: "bindings, etag"` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function setIamPolicy($resource, $policy, array $optionalArgs = []) + { + $request = new SetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPolicy($policy); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'SetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * Sample code: + * ``` + * $featureOnlineStoreAdminServiceClient = new FeatureOnlineStoreAdminServiceClient(); + * try { + * $resource = 'resource'; + * $permissions = []; + * $response = $featureOnlineStoreAdminServiceClient->testIamPermissions($resource, $permissions); + * } finally { + * $featureOnlineStoreAdminServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy detail is being requested. + * See the operation documentation for the appropriate value for this field. + * @param string[] $permissions The set of permissions to check for the `resource`. Permissions with + * wildcards (such as '*' or 'storage.*') are not allowed. For more + * information see + * [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\TestIamPermissionsResponse + * + * @throws ApiException if the remote call fails + */ + public function testIamPermissions( + $resource, + $permissions, + array $optionalArgs = [] + ) { + $request = new TestIamPermissionsRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPermissions($permissions); + $requestParamHeaders['resource'] = $resource; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'TestIamPermissions', + TestIamPermissionsResponse::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } +} diff --git a/AiPlatform/src/V1/Gapic/FeatureOnlineStoreServiceGapicClient.php b/AiPlatform/src/V1/Gapic/FeatureOnlineStoreServiceGapicClient.php new file mode 100644 index 000000000000..d7b47aad0692 --- /dev/null +++ b/AiPlatform/src/V1/Gapic/FeatureOnlineStoreServiceGapicClient.php @@ -0,0 +1,682 @@ +featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $response = $featureOnlineStoreServiceClient->fetchFeatureValues($formattedFeatureView); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * Many parameters require resource names to be formatted in a particular way. To + * assist with these names, this class includes a format method for each type of + * name, and additionally a parseName method to extract the individual identifiers + * contained within formatted names that are returned by the API. + * + * This service has a new (beta) implementation. See {@see + * \Google\Cloud\AIPlatform\V1\Client\FeatureOnlineStoreServiceClient} to use the + * new surface. + */ +class FeatureOnlineStoreServiceGapicClient +{ + use GapicClientTrait; + + /** The name of the service. */ + const SERVICE_NAME = 'google.cloud.aiplatform.v1.FeatureOnlineStoreService'; + + /** The default address of the service. */ + const SERVICE_ADDRESS = 'aiplatform.googleapis.com'; + + /** The default port of the service. */ + const DEFAULT_SERVICE_PORT = 443; + + /** The name of the code generator, to be included in the agent header. */ + const CODEGEN_NAME = 'gapic'; + + /** The default scopes required by the service. */ + public static $serviceScopes = [ + 'https://www.googleapis.com/auth/cloud-platform', + ]; + + private static $featureViewNameTemplate; + + private static $pathTemplateMap; + + private static function getClientDefaults() + { + return [ + 'serviceName' => self::SERVICE_NAME, + 'apiEndpoint' => + self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => + __DIR__ . + '/../resources/feature_online_store_service_client_config.json', + 'descriptorsConfigPath' => + __DIR__ . + '/../resources/feature_online_store_service_descriptor_config.php', + 'gcpApiConfigPath' => + __DIR__ . + '/../resources/feature_online_store_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => + __DIR__ . + '/../resources/feature_online_store_service_rest_client_config.php', + ], + ], + ]; + } + + private static function getFeatureViewNameTemplate() + { + if (self::$featureViewNameTemplate == null) { + self::$featureViewNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}' + ); + } + + return self::$featureViewNameTemplate; + } + + private static function getPathTemplateMap() + { + if (self::$pathTemplateMap == null) { + self::$pathTemplateMap = [ + 'featureView' => self::getFeatureViewNameTemplate(), + ]; + } + + return self::$pathTemplateMap; + } + + /** + * Formats a string containing the fully-qualified path to represent a feature_view + * resource. + * + * @param string $project + * @param string $location + * @param string $featureOnlineStore + * @param string $featureView + * + * @return string The formatted feature_view resource. + */ + public static function featureViewName( + $project, + $location, + $featureOnlineStore, + $featureView + ) { + return self::getFeatureViewNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_online_store' => $featureOnlineStore, + 'feature_view' => $featureView, + ]); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - featureView: projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName($formattedName, $template = null) + { + $templateMap = self::getPathTemplateMap(); + if ($template) { + if (!isset($templateMap[$template])) { + throw new ValidationException( + "Template name $template does not exist" + ); + } + + return $templateMap[$template]->match($formattedName); + } + + foreach ($templateMap as $templateName => $pathTemplate) { + try { + return $pathTemplate->match($formattedName); + } catch (ValidationException $ex) { + // Swallow the exception to continue trying other path templates + } + } + + throw new ValidationException( + "Input did not match any known format. Input: $formattedName" + ); + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + } + + /** + * Fetch feature values under a FeatureView. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * $formattedFeatureView = $featureOnlineStoreServiceClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + * $response = $featureOnlineStoreServiceClient->fetchFeatureValues($formattedFeatureView); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param string $featureView Required. FeatureView resource format + * `projects/{project}/locations/{location}/featureOnlineStores/{featureOnlineStore}/featureViews/{featureView}` + * @param array $optionalArgs { + * Optional. + * + * @type FeatureViewDataKey $dataKey + * Optional. The request key to fetch feature values for. + * @type int $dataFormat + * Optional. Response data format. If not set, + * [FeatureViewDataFormat.KEY_VALUE][google.cloud.aiplatform.v1.FeatureViewDataFormat.KEY_VALUE] + * will be used. + * For allowed values, use constants defined on {@see \Google\Cloud\AIPlatform\V1\FeatureViewDataFormat} + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse + * + * @throws ApiException if the remote call fails + */ + public function fetchFeatureValues($featureView, array $optionalArgs = []) + { + $request = new FetchFeatureValuesRequest(); + $requestParamHeaders = []; + $request->setFeatureView($featureView); + $requestParamHeaders['feature_view'] = $featureView; + if (isset($optionalArgs['dataKey'])) { + $request->setDataKey($optionalArgs['dataKey']); + } + + if (isset($optionalArgs['dataFormat'])) { + $request->setDataFormat($optionalArgs['dataFormat']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'FetchFeatureValues', + FetchFeatureValuesResponse::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Gets information about a location. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * $response = $featureOnlineStoreServiceClient->getLocation(); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * Resource name for the location. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Location\Location + * + * @throws ApiException if the remote call fails + */ + public function getLocation(array $optionalArgs = []) + { + $request = new GetLocationRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetLocation', + Location::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.cloud.location.Locations' + )->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * // Iterate over pages of elements + * $pagedResponse = $featureOnlineStoreServiceClient->listLocations(); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureOnlineStoreServiceClient->listLocations(); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * The resource that owns the locations collection, if applicable. + * @type string $filter + * The standard list filter. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listLocations(array $optionalArgs = []) + { + $request = new ListLocationsRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListLocations', + $optionalArgs, + ListLocationsResponse::class, + $request, + 'google.cloud.location.Locations' + ); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * $resource = 'resource'; + * $response = $featureOnlineStoreServiceClient->getIamPolicy($resource); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being requested. + * See the operation documentation for the appropriate value for this field. + * @param array $optionalArgs { + * Optional. + * + * @type GetPolicyOptions $options + * OPTIONAL: A `GetPolicyOptions` object for specifying options to + * `GetIamPolicy`. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function getIamPolicy($resource, array $optionalArgs = []) + { + $request = new GetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['options'])) { + $request->setOptions($optionalArgs['options']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * $resource = 'resource'; + * $policy = new Policy(); + * $response = $featureOnlineStoreServiceClient->setIamPolicy($resource, $policy); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being specified. + * See the operation documentation for the appropriate value for this field. + * @param Policy $policy REQUIRED: The complete policy to be applied to the `resource`. The size of + * the policy is limited to a few 10s of KB. An empty policy is a + * valid policy but certain Cloud Platform services (such as Projects) + * might reject them. + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only + * the fields in the mask will be modified. If no mask is provided, the + * following default mask is used: + * + * `paths: "bindings, etag"` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function setIamPolicy($resource, $policy, array $optionalArgs = []) + { + $request = new SetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPolicy($policy); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'SetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * Sample code: + * ``` + * $featureOnlineStoreServiceClient = new FeatureOnlineStoreServiceClient(); + * try { + * $resource = 'resource'; + * $permissions = []; + * $response = $featureOnlineStoreServiceClient->testIamPermissions($resource, $permissions); + * } finally { + * $featureOnlineStoreServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy detail is being requested. + * See the operation documentation for the appropriate value for this field. + * @param string[] $permissions The set of permissions to check for the `resource`. Permissions with + * wildcards (such as '*' or 'storage.*') are not allowed. For more + * information see + * [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\TestIamPermissionsResponse + * + * @throws ApiException if the remote call fails + */ + public function testIamPermissions( + $resource, + $permissions, + array $optionalArgs = [] + ) { + $request = new TestIamPermissionsRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPermissions($permissions); + $requestParamHeaders['resource'] = $resource; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'TestIamPermissions', + TestIamPermissionsResponse::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } +} diff --git a/AiPlatform/src/V1/Gapic/FeatureRegistryServiceGapicClient.php b/AiPlatform/src/V1/Gapic/FeatureRegistryServiceGapicClient.php new file mode 100644 index 000000000000..a129468685bc --- /dev/null +++ b/AiPlatform/src/V1/Gapic/FeatureRegistryServiceGapicClient.php @@ -0,0 +1,1770 @@ +entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + * $feature = new Feature(); + * $featureId = 'feature_id'; + * $operationResponse = $featureRegistryServiceClient->createFeature($formattedParent, $feature, $featureId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->createFeature($formattedParent, $feature, $featureId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'createFeature'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * Many parameters require resource names to be formatted in a particular way. To + * assist with these names, this class includes a format method for each type of + * name, and additionally a parseName method to extract the individual identifiers + * contained within formatted names that are returned by the API. + * + * This service has a new (beta) implementation. See {@see + * \Google\Cloud\AIPlatform\V1\Client\FeatureRegistryServiceClient} to use the new + * surface. + */ +class FeatureRegistryServiceGapicClient +{ + use GapicClientTrait; + + /** The name of the service. */ + const SERVICE_NAME = 'google.cloud.aiplatform.v1.FeatureRegistryService'; + + /** The default address of the service. */ + const SERVICE_ADDRESS = 'aiplatform.googleapis.com'; + + /** The default port of the service. */ + const DEFAULT_SERVICE_PORT = 443; + + /** The name of the code generator, to be included in the agent header. */ + const CODEGEN_NAME = 'gapic'; + + /** The default scopes required by the service. */ + public static $serviceScopes = [ + 'https://www.googleapis.com/auth/cloud-platform', + ]; + + private static $entityTypeNameTemplate; + + private static $featureNameTemplate; + + private static $featureGroupNameTemplate; + + private static $locationNameTemplate; + + private static $projectLocationFeatureGroupFeatureNameTemplate; + + private static $projectLocationFeaturestoreEntityTypeFeatureNameTemplate; + + private static $pathTemplateMap; + + private $operationsClient; + + private static function getClientDefaults() + { + return [ + 'serviceName' => self::SERVICE_NAME, + 'apiEndpoint' => + self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT, + 'clientConfig' => + __DIR__ . + '/../resources/feature_registry_service_client_config.json', + 'descriptorsConfigPath' => + __DIR__ . + '/../resources/feature_registry_service_descriptor_config.php', + 'gcpApiConfigPath' => + __DIR__ . + '/../resources/feature_registry_service_grpc_config.json', + 'credentialsConfig' => [ + 'defaultScopes' => self::$serviceScopes, + ], + 'transportConfig' => [ + 'rest' => [ + 'restClientConfigPath' => + __DIR__ . + '/../resources/feature_registry_service_rest_client_config.php', + ], + ], + ]; + } + + private static function getEntityTypeNameTemplate() + { + if (self::$entityTypeNameTemplate == null) { + self::$entityTypeNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}' + ); + } + + return self::$entityTypeNameTemplate; + } + + private static function getFeatureNameTemplate() + { + if (self::$featureNameTemplate == null) { + self::$featureNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}' + ); + } + + return self::$featureNameTemplate; + } + + private static function getFeatureGroupNameTemplate() + { + if (self::$featureGroupNameTemplate == null) { + self::$featureGroupNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureGroups/{feature_group}' + ); + } + + return self::$featureGroupNameTemplate; + } + + private static function getLocationNameTemplate() + { + if (self::$locationNameTemplate == null) { + self::$locationNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}' + ); + } + + return self::$locationNameTemplate; + } + + private static function getProjectLocationFeatureGroupFeatureNameTemplate() + { + if (self::$projectLocationFeatureGroupFeatureNameTemplate == null) { + self::$projectLocationFeatureGroupFeatureNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}' + ); + } + + return self::$projectLocationFeatureGroupFeatureNameTemplate; + } + + private static function getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate() + { + if ( + self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate == + null + ) { + self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}' + ); + } + + return self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate; + } + + private static function getPathTemplateMap() + { + if (self::$pathTemplateMap == null) { + self::$pathTemplateMap = [ + 'entityType' => self::getEntityTypeNameTemplate(), + 'feature' => self::getFeatureNameTemplate(), + 'featureGroup' => self::getFeatureGroupNameTemplate(), + 'location' => self::getLocationNameTemplate(), + 'projectLocationFeatureGroupFeature' => self::getProjectLocationFeatureGroupFeatureNameTemplate(), + 'projectLocationFeaturestoreEntityTypeFeature' => self::getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate(), + ]; + } + + return self::$pathTemplateMap; + } + + /** + * Formats a string containing the fully-qualified path to represent a entity_type + * resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * + * @return string The formatted entity_type resource. + */ + public static function entityTypeName( + $project, + $location, + $featurestore, + $entityType + ) { + return self::getEntityTypeNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a feature + * resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted feature resource. + */ + public static function featureName( + $project, + $location, + $featurestore, + $entityType, + $feature + ) { + return self::getFeatureNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * feature_group resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * + * @return string The formatted feature_group resource. + */ + public static function featureGroupName($project, $location, $featureGroup) + { + return self::getFeatureGroupNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a location + * resource. + * + * @param string $project + * @param string $location + * + * @return string The formatted location resource. + */ + public static function locationName($project, $location) + { + return self::getLocationNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + ]); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_feature_group_feature resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * @param string $feature + * + * @return string The formatted project_location_feature_group_feature resource. + */ + public static function projectLocationFeatureGroupFeatureName( + $project, + $location, + $featureGroup, + $feature + ) { + return self::getProjectLocationFeatureGroupFeatureNameTemplate()->render( + [ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + 'feature' => $feature, + ] + ); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_featurestore_entity_type_feature resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted project_location_featurestore_entity_type_feature resource. + */ + public static function projectLocationFeaturestoreEntityTypeFeatureName( + $project, + $location, + $featurestore, + $entityType, + $feature + ) { + return self::getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate()->render( + [ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ] + ); + } + + /** + * Parses a formatted name string and returns an associative array of the components in the name. + * The following name formats are supported: + * Template: Pattern + * - entityType: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type} + * - feature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * - featureGroup: projects/{project}/locations/{location}/featureGroups/{feature_group} + * - location: projects/{project}/locations/{location} + * - projectLocationFeatureGroupFeature: projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature} + * - projectLocationFeaturestoreEntityTypeFeature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * + * The optional $template argument can be supplied to specify a particular pattern, + * and must match one of the templates listed above. If no $template argument is + * provided, or if the $template argument does not match one of the templates + * listed, then parseName will check each of the supported templates, and return + * the first match. + * + * @param string $formattedName The formatted name string + * @param string $template Optional name of template to match + * + * @return array An associative array from name component IDs to component values. + * + * @throws ValidationException If $formattedName could not be matched. + */ + public static function parseName($formattedName, $template = null) + { + $templateMap = self::getPathTemplateMap(); + if ($template) { + if (!isset($templateMap[$template])) { + throw new ValidationException( + "Template name $template does not exist" + ); + } + + return $templateMap[$template]->match($formattedName); + } + + foreach ($templateMap as $templateName => $pathTemplate) { + try { + return $pathTemplate->match($formattedName); + } catch (ValidationException $ex) { + // Swallow the exception to continue trying other path templates + } + } + + throw new ValidationException( + "Input did not match any known format. Input: $formattedName" + ); + } + + /** + * Return an OperationsClient object with the same endpoint as $this. + * + * @return OperationsClient + */ + public function getOperationsClient() + { + return $this->operationsClient; + } + + /** + * Resume an existing long running operation that was previously started by a long + * running API method. If $methodName is not provided, or does not match a long + * running API method, then the operation can still be resumed, but the + * OperationResponse object will not deserialize the final response. + * + * @param string $operationName The name of the long running operation + * @param string $methodName The name of the method used to start the operation + * + * @return OperationResponse + */ + public function resumeOperation($operationName, $methodName = null) + { + $options = isset($this->descriptors[$methodName]['longRunning']) + ? $this->descriptors[$methodName]['longRunning'] + : []; + $operation = new OperationResponse( + $operationName, + $this->getOperationsClient(), + $options + ); + $operation->reload(); + return $operation; + } + + /** + * Constructor. + * + * @param array $options { + * Optional. Options for configuring the service API wrapper. + * + * @type string $apiEndpoint + * The address of the API remote host. May optionally include the port, formatted + * as ":". Default 'aiplatform.googleapis.com:443'. + * @type string|array|FetchAuthTokenInterface|CredentialsWrapper $credentials + * The credentials to be used by the client to authorize API calls. This option + * accepts either a path to a credentials file, or a decoded credentials file as a + * PHP array. + * *Advanced usage*: In addition, this option can also accept a pre-constructed + * {@see \Google\Auth\FetchAuthTokenInterface} object or + * {@see \Google\ApiCore\CredentialsWrapper} object. Note that when one of these + * objects are provided, any settings in $credentialsConfig will be ignored. + * @type array $credentialsConfig + * Options used to configure credentials, including auth token caching, for the + * client. For a full list of supporting configuration options, see + * {@see \Google\ApiCore\CredentialsWrapper::build()} . + * @type bool $disableRetries + * Determines whether or not retries defined by the client configuration should be + * disabled. Defaults to `false`. + * @type string|array $clientConfig + * Client method configuration, including retry settings. This option can be either + * a path to a JSON file, or a PHP array containing the decoded JSON data. By + * default this settings points to the default client config file, which is + * provided in the resources folder. + * @type string|TransportInterface $transport + * The transport used for executing network requests. May be either the string + * `rest` or `grpc`. Defaults to `grpc` if gRPC support is detected on the system. + * *Advanced usage*: Additionally, it is possible to pass in an already + * instantiated {@see \Google\ApiCore\Transport\TransportInterface} object. Note + * that when this object is provided, any settings in $transportConfig, and any + * $apiEndpoint setting, will be ignored. + * @type array $transportConfig + * Configuration options that will be used to construct the transport. Options for + * each supported transport type should be passed in a key for that transport. For + * example: + * $transportConfig = [ + * 'grpc' => [...], + * 'rest' => [...], + * ]; + * See the {@see \Google\ApiCore\Transport\GrpcTransport::build()} and + * {@see \Google\ApiCore\Transport\RestTransport::build()} methods for the + * supported options. + * @type callable $clientCertSource + * A callable which returns the client cert as a string. This can be used to + * provide a certificate and private key to the transport layer for mTLS. + * } + * + * @throws ValidationException + */ + public function __construct(array $options = []) + { + $clientOptions = $this->buildClientOptions($options); + $this->setClientOptions($clientOptions); + $this->operationsClient = $this->createOperationsClient($clientOptions); + } + + /** + * Creates a new Feature in a given FeatureGroup. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedParent = $featureRegistryServiceClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + * $feature = new Feature(); + * $featureId = 'feature_id'; + * $operationResponse = $featureRegistryServiceClient->createFeature($formattedParent, $feature, $featureId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->createFeature($formattedParent, $feature, $featureId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'createFeature'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param Feature $feature Required. The Feature to create. + * @param string $featureId Required. The ID to use for the Feature, which will become the final + * component of the Feature's resource name. + * + * This value may be up to 128 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within an EntityType/FeatureGroup. + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function createFeature( + $parent, + $feature, + $featureId, + array $optionalArgs = [] + ) { + $request = new CreateFeatureRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $request->setFeature($feature); + $request->setFeatureId($featureId); + $requestParamHeaders['parent'] = $parent; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'CreateFeature', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Creates a new FeatureGroup in a given project and location. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedParent = $featureRegistryServiceClient->locationName('[PROJECT]', '[LOCATION]'); + * $featureGroup = new FeatureGroup(); + * $featureGroupId = 'feature_group_id'; + * $operationResponse = $featureRegistryServiceClient->createFeatureGroup($formattedParent, $featureGroup, $featureGroupId); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->createFeatureGroup($formattedParent, $featureGroup, $featureGroupId); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'createFeatureGroup'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the Location to create FeatureGroups. + * Format: + * `projects/{project}/locations/{location}'` + * @param FeatureGroup $featureGroup Required. The FeatureGroup to create. + * @param string $featureGroupId Required. The ID to use for this FeatureGroup, which will become the final + * component of the FeatureGroup's resource name. + * + * This value may be up to 60 characters, and valid characters are + * `[a-z0-9_]`. The first character cannot be a number. + * + * The value must be unique within the project and location. + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function createFeatureGroup( + $parent, + $featureGroup, + $featureGroupId, + array $optionalArgs = [] + ) { + $request = new CreateFeatureGroupRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $request->setFeatureGroup($featureGroup); + $request->setFeatureGroupId($featureGroupId); + $requestParamHeaders['parent'] = $parent; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'CreateFeatureGroup', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Deletes a single Feature. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedName = $featureRegistryServiceClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + * $operationResponse = $featureRegistryServiceClient->deleteFeature($formattedName); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->deleteFeature($formattedName); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'deleteFeature'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the Features to be deleted. + * Format: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function deleteFeature($name, array $optionalArgs = []) + { + $request = new DeleteFeatureRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'DeleteFeature', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Deletes a single FeatureGroup. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedName = $featureRegistryServiceClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + * $operationResponse = $featureRegistryServiceClient->deleteFeatureGroup($formattedName); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->deleteFeatureGroup($formattedName); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'deleteFeatureGroup'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * // operation succeeded and returns no value + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureGroup to be deleted. + * Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param array $optionalArgs { + * Optional. + * + * @type bool $force + * If set to true, any Features under this FeatureGroup + * will also be deleted. (Otherwise, the request will only work if the + * FeatureGroup has no Features.) + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function deleteFeatureGroup($name, array $optionalArgs = []) + { + $request = new DeleteFeatureGroupRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + if (isset($optionalArgs['force'])) { + $request->setForce($optionalArgs['force']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'DeleteFeatureGroup', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Gets details of a single Feature. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedName = $featureRegistryServiceClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + * $response = $featureRegistryServiceClient->getFeature($formattedName); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the Feature resource. + * Format for entity_type as parent: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\Feature + * + * @throws ApiException if the remote call fails + */ + public function getFeature($name, array $optionalArgs = []) + { + $request = new GetFeatureRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetFeature', + Feature::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Gets details of a single FeatureGroup. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedName = $featureRegistryServiceClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + * $response = $featureRegistryServiceClient->getFeatureGroup($formattedName); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $name Required. The name of the FeatureGroup resource. + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\AIPlatform\V1\FeatureGroup + * + * @throws ApiException if the remote call fails + */ + public function getFeatureGroup($name, array $optionalArgs = []) + { + $request = new GetFeatureGroupRequest(); + $requestParamHeaders = []; + $request->setName($name); + $requestParamHeaders['name'] = $name; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetFeatureGroup', + FeatureGroup::class, + $optionalArgs, + $request + )->wait(); + } + + /** + * Lists FeatureGroups in a given project and location. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedParent = $featureRegistryServiceClient->locationName('[PROJECT]', '[LOCATION]'); + * // Iterate over pages of elements + * $pagedResponse = $featureRegistryServiceClient->listFeatureGroups($formattedParent); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureRegistryServiceClient->listFeatureGroups($formattedParent); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * @param array $optionalArgs { + * Optional. + * + * @type string $filter + * Lists the FeatureGroups that match the filter expression. The + * following fields are supported: + * + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * + * Examples: + * + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureGroups created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureGroups with label "env" set to "prod". + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type string $orderBy + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * + * * `create_time` + * * `update_time` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listFeatureGroups($parent, array $optionalArgs = []) + { + $request = new ListFeatureGroupsRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + if (isset($optionalArgs['orderBy'])) { + $request->setOrderBy($optionalArgs['orderBy']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListFeatureGroups', + $optionalArgs, + ListFeatureGroupsResponse::class, + $request + ); + } + + /** + * Lists Features in a given FeatureGroup. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $formattedParent = $featureRegistryServiceClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + * // Iterate over pages of elements + * $pagedResponse = $featureRegistryServiceClient->listFeatures($formattedParent); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureRegistryServiceClient->listFeatures($formattedParent); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $parent Required. The resource name of the Location to list Features. + * Format for entity_type as parent: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param array $optionalArgs { + * Optional. + * + * @type string $filter + * Lists the Features that match the filter expression. The following + * filters are supported: + * + * * `value_type`: Supports = and != comparisons. + * * `create_time`: Supports =, !=, <, >, >=, and <= comparisons. Values must + * be in RFC 3339 format. + * * `update_time`: Supports =, !=, <, >, >=, and <= comparisons. Values must + * be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * + * Examples: + * + * * `value_type = DOUBLE` --> Features whose type is DOUBLE. + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> EntityTypes created + * or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> Features having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any Feature which has a label with 'env' as the + * key. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type string $orderBy + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * + * * `feature_id` + * * `value_type` (Not supported for FeatureRegistry Feature) + * * `create_time` + * * `update_time` + * @type FieldMask $readMask + * Mask specifying which fields to read. + * @type int $latestStatsCount + * Only applicable for Vertex AI Feature Store (Legacy). + * If set, return the most recent + * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] + * of stats for each Feature in response. Valid value is [0, 10]. If number of + * stats exists < + * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count], + * return all existing stats. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listFeatures($parent, array $optionalArgs = []) + { + $request = new ListFeaturesRequest(); + $requestParamHeaders = []; + $request->setParent($parent); + $requestParamHeaders['parent'] = $parent; + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + if (isset($optionalArgs['orderBy'])) { + $request->setOrderBy($optionalArgs['orderBy']); + } + + if (isset($optionalArgs['readMask'])) { + $request->setReadMask($optionalArgs['readMask']); + } + + if (isset($optionalArgs['latestStatsCount'])) { + $request->setLatestStatsCount($optionalArgs['latestStatsCount']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListFeatures', + $optionalArgs, + ListFeaturesResponse::class, + $request + ); + } + + /** + * Updates the parameters of a single Feature. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $feature = new Feature(); + * $operationResponse = $featureRegistryServiceClient->updateFeature($feature); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->updateFeature($feature); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'updateFeature'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param Feature $feature Required. The Feature's `name` field is used to identify the Feature to be + * updated. + * Format: + * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * Field mask is used to specify the fields to be overwritten in the + * Features resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `description` + * * `labels` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function updateFeature($feature, array $optionalArgs = []) + { + $request = new UpdateFeatureRequest(); + $requestParamHeaders = []; + $request->setFeature($feature); + $requestParamHeaders['feature.name'] = $feature->getName(); + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'UpdateFeature', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Updates the parameters of a single FeatureGroup. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $featureGroup = new FeatureGroup(); + * $operationResponse = $featureRegistryServiceClient->updateFeatureGroup($featureGroup); + * $operationResponse->pollUntilComplete(); + * if ($operationResponse->operationSucceeded()) { + * $result = $operationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $operationResponse->getError(); + * // handleError($error) + * } + * // Alternatively: + * // start the operation, keep the operation name, and resume later + * $operationResponse = $featureRegistryServiceClient->updateFeatureGroup($featureGroup); + * $operationName = $operationResponse->getName(); + * // ... do other work + * $newOperationResponse = $featureRegistryServiceClient->resumeOperation($operationName, 'updateFeatureGroup'); + * while (!$newOperationResponse->isDone()) { + * // ... do other work + * $newOperationResponse->reload(); + * } + * if ($newOperationResponse->operationSucceeded()) { + * $result = $newOperationResponse->getResult(); + * // doSomethingWith($result) + * } else { + * $error = $newOperationResponse->getError(); + * // handleError($error) + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param FeatureGroup $featureGroup Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `labels` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\OperationResponse + * + * @throws ApiException if the remote call fails + */ + public function updateFeatureGroup($featureGroup, array $optionalArgs = []) + { + $request = new UpdateFeatureGroupRequest(); + $requestParamHeaders = []; + $request->setFeatureGroup($featureGroup); + $requestParamHeaders['feature_group.name'] = $featureGroup->getName(); + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startOperationsCall( + 'UpdateFeatureGroup', + $optionalArgs, + $request, + $this->getOperationsClient() + )->wait(); + } + + /** + * Gets information about a location. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $response = $featureRegistryServiceClient->getLocation(); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * Resource name for the location. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Location\Location + * + * @throws ApiException if the remote call fails + */ + public function getLocation(array $optionalArgs = []) + { + $request = new GetLocationRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetLocation', + Location::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.cloud.location.Locations' + )->wait(); + } + + /** + * Lists information about the supported locations for this service. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * // Iterate over pages of elements + * $pagedResponse = $featureRegistryServiceClient->listLocations(); + * foreach ($pagedResponse->iteratePages() as $page) { + * foreach ($page as $element) { + * // doSomethingWith($element); + * } + * } + * // Alternatively: + * // Iterate through all elements + * $pagedResponse = $featureRegistryServiceClient->listLocations(); + * foreach ($pagedResponse->iterateAllElements() as $element) { + * // doSomethingWith($element); + * } + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param array $optionalArgs { + * Optional. + * + * @type string $name + * The resource that owns the locations collection, if applicable. + * @type string $filter + * The standard list filter. + * @type int $pageSize + * The maximum number of resources contained in the underlying API + * response. The API may return fewer values in a page, even if + * there are additional values to be retrieved. + * @type string $pageToken + * A page token is used to specify a page of values to be returned. + * If no page token is specified (the default), the first page + * of values will be returned. Any page token used here must have + * been generated by a previous call to the API. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\ApiCore\PagedListResponse + * + * @throws ApiException if the remote call fails + */ + public function listLocations(array $optionalArgs = []) + { + $request = new ListLocationsRequest(); + $requestParamHeaders = []; + if (isset($optionalArgs['name'])) { + $request->setName($optionalArgs['name']); + $requestParamHeaders['name'] = $optionalArgs['name']; + } + + if (isset($optionalArgs['filter'])) { + $request->setFilter($optionalArgs['filter']); + } + + if (isset($optionalArgs['pageSize'])) { + $request->setPageSize($optionalArgs['pageSize']); + } + + if (isset($optionalArgs['pageToken'])) { + $request->setPageToken($optionalArgs['pageToken']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->getPagedListResponse( + 'ListLocations', + $optionalArgs, + ListLocationsResponse::class, + $request, + 'google.cloud.location.Locations' + ); + } + + /** + * Gets the access control policy for a resource. Returns an empty policy + if the resource exists and does not have a policy set. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $resource = 'resource'; + * $response = $featureRegistryServiceClient->getIamPolicy($resource); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being requested. + * See the operation documentation for the appropriate value for this field. + * @param array $optionalArgs { + * Optional. + * + * @type GetPolicyOptions $options + * OPTIONAL: A `GetPolicyOptions` object for specifying options to + * `GetIamPolicy`. + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function getIamPolicy($resource, array $optionalArgs = []) + { + $request = new GetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['options'])) { + $request->setOptions($optionalArgs['options']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'GetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Sets the access control policy on the specified resource. Replaces + any existing policy. + + Can return `NOT_FOUND`, `INVALID_ARGUMENT`, and `PERMISSION_DENIED` + errors. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $resource = 'resource'; + * $policy = new Policy(); + * $response = $featureRegistryServiceClient->setIamPolicy($resource, $policy); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy is being specified. + * See the operation documentation for the appropriate value for this field. + * @param Policy $policy REQUIRED: The complete policy to be applied to the `resource`. The size of + * the policy is limited to a few 10s of KB. An empty policy is a + * valid policy but certain Cloud Platform services (such as Projects) + * might reject them. + * @param array $optionalArgs { + * Optional. + * + * @type FieldMask $updateMask + * OPTIONAL: A FieldMask specifying which fields of the policy to modify. Only + * the fields in the mask will be modified. If no mask is provided, the + * following default mask is used: + * + * `paths: "bindings, etag"` + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\Policy + * + * @throws ApiException if the remote call fails + */ + public function setIamPolicy($resource, $policy, array $optionalArgs = []) + { + $request = new SetIamPolicyRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPolicy($policy); + $requestParamHeaders['resource'] = $resource; + if (isset($optionalArgs['updateMask'])) { + $request->setUpdateMask($optionalArgs['updateMask']); + } + + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'SetIamPolicy', + Policy::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } + + /** + * Returns permissions that a caller has on the specified resource. If the + resource does not exist, this will return an empty set of + permissions, not a `NOT_FOUND` error. + + Note: This operation is designed to be used for building + permission-aware UIs and command-line tools, not for authorization + checking. This operation may "fail open" without warning. + * + * Sample code: + * ``` + * $featureRegistryServiceClient = new FeatureRegistryServiceClient(); + * try { + * $resource = 'resource'; + * $permissions = []; + * $response = $featureRegistryServiceClient->testIamPermissions($resource, $permissions); + * } finally { + * $featureRegistryServiceClient->close(); + * } + * ``` + * + * @param string $resource REQUIRED: The resource for which the policy detail is being requested. + * See the operation documentation for the appropriate value for this field. + * @param string[] $permissions The set of permissions to check for the `resource`. Permissions with + * wildcards (such as '*' or 'storage.*') are not allowed. For more + * information see + * [IAM Overview](https://cloud.google.com/iam/docs/overview#permissions). + * @param array $optionalArgs { + * Optional. + * + * @type RetrySettings|array $retrySettings + * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an + * associative array of retry settings parameters. See the documentation on + * {@see RetrySettings} for example usage. + * } + * + * @return \Google\Cloud\Iam\V1\TestIamPermissionsResponse + * + * @throws ApiException if the remote call fails + */ + public function testIamPermissions( + $resource, + $permissions, + array $optionalArgs = [] + ) { + $request = new TestIamPermissionsRequest(); + $requestParamHeaders = []; + $request->setResource($resource); + $request->setPermissions($permissions); + $requestParamHeaders['resource'] = $resource; + $requestParams = new RequestParamsHeaderDescriptor( + $requestParamHeaders + ); + $optionalArgs['headers'] = isset($optionalArgs['headers']) + ? array_merge($requestParams->getHeader(), $optionalArgs['headers']) + : $requestParams->getHeader(); + return $this->startCall( + 'TestIamPermissions', + TestIamPermissionsResponse::class, + $optionalArgs, + $request, + Call::UNARY_CALL, + 'google.iam.v1.IAMPolicy' + )->wait(); + } +} diff --git a/AiPlatform/src/V1/Gapic/FeaturestoreServiceGapicClient.php b/AiPlatform/src/V1/Gapic/FeaturestoreServiceGapicClient.php index de620e218aab..594470a5521c 100644 --- a/AiPlatform/src/V1/Gapic/FeaturestoreServiceGapicClient.php +++ b/AiPlatform/src/V1/Gapic/FeaturestoreServiceGapicClient.php @@ -167,10 +167,16 @@ class FeaturestoreServiceGapicClient private static $featureNameTemplate; + private static $featureGroupNameTemplate; + private static $featurestoreNameTemplate; private static $locationNameTemplate; + private static $projectLocationFeatureGroupFeatureNameTemplate; + + private static $projectLocationFeaturestoreEntityTypeFeatureNameTemplate; + private static $pathTemplateMap; private $operationsClient; @@ -224,6 +230,17 @@ private static function getFeatureNameTemplate() return self::$featureNameTemplate; } + private static function getFeatureGroupNameTemplate() + { + if (self::$featureGroupNameTemplate == null) { + self::$featureGroupNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureGroups/{feature_group}' + ); + } + + return self::$featureGroupNameTemplate; + } + private static function getFeaturestoreNameTemplate() { if (self::$featurestoreNameTemplate == null) { @@ -246,14 +263,42 @@ private static function getLocationNameTemplate() return self::$locationNameTemplate; } + private static function getProjectLocationFeatureGroupFeatureNameTemplate() + { + if (self::$projectLocationFeatureGroupFeatureNameTemplate == null) { + self::$projectLocationFeatureGroupFeatureNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}' + ); + } + + return self::$projectLocationFeatureGroupFeatureNameTemplate; + } + + private static function getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate() + { + if ( + self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate == + null + ) { + self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate = new PathTemplate( + 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}' + ); + } + + return self::$projectLocationFeaturestoreEntityTypeFeatureNameTemplate; + } + private static function getPathTemplateMap() { if (self::$pathTemplateMap == null) { self::$pathTemplateMap = [ 'entityType' => self::getEntityTypeNameTemplate(), 'feature' => self::getFeatureNameTemplate(), + 'featureGroup' => self::getFeatureGroupNameTemplate(), 'featurestore' => self::getFeaturestoreNameTemplate(), 'location' => self::getLocationNameTemplate(), + 'projectLocationFeatureGroupFeature' => self::getProjectLocationFeatureGroupFeatureNameTemplate(), + 'projectLocationFeaturestoreEntityTypeFeature' => self::getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate(), ]; } @@ -313,6 +358,25 @@ public static function featureName( ]); } + /** + * Formats a string containing the fully-qualified path to represent a + * feature_group resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * + * @return string The formatted feature_group resource. + */ + public static function featureGroupName($project, $location, $featureGroup) + { + return self::getFeatureGroupNameTemplate()->render([ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + ]); + } + /** * Formats a string containing the fully-qualified path to represent a featurestore * resource. @@ -349,14 +413,74 @@ public static function locationName($project, $location) ]); } + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_feature_group_feature resource. + * + * @param string $project + * @param string $location + * @param string $featureGroup + * @param string $feature + * + * @return string The formatted project_location_feature_group_feature resource. + */ + public static function projectLocationFeatureGroupFeatureName( + $project, + $location, + $featureGroup, + $feature + ) { + return self::getProjectLocationFeatureGroupFeatureNameTemplate()->render( + [ + 'project' => $project, + 'location' => $location, + 'feature_group' => $featureGroup, + 'feature' => $feature, + ] + ); + } + + /** + * Formats a string containing the fully-qualified path to represent a + * project_location_featurestore_entity_type_feature resource. + * + * @param string $project + * @param string $location + * @param string $featurestore + * @param string $entityType + * @param string $feature + * + * @return string The formatted project_location_featurestore_entity_type_feature resource. + */ + public static function projectLocationFeaturestoreEntityTypeFeatureName( + $project, + $location, + $featurestore, + $entityType, + $feature + ) { + return self::getProjectLocationFeaturestoreEntityTypeFeatureNameTemplate()->render( + [ + 'project' => $project, + 'location' => $location, + 'featurestore' => $featurestore, + 'entity_type' => $entityType, + 'feature' => $feature, + ] + ); + } + /** * Parses a formatted name string and returns an associative array of the components in the name. * The following name formats are supported: * Template: Pattern * - entityType: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type} * - feature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} + * - featureGroup: projects/{project}/locations/{location}/featureGroups/{feature_group} * - featurestore: projects/{project}/locations/{location}/featurestores/{featurestore} * - location: projects/{project}/locations/{location} + * - projectLocationFeatureGroupFeature: projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature} + * - projectLocationFeaturestoreEntityTypeFeature: projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature} * * The optional $template argument can be supplied to specify a particular pattern, * and must match one of the templates listed above. If no $template argument is @@ -860,9 +984,11 @@ public function createEntityType( * } * ``` * - * @param string $parent Required. The resource name of the EntityType to create a Feature. - * Format: + * @param string $parent Required. The resource name of the EntityType or FeatureGroup to create a + * Feature. Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * @param Feature $feature Required. The Feature to create. * @param string $featureId Required. The ID to use for the Feature, which will become the final * component of the Feature's resource name. @@ -870,7 +996,7 @@ public function createEntityType( * This value may be up to 128 characters, and valid characters are * `[a-z0-9_]`. The first character cannot be a number. * - * The value must be unique within an EntityType. + * The value must be unique within an EntityType/FeatureGroup. * @param array $optionalArgs { * Optional. * @@ -1122,6 +1248,7 @@ public function deleteEntityType($name, array $optionalArgs = []) * @param string $name Required. The name of the Features to be deleted. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * @param array $optionalArgs { * Optional. * @@ -1506,8 +1633,10 @@ public function getEntityType($name, array $optionalArgs = []) * ``` * * @param string $name Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * @param array $optionalArgs { * Optional. * @@ -1904,8 +2033,10 @@ public function listEntityTypes($parent, array $optionalArgs = []) * ``` * * @param string $parent Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * @param array $optionalArgs { * Optional. * @@ -1945,12 +2076,13 @@ public function listEntityTypes($parent, array $optionalArgs = []) * Supported fields: * * * `feature_id` - * * `value_type` + * * `value_type` (Not supported for FeatureRegistry Feature) * * `create_time` * * `update_time` * @type FieldMask $readMask * Mask specifying which fields to read. * @type int $latestStatsCount + * Only applicable for Vertex AI Feature Store (Legacy). * If set, return the most recent * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] * of stats for each Feature in response. Valid value is [0, 10]. If number of @@ -2369,6 +2501,7 @@ public function updateEntityType($entityType, array $optionalArgs = []) * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * @param array $optionalArgs { * Optional. * @@ -2385,7 +2518,7 @@ public function updateEntityType($entityType, array $optionalArgs = []) * * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * @type RetrySettings|array $retrySettings * Retry settings to use for this call. Can be a {@see RetrySettings} object, or an * associative array of retry settings parameters. See the documentation on diff --git a/AiPlatform/src/V1/GetFeatureGroupRequest.php b/AiPlatform/src/V1/GetFeatureGroupRequest.php new file mode 100644 index 000000000000..ab9a0576384e --- /dev/null +++ b/AiPlatform/src/V1/GetFeatureGroupRequest.php @@ -0,0 +1,82 @@ +google.cloud.aiplatform.v1.GetFeatureGroupRequest + */ +class GetFeatureGroupRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureGroup resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + + /** + * @param string $name Required. The name of the FeatureGroup resource. Please see + * {@see FeatureRegistryServiceClient::featureGroupName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\GetFeatureGroupRequest + * + * @experimental + */ + public static function build(string $name): self + { + return (new self()) + ->setName($name); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureGroup resource. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureGroup resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureGroup resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/GetFeatureOnlineStoreRequest.php b/AiPlatform/src/V1/GetFeatureOnlineStoreRequest.php new file mode 100644 index 000000000000..187636b3c4c2 --- /dev/null +++ b/AiPlatform/src/V1/GetFeatureOnlineStoreRequest.php @@ -0,0 +1,82 @@ +google.cloud.aiplatform.v1.GetFeatureOnlineStoreRequest + */ +class GetFeatureOnlineStoreRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureOnlineStore resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + + /** + * @param string $name Required. The name of the FeatureOnlineStore resource. Please see + * {@see FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\GetFeatureOnlineStoreRequest + * + * @experimental + */ + public static function build(string $name): self + { + return (new self()) + ->setName($name); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureOnlineStore resource. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureOnlineStore resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureOnlineStore resource. + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/GetFeatureRequest.php b/AiPlatform/src/V1/GetFeatureRequest.php index 5ac8d35ef01b..7eaf6aaad49f 100644 --- a/AiPlatform/src/V1/GetFeatureRequest.php +++ b/AiPlatform/src/V1/GetFeatureRequest.php @@ -11,6 +11,8 @@ /** * Request message for * [FeaturestoreService.GetFeature][google.cloud.aiplatform.v1.FeaturestoreService.GetFeature]. + * Request message for + * [FeatureRegistryService.GetFeature][google.cloud.aiplatform.v1.FeatureRegistryService.GetFeature]. * * Generated from protobuf message google.cloud.aiplatform.v1.GetFeatureRequest */ @@ -18,8 +20,10 @@ class GetFeatureRequest extends \Google\Protobuf\Internal\Message { /** * Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ @@ -27,8 +31,10 @@ class GetFeatureRequest extends \Google\Protobuf\Internal\Message /** * @param string $name Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::featureName()} for help formatting this field. * * @return \Google\Cloud\AIPlatform\V1\GetFeatureRequest @@ -49,8 +55,10 @@ public static function build(string $name): self * * @type string $name * Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * } */ public function __construct($data = NULL) { @@ -60,8 +68,10 @@ public function __construct($data = NULL) { /** * Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @return string @@ -73,8 +83,10 @@ public function getName() /** * Required. The name of the Feature resource. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @param string $var diff --git a/AiPlatform/src/V1/GetFeatureViewRequest.php b/AiPlatform/src/V1/GetFeatureViewRequest.php new file mode 100644 index 000000000000..4b15a7aea8b7 --- /dev/null +++ b/AiPlatform/src/V1/GetFeatureViewRequest.php @@ -0,0 +1,92 @@ +google.cloud.aiplatform.v1.GetFeatureViewRequest + */ +class GetFeatureViewRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + + /** + * @param string $name Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureViewName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\GetFeatureViewRequest + * + * @experimental + */ + public static function build(string $name): self + { + return (new self()) + ->setName($name); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureView resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/GetFeatureViewSyncRequest.php b/AiPlatform/src/V1/GetFeatureViewSyncRequest.php new file mode 100644 index 000000000000..72b7dd1940e1 --- /dev/null +++ b/AiPlatform/src/V1/GetFeatureViewSyncRequest.php @@ -0,0 +1,92 @@ +google.cloud.aiplatform.v1.GetFeatureViewSyncRequest + */ +class GetFeatureViewSyncRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $name = ''; + + /** + * @param string $name Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureViewSyncName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\GetFeatureViewSyncRequest + * + * @experimental + */ + public static function build(string $name): self + { + return (new self()) + ->setName($name); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $name + * Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Required. The name of the FeatureViewSync resource. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setName($var) + { + GPBUtil::checkString($var, True); + $this->name = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/IndexDatapoint.php b/AiPlatform/src/V1/IndexDatapoint.php index 0068a76cdae9..70b68e012263 100644 --- a/AiPlatform/src/V1/IndexDatapoint.php +++ b/AiPlatform/src/V1/IndexDatapoint.php @@ -37,6 +37,14 @@ class IndexDatapoint extends \Google\Protobuf\Internal\Message * Generated from protobuf field repeated .google.cloud.aiplatform.v1.IndexDatapoint.Restriction restricts = 4 [(.google.api.field_behavior) = OPTIONAL]; */ private $restricts; + /** + * Optional. List of Restrict of the datapoint, used to perform "restricted + * searches" where boolean rule are used to filter the subset of the database + * eligible for matching. This uses numeric comparisons. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction numeric_restricts = 6 [(.google.api.field_behavior) = OPTIONAL]; + */ + private $numeric_restricts; /** * Optional. CrowdingTag of the datapoint, the number of neighbors to return * in each crowding can be configured during query. @@ -61,6 +69,10 @@ class IndexDatapoint extends \Google\Protobuf\Internal\Message * searches" where boolean rule are used to filter the subset of the database * eligible for matching. This uses categorical tokens. See: * https://cloud.google.com/vertex-ai/docs/matching-engine/filtering + * @type array<\Google\Cloud\AIPlatform\V1\IndexDatapoint\NumericRestriction>|\Google\Protobuf\Internal\RepeatedField $numeric_restricts + * Optional. List of Restrict of the datapoint, used to perform "restricted + * searches" where boolean rule are used to filter the subset of the database + * eligible for matching. This uses numeric comparisons. * @type \Google\Cloud\AIPlatform\V1\IndexDatapoint\CrowdingTag $crowding_tag * Optional. CrowdingTag of the datapoint, the number of neighbors to return * in each crowding can be configured during query. @@ -157,6 +169,36 @@ public function setRestricts($var) return $this; } + /** + * Optional. List of Restrict of the datapoint, used to perform "restricted + * searches" where boolean rule are used to filter the subset of the database + * eligible for matching. This uses numeric comparisons. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction numeric_restricts = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getNumericRestricts() + { + return $this->numeric_restricts; + } + + /** + * Optional. List of Restrict of the datapoint, used to perform "restricted + * searches" where boolean rule are used to filter the subset of the database + * eligible for matching. This uses numeric comparisons. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction numeric_restricts = 6 [(.google.api.field_behavior) = OPTIONAL]; + * @param array<\Google\Cloud\AIPlatform\V1\IndexDatapoint\NumericRestriction>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setNumericRestricts($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\IndexDatapoint\NumericRestriction::class); + $this->numeric_restricts = $arr; + + return $this; + } + /** * Optional. CrowdingTag of the datapoint, the number of neighbors to return * in each crowding can be configured during query. diff --git a/AiPlatform/src/V1/IndexDatapoint/NumericRestriction.php b/AiPlatform/src/V1/IndexDatapoint/NumericRestriction.php new file mode 100644 index 000000000000..d2977f87663c --- /dev/null +++ b/AiPlatform/src/V1/IndexDatapoint/NumericRestriction.php @@ -0,0 +1,215 @@ +google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction + */ +class NumericRestriction extends \Google\Protobuf\Internal\Message +{ + /** + * The namespace of this restriction. e.g.: cost. + * + * Generated from protobuf field string namespace = 1; + */ + private $namespace = ''; + /** + * This MUST be specified for queries and must NOT be specified for + * datapoints. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction.Operator op = 5; + */ + private $op = 0; + protected $Value; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type int|string $value_int + * Represents 64 bit integer. + * @type float $value_float + * Represents 32 bit float. + * @type float $value_double + * Represents 64 bit float. + * @type string $namespace + * The namespace of this restriction. e.g.: cost. + * @type int $op + * This MUST be specified for queries and must NOT be specified for + * datapoints. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\Index::initOnce(); + parent::__construct($data); + } + + /** + * Represents 64 bit integer. + * + * Generated from protobuf field int64 value_int = 2; + * @return int|string + */ + public function getValueInt() + { + return $this->readOneof(2); + } + + public function hasValueInt() + { + return $this->hasOneof(2); + } + + /** + * Represents 64 bit integer. + * + * Generated from protobuf field int64 value_int = 2; + * @param int|string $var + * @return $this + */ + public function setValueInt($var) + { + GPBUtil::checkInt64($var); + $this->writeOneof(2, $var); + + return $this; + } + + /** + * Represents 32 bit float. + * + * Generated from protobuf field float value_float = 3; + * @return float + */ + public function getValueFloat() + { + return $this->readOneof(3); + } + + public function hasValueFloat() + { + return $this->hasOneof(3); + } + + /** + * Represents 32 bit float. + * + * Generated from protobuf field float value_float = 3; + * @param float $var + * @return $this + */ + public function setValueFloat($var) + { + GPBUtil::checkFloat($var); + $this->writeOneof(3, $var); + + return $this; + } + + /** + * Represents 64 bit float. + * + * Generated from protobuf field double value_double = 4; + * @return float + */ + public function getValueDouble() + { + return $this->readOneof(4); + } + + public function hasValueDouble() + { + return $this->hasOneof(4); + } + + /** + * Represents 64 bit float. + * + * Generated from protobuf field double value_double = 4; + * @param float $var + * @return $this + */ + public function setValueDouble($var) + { + GPBUtil::checkDouble($var); + $this->writeOneof(4, $var); + + return $this; + } + + /** + * The namespace of this restriction. e.g.: cost. + * + * Generated from protobuf field string namespace = 1; + * @return string + */ + public function getNamespace() + { + return $this->namespace; + } + + /** + * The namespace of this restriction. e.g.: cost. + * + * Generated from protobuf field string namespace = 1; + * @param string $var + * @return $this + */ + public function setNamespace($var) + { + GPBUtil::checkString($var, True); + $this->namespace = $var; + + return $this; + } + + /** + * This MUST be specified for queries and must NOT be specified for + * datapoints. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction.Operator op = 5; + * @return int + */ + public function getOp() + { + return $this->op; + } + + /** + * This MUST be specified for queries and must NOT be specified for + * datapoints. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction.Operator op = 5; + * @param int $var + * @return $this + */ + public function setOp($var) + { + GPBUtil::checkEnum($var, \Google\Cloud\AIPlatform\V1\IndexDatapoint\NumericRestriction\Operator::class); + $this->op = $var; + + return $this; + } + + /** + * @return string + */ + public function getValue() + { + return $this->whichOneof("Value"); + } + +} + + diff --git a/AiPlatform/src/V1/IndexDatapoint/NumericRestriction/Operator.php b/AiPlatform/src/V1/IndexDatapoint/NumericRestriction/Operator.php new file mode 100644 index 000000000000..6e923b7b6427 --- /dev/null +++ b/AiPlatform/src/V1/IndexDatapoint/NumericRestriction/Operator.php @@ -0,0 +1,86 @@ +google.cloud.aiplatform.v1.IndexDatapoint.NumericRestriction.Operator + */ +class Operator +{ + /** + * Default value of the enum. + * + * Generated from protobuf enum OPERATOR_UNSPECIFIED = 0; + */ + const OPERATOR_UNSPECIFIED = 0; + /** + * Datapoints are eligible iff their value is < the query's. + * + * Generated from protobuf enum LESS = 1; + */ + const LESS = 1; + /** + * Datapoints are eligible iff their value is <= the query's. + * + * Generated from protobuf enum LESS_EQUAL = 2; + */ + const LESS_EQUAL = 2; + /** + * Datapoints are eligible iff their value is == the query's. + * + * Generated from protobuf enum EQUAL = 3; + */ + const EQUAL = 3; + /** + * Datapoints are eligible iff their value is >= the query's. + * + * Generated from protobuf enum GREATER_EQUAL = 4; + */ + const GREATER_EQUAL = 4; + /** + * Datapoints are eligible iff their value is > the query's. + * + * Generated from protobuf enum GREATER = 5; + */ + const GREATER = 5; + + private static $valueToName = [ + self::OPERATOR_UNSPECIFIED => 'OPERATOR_UNSPECIFIED', + self::LESS => 'LESS', + self::LESS_EQUAL => 'LESS_EQUAL', + self::EQUAL => 'EQUAL', + self::GREATER_EQUAL => 'GREATER_EQUAL', + self::GREATER => 'GREATER', + ]; + + public static function name($value) + { + if (!isset(self::$valueToName[$value])) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no name defined for value %s', __CLASS__, $value)); + } + return self::$valueToName[$value]; + } + + + public static function value($name) + { + $const = __CLASS__ . '::' . strtoupper($name); + if (!defined($const)) { + throw new UnexpectedValueException(sprintf( + 'Enum %s has no value defined for name %s', __CLASS__, $name)); + } + return constant($const); + } +} + + diff --git a/AiPlatform/src/V1/ListFeatureGroupsRequest.php b/AiPlatform/src/V1/ListFeatureGroupsRequest.php new file mode 100644 index 000000000000..a0e8d3ca4475 --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureGroupsRequest.php @@ -0,0 +1,328 @@ +google.cloud.aiplatform.v1.ListFeatureGroupsRequest + */ +class ListFeatureGroupsRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Lists the FeatureGroups that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureGroups created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureGroups with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + */ + private $filter = ''; + /** + * The maximum number of FeatureGroups to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureGroups will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + */ + private $page_size = 0; + /** + * A page token, received from a previous + * [FeatureGroupAdminService.ListFeatureGroups][] call. + * Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureGroupAdminService.ListFeatureGroups][] must + * match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + */ + private $page_token = ''; + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + */ + private $order_by = ''; + + /** + * @param string $parent Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * Please see {@see FeatureRegistryServiceClient::locationName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\ListFeatureGroupsRequest + * + * @experimental + */ + public static function build(string $parent): self + { + return (new self()) + ->setParent($parent); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * @type string $filter + * Lists the FeatureGroups that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureGroups created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureGroups with label "env" set to "prod". + * @type int $page_size + * The maximum number of FeatureGroups to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureGroups will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * @type string $page_token + * A page token, received from a previous + * [FeatureGroupAdminService.ListFeatureGroups][] call. + * Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureGroupAdminService.ListFeatureGroups][] must + * match the call that provided the page token. + * @type string $order_by + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the Location to list FeatureGroups. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Lists the FeatureGroups that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureGroups created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureGroups with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + * @return string + */ + public function getFilter() + { + return $this->filter; + } + + /** + * Lists the FeatureGroups that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureGroups created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureGroups with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + * @param string $var + * @return $this + */ + public function setFilter($var) + { + GPBUtil::checkString($var, True); + $this->filter = $var; + + return $this; + } + + /** + * The maximum number of FeatureGroups to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureGroups will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + * @return int + */ + public function getPageSize() + { + return $this->page_size; + } + + /** + * The maximum number of FeatureGroups to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureGroups will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + * @param int $var + * @return $this + */ + public function setPageSize($var) + { + GPBUtil::checkInt32($var); + $this->page_size = $var; + + return $this; + } + + /** + * A page token, received from a previous + * [FeatureGroupAdminService.ListFeatureGroups][] call. + * Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureGroupAdminService.ListFeatureGroups][] must + * match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @return string + */ + public function getPageToken() + { + return $this->page_token; + } + + /** + * A page token, received from a previous + * [FeatureGroupAdminService.ListFeatureGroups][] call. + * Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureGroupAdminService.ListFeatureGroups][] must + * match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @param string $var + * @return $this + */ + public function setPageToken($var) + { + GPBUtil::checkString($var, True); + $this->page_token = $var; + + return $this; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @return string + */ + public function getOrderBy() + { + return $this->order_by; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @param string $var + * @return $this + */ + public function setOrderBy($var) + { + GPBUtil::checkString($var, True); + $this->order_by = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureGroupsResponse.php b/AiPlatform/src/V1/ListFeatureGroupsResponse.php new file mode 100644 index 000000000000..70cd21500da7 --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureGroupsResponse.php @@ -0,0 +1,114 @@ +google.cloud.aiplatform.v1.ListFeatureGroupsResponse + */ +class ListFeatureGroupsResponse extends \Google\Protobuf\Internal\Message +{ + /** + * The FeatureGroups matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureGroup feature_groups = 1; + */ + private $feature_groups; + /** + * A token, which can be sent as + * [ListFeatureGroupsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureGroupsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + */ + private $next_page_token = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FeatureGroup>|\Google\Protobuf\Internal\RepeatedField $feature_groups + * The FeatureGroups matching the request. + * @type string $next_page_token + * A token, which can be sent as + * [ListFeatureGroupsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureGroupsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * The FeatureGroups matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureGroup feature_groups = 1; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureGroups() + { + return $this->feature_groups; + } + + /** + * The FeatureGroups matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureGroup feature_groups = 1; + * @param array<\Google\Cloud\AIPlatform\V1\FeatureGroup>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureGroups($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FeatureGroup::class); + $this->feature_groups = $arr; + + return $this; + } + + /** + * A token, which can be sent as + * [ListFeatureGroupsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureGroupsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @return string + */ + public function getNextPageToken() + { + return $this->next_page_token; + } + + /** + * A token, which can be sent as + * [ListFeatureGroupsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureGroupsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @param string $var + * @return $this + */ + public function setNextPageToken($var) + { + GPBUtil::checkString($var, True); + $this->next_page_token = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureOnlineStoresRequest.php b/AiPlatform/src/V1/ListFeatureOnlineStoresRequest.php new file mode 100644 index 000000000000..95119cc96d73 --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureOnlineStoresRequest.php @@ -0,0 +1,328 @@ +google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest + */ +class ListFeatureOnlineStoresRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Lists the FeatureOnlineStores that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureOnlineStores created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureOnlineStores with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + */ + private $filter = ''; + /** + * The maximum number of FeatureOnlineStores to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureOnlineStores will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + */ + private $page_size = 0; + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + */ + private $page_token = ''; + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + */ + private $order_by = ''; + + /** + * @param string $parent Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::locationName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\ListFeatureOnlineStoresRequest + * + * @experimental + */ + public static function build(string $parent): self + { + return (new self()) + ->setParent($parent); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * @type string $filter + * Lists the FeatureOnlineStores that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureOnlineStores created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureOnlineStores with label "env" set to "prod". + * @type int $page_size + * The maximum number of FeatureOnlineStores to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureOnlineStores will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * @type string $page_token + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * must match the call that provided the page token. + * @type string $order_by + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the Location to list FeatureOnlineStores. + * Format: + * `projects/{project}/locations/{location}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Lists the FeatureOnlineStores that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureOnlineStores created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureOnlineStores with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + * @return string + */ + public function getFilter() + { + return $this->filter; + } + + /** + * Lists the FeatureOnlineStores that match the filter expression. The + * following fields are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `<=`, and `>=` comparisons. + * Values must be + * in RFC 3339 format. + * * `labels`: Supports key-value equality and key presence. + * Examples: + * * `create_time > "2020-01-01" OR update_time > "2020-01-01"` + * FeatureOnlineStores created or updated after 2020-01-01. + * * `labels.env = "prod"` + * FeatureOnlineStores with label "env" set to "prod". + * + * Generated from protobuf field string filter = 2; + * @param string $var + * @return $this + */ + public function setFilter($var) + { + GPBUtil::checkString($var, True); + $this->filter = $var; + + return $this; + } + + /** + * The maximum number of FeatureOnlineStores to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureOnlineStores will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + * @return int + */ + public function getPageSize() + { + return $this->page_size; + } + + /** + * The maximum number of FeatureOnlineStores to return. The service may return + * fewer than this value. If unspecified, at most 100 FeatureOnlineStores will + * be returned. The maximum value is 100; any value greater than 100 will be + * coerced to 100. + * + * Generated from protobuf field int32 page_size = 3; + * @param int $var + * @return $this + */ + public function setPageSize($var) + { + GPBUtil::checkInt32($var); + $this->page_size = $var; + + return $this; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @return string + */ + public function getPageToken() + { + return $this->page_token; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureOnlineStores][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureOnlineStores] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @param string $var + * @return $this + */ + public function setPageToken($var) + { + GPBUtil::checkString($var, True); + $this->page_token = $var; + + return $this; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @return string + */ + public function getOrderBy() + { + return $this->order_by; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported Fields: + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @param string $var + * @return $this + */ + public function setOrderBy($var) + { + GPBUtil::checkString($var, True); + $this->order_by = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureOnlineStoresResponse.php b/AiPlatform/src/V1/ListFeatureOnlineStoresResponse.php new file mode 100644 index 000000000000..16ff0903194d --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureOnlineStoresResponse.php @@ -0,0 +1,114 @@ +google.cloud.aiplatform.v1.ListFeatureOnlineStoresResponse + */ +class ListFeatureOnlineStoresResponse extends \Google\Protobuf\Internal\Message +{ + /** + * The FeatureOnlineStores matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_stores = 1; + */ + private $feature_online_stores; + /** + * A token, which can be sent as + * [ListFeatureOnlineStoresRequest.page_token][google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + */ + private $next_page_token = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FeatureOnlineStore>|\Google\Protobuf\Internal\RepeatedField $feature_online_stores + * The FeatureOnlineStores matching the request. + * @type string $next_page_token + * A token, which can be sent as + * [ListFeatureOnlineStoresRequest.page_token][google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * The FeatureOnlineStores matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_stores = 1; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureOnlineStores() + { + return $this->feature_online_stores; + } + + /** + * The FeatureOnlineStores matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_stores = 1; + * @param array<\Google\Cloud\AIPlatform\V1\FeatureOnlineStore>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureOnlineStores($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore::class); + $this->feature_online_stores = $arr; + + return $this; + } + + /** + * A token, which can be sent as + * [ListFeatureOnlineStoresRequest.page_token][google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @return string + */ + public function getNextPageToken() + { + return $this->next_page_token; + } + + /** + * A token, which can be sent as + * [ListFeatureOnlineStoresRequest.page_token][google.cloud.aiplatform.v1.ListFeatureOnlineStoresRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @param string $var + * @return $this + */ + public function setNextPageToken($var) + { + GPBUtil::checkString($var, True); + $this->next_page_token = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureViewSyncsRequest.php b/AiPlatform/src/V1/ListFeatureViewSyncsRequest.php new file mode 100644 index 000000000000..ba0f765d69b6 --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureViewSyncsRequest.php @@ -0,0 +1,296 @@ +google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest + */ +class ListFeatureViewSyncsRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Lists the FeatureViewSyncs that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViewSyncs + * created after 2020-01-31T15:30:00.000000Z. + * + * Generated from protobuf field string filter = 2; + */ + private $filter = ''; + /** + * The maximum number of FeatureViewSyncs to return. The service may return + * fewer than this value. If unspecified, at most 1000 FeatureViewSyncs will + * be returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + */ + private $page_size = 0; + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + */ + private $page_token = ''; + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `create_time` + * + * Generated from protobuf field string order_by = 5; + */ + private $order_by = ''; + + /** + * @param string $parent Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureViewName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\ListFeatureViewSyncsRequest + * + * @experimental + */ + public static function build(string $parent): self + { + return (new self()) + ->setParent($parent); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @type string $filter + * Lists the FeatureViewSyncs that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViewSyncs + * created after 2020-01-31T15:30:00.000000Z. + * @type int $page_size + * The maximum number of FeatureViewSyncs to return. The service may return + * fewer than this value. If unspecified, at most 1000 FeatureViewSyncs will + * be returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * @type string $page_token + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * must match the call that provided the page token. + * @type string $order_by + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `create_time` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the FeatureView to list FeatureViewSyncs. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Lists the FeatureViewSyncs that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViewSyncs + * created after 2020-01-31T15:30:00.000000Z. + * + * Generated from protobuf field string filter = 2; + * @return string + */ + public function getFilter() + { + return $this->filter; + } + + /** + * Lists the FeatureViewSyncs that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViewSyncs + * created after 2020-01-31T15:30:00.000000Z. + * + * Generated from protobuf field string filter = 2; + * @param string $var + * @return $this + */ + public function setFilter($var) + { + GPBUtil::checkString($var, True); + $this->filter = $var; + + return $this; + } + + /** + * The maximum number of FeatureViewSyncs to return. The service may return + * fewer than this value. If unspecified, at most 1000 FeatureViewSyncs will + * be returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + * @return int + */ + public function getPageSize() + { + return $this->page_size; + } + + /** + * The maximum number of FeatureViewSyncs to return. The service may return + * fewer than this value. If unspecified, at most 1000 FeatureViewSyncs will + * be returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + * @param int $var + * @return $this + */ + public function setPageSize($var) + { + GPBUtil::checkInt32($var); + $this->page_size = $var; + + return $this; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @return string + */ + public function getPageToken() + { + return $this->page_token; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViewSyncs][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViewSyncs] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @param string $var + * @return $this + */ + public function setPageToken($var) + { + GPBUtil::checkString($var, True); + $this->page_token = $var; + + return $this; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `create_time` + * + * Generated from protobuf field string order_by = 5; + * @return string + */ + public function getOrderBy() + { + return $this->order_by; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `create_time` + * + * Generated from protobuf field string order_by = 5; + * @param string $var + * @return $this + */ + public function setOrderBy($var) + { + GPBUtil::checkString($var, True); + $this->order_by = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureViewSyncsResponse.php b/AiPlatform/src/V1/ListFeatureViewSyncsResponse.php new file mode 100644 index 000000000000..23ac5c02a9dc --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureViewSyncsResponse.php @@ -0,0 +1,114 @@ +google.cloud.aiplatform.v1.ListFeatureViewSyncsResponse + */ +class ListFeatureViewSyncsResponse extends \Google\Protobuf\Internal\Message +{ + /** + * The FeatureViewSyncs matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureViewSync feature_view_syncs = 1; + */ + private $feature_view_syncs; + /** + * A token, which can be sent as + * [ListFeatureViewSyncsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + */ + private $next_page_token = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FeatureViewSync>|\Google\Protobuf\Internal\RepeatedField $feature_view_syncs + * The FeatureViewSyncs matching the request. + * @type string $next_page_token + * A token, which can be sent as + * [ListFeatureViewSyncsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * The FeatureViewSyncs matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureViewSync feature_view_syncs = 1; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureViewSyncs() + { + return $this->feature_view_syncs; + } + + /** + * The FeatureViewSyncs matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureViewSync feature_view_syncs = 1; + * @param array<\Google\Cloud\AIPlatform\V1\FeatureViewSync>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureViewSyncs($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FeatureViewSync::class); + $this->feature_view_syncs = $arr; + + return $this; + } + + /** + * A token, which can be sent as + * [ListFeatureViewSyncsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @return string + */ + public function getNextPageToken() + { + return $this->next_page_token; + } + + /** + * A token, which can be sent as + * [ListFeatureViewSyncsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewSyncsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @param string $var + * @return $this + */ + public function setNextPageToken($var) + { + GPBUtil::checkString($var, True); + $this->next_page_token = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureViewsRequest.php b/AiPlatform/src/V1/ListFeatureViewsRequest.php new file mode 100644 index 000000000000..43c458596b8a --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureViewsRequest.php @@ -0,0 +1,336 @@ +google.cloud.aiplatform.v1.ListFeatureViewsRequest + */ +class ListFeatureViewsRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $parent = ''; + /** + * Lists the FeatureViews that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViews + * created or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> FeatureViews having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any FeatureView which has a label with 'env' as the + * key. + * + * Generated from protobuf field string filter = 2; + */ + private $filter = ''; + /** + * The maximum number of FeatureViews to return. The service may return fewer + * than this value. If unspecified, at most 1000 FeatureViews will be + * returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + */ + private $page_size = 0; + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + */ + private $page_token = ''; + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `feature_view_id` + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + */ + private $order_by = ''; + + /** + * @param string $parent Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureOnlineStoreName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\ListFeatureViewsRequest + * + * @experimental + */ + public static function build(string $parent): self + { + return (new self()) + ->setParent($parent); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $parent + * Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @type string $filter + * Lists the FeatureViews that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViews + * created or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> FeatureViews having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any FeatureView which has a label with 'env' as the + * key. + * @type int $page_size + * The maximum number of FeatureViews to return. The service may return fewer + * than this value. If unspecified, at most 1000 FeatureViews will be + * returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * @type string $page_token + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * must match the call that provided the page token. + * @type string $order_by + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `feature_view_id` + * * `create_time` + * * `update_time` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getParent() + { + return $this->parent; + } + + /** + * Required. The resource name of the FeatureOnlineStore to list FeatureViews. + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setParent($var) + { + GPBUtil::checkString($var, True); + $this->parent = $var; + + return $this; + } + + /** + * Lists the FeatureViews that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViews + * created or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> FeatureViews having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any FeatureView which has a label with 'env' as the + * key. + * + * Generated from protobuf field string filter = 2; + * @return string + */ + public function getFilter() + { + return $this->filter; + } + + /** + * Lists the FeatureViews that match the filter expression. The following + * filters are supported: + * * `create_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `update_time`: Supports `=`, `!=`, `<`, `>`, `>=`, and `<=` comparisons. + * Values must be in RFC 3339 format. + * * `labels`: Supports key-value equality as well as key presence. + * Examples: + * * `create_time > \"2020-01-31T15:30:00.000000Z\" OR + * update_time > \"2020-01-31T15:30:00.000000Z\"` --> FeatureViews + * created or updated after 2020-01-31T15:30:00.000000Z. + * * `labels.active = yes AND labels.env = prod` --> FeatureViews having both + * (active: yes) and (env: prod) labels. + * * `labels.env: *` --> Any FeatureView which has a label with 'env' as the + * key. + * + * Generated from protobuf field string filter = 2; + * @param string $var + * @return $this + */ + public function setFilter($var) + { + GPBUtil::checkString($var, True); + $this->filter = $var; + + return $this; + } + + /** + * The maximum number of FeatureViews to return. The service may return fewer + * than this value. If unspecified, at most 1000 FeatureViews will be + * returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + * @return int + */ + public function getPageSize() + { + return $this->page_size; + } + + /** + * The maximum number of FeatureViews to return. The service may return fewer + * than this value. If unspecified, at most 1000 FeatureViews will be + * returned. The maximum value is 1000; any value greater than 1000 will be + * coerced to 1000. + * + * Generated from protobuf field int32 page_size = 3; + * @param int $var + * @return $this + */ + public function setPageSize($var) + { + GPBUtil::checkInt32($var); + $this->page_size = $var; + + return $this; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @return string + */ + public function getPageToken() + { + return $this->page_token; + } + + /** + * A page token, received from a previous + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * call. Provide this to retrieve the subsequent page. + * When paginating, all other parameters provided to + * [FeatureOnlineStoreAdminService.ListFeatureViews][google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService.ListFeatureViews] + * must match the call that provided the page token. + * + * Generated from protobuf field string page_token = 4; + * @param string $var + * @return $this + */ + public function setPageToken($var) + { + GPBUtil::checkString($var, True); + $this->page_token = $var; + + return $this; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `feature_view_id` + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @return string + */ + public function getOrderBy() + { + return $this->order_by; + } + + /** + * A comma-separated list of fields to order by, sorted in ascending order. + * Use "desc" after a field name for descending. + * Supported fields: + * * `feature_view_id` + * * `create_time` + * * `update_time` + * + * Generated from protobuf field string order_by = 5; + * @param string $var + * @return $this + */ + public function setOrderBy($var) + { + GPBUtil::checkString($var, True); + $this->order_by = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeatureViewsResponse.php b/AiPlatform/src/V1/ListFeatureViewsResponse.php new file mode 100644 index 000000000000..de303847ecf2 --- /dev/null +++ b/AiPlatform/src/V1/ListFeatureViewsResponse.php @@ -0,0 +1,114 @@ +google.cloud.aiplatform.v1.ListFeatureViewsResponse + */ +class ListFeatureViewsResponse extends \Google\Protobuf\Internal\Message +{ + /** + * The FeatureViews matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView feature_views = 1; + */ + private $feature_views; + /** + * A token, which can be sent as + * [ListFeatureViewsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + */ + private $next_page_token = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type array<\Google\Cloud\AIPlatform\V1\FeatureView>|\Google\Protobuf\Internal\RepeatedField $feature_views + * The FeatureViews matching the request. + * @type string $next_page_token + * A token, which can be sent as + * [ListFeatureViewsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * The FeatureViews matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView feature_views = 1; + * @return \Google\Protobuf\Internal\RepeatedField + */ + public function getFeatureViews() + { + return $this->feature_views; + } + + /** + * The FeatureViews matching the request. + * + * Generated from protobuf field repeated .google.cloud.aiplatform.v1.FeatureView feature_views = 1; + * @param array<\Google\Cloud\AIPlatform\V1\FeatureView>|\Google\Protobuf\Internal\RepeatedField $var + * @return $this + */ + public function setFeatureViews($var) + { + $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\AIPlatform\V1\FeatureView::class); + $this->feature_views = $arr; + + return $this; + } + + /** + * A token, which can be sent as + * [ListFeatureViewsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @return string + */ + public function getNextPageToken() + { + return $this->next_page_token; + } + + /** + * A token, which can be sent as + * [ListFeatureViewsRequest.page_token][google.cloud.aiplatform.v1.ListFeatureViewsRequest.page_token] + * to retrieve the next page. If this field is omitted, there are no + * subsequent pages. + * + * Generated from protobuf field string next_page_token = 2; + * @param string $var + * @return $this + */ + public function setNextPageToken($var) + { + GPBUtil::checkString($var, True); + $this->next_page_token = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/ListFeaturesRequest.php b/AiPlatform/src/V1/ListFeaturesRequest.php index bce1f290ab5a..443cc004e222 100644 --- a/AiPlatform/src/V1/ListFeaturesRequest.php +++ b/AiPlatform/src/V1/ListFeaturesRequest.php @@ -11,6 +11,8 @@ /** * Request message for * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures]. + * Request message for + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures]. * * Generated from protobuf message google.cloud.aiplatform.v1.ListFeaturesRequest */ @@ -18,8 +20,10 @@ class ListFeaturesRequest extends \Google\Protobuf\Internal\Message { /** * Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { */ @@ -58,9 +62,13 @@ class ListFeaturesRequest extends \Google\Protobuf\Internal\Message /** * A page token, received from a previous * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * call or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * call. Provide this to retrieve the subsequent page. * When paginating, all other parameters provided to * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * or or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * must match the call that provided the page token. * * Generated from protobuf field string page_token = 4; @@ -71,7 +79,7 @@ class ListFeaturesRequest extends \Google\Protobuf\Internal\Message * Use "desc" after a field name for descending. * Supported fields: * * `feature_id` - * * `value_type` + * * `value_type` (Not supported for FeatureRegistry Feature) * * `create_time` * * `update_time` * @@ -85,6 +93,7 @@ class ListFeaturesRequest extends \Google\Protobuf\Internal\Message */ private $read_mask = null; /** + * Only applicable for Vertex AI Feature Store (Legacy). * If set, return the most recent * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] * of stats for each Feature in response. Valid value is [0, 10]. If number of @@ -98,8 +107,10 @@ class ListFeaturesRequest extends \Google\Protobuf\Internal\Message /** * @param string $parent Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * Please see {@see FeaturestoreServiceClient::entityTypeName()} for help formatting this field. * * @return \Google\Cloud\AIPlatform\V1\ListFeaturesRequest @@ -120,8 +131,10 @@ public static function build(string $parent): self * * @type string $parent * Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * @type string $filter * Lists the Features that match the filter expression. The following * filters are supported: @@ -148,21 +161,26 @@ public static function build(string $parent): self * @type string $page_token * A page token, received from a previous * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * call or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * call. Provide this to retrieve the subsequent page. * When paginating, all other parameters provided to * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * or or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * must match the call that provided the page token. * @type string $order_by * A comma-separated list of fields to order by, sorted in ascending order. * Use "desc" after a field name for descending. * Supported fields: * * `feature_id` - * * `value_type` + * * `value_type` (Not supported for FeatureRegistry Feature) * * `create_time` * * `update_time` * @type \Google\Protobuf\FieldMask $read_mask * Mask specifying which fields to read. * @type int $latest_stats_count + * Only applicable for Vertex AI Feature Store (Legacy). * If set, return the most recent * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] * of stats for each Feature in response. Valid value is [0, 10]. If number of @@ -178,8 +196,10 @@ public function __construct($data = NULL) { /** * Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @return string @@ -191,8 +211,10 @@ public function getParent() /** * Required. The resource name of the Location to list Features. - * Format: + * Format for entity_type as parent: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}` + * Format for feature_group as parent: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` * * Generated from protobuf field string parent = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { * @param string $var @@ -299,9 +321,13 @@ public function setPageSize($var) /** * A page token, received from a previous * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * call or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * call. Provide this to retrieve the subsequent page. * When paginating, all other parameters provided to * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * or or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * must match the call that provided the page token. * * Generated from protobuf field string page_token = 4; @@ -315,9 +341,13 @@ public function getPageToken() /** * A page token, received from a previous * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * call or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * call. Provide this to retrieve the subsequent page. * When paginating, all other parameters provided to * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures] + * or or + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures] * must match the call that provided the page token. * * Generated from protobuf field string page_token = 4; @@ -337,7 +367,7 @@ public function setPageToken($var) * Use "desc" after a field name for descending. * Supported fields: * * `feature_id` - * * `value_type` + * * `value_type` (Not supported for FeatureRegistry Feature) * * `create_time` * * `update_time` * @@ -354,7 +384,7 @@ public function getOrderBy() * Use "desc" after a field name for descending. * Supported fields: * * `feature_id` - * * `value_type` + * * `value_type` (Not supported for FeatureRegistry Feature) * * `create_time` * * `update_time` * @@ -407,6 +437,7 @@ public function setReadMask($var) } /** + * Only applicable for Vertex AI Feature Store (Legacy). * If set, return the most recent * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] * of stats for each Feature in response. Valid value is [0, 10]. If number of @@ -423,6 +454,7 @@ public function getLatestStatsCount() } /** + * Only applicable for Vertex AI Feature Store (Legacy). * If set, return the most recent * [ListFeaturesRequest.latest_stats_count][google.cloud.aiplatform.v1.ListFeaturesRequest.latest_stats_count] * of stats for each Feature in response. Valid value is [0, 10]. If number of diff --git a/AiPlatform/src/V1/ListFeaturesResponse.php b/AiPlatform/src/V1/ListFeaturesResponse.php index c03e6d86b57d..ec4bb57e561e 100644 --- a/AiPlatform/src/V1/ListFeaturesResponse.php +++ b/AiPlatform/src/V1/ListFeaturesResponse.php @@ -11,6 +11,8 @@ /** * Response message for * [FeaturestoreService.ListFeatures][google.cloud.aiplatform.v1.FeaturestoreService.ListFeatures]. + * Response message for + * [FeatureRegistryService.ListFeatures][google.cloud.aiplatform.v1.FeatureRegistryService.ListFeatures]. * * Generated from protobuf message google.cloud.aiplatform.v1.ListFeaturesResponse */ diff --git a/AiPlatform/src/V1/MachineSpec.php b/AiPlatform/src/V1/MachineSpec.php index ab211372c289..33dfcf5267e6 100644 --- a/AiPlatform/src/V1/MachineSpec.php +++ b/AiPlatform/src/V1/MachineSpec.php @@ -44,6 +44,13 @@ class MachineSpec extends \Google\Protobuf\Internal\Message * Generated from protobuf field int32 accelerator_count = 3; */ private $accelerator_count = 0; + /** + * Immutable. The topology of the TPUs. Corresponds to the TPU topologies + * available from GKE. (Example: tpu_topology: "2x2x1"). + * + * Generated from protobuf field string tpu_topology = 4 [(.google.api.field_behavior) = IMMUTABLE]; + */ + private $tpu_topology = ''; /** * Constructor. @@ -68,6 +75,9 @@ class MachineSpec extends \Google\Protobuf\Internal\Message * [accelerator_count][google.cloud.aiplatform.v1.MachineSpec.accelerator_count]. * @type int $accelerator_count * The number of accelerators to attach to the machine. + * @type string $tpu_topology + * Immutable. The topology of the TPUs. Corresponds to the TPU topologies + * available from GKE. (Example: tpu_topology: "2x2x1"). * } */ public function __construct($data = NULL) { @@ -175,5 +185,33 @@ public function setAcceleratorCount($var) return $this; } + /** + * Immutable. The topology of the TPUs. Corresponds to the TPU topologies + * available from GKE. (Example: tpu_topology: "2x2x1"). + * + * Generated from protobuf field string tpu_topology = 4 [(.google.api.field_behavior) = IMMUTABLE]; + * @return string + */ + public function getTpuTopology() + { + return $this->tpu_topology; + } + + /** + * Immutable. The topology of the TPUs. Corresponds to the TPU topologies + * available from GKE. (Example: tpu_topology: "2x2x1"). + * + * Generated from protobuf field string tpu_topology = 4 [(.google.api.field_behavior) = IMMUTABLE]; + * @param string $var + * @return $this + */ + public function setTpuTopology($var) + { + GPBUtil::checkString($var, True); + $this->tpu_topology = $var; + + return $this; + } + } diff --git a/AiPlatform/src/V1/StudySpec.php b/AiPlatform/src/V1/StudySpec.php index 611676c0bcd9..5c324dbebffc 100644 --- a/AiPlatform/src/V1/StudySpec.php +++ b/AiPlatform/src/V1/StudySpec.php @@ -47,6 +47,13 @@ class StudySpec extends \Google\Protobuf\Internal\Message * Generated from protobuf field .google.cloud.aiplatform.v1.StudySpec.MeasurementSelectionType measurement_selection_type = 7; */ private $measurement_selection_type = 0; + /** + * Conditions for automated stopping of a Study. Enable automated stopping by + * configuring at least one condition. + * + * Generated from protobuf field optional .google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig study_stopping_config = 11; + */ + private $study_stopping_config = null; protected $automated_stopping_spec; /** @@ -73,6 +80,9 @@ class StudySpec extends \Google\Protobuf\Internal\Message * HyperparameterTuningJob or TrainingPipeline. * @type int $measurement_selection_type * Describe which measurement selection type will be used + * @type \Google\Cloud\AIPlatform\V1\StudySpec\StudyStoppingConfig $study_stopping_config + * Conditions for automated stopping of a Study. Enable automated stopping by + * configuring at least one condition. * } */ public function __construct($data = NULL) { @@ -307,6 +317,44 @@ public function setMeasurementSelectionType($var) return $this; } + /** + * Conditions for automated stopping of a Study. Enable automated stopping by + * configuring at least one condition. + * + * Generated from protobuf field optional .google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig study_stopping_config = 11; + * @return \Google\Cloud\AIPlatform\V1\StudySpec\StudyStoppingConfig|null + */ + public function getStudyStoppingConfig() + { + return $this->study_stopping_config; + } + + public function hasStudyStoppingConfig() + { + return isset($this->study_stopping_config); + } + + public function clearStudyStoppingConfig() + { + unset($this->study_stopping_config); + } + + /** + * Conditions for automated stopping of a Study. Enable automated stopping by + * configuring at least one condition. + * + * Generated from protobuf field optional .google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig study_stopping_config = 11; + * @param \Google\Cloud\AIPlatform\V1\StudySpec\StudyStoppingConfig $var + * @return $this + */ + public function setStudyStoppingConfig($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\StudySpec\StudyStoppingConfig::class); + $this->study_stopping_config = $var; + + return $this; + } + /** * @return string */ diff --git a/AiPlatform/src/V1/StudySpec/StudyStoppingConfig.php b/AiPlatform/src/V1/StudySpec/StudyStoppingConfig.php new file mode 100644 index 000000000000..6e09fb9dff6b --- /dev/null +++ b/AiPlatform/src/V1/StudySpec/StudyStoppingConfig.php @@ -0,0 +1,577 @@ +google.cloud.aiplatform.v1.StudySpec.StudyStoppingConfig + */ +class StudyStoppingConfig extends \Google\Protobuf\Internal\Message +{ + /** + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * + * Generated from protobuf field .google.protobuf.BoolValue should_stop_asap = 1; + */ + private $should_stop_asap = null; + /** + * Each "stopping rule" in this proto specifies an "if" condition. Before + * Vizier would generate a new suggestion, it first checks each specified + * stopping rule, from top to bottom in this list. + * Note that the first few rules (e.g. minimum_runtime_constraint, + * min_num_trials) will prevent other stopping rules from being evaluated + * until they are met. For example, setting `min_num_trials=5` and + * `always_stop_after= 1 hour` means that the Study will ONLY stop after it + * has 5 COMPLETED trials, even if more than an hour has passed since its + * creation. It follows the first applicable rule (whose "if" condition is + * satisfied) to make a stopping decision. If none of the specified rules + * are applicable, then Vizier decides that the study should not stop. + * If Vizier decides that the study should stop, the study enters + * STOPPING state (or STOPPING_ASAP if should_stop_asap = true). + * IMPORTANT: The automatic study state transition happens precisely as + * described above; that is, deleting trials or updating StudyConfig NEVER + * automatically moves the study state back to ACTIVE. If you want to + * _resume_ a Study that was stopped, 1) change the stopping conditions if + * necessary, 2) activate the study, and then 3) ask for suggestions. + * If the specified time or duration has not passed, do not stop the + * study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint minimum_runtime_constraint = 2; + */ + private $minimum_runtime_constraint = null; + /** + * If the specified time or duration has passed, stop the study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint maximum_runtime_constraint = 3; + */ + private $maximum_runtime_constraint = null; + /** + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * + * Generated from protobuf field .google.protobuf.Int32Value min_num_trials = 4; + */ + private $min_num_trials = null; + /** + * If there are more than this many trials, stop the study. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials = 5; + */ + private $max_num_trials = null; + /** + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials_no_progress = 6; + */ + private $max_num_trials_no_progress = null; + /** + * If the objective value has not improved for this much time, stop the + * study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Duration max_duration_no_progress = 7; + */ + private $max_duration_no_progress = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Protobuf\BoolValue $should_stop_asap + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * @type \Google\Cloud\AIPlatform\V1\StudyTimeConstraint $minimum_runtime_constraint + * Each "stopping rule" in this proto specifies an "if" condition. Before + * Vizier would generate a new suggestion, it first checks each specified + * stopping rule, from top to bottom in this list. + * Note that the first few rules (e.g. minimum_runtime_constraint, + * min_num_trials) will prevent other stopping rules from being evaluated + * until they are met. For example, setting `min_num_trials=5` and + * `always_stop_after= 1 hour` means that the Study will ONLY stop after it + * has 5 COMPLETED trials, even if more than an hour has passed since its + * creation. It follows the first applicable rule (whose "if" condition is + * satisfied) to make a stopping decision. If none of the specified rules + * are applicable, then Vizier decides that the study should not stop. + * If Vizier decides that the study should stop, the study enters + * STOPPING state (or STOPPING_ASAP if should_stop_asap = true). + * IMPORTANT: The automatic study state transition happens precisely as + * described above; that is, deleting trials or updating StudyConfig NEVER + * automatically moves the study state back to ACTIVE. If you want to + * _resume_ a Study that was stopped, 1) change the stopping conditions if + * necessary, 2) activate the study, and then 3) ask for suggestions. + * If the specified time or duration has not passed, do not stop the + * study. + * @type \Google\Cloud\AIPlatform\V1\StudyTimeConstraint $maximum_runtime_constraint + * If the specified time or duration has passed, stop the study. + * @type \Google\Protobuf\Int32Value $min_num_trials + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * @type \Google\Protobuf\Int32Value $max_num_trials + * If there are more than this many trials, stop the study. + * @type \Google\Protobuf\Int32Value $max_num_trials_no_progress + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * @type \Google\Protobuf\Duration $max_duration_no_progress + * If the objective value has not improved for this much time, stop the + * study. + * WARNING: Effective only for single-objective studies. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\Study::initOnce(); + parent::__construct($data); + } + + /** + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * + * Generated from protobuf field .google.protobuf.BoolValue should_stop_asap = 1; + * @return \Google\Protobuf\BoolValue|null + */ + public function getShouldStopAsap() + { + return $this->should_stop_asap; + } + + public function hasShouldStopAsap() + { + return isset($this->should_stop_asap); + } + + public function clearShouldStopAsap() + { + unset($this->should_stop_asap); + } + + /** + * Returns the unboxed value from getShouldStopAsap() + + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * + * Generated from protobuf field .google.protobuf.BoolValue should_stop_asap = 1; + * @return bool|null + */ + public function getShouldStopAsapValue() + { + return $this->readWrapperValue("should_stop_asap"); + } + + /** + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * + * Generated from protobuf field .google.protobuf.BoolValue should_stop_asap = 1; + * @param \Google\Protobuf\BoolValue $var + * @return $this + */ + public function setShouldStopAsap($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class); + $this->should_stop_asap = $var; + + return $this; + } + + /** + * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object. + + * If true, a Study enters STOPPING_ASAP whenever it would normally enters + * STOPPING state. + * The bottom line is: set to true if you want to interrupt on-going + * evaluations of Trials as soon as the study stopping condition is met. + * (Please see Study.State documentation for the source of truth). + * + * Generated from protobuf field .google.protobuf.BoolValue should_stop_asap = 1; + * @param bool|null $var + * @return $this + */ + public function setShouldStopAsapValue($var) + { + $this->writeWrapperValue("should_stop_asap", $var); + return $this;} + + /** + * Each "stopping rule" in this proto specifies an "if" condition. Before + * Vizier would generate a new suggestion, it first checks each specified + * stopping rule, from top to bottom in this list. + * Note that the first few rules (e.g. minimum_runtime_constraint, + * min_num_trials) will prevent other stopping rules from being evaluated + * until they are met. For example, setting `min_num_trials=5` and + * `always_stop_after= 1 hour` means that the Study will ONLY stop after it + * has 5 COMPLETED trials, even if more than an hour has passed since its + * creation. It follows the first applicable rule (whose "if" condition is + * satisfied) to make a stopping decision. If none of the specified rules + * are applicable, then Vizier decides that the study should not stop. + * If Vizier decides that the study should stop, the study enters + * STOPPING state (or STOPPING_ASAP if should_stop_asap = true). + * IMPORTANT: The automatic study state transition happens precisely as + * described above; that is, deleting trials or updating StudyConfig NEVER + * automatically moves the study state back to ACTIVE. If you want to + * _resume_ a Study that was stopped, 1) change the stopping conditions if + * necessary, 2) activate the study, and then 3) ask for suggestions. + * If the specified time or duration has not passed, do not stop the + * study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint minimum_runtime_constraint = 2; + * @return \Google\Cloud\AIPlatform\V1\StudyTimeConstraint|null + */ + public function getMinimumRuntimeConstraint() + { + return $this->minimum_runtime_constraint; + } + + public function hasMinimumRuntimeConstraint() + { + return isset($this->minimum_runtime_constraint); + } + + public function clearMinimumRuntimeConstraint() + { + unset($this->minimum_runtime_constraint); + } + + /** + * Each "stopping rule" in this proto specifies an "if" condition. Before + * Vizier would generate a new suggestion, it first checks each specified + * stopping rule, from top to bottom in this list. + * Note that the first few rules (e.g. minimum_runtime_constraint, + * min_num_trials) will prevent other stopping rules from being evaluated + * until they are met. For example, setting `min_num_trials=5` and + * `always_stop_after= 1 hour` means that the Study will ONLY stop after it + * has 5 COMPLETED trials, even if more than an hour has passed since its + * creation. It follows the first applicable rule (whose "if" condition is + * satisfied) to make a stopping decision. If none of the specified rules + * are applicable, then Vizier decides that the study should not stop. + * If Vizier decides that the study should stop, the study enters + * STOPPING state (or STOPPING_ASAP if should_stop_asap = true). + * IMPORTANT: The automatic study state transition happens precisely as + * described above; that is, deleting trials or updating StudyConfig NEVER + * automatically moves the study state back to ACTIVE. If you want to + * _resume_ a Study that was stopped, 1) change the stopping conditions if + * necessary, 2) activate the study, and then 3) ask for suggestions. + * If the specified time or duration has not passed, do not stop the + * study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint minimum_runtime_constraint = 2; + * @param \Google\Cloud\AIPlatform\V1\StudyTimeConstraint $var + * @return $this + */ + public function setMinimumRuntimeConstraint($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\StudyTimeConstraint::class); + $this->minimum_runtime_constraint = $var; + + return $this; + } + + /** + * If the specified time or duration has passed, stop the study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint maximum_runtime_constraint = 3; + * @return \Google\Cloud\AIPlatform\V1\StudyTimeConstraint|null + */ + public function getMaximumRuntimeConstraint() + { + return $this->maximum_runtime_constraint; + } + + public function hasMaximumRuntimeConstraint() + { + return isset($this->maximum_runtime_constraint); + } + + public function clearMaximumRuntimeConstraint() + { + unset($this->maximum_runtime_constraint); + } + + /** + * If the specified time or duration has passed, stop the study. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.StudyTimeConstraint maximum_runtime_constraint = 3; + * @param \Google\Cloud\AIPlatform\V1\StudyTimeConstraint $var + * @return $this + */ + public function setMaximumRuntimeConstraint($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\StudyTimeConstraint::class); + $this->maximum_runtime_constraint = $var; + + return $this; + } + + /** + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * + * Generated from protobuf field .google.protobuf.Int32Value min_num_trials = 4; + * @return \Google\Protobuf\Int32Value|null + */ + public function getMinNumTrials() + { + return $this->min_num_trials; + } + + public function hasMinNumTrials() + { + return isset($this->min_num_trials); + } + + public function clearMinNumTrials() + { + unset($this->min_num_trials); + } + + /** + * Returns the unboxed value from getMinNumTrials() + + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * + * Generated from protobuf field .google.protobuf.Int32Value min_num_trials = 4; + * @return int|null + */ + public function getMinNumTrialsValue() + { + return $this->readWrapperValue("min_num_trials"); + } + + /** + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * + * Generated from protobuf field .google.protobuf.Int32Value min_num_trials = 4; + * @param \Google\Protobuf\Int32Value $var + * @return $this + */ + public function setMinNumTrials($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Int32Value::class); + $this->min_num_trials = $var; + + return $this; + } + + /** + * Sets the field by wrapping a primitive type in a Google\Protobuf\Int32Value object. + + * If there are fewer than this many COMPLETED trials, do not stop the + * study. + * + * Generated from protobuf field .google.protobuf.Int32Value min_num_trials = 4; + * @param int|null $var + * @return $this + */ + public function setMinNumTrialsValue($var) + { + $this->writeWrapperValue("min_num_trials", $var); + return $this;} + + /** + * If there are more than this many trials, stop the study. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials = 5; + * @return \Google\Protobuf\Int32Value|null + */ + public function getMaxNumTrials() + { + return $this->max_num_trials; + } + + public function hasMaxNumTrials() + { + return isset($this->max_num_trials); + } + + public function clearMaxNumTrials() + { + unset($this->max_num_trials); + } + + /** + * Returns the unboxed value from getMaxNumTrials() + + * If there are more than this many trials, stop the study. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials = 5; + * @return int|null + */ + public function getMaxNumTrialsValue() + { + return $this->readWrapperValue("max_num_trials"); + } + + /** + * If there are more than this many trials, stop the study. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials = 5; + * @param \Google\Protobuf\Int32Value $var + * @return $this + */ + public function setMaxNumTrials($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Int32Value::class); + $this->max_num_trials = $var; + + return $this; + } + + /** + * Sets the field by wrapping a primitive type in a Google\Protobuf\Int32Value object. + + * If there are more than this many trials, stop the study. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials = 5; + * @param int|null $var + * @return $this + */ + public function setMaxNumTrialsValue($var) + { + $this->writeWrapperValue("max_num_trials", $var); + return $this;} + + /** + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials_no_progress = 6; + * @return \Google\Protobuf\Int32Value|null + */ + public function getMaxNumTrialsNoProgress() + { + return $this->max_num_trials_no_progress; + } + + public function hasMaxNumTrialsNoProgress() + { + return isset($this->max_num_trials_no_progress); + } + + public function clearMaxNumTrialsNoProgress() + { + unset($this->max_num_trials_no_progress); + } + + /** + * Returns the unboxed value from getMaxNumTrialsNoProgress() + + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials_no_progress = 6; + * @return int|null + */ + public function getMaxNumTrialsNoProgressValue() + { + return $this->readWrapperValue("max_num_trials_no_progress"); + } + + /** + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials_no_progress = 6; + * @param \Google\Protobuf\Int32Value $var + * @return $this + */ + public function setMaxNumTrialsNoProgress($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Int32Value::class); + $this->max_num_trials_no_progress = $var; + + return $this; + } + + /** + * Sets the field by wrapping a primitive type in a Google\Protobuf\Int32Value object. + + * If the objective value has not improved for this many consecutive + * trials, stop the study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Int32Value max_num_trials_no_progress = 6; + * @param int|null $var + * @return $this + */ + public function setMaxNumTrialsNoProgressValue($var) + { + $this->writeWrapperValue("max_num_trials_no_progress", $var); + return $this;} + + /** + * If the objective value has not improved for this much time, stop the + * study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Duration max_duration_no_progress = 7; + * @return \Google\Protobuf\Duration|null + */ + public function getMaxDurationNoProgress() + { + return $this->max_duration_no_progress; + } + + public function hasMaxDurationNoProgress() + { + return isset($this->max_duration_no_progress); + } + + public function clearMaxDurationNoProgress() + { + unset($this->max_duration_no_progress); + } + + /** + * If the objective value has not improved for this much time, stop the + * study. + * WARNING: Effective only for single-objective studies. + * + * Generated from protobuf field .google.protobuf.Duration max_duration_no_progress = 7; + * @param \Google\Protobuf\Duration $var + * @return $this + */ + public function setMaxDurationNoProgress($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class); + $this->max_duration_no_progress = $var; + + return $this; + } + +} + + diff --git a/AiPlatform/src/V1/StudyTimeConstraint.php b/AiPlatform/src/V1/StudyTimeConstraint.php new file mode 100644 index 000000000000..03ffd9a13ed4 --- /dev/null +++ b/AiPlatform/src/V1/StudyTimeConstraint.php @@ -0,0 +1,108 @@ +google.cloud.aiplatform.v1.StudyTimeConstraint + */ +class StudyTimeConstraint extends \Google\Protobuf\Internal\Message +{ + protected $constraint; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Protobuf\Duration $max_duration + * Counts the wallclock time passed since the creation of this Study. + * @type \Google\Protobuf\Timestamp $end_time + * Compares the wallclock time to this time. Must use UTC timezone. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\Study::initOnce(); + parent::__construct($data); + } + + /** + * Counts the wallclock time passed since the creation of this Study. + * + * Generated from protobuf field .google.protobuf.Duration max_duration = 1; + * @return \Google\Protobuf\Duration|null + */ + public function getMaxDuration() + { + return $this->readOneof(1); + } + + public function hasMaxDuration() + { + return $this->hasOneof(1); + } + + /** + * Counts the wallclock time passed since the creation of this Study. + * + * Generated from protobuf field .google.protobuf.Duration max_duration = 1; + * @param \Google\Protobuf\Duration $var + * @return $this + */ + public function setMaxDuration($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Duration::class); + $this->writeOneof(1, $var); + + return $this; + } + + /** + * Compares the wallclock time to this time. Must use UTC timezone. + * + * Generated from protobuf field .google.protobuf.Timestamp end_time = 2; + * @return \Google\Protobuf\Timestamp|null + */ + public function getEndTime() + { + return $this->readOneof(2); + } + + public function hasEndTime() + { + return $this->hasOneof(2); + } + + /** + * Compares the wallclock time to this time. Must use UTC timezone. + * + * Generated from protobuf field .google.protobuf.Timestamp end_time = 2; + * @param \Google\Protobuf\Timestamp $var + * @return $this + */ + public function setEndTime($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\Timestamp::class); + $this->writeOneof(2, $var); + + return $this; + } + + /** + * @return string + */ + public function getConstraint() + { + return $this->whichOneof("constraint"); + } + +} + diff --git a/AiPlatform/src/V1/SyncFeatureViewRequest.php b/AiPlatform/src/V1/SyncFeatureViewRequest.php new file mode 100644 index 000000000000..19b01a90d961 --- /dev/null +++ b/AiPlatform/src/V1/SyncFeatureViewRequest.php @@ -0,0 +1,87 @@ +google.cloud.aiplatform.v1.SyncFeatureViewRequest + */ +class SyncFeatureViewRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + */ + private $feature_view = ''; + + /** + * @param string $featureView Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * Please see {@see FeatureOnlineStoreAdminServiceClient::featureViewName()} for help formatting this field. + * + * @return \Google\Cloud\AIPlatform\V1\SyncFeatureViewRequest + * + * @experimental + */ + public static function build(string $featureView): self + { + return (new self()) + ->setFeatureView($featureView); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $feature_view + * Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @return string + */ + public function getFeatureView() + { + return $this->feature_view; + } + + /** + * Required. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field string feature_view = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { + * @param string $var + * @return $this + */ + public function setFeatureView($var) + { + GPBUtil::checkString($var, True); + $this->feature_view = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/SyncFeatureViewResponse.php b/AiPlatform/src/V1/SyncFeatureViewResponse.php new file mode 100644 index 000000000000..23e336160455 --- /dev/null +++ b/AiPlatform/src/V1/SyncFeatureViewResponse.php @@ -0,0 +1,72 @@ +google.cloud.aiplatform.v1.SyncFeatureViewResponse + */ +class SyncFeatureViewResponse extends \Google\Protobuf\Internal\Message +{ + /** + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string feature_view_sync = 1; + */ + private $feature_view_sync = ''; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type string $feature_view_sync + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string feature_view_sync = 1; + * @return string + */ + public function getFeatureViewSync() + { + return $this->feature_view_sync; + } + + /** + * Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/{feature_view_sync}` + * + * Generated from protobuf field string feature_view_sync = 1; + * @param string $var + * @return $this + */ + public function setFeatureViewSync($var) + { + GPBUtil::checkString($var, True); + $this->feature_view_sync = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureGroupOperationMetadata.php b/AiPlatform/src/V1/UpdateFeatureGroupOperationMetadata.php new file mode 100644 index 000000000000..e74c98a20283 --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureGroupOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.UpdateFeatureGroupOperationMetadata + */ +class UpdateFeatureGroupOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureGroup. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureGroup. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureGroupRequest.php b/AiPlatform/src/V1/UpdateFeatureGroupRequest.php new file mode 100644 index 000000000000..b4cafc2bba3c --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureGroupRequest.php @@ -0,0 +1,189 @@ +google.cloud.aiplatform.v1.UpdateFeatureGroupRequest + */ +class UpdateFeatureGroupRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_group = null; + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + */ + private $update_mask = null; + + /** + * @param \Google\Cloud\AIPlatform\V1\FeatureGroup $featureGroup Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @param \Google\Protobuf\FieldMask $updateMask Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `labels` + * + * @return \Google\Cloud\AIPlatform\V1\UpdateFeatureGroupRequest + * + * @experimental + */ + public static function build(\Google\Cloud\AIPlatform\V1\FeatureGroup $featureGroup, \Google\Protobuf\FieldMask $updateMask): self + { + return (new self()) + ->setFeatureGroup($featureGroup) + ->setUpdateMask($updateMask); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureGroup $feature_group + * Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * @type \Google\Protobuf\FieldMask $update_mask + * Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureGroup|null + */ + public function getFeatureGroup() + { + return $this->feature_group; + } + + public function hasFeatureGroup() + { + return isset($this->feature_group); + } + + public function clearFeatureGroup() + { + unset($this->feature_group); + } + + /** + * Required. The FeatureGroup's `name` field is used to identify the + * FeatureGroup to be updated. Format: + * `projects/{project}/locations/{location}/featureGroups/{feature_group}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureGroup feature_group = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureGroup $var + * @return $this + */ + public function setFeatureGroup($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureGroup::class); + $this->feature_group = $var; + + return $this; + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @return \Google\Protobuf\FieldMask|null + */ + public function getUpdateMask() + { + return $this->update_mask; + } + + public function hasUpdateMask() + { + return isset($this->update_mask); + } + + public function clearUpdateMask() + { + unset($this->update_mask); + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureGroup resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @param \Google\Protobuf\FieldMask $var + * @return $this + */ + public function setUpdateMask($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\FieldMask::class); + $this->update_mask = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureOnlineStoreOperationMetadata.php b/AiPlatform/src/V1/UpdateFeatureOnlineStoreOperationMetadata.php new file mode 100644 index 000000000000..381f5553ffd6 --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureOnlineStoreOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.UpdateFeatureOnlineStoreOperationMetadata + */ +class UpdateFeatureOnlineStoreOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureOnlineStore. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureOnlineStore. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureOnlineStoreRequest.php b/AiPlatform/src/V1/UpdateFeatureOnlineStoreRequest.php new file mode 100644 index 000000000000..dea3fba3180d --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureOnlineStoreRequest.php @@ -0,0 +1,199 @@ +google.cloud.aiplatform.v1.UpdateFeatureOnlineStoreRequest + */ +class UpdateFeatureOnlineStoreRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_online_store = null; + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `big_query_source` + * * `labels` + * * `sync_config` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + */ + private $update_mask = null; + + /** + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $featureOnlineStore Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @param \Google\Protobuf\FieldMask $updateMask Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `big_query_source` + * * `labels` + * * `sync_config` + * + * @return \Google\Cloud\AIPlatform\V1\UpdateFeatureOnlineStoreRequest + * + * @experimental + */ + public static function build(\Google\Cloud\AIPlatform\V1\FeatureOnlineStore $featureOnlineStore, \Google\Protobuf\FieldMask $updateMask): self + { + return (new self()) + ->setFeatureOnlineStore($featureOnlineStore) + ->setUpdateMask($updateMask); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $feature_online_store + * Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * @type \Google\Protobuf\FieldMask $update_mask + * Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `big_query_source` + * * `labels` + * * `sync_config` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureOnlineStore|null + */ + public function getFeatureOnlineStore() + { + return $this->feature_online_store; + } + + public function hasFeatureOnlineStore() + { + return isset($this->feature_online_store); + } + + public function clearFeatureOnlineStore() + { + unset($this->feature_online_store); + } + + /** + * Required. The FeatureOnlineStore's `name` field is used to identify the + * FeatureOnlineStore to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureOnlineStore feature_online_store = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureOnlineStore $var + * @return $this + */ + public function setFeatureOnlineStore($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureOnlineStore::class); + $this->feature_online_store = $var; + + return $this; + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `big_query_source` + * * `labels` + * * `sync_config` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @return \Google\Protobuf\FieldMask|null + */ + public function getUpdateMask() + { + return $this->update_mask; + } + + public function hasUpdateMask() + { + return isset($this->update_mask); + } + + public function clearUpdateMask() + { + unset($this->update_mask); + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureOnlineStore resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `big_query_source` + * * `labels` + * * `sync_config` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @param \Google\Protobuf\FieldMask $var + * @return $this + */ + public function setUpdateMask($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\FieldMask::class); + $this->update_mask = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureOperationMetadata.php b/AiPlatform/src/V1/UpdateFeatureOperationMetadata.php new file mode 100644 index 000000000000..05559b062e28 --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.UpdateFeatureOperationMetadata + */ +class UpdateFeatureOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for Feature Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for Feature Update. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureRegistryService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for Feature Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for Feature Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureRequest.php b/AiPlatform/src/V1/UpdateFeatureRequest.php index 0c2ff67a0dad..fd7a30ad8969 100644 --- a/AiPlatform/src/V1/UpdateFeatureRequest.php +++ b/AiPlatform/src/V1/UpdateFeatureRequest.php @@ -11,6 +11,8 @@ /** * Request message for * [FeaturestoreService.UpdateFeature][google.cloud.aiplatform.v1.FeaturestoreService.UpdateFeature]. + * Request message for + * [FeatureRegistryService.UpdateFeature][google.cloud.aiplatform.v1.FeatureRegistryService.UpdateFeature]. * * Generated from protobuf message google.cloud.aiplatform.v1.UpdateFeatureRequest */ @@ -21,6 +23,7 @@ class UpdateFeatureRequest extends \Google\Protobuf\Internal\Message * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field .google.cloud.aiplatform.v1.Feature feature = 1 [(.google.api.field_behavior) = REQUIRED]; */ @@ -36,7 +39,7 @@ class UpdateFeatureRequest extends \Google\Protobuf\Internal\Message * Updatable fields: * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; */ @@ -47,6 +50,7 @@ class UpdateFeatureRequest extends \Google\Protobuf\Internal\Message * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * @param \Google\Protobuf\FieldMask $updateMask Field mask is used to specify the fields to be overwritten in the * Features resource by the update. * The fields specified in the update_mask are relative to the resource, not @@ -59,7 +63,7 @@ class UpdateFeatureRequest extends \Google\Protobuf\Internal\Message * * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * * @return \Google\Cloud\AIPlatform\V1\UpdateFeatureRequest * @@ -83,6 +87,7 @@ public static function build(\Google\Cloud\AIPlatform\V1\Feature $feature, \Goog * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * @type \Google\Protobuf\FieldMask $update_mask * Field mask is used to specify the fields to be overwritten in the * Features resource by the update. @@ -94,7 +99,7 @@ public static function build(\Google\Cloud\AIPlatform\V1\Feature $feature, \Goog * Updatable fields: * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * } */ public function __construct($data = NULL) { @@ -107,6 +112,7 @@ public function __construct($data = NULL) { * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field .google.cloud.aiplatform.v1.Feature feature = 1 [(.google.api.field_behavior) = REQUIRED]; * @return \Google\Cloud\AIPlatform\V1\Feature|null @@ -131,6 +137,7 @@ public function clearFeature() * updated. * Format: * `projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}` + * `projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}` * * Generated from protobuf field .google.cloud.aiplatform.v1.Feature feature = 1 [(.google.api.field_behavior) = REQUIRED]; * @param \Google\Cloud\AIPlatform\V1\Feature $var @@ -155,7 +162,7 @@ public function setFeature($var) * Updatable fields: * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; * @return \Google\Protobuf\FieldMask|null @@ -186,7 +193,7 @@ public function clearUpdateMask() * Updatable fields: * * `description` * * `labels` - * * `disable_monitoring` + * * `disable_monitoring` (Not supported for FeatureRegistry Feature) * * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; * @param \Google\Protobuf\FieldMask $var diff --git a/AiPlatform/src/V1/UpdateFeatureViewOperationMetadata.php b/AiPlatform/src/V1/UpdateFeatureViewOperationMetadata.php new file mode 100644 index 000000000000..ba0d2b12d3d0 --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureViewOperationMetadata.php @@ -0,0 +1,77 @@ +google.cloud.aiplatform.v1.UpdateFeatureViewOperationMetadata + */ +class UpdateFeatureViewOperationMetadata extends \Google\Protobuf\Internal\Message +{ + /** + * Operation metadata for FeatureView Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + */ + private $generic_metadata = null; + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $generic_metadata + * Operation metadata for FeatureView Update. + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Operation metadata for FeatureView Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @return \Google\Cloud\AIPlatform\V1\GenericOperationMetadata|null + */ + public function getGenericMetadata() + { + return $this->generic_metadata; + } + + public function hasGenericMetadata() + { + return isset($this->generic_metadata); + } + + public function clearGenericMetadata() + { + unset($this->generic_metadata); + } + + /** + * Operation metadata for FeatureView Update. + * + * Generated from protobuf field .google.cloud.aiplatform.v1.GenericOperationMetadata generic_metadata = 1; + * @param \Google\Cloud\AIPlatform\V1\GenericOperationMetadata $var + * @return $this + */ + public function setGenericMetadata($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\GenericOperationMetadata::class); + $this->generic_metadata = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/UpdateFeatureViewRequest.php b/AiPlatform/src/V1/UpdateFeatureViewRequest.php new file mode 100644 index 000000000000..0c2ef6c4bf2f --- /dev/null +++ b/AiPlatform/src/V1/UpdateFeatureViewRequest.php @@ -0,0 +1,189 @@ +google.cloud.aiplatform.v1.UpdateFeatureViewRequest + */ +class UpdateFeatureViewRequest extends \Google\Protobuf\Internal\Message +{ + /** + * Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 1 [(.google.api.field_behavior) = REQUIRED]; + */ + private $feature_view = null; + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + */ + private $update_mask = null; + + /** + * @param \Google\Cloud\AIPlatform\V1\FeatureView $featureView Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @param \Google\Protobuf\FieldMask $updateMask Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * + * Updatable fields: + * + * * `labels` + * + * @return \Google\Cloud\AIPlatform\V1\UpdateFeatureViewRequest + * + * @experimental + */ + public static function build(\Google\Cloud\AIPlatform\V1\FeatureView $featureView, \Google\Protobuf\FieldMask $updateMask): self + { + return (new self()) + ->setFeatureView($featureView) + ->setUpdateMask($updateMask); + } + + /** + * Constructor. + * + * @param array $data { + * Optional. Data for populating the Message object. + * + * @type \Google\Cloud\AIPlatform\V1\FeatureView $feature_view + * Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * @type \Google\Protobuf\FieldMask $update_mask + * Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * } + */ + public function __construct($data = NULL) { + \GPBMetadata\Google\Cloud\Aiplatform\V1\FeatureOnlineStoreAdminService::initOnce(); + parent::__construct($data); + } + + /** + * Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 1 [(.google.api.field_behavior) = REQUIRED]; + * @return \Google\Cloud\AIPlatform\V1\FeatureView|null + */ + public function getFeatureView() + { + return $this->feature_view; + } + + public function hasFeatureView() + { + return isset($this->feature_view); + } + + public function clearFeatureView() + { + unset($this->feature_view); + } + + /** + * Required. The FeatureView's `name` field is used to identify the + * FeatureView to be updated. Format: + * `projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}` + * + * Generated from protobuf field .google.cloud.aiplatform.v1.FeatureView feature_view = 1 [(.google.api.field_behavior) = REQUIRED]; + * @param \Google\Cloud\AIPlatform\V1\FeatureView $var + * @return $this + */ + public function setFeatureView($var) + { + GPBUtil::checkMessage($var, \Google\Cloud\AIPlatform\V1\FeatureView::class); + $this->feature_view = $var; + + return $this; + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @return \Google\Protobuf\FieldMask|null + */ + public function getUpdateMask() + { + return $this->update_mask; + } + + public function hasUpdateMask() + { + return isset($this->update_mask); + } + + public function clearUpdateMask() + { + unset($this->update_mask); + } + + /** + * Field mask is used to specify the fields to be overwritten in the + * FeatureView resource by the update. + * The fields specified in the update_mask are relative to the resource, not + * the full request. A field will be overwritten if it is in the mask. If the + * user does not provide a mask then only the non-empty fields present in the + * request will be overwritten. Set the update_mask to `*` to override all + * fields. + * Updatable fields: + * * `labels` + * + * Generated from protobuf field .google.protobuf.FieldMask update_mask = 2; + * @param \Google\Protobuf\FieldMask $var + * @return $this + */ + public function setUpdateMask($var) + { + GPBUtil::checkMessage($var, \Google\Protobuf\FieldMask::class); + $this->update_mask = $var; + + return $this; + } + +} + diff --git a/AiPlatform/src/V1/gapic_metadata.json b/AiPlatform/src/V1/gapic_metadata.json index 8020268afa26..8a4cae9fcb63 100644 --- a/AiPlatform/src/V1/gapic_metadata.json +++ b/AiPlatform/src/V1/gapic_metadata.json @@ -203,6 +203,105 @@ } } }, + "FeatureOnlineStoreAdminService": { + "clients": { + "grpc": { + "libraryClient": "FeatureOnlineStoreAdminServiceGapicClient", + "rpcs": { + "CreateFeatureOnlineStore": { + "methods": [ + "createFeatureOnlineStore" + ] + }, + "CreateFeatureView": { + "methods": [ + "createFeatureView" + ] + }, + "DeleteFeatureOnlineStore": { + "methods": [ + "deleteFeatureOnlineStore" + ] + }, + "DeleteFeatureView": { + "methods": [ + "deleteFeatureView" + ] + }, + "GetFeatureOnlineStore": { + "methods": [ + "getFeatureOnlineStore" + ] + }, + "GetFeatureView": { + "methods": [ + "getFeatureView" + ] + }, + "GetFeatureViewSync": { + "methods": [ + "getFeatureViewSync" + ] + }, + "ListFeatureOnlineStores": { + "methods": [ + "listFeatureOnlineStores" + ] + }, + "ListFeatureViewSyncs": { + "methods": [ + "listFeatureViewSyncs" + ] + }, + "ListFeatureViews": { + "methods": [ + "listFeatureViews" + ] + }, + "SyncFeatureView": { + "methods": [ + "syncFeatureView" + ] + }, + "UpdateFeatureOnlineStore": { + "methods": [ + "updateFeatureOnlineStore" + ] + }, + "UpdateFeatureView": { + "methods": [ + "updateFeatureView" + ] + }, + "GetLocation": { + "methods": [ + "getLocation" + ] + }, + "ListLocations": { + "methods": [ + "listLocations" + ] + }, + "GetIamPolicy": { + "methods": [ + "getIamPolicy" + ] + }, + "SetIamPolicy": { + "methods": [ + "setIamPolicy" + ] + }, + "TestIamPermissions": { + "methods": [ + "testIamPermissions" + ] + } + } + } + } + }, "FeaturestoreOnlineServingService": { "clients": { "grpc": { @@ -252,6 +351,45 @@ } } }, + "FeatureOnlineStoreService": { + "clients": { + "grpc": { + "libraryClient": "FeatureOnlineStoreServiceGapicClient", + "rpcs": { + "FetchFeatureValues": { + "methods": [ + "fetchFeatureValues" + ] + }, + "GetLocation": { + "methods": [ + "getLocation" + ] + }, + "ListLocations": { + "methods": [ + "listLocations" + ] + }, + "GetIamPolicy": { + "methods": [ + "getIamPolicy" + ] + }, + "SetIamPolicy": { + "methods": [ + "setIamPolicy" + ] + }, + "TestIamPermissions": { + "methods": [ + "testIamPermissions" + ] + } + } + } + } + }, "FeaturestoreService": { "clients": { "grpc": { @@ -391,6 +529,90 @@ } } }, + "FeatureRegistryService": { + "clients": { + "grpc": { + "libraryClient": "FeatureRegistryServiceGapicClient", + "rpcs": { + "CreateFeature": { + "methods": [ + "createFeature" + ] + }, + "CreateFeatureGroup": { + "methods": [ + "createFeatureGroup" + ] + }, + "DeleteFeature": { + "methods": [ + "deleteFeature" + ] + }, + "DeleteFeatureGroup": { + "methods": [ + "deleteFeatureGroup" + ] + }, + "GetFeature": { + "methods": [ + "getFeature" + ] + }, + "GetFeatureGroup": { + "methods": [ + "getFeatureGroup" + ] + }, + "ListFeatureGroups": { + "methods": [ + "listFeatureGroups" + ] + }, + "ListFeatures": { + "methods": [ + "listFeatures" + ] + }, + "UpdateFeature": { + "methods": [ + "updateFeature" + ] + }, + "UpdateFeatureGroup": { + "methods": [ + "updateFeatureGroup" + ] + }, + "GetLocation": { + "methods": [ + "getLocation" + ] + }, + "ListLocations": { + "methods": [ + "listLocations" + ] + }, + "GetIamPolicy": { + "methods": [ + "getIamPolicy" + ] + }, + "SetIamPolicy": { + "methods": [ + "setIamPolicy" + ] + }, + "TestIamPermissions": { + "methods": [ + "testIamPermissions" + ] + } + } + } + } + }, "IndexEndpointService": { "clients": { "grpc": { diff --git a/AiPlatform/src/V1/resources/dataset_service_rest_client_config.php b/AiPlatform/src/V1/resources/dataset_service_rest_client_config.php index 38ea4623fb5e..ad38232dac28 100644 --- a/AiPlatform/src/V1/resources/dataset_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/dataset_service_rest_client_config.php @@ -417,6 +417,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -674,6 +682,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -766,6 +782,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -886,6 +918,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -935,6 +983,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1027,6 +1083,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1147,6 +1219,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1192,6 +1280,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1284,6 +1380,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1404,6 +1516,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1449,6 +1577,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1541,6 +1677,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1661,6 +1813,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/endpoint_service_rest_client_config.php b/AiPlatform/src/V1/resources/endpoint_service_rest_client_config.php index d7ea0a7d9425..77454d708aa8 100644 --- a/AiPlatform/src/V1/resources/endpoint_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/endpoint_service_rest_client_config.php @@ -307,6 +307,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -564,6 +572,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -656,6 +672,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -776,6 +808,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -825,6 +873,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -917,6 +973,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1037,6 +1109,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1082,6 +1170,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1174,6 +1270,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1294,6 +1406,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1339,6 +1467,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1431,6 +1567,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1551,6 +1703,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/feature_online_store_admin_service_client_config.json b/AiPlatform/src/V1/resources/feature_online_store_admin_service_client_config.json new file mode 100644 index 000000000000..374c5db58181 --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_admin_service_client_config.json @@ -0,0 +1,112 @@ +{ + "interfaces": { + "google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService": { + "retry_codes": { + "no_retry_codes": [] + }, + "retry_params": { + "no_retry_params": { + "initial_retry_delay_millis": 0, + "retry_delay_multiplier": 0.0, + "max_retry_delay_millis": 0, + "initial_rpc_timeout_millis": 0, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 0, + "total_timeout_millis": 0 + } + }, + "methods": { + "CreateFeatureOnlineStore": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "CreateFeatureView": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "DeleteFeatureOnlineStore": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "DeleteFeatureView": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetFeatureOnlineStore": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetFeatureView": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetFeatureViewSync": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListFeatureOnlineStores": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListFeatureViewSyncs": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListFeatureViews": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "SyncFeatureView": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "UpdateFeatureOnlineStore": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "UpdateFeatureView": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetLocation": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListLocations": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "SetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "TestIamPermissions": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + } + } + } + } +} diff --git a/AiPlatform/src/V1/resources/feature_online_store_admin_service_descriptor_config.php b/AiPlatform/src/V1/resources/feature_online_store_admin_service_descriptor_config.php new file mode 100644 index 000000000000..116db4848555 --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_admin_service_descriptor_config.php @@ -0,0 +1,311 @@ + [ + 'google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService' => [ + 'CreateFeatureOnlineStore' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureOnlineStore', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\CreateFeatureOnlineStoreOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'CreateFeatureView' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureView', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\CreateFeatureViewOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'DeleteFeatureOnlineStore' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Protobuf\GPBEmpty', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\DeleteOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'DeleteFeatureView' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Protobuf\GPBEmpty', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\DeleteOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'UpdateFeatureOnlineStore' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureOnlineStore', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\UpdateFeatureOnlineStoreOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'feature_online_store.name', + 'fieldAccessors' => [ + 'getFeatureOnlineStore', + 'getName', + ], + ], + ], + ], + 'UpdateFeatureView' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureView', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\UpdateFeatureViewOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'feature_view.name', + 'fieldAccessors' => [ + 'getFeatureView', + 'getName', + ], + ], + ], + ], + 'GetFeatureOnlineStore' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\FeatureOnlineStore', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureView' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\FeatureView', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureViewSync' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\FeatureViewSync', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'ListFeatureOnlineStores' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getFeatureOnlineStores', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\ListFeatureOnlineStoresResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatureViewSyncs' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getFeatureViewSyncs', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\ListFeatureViewSyncsResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatureViews' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getFeatureViews', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\ListFeatureViewsResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'SyncFeatureView' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\SyncFeatureViewResponse', + 'headerParams' => [ + [ + 'keyName' => 'feature_view', + 'fieldAccessors' => [ + 'getFeatureView', + ], + ], + ], + ], + 'GetLocation' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Location\Location', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'ListLocations' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getLocations', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\Location\ListLocationsResponse', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'GetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'SetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'TestIamPermissions' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\TestIamPermissionsResponse', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'templateMap' => [ + 'featureOnlineStore' => 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}', + 'featureView' => 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}', + 'featureViewSync' => 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}/featureViewSyncs/feature_view_sync', + 'location' => 'projects/{project}/locations/{location}', + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/feature_online_store_admin_service_rest_client_config.php b/AiPlatform/src/V1/resources/feature_online_store_admin_service_rest_client_config.php new file mode 100644 index 000000000000..a84c07b5741f --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_admin_service_rest_client_config.php @@ -0,0 +1,1792 @@ + [ + 'google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService' => [ + 'CreateFeatureOnlineStore' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/featureOnlineStores', + 'body' => 'feature_online_store', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + 'queryParams' => [ + 'feature_online_store_id', + ], + ], + 'CreateFeatureView' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*/featureOnlineStores/*}/featureViews', + 'body' => 'feature_view', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + 'queryParams' => [ + 'feature_view_id', + ], + ], + 'DeleteFeatureOnlineStore' => [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'DeleteFeatureView' => [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureOnlineStore' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureView' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureViewSync' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/featureViewSyncs/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListFeatureOnlineStores' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/featureOnlineStores', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatureViewSyncs' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*/featureOnlineStores/*/featureViews/*}/featureViewSyncs', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatureViews' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*/featureOnlineStores/*}/featureViews', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], + 'SyncFeatureView' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{feature_view=projects/*/locations/*/featureOnlineStores/*/featureViews/*}:sync', + 'body' => '*', + 'placeholders' => [ + 'feature_view' => [ + 'getters' => [ + 'getFeatureView', + ], + ], + ], + ], + 'UpdateFeatureOnlineStore' => [ + 'method' => 'patch', + 'uriTemplate' => '/v1/{feature_online_store.name=projects/*/locations/*/featureOnlineStores/*}', + 'body' => 'feature_online_store', + 'placeholders' => [ + 'feature_online_store.name' => [ + 'getters' => [ + 'getFeatureOnlineStore', + 'getName', + ], + ], + ], + ], + 'UpdateFeatureView' => [ + 'method' => 'patch', + 'uriTemplate' => '/v1/{feature_view.name=projects/*/locations/*/featureOnlineStores/*/featureViews/*}', + 'body' => 'feature_view', + 'placeholders' => [ + 'feature_view.name' => [ + 'getters' => [ + 'getFeatureView', + 'getName', + ], + ], + ], + ], + ], + 'google.cloud.location.Locations' => [ + 'GetLocation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListLocations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*}/locations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*}/locations', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + 'google.iam.v1.IAMPolicy' => [ + 'GetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'SetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'TestIamPermissions' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + ], + 'google.longrunning.Operations' => [ + 'CancelOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:cancel', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'DeleteOperation' => [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetOperation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDeploymentJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListOperations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}/operations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'WaitOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:wait', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/feature_online_store_service_client_config.json b/AiPlatform/src/V1/resources/feature_online_store_service_client_config.json new file mode 100644 index 000000000000..e4f54a7fafa1 --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_service_client_config.json @@ -0,0 +1,52 @@ +{ + "interfaces": { + "google.cloud.aiplatform.v1.FeatureOnlineStoreService": { + "retry_codes": { + "no_retry_codes": [] + }, + "retry_params": { + "no_retry_params": { + "initial_retry_delay_millis": 0, + "retry_delay_multiplier": 0.0, + "max_retry_delay_millis": 0, + "initial_rpc_timeout_millis": 0, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 0, + "total_timeout_millis": 0 + } + }, + "methods": { + "FetchFeatureValues": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetLocation": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListLocations": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "SetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "TestIamPermissions": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + } + } + } + } +} diff --git a/AiPlatform/src/V1/resources/feature_online_store_service_descriptor_config.php b/AiPlatform/src/V1/resources/feature_online_store_service_descriptor_config.php new file mode 100644 index 000000000000..9e872d1fde7d --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_service_descriptor_config.php @@ -0,0 +1,96 @@ + [ + 'google.cloud.aiplatform.v1.FeatureOnlineStoreService' => [ + 'FetchFeatureValues' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\FetchFeatureValuesResponse', + 'headerParams' => [ + [ + 'keyName' => 'feature_view', + 'fieldAccessors' => [ + 'getFeatureView', + ], + ], + ], + ], + 'GetLocation' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Location\Location', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'ListLocations' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getLocations', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\Location\ListLocationsResponse', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'GetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'SetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'TestIamPermissions' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\TestIamPermissionsResponse', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'templateMap' => [ + 'featureView' => 'projects/{project}/locations/{location}/featureOnlineStores/{feature_online_store}/featureViews/{feature_view}', + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/feature_online_store_service_rest_client_config.php b/AiPlatform/src/V1/resources/feature_online_store_service_rest_client_config.php new file mode 100644 index 000000000000..1eb3836d0ca0 --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_online_store_service_rest_client_config.php @@ -0,0 +1,1648 @@ + [ + 'google.cloud.aiplatform.v1.FeatureOnlineStoreService' => [ + 'FetchFeatureValues' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{feature_view=projects/*/locations/*/featureOnlineStores/*/featureViews/*}:fetchFeatureValues', + 'body' => '*', + 'placeholders' => [ + 'feature_view' => [ + 'getters' => [ + 'getFeatureView', + ], + ], + ], + ], + ], + 'google.cloud.location.Locations' => [ + 'GetLocation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListLocations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*}/locations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*}/locations', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + 'google.iam.v1.IAMPolicy' => [ + 'GetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'SetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'TestIamPermissions' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + ], + 'google.longrunning.Operations' => [ + 'CancelOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:cancel', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'DeleteOperation' => [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetOperation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDeploymentJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListOperations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}/operations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'WaitOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:wait', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/feature_registry_service_client_config.json b/AiPlatform/src/V1/resources/feature_registry_service_client_config.json new file mode 100644 index 000000000000..2f8b1c192b2d --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_registry_service_client_config.json @@ -0,0 +1,97 @@ +{ + "interfaces": { + "google.cloud.aiplatform.v1.FeatureRegistryService": { + "retry_codes": { + "no_retry_codes": [] + }, + "retry_params": { + "no_retry_params": { + "initial_retry_delay_millis": 0, + "retry_delay_multiplier": 0.0, + "max_retry_delay_millis": 0, + "initial_rpc_timeout_millis": 0, + "rpc_timeout_multiplier": 1.0, + "max_rpc_timeout_millis": 0, + "total_timeout_millis": 0 + } + }, + "methods": { + "CreateFeature": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "CreateFeatureGroup": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "DeleteFeature": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "DeleteFeatureGroup": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetFeature": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetFeatureGroup": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListFeatureGroups": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListFeatures": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "UpdateFeature": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "UpdateFeatureGroup": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetLocation": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "ListLocations": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "GetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "SetIamPolicy": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + }, + "TestIamPermissions": { + "timeout_millis": 60000, + "retry_codes_name": "no_retry_codes", + "retry_params_name": "no_retry_params" + } + } + } + } +} diff --git a/AiPlatform/src/V1/resources/feature_registry_service_descriptor_config.php b/AiPlatform/src/V1/resources/feature_registry_service_descriptor_config.php new file mode 100644 index 000000000000..f1508e1fa287 --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_registry_service_descriptor_config.php @@ -0,0 +1,269 @@ + [ + 'google.cloud.aiplatform.v1.FeatureRegistryService' => [ + 'CreateFeature' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\Feature', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\CreateFeatureOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'CreateFeatureGroup' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureGroup', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\CreateFeatureGroupOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'DeleteFeature' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Protobuf\GPBEmpty', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\DeleteOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'DeleteFeatureGroup' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Protobuf\GPBEmpty', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\DeleteOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'UpdateFeature' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\Feature', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\UpdateFeatureOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'feature.name', + 'fieldAccessors' => [ + 'getFeature', + 'getName', + ], + ], + ], + ], + 'UpdateFeatureGroup' => [ + 'longRunning' => [ + 'operationReturnType' => '\Google\Cloud\AIPlatform\V1\FeatureGroup', + 'metadataReturnType' => '\Google\Cloud\AIPlatform\V1\UpdateFeatureGroupOperationMetadata', + 'initialPollDelayMillis' => '500', + 'pollDelayMultiplier' => '1.5', + 'maxPollDelayMillis' => '5000', + 'totalPollTimeoutMillis' => '300000', + ], + 'callType' => \Google\ApiCore\Call::LONGRUNNING_CALL, + 'headerParams' => [ + [ + 'keyName' => 'feature_group.name', + 'fieldAccessors' => [ + 'getFeatureGroup', + 'getName', + ], + ], + ], + ], + 'GetFeature' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\Feature', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureGroup' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\FeatureGroup', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + ], + 'ListFeatureGroups' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getFeatureGroups', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\ListFeatureGroupsResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatures' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getFeatures', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\AIPlatform\V1\ListFeaturesResponse', + 'headerParams' => [ + [ + 'keyName' => 'parent', + 'fieldAccessors' => [ + 'getParent', + ], + ], + ], + ], + 'GetLocation' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Location\Location', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'ListLocations' => [ + 'pageStreaming' => [ + 'requestPageTokenGetMethod' => 'getPageToken', + 'requestPageTokenSetMethod' => 'setPageToken', + 'requestPageSizeGetMethod' => 'getPageSize', + 'requestPageSizeSetMethod' => 'setPageSize', + 'responsePageTokenGetMethod' => 'getNextPageToken', + 'resourcesGetMethod' => 'getLocations', + ], + 'callType' => \Google\ApiCore\Call::PAGINATED_CALL, + 'responseType' => 'Google\Cloud\Location\ListLocationsResponse', + 'headerParams' => [ + [ + 'keyName' => 'name', + 'fieldAccessors' => [ + 'getName', + ], + ], + ], + 'interfaceOverride' => 'google.cloud.location.Locations', + ], + 'GetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'SetIamPolicy' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\Policy', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'TestIamPermissions' => [ + 'callType' => \Google\ApiCore\Call::UNARY_CALL, + 'responseType' => 'Google\Cloud\Iam\V1\TestIamPermissionsResponse', + 'headerParams' => [ + [ + 'keyName' => 'resource', + 'fieldAccessors' => [ + 'getResource', + ], + ], + ], + 'interfaceOverride' => 'google.iam.v1.IAMPolicy', + ], + 'templateMap' => [ + 'entityType' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}', + 'feature' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}', + 'featureGroup' => 'projects/{project}/locations/{location}/featureGroups/{feature_group}', + 'location' => 'projects/{project}/locations/{location}', + 'projectLocationFeatureGroupFeature' => 'projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}', + 'projectLocationFeaturestoreEntityTypeFeature' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}', + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/feature_registry_service_rest_client_config.php b/AiPlatform/src/V1/resources/feature_registry_service_rest_client_config.php new file mode 100644 index 000000000000..ff552b1a49cd --- /dev/null +++ b/AiPlatform/src/V1/resources/feature_registry_service_rest_client_config.php @@ -0,0 +1,1758 @@ + [ + 'google.cloud.aiplatform.v1.FeatureRegistryService' => [ + 'CreateFeature' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*/featureGroups/*}/features', + 'body' => 'feature', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + 'queryParams' => [ + 'feature_id', + ], + ], + 'CreateFeatureGroup' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/featureGroups', + 'body' => 'feature_group', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + 'queryParams' => [ + 'feature_group_id', + ], + ], + 'DeleteFeature' => [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'DeleteFeatureGroup' => [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetFeature' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetFeatureGroup' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*}', + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListFeatureGroups' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*}/featureGroups', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], + 'ListFeatures' => [ + 'method' => 'get', + 'uriTemplate' => '/v1/{parent=projects/*/locations/*/featureGroups/*}/features', + 'placeholders' => [ + 'parent' => [ + 'getters' => [ + 'getParent', + ], + ], + ], + ], + 'UpdateFeature' => [ + 'method' => 'patch', + 'uriTemplate' => '/v1/{feature.name=projects/*/locations/*/featureGroups/*/features/*}', + 'body' => 'feature', + 'placeholders' => [ + 'feature.name' => [ + 'getters' => [ + 'getFeature', + 'getName', + ], + ], + ], + ], + 'UpdateFeatureGroup' => [ + 'method' => 'patch', + 'uriTemplate' => '/v1/{feature_group.name=projects/*/locations/*/featureGroups/*}', + 'body' => 'feature_group', + 'placeholders' => [ + 'feature_group.name' => [ + 'getters' => [ + 'getFeatureGroup', + 'getName', + ], + ], + ], + ], + ], + 'google.cloud.location.Locations' => [ + 'GetLocation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListLocations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*}/locations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*}/locations', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + 'google.iam.v1.IAMPolicy' => [ + 'GetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:getIamPolicy', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:getIamPolicy', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'SetIamPolicy' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:setIamPolicy', + 'body' => '*', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:setIamPolicy', + 'body' => '*', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + 'TestIamPermissions' => [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/featurestores/*/entityTypes/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/models/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/endpoints/*}:testIamPermissions', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{resource=projects/*/locations/*/notebookRuntimeTemplates/*}:testIamPermissions', + ], + ], + 'placeholders' => [ + 'resource' => [ + 'getters' => [ + 'getResource', + ], + ], + ], + ], + ], + 'google.longrunning.Operations' => [ + 'CancelOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:cancel', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:cancel', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'DeleteOperation' => [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'GetOperation' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDeploymentJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'ListOperations' => [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*}/operations', + 'additionalBindings' => [ + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + 'WaitOperation' => [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/operations/*}:wait', + 'additionalBindings' => [ + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/edgeDevices/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/modelMonitors/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/savedQueries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/annotationSpecs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/datasets/*/dataItems/*/annotations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/deploymentResourcePools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featurestores/*/entityTypes/*/features/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/customJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/dataLabelingJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/hyperparameterTuningJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexes/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/indexEndpoints/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/modelDeploymentMonitoringJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/migratableResources/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/models/*/evaluations/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/studies/*/trials/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/trainingPipelines/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/pipelineJobs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/schedules/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/specialistPools/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], + ], + 'placeholders' => [ + 'name' => [ + 'getters' => [ + 'getName', + ], + ], + ], + ], + ], + ], +]; diff --git a/AiPlatform/src/V1/resources/featurestore_online_serving_service_rest_client_config.php b/AiPlatform/src/V1/resources/featurestore_online_serving_service_rest_client_config.php index 7b4914d95dee..edb25e69a497 100644 --- a/AiPlatform/src/V1/resources/featurestore_online_serving_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/featurestore_online_serving_service_rest_client_config.php @@ -246,6 +246,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -503,6 +511,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -595,6 +611,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -715,6 +747,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -764,6 +812,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -856,6 +912,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -976,6 +1048,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1021,6 +1109,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1113,6 +1209,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1233,6 +1345,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1278,6 +1406,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1370,6 +1506,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1490,6 +1642,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/featurestore_service_descriptor_config.php b/AiPlatform/src/V1/resources/featurestore_service_descriptor_config.php index 00731003741f..babe61a68274 100644 --- a/AiPlatform/src/V1/resources/featurestore_service_descriptor_config.php +++ b/AiPlatform/src/V1/resources/featurestore_service_descriptor_config.php @@ -450,8 +450,11 @@ 'templateMap' => [ 'entityType' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}', 'feature' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}', + 'featureGroup' => 'projects/{project}/locations/{location}/featureGroups/{feature_group}', 'featurestore' => 'projects/{project}/locations/{location}/featurestores/{featurestore}', 'location' => 'projects/{project}/locations/{location}', + 'projectLocationFeatureGroupFeature' => 'projects/{project}/locations/{location}/featureGroups/{feature_group}/features/{feature}', + 'projectLocationFeaturestoreEntityTypeFeature' => 'projects/{project}/locations/{location}/featurestores/{featurestore}/entityTypes/{entity_type}/features/{feature}', ], ], ], diff --git a/AiPlatform/src/V1/resources/featurestore_service_rest_client_config.php b/AiPlatform/src/V1/resources/featurestore_service_rest_client_config.php index 4c1caad95e72..b65595840e1a 100644 --- a/AiPlatform/src/V1/resources/featurestore_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/featurestore_service_rest_client_config.php @@ -464,6 +464,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -721,6 +729,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -813,6 +829,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -933,6 +965,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -982,6 +1030,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1074,6 +1130,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1194,6 +1266,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1239,6 +1327,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1331,6 +1427,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1451,6 +1563,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1496,6 +1624,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1588,6 +1724,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1708,6 +1860,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/index_endpoint_service_rest_client_config.php b/AiPlatform/src/V1/resources/index_endpoint_service_rest_client_config.php index c87d8c950456..6de464caf5d5 100644 --- a/AiPlatform/src/V1/resources/index_endpoint_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/index_endpoint_service_rest_client_config.php @@ -307,6 +307,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -564,6 +572,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -656,6 +672,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -776,6 +808,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -825,6 +873,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -917,6 +973,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1037,6 +1109,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1082,6 +1170,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1174,6 +1270,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1294,6 +1406,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1339,6 +1467,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1431,6 +1567,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1551,6 +1703,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/index_service_rest_client_config.php b/AiPlatform/src/V1/resources/index_service_rest_client_config.php index e4f5ba8e4030..9bb436d00f46 100644 --- a/AiPlatform/src/V1/resources/index_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/index_service_rest_client_config.php @@ -292,6 +292,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -549,6 +557,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -641,6 +657,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -761,6 +793,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -810,6 +858,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -902,6 +958,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1022,6 +1094,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1067,6 +1155,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1159,6 +1255,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1279,6 +1391,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1324,6 +1452,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1416,6 +1552,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1536,6 +1688,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/job_service_rest_client_config.php b/AiPlatform/src/V1/resources/job_service_rest_client_config.php index 32433ec713f6..3e8230233015 100644 --- a/AiPlatform/src/V1/resources/job_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/job_service_rest_client_config.php @@ -614,6 +614,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -871,6 +879,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -963,6 +979,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1083,6 +1115,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1132,6 +1180,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1224,6 +1280,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1344,6 +1416,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1389,6 +1477,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1481,6 +1577,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1601,6 +1713,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1646,6 +1774,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1738,6 +1874,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1858,6 +2010,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/match_service_rest_client_config.php b/AiPlatform/src/V1/resources/match_service_rest_client_config.php index 826d4d9edd4e..f2467641cd51 100644 --- a/AiPlatform/src/V1/resources/match_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/match_service_rest_client_config.php @@ -234,6 +234,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -491,6 +499,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -583,6 +599,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -703,6 +735,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -752,6 +800,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -844,6 +900,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -964,6 +1036,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1009,6 +1097,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1101,6 +1197,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1221,6 +1333,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1266,6 +1394,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1358,6 +1494,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1478,6 +1630,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/metadata_service_rest_client_config.php b/AiPlatform/src/V1/resources/metadata_service_rest_client_config.php index 08282a70c520..0ac3b4846987 100644 --- a/AiPlatform/src/V1/resources/metadata_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/metadata_service_rest_client_config.php @@ -580,6 +580,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -837,6 +845,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -929,6 +945,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1049,6 +1081,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1098,6 +1146,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1190,6 +1246,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1310,6 +1382,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1355,6 +1443,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1447,6 +1543,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1567,6 +1679,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1612,6 +1740,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1704,6 +1840,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1824,6 +1976,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/migration_service_rest_client_config.php b/AiPlatform/src/V1/resources/migration_service_rest_client_config.php index 692a410b773b..39eff0d7b4c0 100644 --- a/AiPlatform/src/V1/resources/migration_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/migration_service_rest_client_config.php @@ -234,6 +234,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -491,6 +499,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -583,6 +599,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -703,6 +735,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -752,6 +800,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -844,6 +900,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -964,6 +1036,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1009,6 +1097,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1101,6 +1197,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1221,6 +1333,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1266,6 +1394,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1358,6 +1494,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1478,6 +1630,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/model_garden_service_rest_client_config.php b/AiPlatform/src/V1/resources/model_garden_service_rest_client_config.php index 668e00d7d3be..b9f22853b435 100644 --- a/AiPlatform/src/V1/resources/model_garden_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/model_garden_service_rest_client_config.php @@ -221,6 +221,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -478,6 +486,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -570,6 +586,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -690,6 +722,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -739,6 +787,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -831,6 +887,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -951,6 +1023,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -996,6 +1084,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1088,6 +1184,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1208,6 +1320,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1253,6 +1381,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1345,6 +1481,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1465,6 +1617,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/model_service_rest_client_config.php b/AiPlatform/src/V1/resources/model_service_rest_client_config.php index 36b6a80453f7..a276b2202e10 100644 --- a/AiPlatform/src/V1/resources/model_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/model_service_rest_client_config.php @@ -421,6 +421,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -678,6 +686,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -770,6 +786,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -890,6 +922,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -939,6 +987,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1031,6 +1087,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1151,6 +1223,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1196,6 +1284,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1288,6 +1384,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1408,6 +1520,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1453,6 +1581,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1545,6 +1681,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1665,6 +1817,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/pipeline_service_rest_client_config.php b/AiPlatform/src/V1/resources/pipeline_service_rest_client_config.php index 16bd34b90de0..be443a81531a 100644 --- a/AiPlatform/src/V1/resources/pipeline_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/pipeline_service_rest_client_config.php @@ -324,6 +324,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -581,6 +589,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -673,6 +689,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -793,6 +825,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -842,6 +890,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -934,6 +990,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1054,6 +1126,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1099,6 +1187,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1191,6 +1287,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1311,6 +1423,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1356,6 +1484,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1448,6 +1584,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1568,6 +1720,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/prediction_service_rest_client_config.php b/AiPlatform/src/V1/resources/prediction_service_rest_client_config.php index 3efd81af503d..15457404299c 100644 --- a/AiPlatform/src/V1/resources/prediction_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/prediction_service_rest_client_config.php @@ -279,6 +279,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -536,6 +544,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -628,6 +644,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -748,6 +780,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -797,6 +845,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -889,6 +945,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1009,6 +1081,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1054,6 +1142,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1146,6 +1242,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1266,6 +1378,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1311,6 +1439,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1403,6 +1539,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1523,6 +1675,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/schedule_service_rest_client_config.php b/AiPlatform/src/V1/resources/schedule_service_rest_client_config.php index 7e062f1abdf8..33742e8ab81a 100644 --- a/AiPlatform/src/V1/resources/schedule_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/schedule_service_rest_client_config.php @@ -295,6 +295,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -552,6 +560,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -644,6 +660,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -764,6 +796,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -813,6 +861,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -905,6 +961,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1025,6 +1097,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1070,6 +1158,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1162,6 +1258,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1282,6 +1394,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1327,6 +1455,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1419,6 +1555,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1539,6 +1691,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/specialist_pool_service_rest_client_config.php b/AiPlatform/src/V1/resources/specialist_pool_service_rest_client_config.php index c1a5c0e54208..51d636ae5803 100644 --- a/AiPlatform/src/V1/resources/specialist_pool_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/specialist_pool_service_rest_client_config.php @@ -271,6 +271,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -528,6 +536,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -620,6 +636,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -740,6 +772,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -789,6 +837,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -881,6 +937,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1001,6 +1073,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1046,6 +1134,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1138,6 +1234,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1258,6 +1370,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1303,6 +1431,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1395,6 +1531,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1515,6 +1667,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/tensorboard_service_rest_client_config.php b/AiPlatform/src/V1/resources/tensorboard_service_rest_client_config.php index 85296eb5c0ce..84f056323d58 100644 --- a/AiPlatform/src/V1/resources/tensorboard_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/tensorboard_service_rest_client_config.php @@ -575,6 +575,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -832,6 +840,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -924,6 +940,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1044,6 +1076,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1093,6 +1141,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -1185,6 +1241,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1305,6 +1377,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1350,6 +1438,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1442,6 +1538,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1562,6 +1674,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1607,6 +1735,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1699,6 +1835,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1819,6 +1971,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/src/V1/resources/vizier_service_rest_client_config.php b/AiPlatform/src/V1/resources/vizier_service_rest_client_config.php index b994ea053dad..03f86fd1f778 100644 --- a/AiPlatform/src/V1/resources/vizier_service_rest_client_config.php +++ b/AiPlatform/src/V1/resources/vizier_service_rest_client_config.php @@ -384,6 +384,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:cancel', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:cancel', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:cancel', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:cancel', @@ -641,6 +649,14 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -733,6 +749,22 @@ 'method' => 'delete', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], [ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -853,6 +885,22 @@ 'method' => 'delete', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], + [ + 'method' => 'delete', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -902,6 +950,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}', @@ -994,6 +1050,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}', @@ -1114,6 +1186,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}', + ], ], 'placeholders' => [ 'name' => [ @@ -1159,6 +1247,14 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*}/operations', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*}/operations', + ], [ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*}/operations', @@ -1251,6 +1347,22 @@ 'method' => 'get', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*}/operations', @@ -1371,6 +1483,22 @@ 'method' => 'get', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*}/operations', ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'get', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ @@ -1416,6 +1544,14 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/endpoints/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensionControllers/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/extensions/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/featurestores/*/operations/*}:wait', @@ -1508,6 +1644,22 @@ 'method' => 'post', 'uriTemplate' => '/ui/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/ui/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], [ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/operations/*}:wait', @@ -1628,6 +1780,22 @@ 'method' => 'post', 'uriTemplate' => '/v1/{name=projects/*/locations/*/tensorboards/*/experiments/*/runs/*/timeSeries/*/operations/*}:wait', ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureOnlineStores/*/featureViews/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/operations/*}:wait', + ], + [ + 'method' => 'post', + 'uriTemplate' => '/v1/{name=projects/*/locations/*/featureGroups/*/features/*/operations/*}:wait', + ], ], 'placeholders' => [ 'name' => [ diff --git a/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreAdminServiceClientTest.php b/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreAdminServiceClientTest.php new file mode 100644 index 000000000000..79f1b8535a4d --- /dev/null +++ b/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreAdminServiceClientTest.php @@ -0,0 +1,1742 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureOnlineStoreAdminServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureOnlineStoreAdminServiceClient($options); + } + + /** @test */ + public function createFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStore = new FeatureOnlineStore(); + $featureOnlineStoreId = 'featureOnlineStoreId-10760612'; + $request = (new CreateFeatureOnlineStoreRequest()) + ->setParent($formattedParent) + ->setFeatureOnlineStore($featureOnlineStore) + ->setFeatureOnlineStoreId($featureOnlineStoreId); + $response = $gapicClient->createFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/CreateFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStore(); + $this->assertProtobufEquals($featureOnlineStore, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStoreId(); + $this->assertProtobufEquals($featureOnlineStoreId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStore = new FeatureOnlineStore(); + $featureOnlineStoreId = 'featureOnlineStoreId-10760612'; + $request = (new CreateFeatureOnlineStoreRequest()) + ->setParent($formattedParent) + ->setFeatureOnlineStore($featureOnlineStore) + ->setFeatureOnlineStoreId($featureOnlineStoreId); + $response = $gapicClient->createFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $featureView = new FeatureView(); + $featureViewId = 'featureViewId-1041382228'; + $request = (new CreateFeatureViewRequest()) + ->setParent($formattedParent) + ->setFeatureView($featureView) + ->setFeatureViewId($featureViewId); + $response = $gapicClient->createFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/CreateFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureView(); + $this->assertProtobufEquals($featureView, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureViewId(); + $this->assertProtobufEquals($featureViewId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $featureView = new FeatureView(); + $featureViewId = 'featureViewId-1041382228'; + $request = (new CreateFeatureViewRequest()) + ->setParent($formattedParent) + ->setFeatureView($featureView) + ->setFeatureViewId($featureViewId); + $response = $gapicClient->createFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new DeleteFeatureOnlineStoreRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/DeleteFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new DeleteFeatureOnlineStoreRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new DeleteFeatureViewRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/DeleteFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new DeleteFeatureViewRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getFeatureOnlineStoreTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new GetFeatureOnlineStoreRequest()) + ->setName($formattedName); + $response = $gapicClient->getFeatureOnlineStore($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureOnlineStore', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureOnlineStoreExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new GetFeatureOnlineStoreRequest()) + ->setName($formattedName); + try { + $gapicClient->getFeatureOnlineStore($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new GetFeatureViewRequest()) + ->setName($formattedName); + $response = $gapicClient->getFeatureView($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureView', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new GetFeatureViewRequest()) + ->setName($formattedName); + try { + $gapicClient->getFeatureView($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewSyncTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $expectedResponse = new FeatureViewSync(); + $expectedResponse->setName($name2); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureViewSyncName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new GetFeatureViewSyncRequest()) + ->setName($formattedName); + $response = $gapicClient->getFeatureViewSync($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureViewSync', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewSyncExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewSyncName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new GetFeatureViewSyncRequest()) + ->setName($formattedName); + try { + $gapicClient->getFeatureViewSync($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureOnlineStoresTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureOnlineStoresElement = new FeatureOnlineStore(); + $featureOnlineStores = [ + $featureOnlineStoresElement, + ]; + $expectedResponse = new ListFeatureOnlineStoresResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureOnlineStores($featureOnlineStores); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListFeatureOnlineStoresRequest()) + ->setParent($formattedParent); + $response = $gapicClient->listFeatureOnlineStores($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureOnlineStores()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureOnlineStores', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureOnlineStoresExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListFeatureOnlineStoresRequest()) + ->setParent($formattedParent); + try { + $gapicClient->listFeatureOnlineStores($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewSyncsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureViewSyncsElement = new FeatureViewSync(); + $featureViewSyncs = [ + $featureViewSyncsElement, + ]; + $expectedResponse = new ListFeatureViewSyncsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureViewSyncs($featureViewSyncs); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new ListFeatureViewSyncsRequest()) + ->setParent($formattedParent); + $response = $gapicClient->listFeatureViewSyncs($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureViewSyncs()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureViewSyncs', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewSyncsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new ListFeatureViewSyncsRequest()) + ->setParent($formattedParent); + try { + $gapicClient->listFeatureViewSyncs($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureViewsElement = new FeatureView(); + $featureViews = [ + $featureViewsElement, + ]; + $expectedResponse = new ListFeatureViewsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureViews($featureViews); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new ListFeatureViewsRequest()) + ->setParent($formattedParent); + $response = $gapicClient->listFeatureViews($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureViews()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureViews', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $request = (new ListFeatureViewsRequest()) + ->setParent($formattedParent); + try { + $gapicClient->listFeatureViews($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function syncFeatureViewTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $featureViewSync = 'featureViewSync-40619540'; + $expectedResponse = new SyncFeatureViewResponse(); + $expectedResponse->setFeatureViewSync($featureViewSync); + $transport->addResponse($expectedResponse); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new SyncFeatureViewRequest()) + ->setFeatureView($formattedFeatureView); + $response = $gapicClient->syncFeatureView($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/SyncFeatureView', $actualFuncCall); + $actualValue = $actualRequestObject->getFeatureView(); + $this->assertProtobufEquals($formattedFeatureView, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function syncFeatureViewExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new SyncFeatureViewRequest()) + ->setFeatureView($formattedFeatureView); + try { + $gapicClient->syncFeatureView($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function updateFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureOnlineStore = new FeatureOnlineStore(); + $request = (new UpdateFeatureOnlineStoreRequest()) + ->setFeatureOnlineStore($featureOnlineStore); + $response = $gapicClient->updateFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/UpdateFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureOnlineStore(); + $this->assertProtobufEquals($featureOnlineStore, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureOnlineStore = new FeatureOnlineStore(); + $request = (new UpdateFeatureOnlineStoreRequest()) + ->setFeatureOnlineStore($featureOnlineStore); + $response = $gapicClient->updateFeatureOnlineStore($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureView = new FeatureView(); + $request = (new UpdateFeatureViewRequest()) + ->setFeatureView($featureView); + $response = $gapicClient->updateFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/UpdateFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureView(); + $this->assertProtobufEquals($featureView, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureView = new FeatureView(); + $request = (new UpdateFeatureViewRequest()) + ->setFeatureView($featureView); + $response = $gapicClient->updateFeatureView($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $request = new GetLocationRequest(); + $response = $gapicClient->getLocation($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new GetLocationRequest(); + try { + $gapicClient->getLocation($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $request = new ListLocationsRequest(); + $response = $gapicClient->listLocations($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new ListLocationsRequest(); + try { + $gapicClient->listLocations($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + $response = $gapicClient->getIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + try { + $gapicClient->getIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + $response = $gapicClient->setIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + try { + $gapicClient->setIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + $response = $gapicClient->testIamPermissions($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + try { + $gapicClient->testIamPermissions($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function createFeatureOnlineStoreAsyncTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStore = new FeatureOnlineStore(); + $featureOnlineStoreId = 'featureOnlineStoreId-10760612'; + $request = (new CreateFeatureOnlineStoreRequest()) + ->setParent($formattedParent) + ->setFeatureOnlineStore($featureOnlineStore) + ->setFeatureOnlineStoreId($featureOnlineStoreId); + $response = $gapicClient->createFeatureOnlineStoreAsync($request)->wait(); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/CreateFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStore(); + $this->assertProtobufEquals($featureOnlineStore, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStoreId(); + $this->assertProtobufEquals($featureOnlineStoreId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreServiceClientTest.php b/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreServiceClientTest.php new file mode 100644 index 000000000000..f2addf81ab34 --- /dev/null +++ b/AiPlatform/tests/Unit/V1/Client/FeatureOnlineStoreServiceClientTest.php @@ -0,0 +1,490 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureOnlineStoreServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureOnlineStoreServiceClient($options); + } + + /** @test */ + public function fetchFeatureValuesTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new FetchFeatureValuesResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new FetchFeatureValuesRequest()) + ->setFeatureView($formattedFeatureView); + $response = $gapicClient->fetchFeatureValues($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreService/FetchFeatureValues', $actualFuncCall); + $actualValue = $actualRequestObject->getFeatureView(); + $this->assertProtobufEquals($formattedFeatureView, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function fetchFeatureValuesExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new FetchFeatureValuesRequest()) + ->setFeatureView($formattedFeatureView); + try { + $gapicClient->fetchFeatureValues($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $request = new GetLocationRequest(); + $response = $gapicClient->getLocation($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new GetLocationRequest(); + try { + $gapicClient->getLocation($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $request = new ListLocationsRequest(); + $response = $gapicClient->listLocations($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new ListLocationsRequest(); + try { + $gapicClient->listLocations($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + $response = $gapicClient->getIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + try { + $gapicClient->getIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + $response = $gapicClient->setIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + try { + $gapicClient->setIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + $response = $gapicClient->testIamPermissions($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + try { + $gapicClient->testIamPermissions($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function fetchFeatureValuesAsyncTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new FetchFeatureValuesResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $request = (new FetchFeatureValuesRequest()) + ->setFeatureView($formattedFeatureView); + $response = $gapicClient->fetchFeatureValuesAsync($request)->wait(); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreService/FetchFeatureValues', $actualFuncCall); + $actualValue = $actualRequestObject->getFeatureView(); + $this->assertProtobufEquals($formattedFeatureView, $actualValue); + $this->assertTrue($transport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/Client/FeatureRegistryServiceClientTest.php b/AiPlatform/tests/Unit/V1/Client/FeatureRegistryServiceClientTest.php new file mode 100644 index 000000000000..bd61936d583e --- /dev/null +++ b/AiPlatform/tests/Unit/V1/Client/FeatureRegistryServiceClientTest.php @@ -0,0 +1,1566 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureRegistryServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureRegistryServiceClient($options); + } + + /** @test */ + public function createFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $feature = new Feature(); + $featureId = 'featureId-150697212'; + $request = (new CreateFeatureRequest()) + ->setParent($formattedParent) + ->setFeature($feature) + ->setFeatureId($featureId); + $response = $gapicClient->createFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/CreateFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeature(); + $this->assertProtobufEquals($feature, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureId(); + $this->assertProtobufEquals($featureId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $feature = new Feature(); + $featureId = 'featureId-150697212'; + $request = (new CreateFeatureRequest()) + ->setParent($formattedParent) + ->setFeature($feature) + ->setFeatureId($featureId); + $response = $gapicClient->createFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureGroup = new FeatureGroup(); + $featureGroupId = 'featureGroupId1387078148'; + $request = (new CreateFeatureGroupRequest()) + ->setParent($formattedParent) + ->setFeatureGroup($featureGroup) + ->setFeatureGroupId($featureGroupId); + $response = $gapicClient->createFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/CreateFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureGroup(); + $this->assertProtobufEquals($featureGroup, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureGroupId(); + $this->assertProtobufEquals($featureGroupId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureGroup = new FeatureGroup(); + $featureGroupId = 'featureGroupId1387078148'; + $request = (new CreateFeatureGroupRequest()) + ->setParent($formattedParent) + ->setFeatureGroup($featureGroup) + ->setFeatureGroupId($featureGroupId); + $response = $gapicClient->createFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $request = (new DeleteFeatureRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/DeleteFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $request = (new DeleteFeatureRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $request = (new DeleteFeatureGroupRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/DeleteFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $request = (new DeleteFeatureGroupRequest()) + ->setName($formattedName); + $response = $gapicClient->deleteFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getFeatureTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name2); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $request = (new GetFeatureRequest()) + ->setName($formattedName); + $response = $gapicClient->getFeature($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/GetFeature', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $request = (new GetFeatureRequest()) + ->setName($formattedName); + try { + $gapicClient->getFeature($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureGroupTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $request = (new GetFeatureGroupRequest()) + ->setName($formattedName); + $response = $gapicClient->getFeatureGroup($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/GetFeatureGroup', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureGroupExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $request = (new GetFeatureGroupRequest()) + ->setName($formattedName); + try { + $gapicClient->getFeatureGroup($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureGroupsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureGroupsElement = new FeatureGroup(); + $featureGroups = [ + $featureGroupsElement, + ]; + $expectedResponse = new ListFeatureGroupsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureGroups($featureGroups); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListFeatureGroupsRequest()) + ->setParent($formattedParent); + $response = $gapicClient->listFeatureGroups($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureGroups()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/ListFeatureGroups', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureGroupsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $request = (new ListFeatureGroupsRequest()) + ->setParent($formattedParent); + try { + $gapicClient->listFeatureGroups($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeaturesTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featuresElement = new Feature(); + $features = [ + $featuresElement, + ]; + $expectedResponse = new ListFeaturesResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatures($features); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $request = (new ListFeaturesRequest()) + ->setParent($formattedParent); + $response = $gapicClient->listFeatures($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatures()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/ListFeatures', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeaturesExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $request = (new ListFeaturesRequest()) + ->setParent($formattedParent); + try { + $gapicClient->listFeatures($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function updateFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $feature = new Feature(); + $request = (new UpdateFeatureRequest()) + ->setFeature($feature); + $response = $gapicClient->updateFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/UpdateFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeature(); + $this->assertProtobufEquals($feature, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $feature = new Feature(); + $request = (new UpdateFeatureRequest()) + ->setFeature($feature); + $response = $gapicClient->updateFeature($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureGroup = new FeatureGroup(); + $request = (new UpdateFeatureGroupRequest()) + ->setFeatureGroup($featureGroup); + $response = $gapicClient->updateFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/UpdateFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureGroup(); + $this->assertProtobufEquals($featureGroup, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureGroup = new FeatureGroup(); + $request = (new UpdateFeatureGroupRequest()) + ->setFeatureGroup($featureGroup); + $response = $gapicClient->updateFeatureGroup($request); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $request = new GetLocationRequest(); + $response = $gapicClient->getLocation($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new GetLocationRequest(); + try { + $gapicClient->getLocation($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $request = new ListLocationsRequest(); + $response = $gapicClient->listLocations($request); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + $request = new ListLocationsRequest(); + try { + $gapicClient->listLocations($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + $response = $gapicClient->getIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $request = (new GetIamPolicyRequest()) + ->setResource($resource); + try { + $gapicClient->getIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + $response = $gapicClient->setIamPolicy($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $request = (new SetIamPolicyRequest()) + ->setResource($resource) + ->setPolicy($policy); + try { + $gapicClient->setIamPolicy($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + $response = $gapicClient->testIamPermissions($request); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $request = (new TestIamPermissionsRequest()) + ->setResource($resource) + ->setPermissions($permissions); + try { + $gapicClient->testIamPermissions($request); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function createFeatureAsyncTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $feature = new Feature(); + $featureId = 'featureId-150697212'; + $request = (new CreateFeatureRequest()) + ->setParent($formattedParent) + ->setFeature($feature) + ->setFeatureId($featureId); + $response = $gapicClient->createFeatureAsync($request)->wait(); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/CreateFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeature(); + $this->assertProtobufEquals($feature, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureId(); + $this->assertProtobufEquals($featureId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/Client/FeaturestoreServiceClientTest.php b/AiPlatform/tests/Unit/V1/Client/FeaturestoreServiceClientTest.php index 4b38239974a6..14c9865d0054 100644 --- a/AiPlatform/tests/Unit/V1/Client/FeaturestoreServiceClientTest.php +++ b/AiPlatform/tests/Unit/V1/Client/FeaturestoreServiceClientTest.php @@ -46,7 +46,6 @@ use Google\Cloud\AIPlatform\V1\Feature; use Google\Cloud\AIPlatform\V1\FeatureSelector; use Google\Cloud\AIPlatform\V1\FeatureValueDestination; -use Google\Cloud\AIPlatform\V1\Feature\ValueType; use Google\Cloud\AIPlatform\V1\Featurestore; use Google\Cloud\AIPlatform\V1\GetEntityTypeRequest; use Google\Cloud\AIPlatform\V1\GetFeatureRequest; @@ -529,11 +528,13 @@ public function createFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $anyResponse = new Any(); $anyResponse->setValue($expectedResponse->serializeToString()); $completeOperation = new Operation(); @@ -544,8 +545,6 @@ public function createFeatureTest() // Mock request $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $featureId = 'featureId-150697212'; $request = (new CreateFeatureRequest()) ->setParent($formattedParent) @@ -620,8 +619,6 @@ public function createFeatureExceptionTest() // Mock request $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $featureId = 'featureId-150697212'; $request = (new CreateFeatureRequest()) ->setParent($formattedParent) @@ -1496,11 +1493,13 @@ public function getFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name2); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $transport->addResponse($expectedResponse); // Mock request $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); @@ -2127,16 +2126,16 @@ public function updateFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $transport->addResponse($expectedResponse); // Mock request $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $request = (new UpdateFeatureRequest()) ->setFeature($feature); $response = $gapicClient->updateFeature($request); @@ -2171,8 +2170,6 @@ public function updateFeatureExceptionTest() $transport->addResponse(null, $status); // Mock request $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $request = (new UpdateFeatureRequest()) ->setFeature($feature); try { diff --git a/AiPlatform/tests/Unit/V1/FeatureOnlineStoreAdminServiceClientTest.php b/AiPlatform/tests/Unit/V1/FeatureOnlineStoreAdminServiceClientTest.php new file mode 100644 index 000000000000..f535822129fe --- /dev/null +++ b/AiPlatform/tests/Unit/V1/FeatureOnlineStoreAdminServiceClientTest.php @@ -0,0 +1,1568 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureOnlineStoreAdminServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureOnlineStoreAdminServiceClient($options); + } + + /** @test */ + public function createFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStore = new FeatureOnlineStore(); + $featureOnlineStoreId = 'featureOnlineStoreId-10760612'; + $response = $gapicClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/CreateFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStore(); + $this->assertProtobufEquals($featureOnlineStore, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureOnlineStoreId(); + $this->assertProtobufEquals($featureOnlineStoreId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureOnlineStore = new FeatureOnlineStore(); + $featureOnlineStoreId = 'featureOnlineStoreId-10760612'; + $response = $gapicClient->createFeatureOnlineStore($formattedParent, $featureOnlineStore, $featureOnlineStoreId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $featureView = new FeatureView(); + $featureViewId = 'featureViewId-1041382228'; + $response = $gapicClient->createFeatureView($formattedParent, $featureView, $featureViewId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/CreateFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureView(); + $this->assertProtobufEquals($featureView, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureViewId(); + $this->assertProtobufEquals($featureViewId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $featureView = new FeatureView(); + $featureViewId = 'featureViewId-1041382228'; + $response = $gapicClient->createFeatureView($formattedParent, $featureView, $featureViewId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $response = $gapicClient->deleteFeatureOnlineStore($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/DeleteFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $response = $gapicClient->deleteFeatureOnlineStore($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->deleteFeatureView($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/DeleteFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->deleteFeatureView($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getFeatureOnlineStoreTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $response = $gapicClient->getFeatureOnlineStore($formattedName); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureOnlineStore', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureOnlineStoreExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + try { + $gapicClient->getFeatureOnlineStore($formattedName); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->getFeatureView($formattedName); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureView', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + try { + $gapicClient->getFeatureView($formattedName); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewSyncTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $expectedResponse = new FeatureViewSync(); + $expectedResponse->setName($name2); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureViewSyncName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->getFeatureViewSync($formattedName); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/GetFeatureViewSync', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureViewSyncExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureViewSyncName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + try { + $gapicClient->getFeatureViewSync($formattedName); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureOnlineStoresTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureOnlineStoresElement = new FeatureOnlineStore(); + $featureOnlineStores = [ + $featureOnlineStoresElement, + ]; + $expectedResponse = new ListFeatureOnlineStoresResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureOnlineStores($featureOnlineStores); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $response = $gapicClient->listFeatureOnlineStores($formattedParent); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureOnlineStores()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureOnlineStores', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureOnlineStoresExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + try { + $gapicClient->listFeatureOnlineStores($formattedParent); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewSyncsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureViewSyncsElement = new FeatureViewSync(); + $featureViewSyncs = [ + $featureViewSyncsElement, + ]; + $expectedResponse = new ListFeatureViewSyncsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureViewSyncs($featureViewSyncs); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->listFeatureViewSyncs($formattedParent); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureViewSyncs()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureViewSyncs', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewSyncsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + try { + $gapicClient->listFeatureViewSyncs($formattedParent); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureViewsElement = new FeatureView(); + $featureViews = [ + $featureViewsElement, + ]; + $expectedResponse = new ListFeatureViewsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureViews($featureViews); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + $response = $gapicClient->listFeatureViews($formattedParent); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureViews()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/ListFeatureViews', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureViewsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->featureOnlineStoreName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]'); + try { + $gapicClient->listFeatureViews($formattedParent); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function syncFeatureViewTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $featureViewSync = 'featureViewSync-40619540'; + $expectedResponse = new SyncFeatureViewResponse(); + $expectedResponse->setFeatureViewSync($featureViewSync); + $transport->addResponse($expectedResponse); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->syncFeatureView($formattedFeatureView); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/SyncFeatureView', $actualFuncCall); + $actualValue = $actualRequestObject->getFeatureView(); + $this->assertProtobufEquals($formattedFeatureView, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function syncFeatureViewExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + try { + $gapicClient->syncFeatureView($formattedFeatureView); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function updateFeatureOnlineStoreTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureOnlineStore(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureOnlineStoreTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureOnlineStore = new FeatureOnlineStore(); + $response = $gapicClient->updateFeatureOnlineStore($featureOnlineStore); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/UpdateFeatureOnlineStore', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureOnlineStore(); + $this->assertProtobufEquals($featureOnlineStore, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureOnlineStoreTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureOnlineStoreExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureOnlineStoreTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureOnlineStore = new FeatureOnlineStore(); + $response = $gapicClient->updateFeatureOnlineStore($featureOnlineStore); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureOnlineStoreTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureViewTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $expectedResponse = new FeatureView(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureViewTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureView = new FeatureView(); + $response = $gapicClient->updateFeatureView($featureView); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreAdminService/UpdateFeatureView', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureView(); + $this->assertProtobufEquals($featureView, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureViewTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureViewExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureViewTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureView = new FeatureView(); + $response = $gapicClient->updateFeatureView($featureView); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureViewTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $response = $gapicClient->getLocation(); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->getLocation(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $response = $gapicClient->listLocations(); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->listLocations(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $response = $gapicClient->getIamPolicy($resource); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + try { + $gapicClient->getIamPolicy($resource); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $response = $gapicClient->setIamPolicy($resource, $policy); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + try { + $gapicClient->setIamPolicy($resource, $policy); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $response = $gapicClient->testIamPermissions($resource, $permissions); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + try { + $gapicClient->testIamPermissions($resource, $permissions); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/FeatureOnlineStoreServiceClientTest.php b/AiPlatform/tests/Unit/V1/FeatureOnlineStoreServiceClientTest.php new file mode 100644 index 000000000000..4deef2b56f9e --- /dev/null +++ b/AiPlatform/tests/Unit/V1/FeatureOnlineStoreServiceClientTest.php @@ -0,0 +1,433 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureOnlineStoreServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureOnlineStoreServiceClient($options); + } + + /** @test */ + public function fetchFeatureValuesTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new FetchFeatureValuesResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + $response = $gapicClient->fetchFeatureValues($formattedFeatureView); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureOnlineStoreService/FetchFeatureValues', $actualFuncCall); + $actualValue = $actualRequestObject->getFeatureView(); + $this->assertProtobufEquals($formattedFeatureView, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function fetchFeatureValuesExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedFeatureView = $gapicClient->featureViewName('[PROJECT]', '[LOCATION]', '[FEATURE_ONLINE_STORE]', '[FEATURE_VIEW]'); + try { + $gapicClient->fetchFeatureValues($formattedFeatureView); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $response = $gapicClient->getLocation(); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->getLocation(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $response = $gapicClient->listLocations(); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->listLocations(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $response = $gapicClient->getIamPolicy($resource); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + try { + $gapicClient->getIamPolicy($resource); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $response = $gapicClient->setIamPolicy($resource, $policy); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + try { + $gapicClient->setIamPolicy($resource, $policy); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $response = $gapicClient->testIamPermissions($resource, $permissions); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + try { + $gapicClient->testIamPermissions($resource, $permissions); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/FeatureRegistryServiceClientTest.php b/AiPlatform/tests/Unit/V1/FeatureRegistryServiceClientTest.php new file mode 100644 index 000000000000..b56cc8238f5f --- /dev/null +++ b/AiPlatform/tests/Unit/V1/FeatureRegistryServiceClientTest.php @@ -0,0 +1,1401 @@ +getMockBuilder(CredentialsWrapper::class)->disableOriginalConstructor()->getMock(); + } + + /** @return FeatureRegistryServiceClient */ + private function createClient(array $options = []) + { + $options += [ + 'credentials' => $this->createCredentials(), + ]; + return new FeatureRegistryServiceClient($options); + } + + /** @test */ + public function createFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $feature = new Feature(); + $featureId = 'featureId-150697212'; + $response = $gapicClient->createFeature($formattedParent, $feature, $featureId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/CreateFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeature(); + $this->assertProtobufEquals($feature, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureId(); + $this->assertProtobufEquals($featureId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $feature = new Feature(); + $featureId = 'featureId-150697212'; + $response = $gapicClient->createFeature($formattedParent, $feature, $featureId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/createFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureGroup = new FeatureGroup(); + $featureGroupId = 'featureGroupId1387078148'; + $response = $gapicClient->createFeatureGroup($formattedParent, $featureGroup, $featureGroupId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/CreateFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureGroup(); + $this->assertProtobufEquals($featureGroup, $actualValue); + $actualValue = $actualApiRequestObject->getFeatureGroupId(); + $this->assertProtobufEquals($featureGroupId, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function createFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/createFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $featureGroup = new FeatureGroup(); + $featureGroupId = 'featureGroupId1387078148'; + $response = $gapicClient->createFeatureGroup($formattedParent, $featureGroup, $featureGroupId); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/createFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $response = $gapicClient->deleteFeature($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/DeleteFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $response = $gapicClient->deleteFeature($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $expectedResponse = new GPBEmpty(); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/deleteFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $response = $gapicClient->deleteFeatureGroup($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/DeleteFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function deleteFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/deleteFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $response = $gapicClient->deleteFeatureGroup($formattedName); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/deleteFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getFeatureTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name2); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + $response = $gapicClient->getFeature($formattedName); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/GetFeature', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); + try { + $gapicClient->getFeature($formattedName); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureGroupTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name2); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $transport->addResponse($expectedResponse); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + $response = $gapicClient->getFeatureGroup($formattedName); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/GetFeatureGroup', $actualFuncCall); + $actualValue = $actualRequestObject->getName(); + $this->assertProtobufEquals($formattedName, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getFeatureGroupExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedName = $gapicClient->featureGroupName('[PROJECT]', '[LOCATION]', '[FEATURE_GROUP]'); + try { + $gapicClient->getFeatureGroup($formattedName); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureGroupsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featureGroupsElement = new FeatureGroup(); + $featureGroups = [ + $featureGroupsElement, + ]; + $expectedResponse = new ListFeatureGroupsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatureGroups($featureGroups); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + $response = $gapicClient->listFeatureGroups($formattedParent); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatureGroups()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/ListFeatureGroups', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeatureGroupsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->locationName('[PROJECT]', '[LOCATION]'); + try { + $gapicClient->listFeatureGroups($formattedParent); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeaturesTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $featuresElement = new Feature(); + $features = [ + $featuresElement, + ]; + $expectedResponse = new ListFeaturesResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setFeatures($features); + $transport->addResponse($expectedResponse); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + $response = $gapicClient->listFeatures($formattedParent); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getFeatures()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/ListFeatures', $actualFuncCall); + $actualValue = $actualRequestObject->getParent(); + $this->assertProtobufEquals($formattedParent, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listFeaturesExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); + try { + $gapicClient->listFeatures($formattedParent); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function updateFeatureTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $description = 'description-1724546052'; + $etag = 'etag3123477'; + $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; + $expectedResponse = new Feature(); + $expectedResponse->setName($name); + $expectedResponse->setDescription($description); + $expectedResponse->setEtag($etag); + $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $feature = new Feature(); + $response = $gapicClient->updateFeature($feature); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/UpdateFeature', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeature(); + $this->assertProtobufEquals($feature, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $feature = new Feature(); + $response = $gapicClient->updateFeature($feature); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureGroupTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $name = 'name3373707'; + $etag = 'etag3123477'; + $description = 'description-1724546052'; + $expectedResponse = new FeatureGroup(); + $expectedResponse->setName($name); + $expectedResponse->setEtag($etag); + $expectedResponse->setDescription($description); + $anyResponse = new Any(); + $anyResponse->setValue($expectedResponse->serializeToString()); + $completeOperation = new Operation(); + $completeOperation->setName('operations/updateFeatureGroupTest'); + $completeOperation->setDone(true); + $completeOperation->setResponse($anyResponse); + $operationsTransport->addResponse($completeOperation); + // Mock request + $featureGroup = new FeatureGroup(); + $response = $gapicClient->updateFeatureGroup($featureGroup); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $apiRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($apiRequests)); + $operationsRequestsEmpty = $operationsTransport->popReceivedCalls(); + $this->assertSame(0, count($operationsRequestsEmpty)); + $actualApiFuncCall = $apiRequests[0]->getFuncCall(); + $actualApiRequestObject = $apiRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.aiplatform.v1.FeatureRegistryService/UpdateFeatureGroup', $actualApiFuncCall); + $actualValue = $actualApiRequestObject->getFeatureGroup(); + $this->assertProtobufEquals($featureGroup, $actualValue); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureGroupTest'); + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + $this->assertTrue($response->isDone()); + $this->assertEquals($expectedResponse, $response->getResult()); + $apiRequestsEmpty = $transport->popReceivedCalls(); + $this->assertSame(0, count($apiRequestsEmpty)); + $operationsRequests = $operationsTransport->popReceivedCalls(); + $this->assertSame(1, count($operationsRequests)); + $actualOperationsFuncCall = $operationsRequests[0]->getFuncCall(); + $actualOperationsRequestObject = $operationsRequests[0]->getRequestObject(); + $this->assertSame('/google.longrunning.Operations/GetOperation', $actualOperationsFuncCall); + $this->assertEquals($expectedOperationsRequestObject, $actualOperationsRequestObject); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function updateFeatureGroupExceptionTest() + { + $operationsTransport = $this->createTransport(); + $operationsClient = new OperationsClient([ + 'apiEndpoint' => '', + 'transport' => $operationsTransport, + 'credentials' => $this->createCredentials(), + ]); + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + 'operationsClient' => $operationsClient, + ]); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + // Mock response + $incompleteOperation = new Operation(); + $incompleteOperation->setName('operations/updateFeatureGroupTest'); + $incompleteOperation->setDone(false); + $transport->addResponse($incompleteOperation); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $operationsTransport->addResponse(null, $status); + // Mock request + $featureGroup = new FeatureGroup(); + $response = $gapicClient->updateFeatureGroup($featureGroup); + $this->assertFalse($response->isDone()); + $this->assertNull($response->getResult()); + $expectedOperationsRequestObject = new GetOperationRequest(); + $expectedOperationsRequestObject->setName('operations/updateFeatureGroupTest'); + try { + $response->pollUntilComplete([ + 'initialPollDelayMillis' => 1, + ]); + // If the pollUntilComplete() method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stubs are exhausted + $transport->popReceivedCalls(); + $operationsTransport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + $this->assertTrue($operationsTransport->isExhausted()); + } + + /** @test */ + public function getLocationTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $name2 = 'name2-1052831874'; + $locationId = 'locationId552319461'; + $displayName = 'displayName1615086568'; + $expectedResponse = new Location(); + $expectedResponse->setName($name2); + $expectedResponse->setLocationId($locationId); + $expectedResponse->setDisplayName($displayName); + $transport->addResponse($expectedResponse); + $response = $gapicClient->getLocation(); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/GetLocation', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getLocationExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->getLocation(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $nextPageToken = ''; + $locationsElement = new Location(); + $locations = [ + $locationsElement, + ]; + $expectedResponse = new ListLocationsResponse(); + $expectedResponse->setNextPageToken($nextPageToken); + $expectedResponse->setLocations($locations); + $transport->addResponse($expectedResponse); + $response = $gapicClient->listLocations(); + $this->assertEquals($expectedResponse, $response->getPage()->getResponseObject()); + $resources = iterator_to_array($response->iterateAllElements()); + $this->assertSame(1, count($resources)); + $this->assertEquals($expectedResponse->getLocations()[0], $resources[0]); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.cloud.location.Locations/ListLocations', $actualFuncCall); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function listLocationsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + try { + $gapicClient->listLocations(); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $response = $gapicClient->getIamPolicy($resource); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/GetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function getIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + try { + $gapicClient->getIamPolicy($resource); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $version = 351608024; + $etag = '21'; + $expectedResponse = new Policy(); + $expectedResponse->setVersion($version); + $expectedResponse->setEtag($etag); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + $response = $gapicClient->setIamPolicy($resource, $policy); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/SetIamPolicy', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPolicy(); + $this->assertProtobufEquals($policy, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function setIamPolicyExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $policy = new Policy(); + try { + $gapicClient->setIamPolicy($resource, $policy); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + // Mock response + $expectedResponse = new TestIamPermissionsResponse(); + $transport->addResponse($expectedResponse); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + $response = $gapicClient->testIamPermissions($resource, $permissions); + $this->assertEquals($expectedResponse, $response); + $actualRequests = $transport->popReceivedCalls(); + $this->assertSame(1, count($actualRequests)); + $actualFuncCall = $actualRequests[0]->getFuncCall(); + $actualRequestObject = $actualRequests[0]->getRequestObject(); + $this->assertSame('/google.iam.v1.IAMPolicy/TestIamPermissions', $actualFuncCall); + $actualValue = $actualRequestObject->getResource(); + $this->assertProtobufEquals($resource, $actualValue); + $actualValue = $actualRequestObject->getPermissions(); + $this->assertProtobufEquals($permissions, $actualValue); + $this->assertTrue($transport->isExhausted()); + } + + /** @test */ + public function testIamPermissionsExceptionTest() + { + $transport = $this->createTransport(); + $gapicClient = $this->createClient([ + 'transport' => $transport, + ]); + $this->assertTrue($transport->isExhausted()); + $status = new stdClass(); + $status->code = Code::DATA_LOSS; + $status->details = 'internal error'; + $expectedExceptionMessage = json_encode([ + 'message' => 'internal error', + 'code' => Code::DATA_LOSS, + 'status' => 'DATA_LOSS', + 'details' => [], + ], JSON_PRETTY_PRINT); + $transport->addResponse(null, $status); + // Mock request + $resource = 'resource-341064690'; + $permissions = []; + try { + $gapicClient->testIamPermissions($resource, $permissions); + // If the $gapicClient method call did not throw, fail the test + $this->fail('Expected an ApiException, but no exception was thrown.'); + } catch (ApiException $ex) { + $this->assertEquals($status->code, $ex->getCode()); + $this->assertEquals($expectedExceptionMessage, $ex->getMessage()); + } + // Call popReceivedCalls to ensure the stub is exhausted + $transport->popReceivedCalls(); + $this->assertTrue($transport->isExhausted()); + } +} diff --git a/AiPlatform/tests/Unit/V1/FeaturestoreServiceClientTest.php b/AiPlatform/tests/Unit/V1/FeaturestoreServiceClientTest.php index 380a12f97ac6..100aac9539c4 100644 --- a/AiPlatform/tests/Unit/V1/FeaturestoreServiceClientTest.php +++ b/AiPlatform/tests/Unit/V1/FeaturestoreServiceClientTest.php @@ -35,7 +35,6 @@ use Google\Cloud\AIPlatform\V1\Feature; use Google\Cloud\AIPlatform\V1\FeatureSelector; use Google\Cloud\AIPlatform\V1\FeatureValueDestination; -use Google\Cloud\AIPlatform\V1\Feature\ValueType; use Google\Cloud\AIPlatform\V1\Featurestore; use Google\Cloud\AIPlatform\V1\FeaturestoreServiceClient; use Google\Cloud\AIPlatform\V1\IdMatcher; @@ -483,11 +482,13 @@ public function createFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $anyResponse = new Any(); $anyResponse->setValue($expectedResponse->serializeToString()); $completeOperation = new Operation(); @@ -498,8 +499,6 @@ public function createFeatureTest() // Mock request $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $featureId = 'featureId-150697212'; $response = $gapicClient->createFeature($formattedParent, $feature, $featureId); $this->assertFalse($response->isDone()); @@ -570,8 +569,6 @@ public function createFeatureExceptionTest() // Mock request $formattedParent = $gapicClient->entityTypeName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]'); $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $featureId = 'featureId-150697212'; $response = $gapicClient->createFeature($formattedParent, $feature, $featureId); $this->assertFalse($response->isDone()); @@ -1406,11 +1403,13 @@ public function getFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name2); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $transport->addResponse($expectedResponse); // Mock request $formattedName = $gapicClient->featureName('[PROJECT]', '[LOCATION]', '[FEATURESTORE]', '[ENTITY_TYPE]', '[FEATURE]'); @@ -2003,16 +2002,16 @@ public function updateFeatureTest() $description = 'description-1724546052'; $etag = 'etag3123477'; $disableMonitoring = false; + $versionColumnName = 'versionColumnName-1981743891'; $expectedResponse = new Feature(); $expectedResponse->setName($name); $expectedResponse->setDescription($description); $expectedResponse->setEtag($etag); $expectedResponse->setDisableMonitoring($disableMonitoring); + $expectedResponse->setVersionColumnName($versionColumnName); $transport->addResponse($expectedResponse); // Mock request $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); $response = $gapicClient->updateFeature($feature); $this->assertEquals($expectedResponse, $response); $actualRequests = $transport->popReceivedCalls(); @@ -2045,8 +2044,6 @@ public function updateFeatureExceptionTest() $transport->addResponse(null, $status); // Mock request $feature = new Feature(); - $featureValueType = ValueType::VALUE_TYPE_UNSPECIFIED; - $feature->setValueType($featureValueType); try { $gapicClient->updateFeature($feature); // If the $gapicClient method call did not throw, fail the test