Skip to content

Commit

Permalink
feat: add ListProfiles RPC to ExportService (#6874)
Browse files Browse the repository at this point in the history
PiperOrigin-RevId: 590653747
Source-Link: googleapis/googleapis@f8a2933
Source-Link: googleapis/googleapis-gen@4f50486
Copy-Tag: eyJwIjoiUHJvZmlsZXIvLk93bEJvdC55YW1sIiwiaCI6IjRmNTA0ODY3MjMzYmYyMWM1OWI2ODY3YWE3NTE4MTdmMzcwMjYyOWMifQ==
  • Loading branch information
gcf-owl-bot[bot] authored Dec 14, 2023
1 parent 369c9ea commit fc49165
Show file tree
Hide file tree
Showing 13 changed files with 1,389 additions and 0 deletions.
Binary file modified Profiler/metadata/V2/Profiler.php
Binary file not shown.
73 changes: 73 additions & 0 deletions Profiler/samples/V2/ExportServiceClient/list_profiles.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
<?php
/*
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/*
* GENERATED CODE WARNING
* This file was automatically generated - do not edit!
*/

require_once __DIR__ . '/../../../vendor/autoload.php';

// [START cloudprofiler_v2_generated_ExportService_ListProfiles_sync]
use Google\ApiCore\ApiException;
use Google\ApiCore\PagedListResponse;
use Google\Cloud\Profiler\V2\ExportServiceClient;
use Google\Cloud\Profiler\V2\Profile;

/**
* Lists profiles which have been collected so far and for which the caller
* has permission to view.
*
* @param string $formattedParent The parent, which owns this collection of profiles.
* Format: projects/{user_project_id}
* Please see {@see ExportServiceClient::projectName()} for help formatting this field.
*/
function list_profiles_sample(string $formattedParent): void
{
// Create a client.
$exportServiceClient = new ExportServiceClient();

// Call the API and handle any network failures.
try {
/** @var PagedListResponse $response */
$response = $exportServiceClient->listProfiles($formattedParent);

/** @var Profile $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 = ExportServiceClient::projectName('[PROJECT]');

list_profiles_sample($formattedParent);
}
// [END cloudprofiler_v2_generated_ExportService_ListProfiles_sync]
235 changes: 235 additions & 0 deletions Profiler/src/V2/Client/ExportServiceClient.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
<?php
/*
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/*
* GENERATED CODE WARNING
* Generated by gapic-generator-php from the file
* https://github.com/googleapis/googleapis/blob/master/google/devtools/cloudprofiler/v2/profiler.proto
* Updates to the above are reflected here through a refresh process.
*/

namespace Google\Cloud\Profiler\V2\Client;

use Google\ApiCore\ApiException;
use Google\ApiCore\CredentialsWrapper;
use Google\ApiCore\GapicClientTrait;
use Google\ApiCore\PagedListResponse;
use Google\ApiCore\ResourceHelperTrait;
use Google\ApiCore\RetrySettings;
use Google\ApiCore\Transport\TransportInterface;
use Google\ApiCore\ValidationException;
use Google\Auth\FetchAuthTokenInterface;
use Google\Cloud\Profiler\V2\ListProfilesRequest;
use GuzzleHttp\Promise\PromiseInterface;

/**
* Service Description: Service allows existing Cloud Profiler customers to export their profile data
* out of Google Cloud.
*
* This class provides the ability to make remote calls to the backing service through method
* calls that map to API methods.
*
* 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 class is currently experimental and may be subject to changes. See {@see
* \Google\Cloud\Profiler\V2\ExportServiceClient} for the stable implementation
*
* @experimental
*
* @method PromiseInterface listProfilesAsync(ListProfilesRequest $request, array $optionalArgs = [])
*/
final class ExportServiceClient
{
use GapicClientTrait;
use ResourceHelperTrait;

/** The name of the service. */
private const SERVICE_NAME = 'google.devtools.cloudprofiler.v2.ExportService';

/** The default address of the service. */
private const SERVICE_ADDRESS = 'cloudprofiler.googleapis.com';

/** The default port of the service. */
private const DEFAULT_SERVICE_PORT = 443;

/** The name of the code generator, to be included in the agent header. */
private const CODEGEN_NAME = 'gapic';

/** The default scopes required by the service. */
public static $serviceScopes = [
'https://www.googleapis.com/auth/cloud-platform',
'https://www.googleapis.com/auth/monitoring',
'https://www.googleapis.com/auth/monitoring.write',
];

private static function getClientDefaults()
{
return [
'serviceName' => self::SERVICE_NAME,
'apiEndpoint' => self::SERVICE_ADDRESS . ':' . self::DEFAULT_SERVICE_PORT,
'clientConfig' => __DIR__ . '/../resources/export_service_client_config.json',
'descriptorsConfigPath' => __DIR__ . '/../resources/export_service_descriptor_config.php',
'gcpApiConfigPath' => __DIR__ . '/../resources/export_service_grpc_config.json',
'credentialsConfig' => [
'defaultScopes' => self::$serviceScopes,
],
'transportConfig' => [
'rest' => [
'restClientConfigPath' => __DIR__ . '/../resources/export_service_rest_client_config.php',
],
],
];
}

/**
* Formats a string containing the fully-qualified path to represent a project
* resource.
*
* @param string $project
*
* @return string The formatted project resource.
*/
public static function projectName(string $project): string
{
return self::getPathTemplate('project')->render([
'project' => $project,
]);
}

/**
* Parses a formatted name string and returns an associative array of the components in the name.
* The following name formats are supported:
* Template: Pattern
* - project: projects/{project}
*
* 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 "<uri>:<port>". Default 'cloudprofiler.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);
}

/**
* Lists profiles which have been collected so far and for which the caller
* has permission to view.
*
* The async variant is {@see ExportServiceClient::listProfilesAsync()} .
*
* @param ListProfilesRequest $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 listProfiles(ListProfilesRequest $request, array $callOptions = []): PagedListResponse
{
return $this->startApiCall('ListProfiles', $request, $callOptions);
}
}
34 changes: 34 additions & 0 deletions Profiler/src/V2/ExportServiceClient.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
<?php
/*
* Copyright 2023 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

/*
* GENERATED CODE WARNING
* Generated by gapic-generator-php from the file
* https://github.com/googleapis/googleapis/blob/master/google/devtools/cloudprofiler/v2/profiler.proto
* Updates to the above are reflected here through a refresh process.
*/

namespace Google\Cloud\Profiler\V2;

use Google\Cloud\Profiler\V2\Gapic\ExportServiceGapicClient;

/** {@inheritdoc} */
class ExportServiceClient extends ExportServiceGapicClient
{
// This class is intentionally empty, and is intended to hold manual additions to
// the generated {@see ExportServiceGapicClient} class.
}
Loading

0 comments on commit fc49165

Please sign in to comment.