diff --git a/parametermanager/README.md b/parametermanager/README.md index 2d49e9311..4fe805d36 100644 --- a/parametermanager/README.md +++ b/parametermanager/README.md @@ -1 +1,65 @@ -## Initial placeholder README file for folder creation \ No newline at end of file +# Google Parameter Manager PHP Sample Application + +[![Open in Cloud Shell][shell_img]][shell_link] + +[shell_img]: http://gstatic.com/cloudssh/images/open-btn.svg +[shell_link]: https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googlecloudplatform/php-docs-samples&page=editor&working_dir=parametermanager + +## Description + +This simple command-line application demonstrates how to invoke +[Google Parameter Manager][parametermanager] from PHP. + +## Build and Run + +1. **Enable APIs** - [Enable the Parameter Manager + API](https://console.cloud.google.com/apis/enableflow?apiid=parametermanager.googleapis.com) + and create a new project or select an existing project. + +1. **Download The Credentials** - Click "Go to credentials" after enabling the + APIs. Click "New Credentials" and select "Service Account Key". Create a new + service account, use the JSON key type, and select "Create". Once + downloaded, set the environment variable `GOOGLE_APPLICATION_CREDENTIALS` to + the path of the JSON key that was downloaded. + +1. **Clone the repo** and cd into this directory + + ```text + $ git clone https://github.com/GoogleCloudPlatform/php-docs-samples + $ cd php-docs-samples/parametermanager + ``` + +1. **Install dependencies** via [Composer][install-composer]. If composer is + installed locally: + + + ```text + $ php composer.phar install + ``` + + If composer is installed globally: + + ```text + $ composer install + ``` + +1. Execute the snippets in the [src/](src/) directory by running: + + ```text + $ php src/SNIPPET_NAME.php + ``` + + The usage will print for each if no arguments are provided. + +See the [Parameter Manager Documentation](https://cloud.google.com/secret-manager/parameter-manager/docs/overview) for more information. + +## Contributing changes + +* See [CONTRIBUTING.md](../CONTRIBUTING.md) + +## Licensing + +* See [LICENSE](../LICENSE) + +[install-composer]: http://getcomposer.org/doc/00-intro.md +[parametermanager]: https://cloud.google.com/secret-manager/parameter-manager/docs/overview diff --git a/parametermanager/composer.json b/parametermanager/composer.json new file mode 100644 index 000000000..66f8beee4 --- /dev/null +++ b/parametermanager/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "google/cloud-secret-manager": "^1.15.2", + "google/cloud-parametermanager": "^0.1.1" + } +} diff --git a/parametermanager/phpunit.xml.dist b/parametermanager/phpunit.xml.dist new file mode 100644 index 000000000..7f8c72a02 --- /dev/null +++ b/parametermanager/phpunit.xml.dist @@ -0,0 +1,38 @@ + + + + + + test + + + + + + + + ./src + + ./vendor + + + + + + + + diff --git a/parametermanager/src/create_param.php b/parametermanager/src/create_param.php new file mode 100644 index 000000000..87c9690e8 --- /dev/null +++ b/parametermanager/src/create_param.php @@ -0,0 +1,68 @@ +locationName($projectId, 'global'); + + // Create a new Parameter object. + $parameter = new Parameter(); + + // Prepare the request with the parent, parameter ID, and the parameter object. + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + // Crete the parameter. + $newParameter = $client->createParameter($request); + + // Print the new parameter name + printf('Created parameter: %s' . PHP_EOL, $newParameter->getName()); + +} +// [END parametermanager_create_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_param_version.php b/parametermanager/src/create_param_version.php new file mode 100644 index 000000000..87cd905e2 --- /dev/null +++ b/parametermanager/src/create_param_version.php @@ -0,0 +1,73 @@ +parameterName($projectId, 'global', $parameterId); + + // Create a new ParameterVersionPayload object and set the unformatted data. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_param_version_with_secret.php b/parametermanager/src/create_param_version_with_secret.php new file mode 100644 index 000000000..8f8a1ab10 --- /dev/null +++ b/parametermanager/src/create_param_version_with_secret.php @@ -0,0 +1,76 @@ +parameterName($projectId, 'global', $parameterId); + + // Build payload. + $payload = sprintf('{"username": "test-user", "password": "__REF__(//secretmanager.googleapis.com/%s)"}', $secretId); + + // Create a new ParameterVersionPayload object and set the payload with secret reference. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_param_version_with_secret] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_regional_param.php b/parametermanager/src/create_regional_param.php new file mode 100644 index 000000000..dd62e7941 --- /dev/null +++ b/parametermanager/src/create_regional_param.php @@ -0,0 +1,71 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parent object. + $parent = $client->locationName($projectId, $locationId); + + // Create a new Parameter object. + $parameter = new Parameter(); + + // Prepare the request with the parent, parameter ID, and the parameter object. + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + // Crete the parameter. + $newParameter = $client->createParameter($request); + + // Print the new parameter name + printf('Created regional parameter: %s' . PHP_EOL, $newParameter->getName()); +} +// [END parametermanager_create_regional_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_regional_param_version.php b/parametermanager/src/create_regional_param_version.php new file mode 100644 index 000000000..7db165dd3 --- /dev/null +++ b/parametermanager/src/create_regional_param_version.php @@ -0,0 +1,77 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parent object. + $parent = $client->parameterName($projectId, $locationId, $parameterId); + + // Create a new ParameterVersionPayload object and set the unformatted data. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created regional parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_regional_param_version_with_secret.php b/parametermanager/src/create_regional_param_version_with_secret.php new file mode 100644 index 000000000..622d849e0 --- /dev/null +++ b/parametermanager/src/create_regional_param_version_with_secret.php @@ -0,0 +1,80 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parent object. + $parent = $client->parameterName($projectId, $locationId, $parameterId); + + // Build payload. + $payload = sprintf('{"username": "test-user", "password": "__REF__(//secretmanager.googleapis.com/%s)"}', $secretId); + + // Create a new ParameterVersionPayload object and set the payload with secret reference. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created regional parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_regional_param_version_with_secret] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_structured_param.php b/parametermanager/src/create_structured_param.php new file mode 100644 index 000000000..39f9e528d --- /dev/null +++ b/parametermanager/src/create_structured_param.php @@ -0,0 +1,68 @@ +locationName($projectId, 'global'); + + // Create a new Parameter object and set the format. + $parameter = (new Parameter()) + ->setFormat(ParameterFormat::value($format)); + + // Prepare the request with the parent, parameter ID, and the parameter object. + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + // Call the API and handle any network failures with print statements. + $newParameter = $client->createParameter($request); + printf('Created parameter %s with format %s' . PHP_EOL, $newParameter->getName(), ParameterFormat::name($newParameter->getFormat())); +} +// [END parametermanager_create_structured_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_structured_param_version.php b/parametermanager/src/create_structured_param_version.php new file mode 100644 index 000000000..c9dff7e1b --- /dev/null +++ b/parametermanager/src/create_structured_param_version.php @@ -0,0 +1,73 @@ +parameterName($projectId, 'global', $parameterId); + + // Create a new ParameterVersionPayload object and set the json data. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_structured_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_structured_regional_param.php b/parametermanager/src/create_structured_regional_param.php new file mode 100644 index 000000000..60bedf9f8 --- /dev/null +++ b/parametermanager/src/create_structured_regional_param.php @@ -0,0 +1,72 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parent object. + $parent = $client->locationName($projectId, $locationId); + + // Create a new Parameter object and set the format. + $parameter = (new Parameter()) + ->setFormat(ParameterFormat::value($format)); + + // Prepare the request with the parent, parameter ID, and the parameter object. + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + // Call the API and handle any network failures with print statements. + $newParameter = $client->createParameter($request); + printf('Created regional parameter %s with format %s' . PHP_EOL, $newParameter->getName(), ParameterFormat::name($newParameter->getFormat())); +} +// [END parametermanager_create_structured_regional_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/create_structured_regional_param_version.php b/parametermanager/src/create_structured_regional_param_version.php new file mode 100644 index 000000000..214464238 --- /dev/null +++ b/parametermanager/src/create_structured_regional_param_version.php @@ -0,0 +1,77 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parent object. + $parent = $client->parameterName($projectId, $locationId, $parameterId); + + // Create a new ParameterVersionPayload object and set the json data. + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + // Create a new ParameterVersion object and set the payload. + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + // Prepare the request with the parent and parameter version object. + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + // Call the API to create the parameter version. + $newParameterVersion = $client->createParameterVersion($request); + printf('Created regional parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); +} +// [END parametermanager_create_structured_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/delete_param.php b/parametermanager/src/delete_param.php new file mode 100644 index 000000000..b611c4fd2 --- /dev/null +++ b/parametermanager/src/delete_param.php @@ -0,0 +1,60 @@ +parameterName($projectId, 'global', $parameterId); + + // Prepare the request to delete the parameter. + $request = (new DeleteParameterRequest()) + ->setName($parameterName); + + // Delete the parameter using the client. + $client->deleteParameter($request); + + printf('Deleted parameter: %s' . PHP_EOL, $parameterId); +} +// [END parametermanager_delete_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/delete_param_version.php b/parametermanager/src/delete_param_version.php new file mode 100644 index 000000000..06b7d8286 --- /dev/null +++ b/parametermanager/src/delete_param_version.php @@ -0,0 +1,61 @@ +parameterVersionName($projectId, 'global', $parameterId, $versionId); + + // Prepare the request to delete the parameter version. + $request = (new DeleteParameterVersionRequest()) + ->setName($parameterVersionName); + + // Delete the parameter version using the client. + $client->deleteParameterVersion($request); + + printf('Deleted parameter version: %s' . PHP_EOL, $versionId); +} +// [END parametermanager_delete_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/delete_regional_param.php b/parametermanager/src/delete_regional_param.php new file mode 100644 index 000000000..e14e77ae0 --- /dev/null +++ b/parametermanager/src/delete_regional_param.php @@ -0,0 +1,64 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the paramete. + $parameterName = $client->parameterName($projectId, $locationId, $parameterId); + + // Prepare the request to delete the parameter. + $request = (new DeleteParameterRequest()) + ->setName($parameterName); + + // Delete the parameter using the client. + $client->deleteParameter($request); + + printf('Deleted regional parameter: %s' . PHP_EOL, $parameterId); +} +// [END parametermanager_delete_regional_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/delete_regional_param_version.php b/parametermanager/src/delete_regional_param_version.php new file mode 100644 index 000000000..23bc5b7b1 --- /dev/null +++ b/parametermanager/src/delete_regional_param_version.php @@ -0,0 +1,65 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter version. + $parameterVersionName = $client->parameterVersionName($projectId, $locationId, $parameterId, $versionId); + + // Prepare the request to delete the parameter version. + $request = (new DeleteParameterVersionRequest()) + ->setName($parameterVersionName); + + // Delete the parameter version using the client. + $client->deleteParameterVersion($request); + + printf('Deleted regional parameter version: %s' . PHP_EOL, $versionId); +} +// [END parametermanager_delete_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/disable_param_version.php b/parametermanager/src/disable_param_version.php new file mode 100644 index 000000000..d1d92f34c --- /dev/null +++ b/parametermanager/src/disable_param_version.php @@ -0,0 +1,73 @@ +parameterVersionName($projectId, 'global', $parameterId, $versionId); + + // Update the parameter version. + $parameterVersion = (new ParameterVersion()) + ->setName($parameterVersionName) + ->setDisabled(true); + + $updateMask = (new FieldMask()) + ->setPaths(['disabled']); + + // Prepare the request to disable the parameter version. + $request = (new UpdateParameterVersionRequest()) + ->setUpdateMask($updateMask) + ->setParameterVersion($parameterVersion); + + // Disable the parameter version using the client. + $client->updateParameterVersion($request); + + // Print the parameter version details. + printf('Disabled parameter version %s for parameter %s' . PHP_EOL, $versionId, $parameterId); +} +// [END parametermanager_disable_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/disable_regional_param_version.php b/parametermanager/src/disable_regional_param_version.php new file mode 100644 index 000000000..f9abc8bac --- /dev/null +++ b/parametermanager/src/disable_regional_param_version.php @@ -0,0 +1,77 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter version. + $parameterVersionName = $client->parameterVersionName($projectId, $locationId, $parameterId, $versionId); + + // Update the parameter version. + $parameterVersion = (new ParameterVersion()) + ->setName($parameterVersionName) + ->setDisabled(true); + + $updateMask = (new FieldMask()) + ->setPaths(['disabled']); + + // Prepare the request to disable the parameter version. + $request = (new UpdateParameterVersionRequest()) + ->setUpdateMask($updateMask) + ->setParameterVersion($parameterVersion); + + // Disable the parameter version using the client. + $client->updateParameterVersion($request); + + // Print the parameter version details. + printf('Disabled regional parameter version %s for parameter %s' . PHP_EOL, $versionId, $parameterId); +} +// [END parametermanager_disable_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/enable_param_version.php b/parametermanager/src/enable_param_version.php new file mode 100644 index 000000000..0303d5fbe --- /dev/null +++ b/parametermanager/src/enable_param_version.php @@ -0,0 +1,73 @@ +parameterVersionName($projectId, 'global', $parameterId, $versionId); + + // Update the parameter version. + $parameterVersion = (new ParameterVersion()) + ->setName($parameterVersionName) + ->setDisabled(false); + + $updateMask = (new FieldMask()) + ->setPaths(['disabled']); + + // Prepare the request to enable the parameter version. + $request = (new UpdateParameterVersionRequest()) + ->setUpdateMask($updateMask) + ->setParameterVersion($parameterVersion); + + // Enable the parameter version using the client. + $client->updateParameterVersion($request); + + // Print the parameter version details. + printf('Enabled parameter version %s for parameter %s' . PHP_EOL, $versionId, $parameterId); +} +// [END parametermanager_enable_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/enable_regional_param_version.php b/parametermanager/src/enable_regional_param_version.php new file mode 100644 index 000000000..5bcf63bb8 --- /dev/null +++ b/parametermanager/src/enable_regional_param_version.php @@ -0,0 +1,77 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter version. + $parameterVersionName = $client->parameterVersionName($projectId, $locationId, $parameterId, $versionId); + + // Update the parameter version. + $parameterVersion = (new ParameterVersion()) + ->setName($parameterVersionName) + ->setDisabled(false); + + $updateMask = (new FieldMask()) + ->setPaths(['disabled']); + + // Prepare the request to enable the parameter version. + $request = (new UpdateParameterVersionRequest()) + ->setUpdateMask($updateMask) + ->setParameterVersion($parameterVersion); + + // Enable the parameter version using the client. + $client->updateParameterVersion($request); + + // Print the parameter version details. + printf('Enabled regional parameter version %s for parameter %s' . PHP_EOL, $versionId, $parameterId); +} +// [END parametermanager_enable_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/get_param.php b/parametermanager/src/get_param.php new file mode 100644 index 000000000..f97d36571 --- /dev/null +++ b/parametermanager/src/get_param.php @@ -0,0 +1,62 @@ +parameterName($projectId, 'global', $parameterId); + + // Prepare the request to get the parameter. + $request = (new GetParameterRequest()) + ->setName($parameterName); + + // Retrieve the parameter using the client. + $parameter = $client->getParameter($request); + + // Print the retrieved parameter details. + printf('Found parameter %s with format %s' . PHP_EOL, $parameter->getName(), ParameterFormat::name($parameter->getFormat())); +} +// [END parametermanager_get_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/get_param_version.php b/parametermanager/src/get_param_version.php new file mode 100644 index 000000000..0f25b63d2 --- /dev/null +++ b/parametermanager/src/get_param_version.php @@ -0,0 +1,65 @@ +parameterVersionName($projectId, 'global', $parameterId, $versionId); + + // Prepare the request to get the parameter version. + $request = (new GetParameterVersionRequest()) + ->setName($parameterVersionName); + + // Retrieve the parameter version using the client. + $parameterVersion = $client->getParameterVersion($request); + + // Print the retrieved parameter version details. + printf('Found parameter version %s with state %s' . PHP_EOL, $parameterVersion->getName(), $parameterVersion->getDisabled() ? 'disabled' : 'enabled'); + if (!($parameterVersion->getDisabled())) { + printf('Payload: %s' . PHP_EOL, $parameterVersion->getPayload()->getData()); + } +} +// [END parametermanager_get_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/get_regional_param.php b/parametermanager/src/get_regional_param.php new file mode 100644 index 000000000..25ab3ab9c --- /dev/null +++ b/parametermanager/src/get_regional_param.php @@ -0,0 +1,66 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter. + $parameterName = $client->parameterName($projectId, $locationId, $parameterId); + + // Prepare the request to get the parameter. + $request = (new GetParameterRequest()) + ->setName($parameterName); + + // Retrieve the parameter using the client. + $parameter = $client->getParameter($request); + + // Print the retrieved parameter details. + printf('Found regional parameter %s with format %s' . PHP_EOL, $parameter->getName(), ParameterFormat::name($parameter->getFormat())); +} +// [END parametermanager_get_regional_param] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/get_regional_param_version.php b/parametermanager/src/get_regional_param_version.php new file mode 100644 index 000000000..c02f5cc53 --- /dev/null +++ b/parametermanager/src/get_regional_param_version.php @@ -0,0 +1,68 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter version. + $parameterVersionName = $client->parameterVersionName($projectId, $locationId, $parameterId, $versionId); + + // Prepare the request to get the parameter version. + $request = (new GetParameterVersionRequest()) + ->setName($parameterVersionName); + + // Retrieve the parameter version using the client. + $parameterVersion = $client->getParameterVersion($request); + + printf('Found regional parameter version %s with state %s' . PHP_EOL, $parameterVersion->getName(), $parameterVersion->getDisabled() ? 'disabled' : 'enabled'); + if (!($parameterVersion->getDisabled())) { + printf('Payload: %s' . PHP_EOL, $parameterVersion->getPayload()->getData()); + } +} +// [END parametermanager_get_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/list_param_versions.php b/parametermanager/src/list_param_versions.php new file mode 100644 index 000000000..e7643fae7 --- /dev/null +++ b/parametermanager/src/list_param_versions.php @@ -0,0 +1,60 @@ +parameterName($projectId, 'global', $parameterId); + + // Prepare the request to list the parameter versions. + $request = (new ListParameterVersionsRequest()) + ->setParent($parent); + + // Retrieve the parameter version using the client. + foreach ($client->listParameterVersions($request) as $parameterVersion) { + printf('Found parameter version: %s' . PHP_EOL, $parameterVersion->getName()); + } +} +// [END parametermanager_list_param_versions] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/list_params.php b/parametermanager/src/list_params.php new file mode 100644 index 000000000..8c9cc9343 --- /dev/null +++ b/parametermanager/src/list_params.php @@ -0,0 +1,60 @@ +locationName($projectId, 'global'); + + // Prepare the request to list the parameters. + $request = (new ListParametersRequest()) + ->setParent($parent); + + // Retrieve the parameter using the client. + foreach ($client->listParameters($request) as $parameter) { + printf('Found parameter %s with format %s' . PHP_EOL, $parameter->getName(), ParameterFormat::name($parameter->getFormat())); + } +} +// [END parametermanager_list_params] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/list_regional_param_versions.php b/parametermanager/src/list_regional_param_versions.php new file mode 100644 index 000000000..f3b60f104 --- /dev/null +++ b/parametermanager/src/list_regional_param_versions.php @@ -0,0 +1,64 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter. + $parent = $client->parameterName($projectId, $locationId, $parameterId); + + // Prepare the request to list the parameter versions. + $request = (new ListParameterVersionsRequest()) + ->setParent($parent); + + // Retrieve the parameter version using the client. + foreach ($client->listParameterVersions($request) as $parameterVersion) { + printf('Found regional parameter version: %s' . PHP_EOL, $parameterVersion->getName()); + } +} +// [END parametermanager_list_regional_param_versions] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/list_regional_params.php b/parametermanager/src/list_regional_params.php new file mode 100644 index 000000000..aa79d2dfb --- /dev/null +++ b/parametermanager/src/list_regional_params.php @@ -0,0 +1,64 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter. + $parent = $client->locationName($projectId, $locationId); + + // Prepare the request to list the parameters. + $request = (new ListParametersRequest()) + ->setParent($parent); + + // Retrieve the parameter using the client. + foreach ($client->listParameters($request) as $parameter) { + printf('Found regional parameter %s with format %s' . PHP_EOL, $parameter->getName(), ParameterFormat::name($parameter->getFormat())); + } +} +// [END parametermanager_list_regional_params] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/quickstart.php b/parametermanager/src/quickstart.php new file mode 100644 index 000000000..3ec5b3af1 --- /dev/null +++ b/parametermanager/src/quickstart.php @@ -0,0 +1,97 @@ +locationName($projectId, 'global'); + +// Create a new Parameter object and set the format. +$parameter = (new Parameter()) + ->setFormat(ParameterFormat::JSON); + +// Prepare the request with the parent, parameter ID, and the parameter object. +$request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + +// Crete the parameter. +$newParameter = $client->createParameter($request); + +// Print the new parameter name +printf('Created parameter %s with format %s' . PHP_EOL, $newParameter->getName(), ParameterFormat::name($newParameter->getFormat())); + +// Create a new ParameterVersionPayload object and set the json data. +$payload = '{"username": "test-user", "host": "localhost"}'; +$parameterVersionPayload = new ParameterVersionPayload(); +$parameterVersionPayload->setData($payload); + +// Create a new ParameterVersion object and set the payload. +$parameterVersion = new ParameterVersion(); +$parameterVersion->setPayload($parameterVersionPayload); + +// Prepare the request with the parent and parameter version object. +$request = (new CreateParameterVersionRequest()) + ->setParent($newParameter->getName()) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + +// Create the parameter version. +$newParameterVersion = $client->createParameterVersion($request); + +// Print the new parameter version name +printf('Created parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); + +// Prepare the request with the parent for retrieve parameter version. +$request = (new GetParameterVersionRequest()) + ->setName($newParameterVersion->getName()); + +// Get the parameter version. +$parameterVersion = $client->getParameterVersion($request); + +// Print the parameter version payload +// WARNING: Do not print the secret in a production environment - this +// snippet is showing how to access the secret material. +printf('Payload: %s' . PHP_EOL, $parameterVersion->getPayload()->getData()); +// [END parametermanager_quickstart] diff --git a/parametermanager/src/regional_quickstart.php b/parametermanager/src/regional_quickstart.php new file mode 100644 index 000000000..1d8ffe6ef --- /dev/null +++ b/parametermanager/src/regional_quickstart.php @@ -0,0 +1,98 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + +// Create a client for the Parameter Manager service. +$client = new ParameterManagerClient($options); + +// Build the resource name of the parent object. +$parent = $client->locationName($projectId, $locationId); + +// Create a new Parameter object and set the format. +$parameter = (new Parameter()) + ->setFormat(ParameterFormat::JSON); + +// Prepare the request with the parent, parameter ID, and the parameter object. +$request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + +// Crete the parameter. +$newParameter = $client->createParameter($request); + +// Print the new parameter name +printf('Created regional parameter %s with format %s' . PHP_EOL, $newParameter->getName(), ParameterFormat::name($newParameter->getFormat())); + +// Create a new ParameterVersionPayload object and set the json data. +$payload = '{"username": "test-user", "host": "localhost"}'; +$parameterVersionPayload = new ParameterVersionPayload(); +$parameterVersionPayload->setData($payload); + +// Create a new ParameterVersion object and set the payload. +$parameterVersion = new ParameterVersion(); +$parameterVersion->setPayload($parameterVersionPayload); + +// Prepare the request with the parent and parameter version object. +$request = (new CreateParameterVersionRequest()) + ->setParent($newParameter->getName()) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + +// Create the parameter version. +$newParameterVersion = $client->createParameterVersion($request); + +// Print the new parameter version name +printf('Created regional parameter version: %s' . PHP_EOL, $newParameterVersion->getName()); + +// Prepare the request with the parent for retrieve parameter version. +$request = (new GetParameterVersionRequest()) + ->setName($newParameterVersion->getName()); + +// Get the parameter version. +$parameterVersion = $client->getParameterVersion($request); + +// Print the parameter version name +printf('Payload: %s' . PHP_EOL, $parameterVersion->getPayload()->getData()); +// [END parametermanager_regional_quickstart] diff --git a/parametermanager/src/render_param_version.php b/parametermanager/src/render_param_version.php new file mode 100644 index 000000000..faad5cea6 --- /dev/null +++ b/parametermanager/src/render_param_version.php @@ -0,0 +1,61 @@ +parameterVersionName($projectId, 'global', $parameterId, $versionId); + + // Prepare the request to render the parameter version. + $request = (new RenderParameterVersionRequest())->setName($parameterVersionName); + + // Retrieve the render parameter version using the client. + $parameterVersion = $client->renderParameterVersion($request); + + // Print the retrieved parameter version details. + printf('Rendered parameter version payload: %s' . PHP_EOL, $parameterVersion->getRenderedPayload()); +} +// [END parametermanager_render_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/src/render_regional_param_version.php b/parametermanager/src/render_regional_param_version.php new file mode 100644 index 000000000..cca36ae58 --- /dev/null +++ b/parametermanager/src/render_regional_param_version.php @@ -0,0 +1,65 @@ + "parametermanager.$locationId.rep.googleapis.com"]; + + // Create a client for the Parameter Manager service. + $client = new ParameterManagerClient($options); + + // Build the resource name of the parameter version. + $parameterVersionName = $client->parameterVersionName($projectId, $locationId, $parameterId, $versionId); + + // Prepare the request to render the parameter version. + $request = (new RenderParameterVersionRequest())->setName($parameterVersionName); + + // Retrieve the render parameter version using the client. + $parameterVersion = $client->renderParameterVersion($request); + + // Print the retrieved parameter version details. + printf('Rendered regional parameter version payload: %s' . PHP_EOL, $parameterVersion->getRenderedPayload()); +} +// [END parametermanager_render_regional_param_version] + +// The following 2 lines are only needed to execute the samples on the CLI +require_once __DIR__ . '/../../testing/sample_helpers.php'; +\Google\Cloud\Samples\execute_sample(__FILE__, __NAMESPACE__, $argv); diff --git a/parametermanager/test/parametermanagerTest.php b/parametermanager/test/parametermanagerTest.php new file mode 100644 index 000000000..a1e070b20 --- /dev/null +++ b/parametermanager/test/parametermanagerTest.php @@ -0,0 +1,437 @@ +parameterName(self::$projectId, self::$locationId, self::randomId()); + self::$testParameterNameWithFormat = self::$client->parameterName(self::$projectId, self::$locationId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterForVersion = self::createParameter($testParameterId, ParameterFormat::UNFORMATTED); + self::$testParameterVersionName = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterForVersionWithFormat = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testParameterVersionNameWithFormat = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + self::$testParameterVersionNameWithSecretReference = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterToGet = self::createParameter($testParameterId, ParameterFormat::UNFORMATTED); + self::$testParameterVersionToGet = self::createParameterVersion($testParameterId, self::randomId(), self::PAYLOAD); + self::$testParameterVersionToGet1 = self::createParameterVersion($testParameterId, self::randomId(), self::PAYLOAD); + + $testParameterId = self::randomId(); + self::$testParameterToRender = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testSecret = self::createSecret(self::randomId()); + self::addSecretVersion(self::$testSecret); + $payload = sprintf('{"username": "test-user", "password": "__REF__(//secretmanager.googleapis.com/%s/versions/latest)"}', self::$testSecret->getName()); + self::$testParameterVersionToRender = self::createParameterVersion($testParameterId, self::randomId(), $payload); + self::iamGrantAccess(self::$testSecret->getName(), self::$testParameterToRender->getPolicyMember()->getIamPolicyUidPrincipal()); + + self::$testParameterToDelete = self::createParameter(self::randomId(), ParameterFormat::JSON); + $testParameterId = self::randomId(); + self::$testParameterToDeleteVersion = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testParameterVersionToDelete = self::createParameterVersion($testParameterId, self::randomId(), self::JSON_PAYLOAD); + } + + public static function tearDownAfterClass(): void + { + self::deleteParameter(self::$testParameterName); + self::deleteParameter(self::$testParameterNameWithFormat); + + self::deleteParameterVersion(self::$testParameterVersionName); + self::deleteParameter(self::$testParameterForVersion->getName()); + + self::deleteParameterVersion(self::$testParameterVersionNameWithFormat); + self::deleteParameterVersion(self::$testParameterVersionNameWithSecretReference); + self::deleteParameter(self::$testParameterForVersionWithFormat->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToGet->getName()); + self::deleteParameterVersion(self::$testParameterVersionToGet1->getName()); + self::deleteParameter(self::$testParameterToGet->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToRender->getName()); + self::deleteParameter(self::$testParameterToRender->getName()); + self::deleteSecret(self::$testSecret->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToDelete->getName()); + self::deleteParameter(self::$testParameterToDeleteVersion->getName()); + self::deleteParameter(self::$testParameterToDelete->getName()); + } + + private static function randomId(): string + { + return uniqid('php-snippets-'); + } + + private static function createParameter(string $parameterId, int $format): Parameter + { + $parent = self::$client->locationName(self::$projectId, self::$locationId); + $parameter = (new Parameter()) + ->setFormat($format); + + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + return self::$client->createParameter($request); + } + + private static function createParameterVersion(string $parameterId, string $versionId, string $payload): ParameterVersion + { + $parent = self::$client->parameterName(self::$projectId, self::$locationId, $parameterId); + + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + return self::$client->createParameterVersion($request); + } + + private static function deleteParameter(string $name) + { + try { + $deleteParameterRequest = (new DeleteParameterRequest()) + ->setName($name); + self::$client->deleteParameter($deleteParameterRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function deleteParameterVersion(string $name) + { + try { + $deleteParameterVersionRequest = (new DeleteParameterVersionRequest()) + ->setName($name); + self::$client->deleteParameterVersion($deleteParameterVersionRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function createSecret(string $secretId): Secret + { + $parent = self::$secretClient->projectName(self::$projectId); + $createSecretRequest = (new CreateSecretRequest()) + ->setParent($parent) + ->setSecretId($secretId) + ->setSecret(new Secret([ + 'replication' => new Replication([ + 'automatic' => new Automatic(), + ]), + ])); + + return self::$secretClient->createSecret($createSecretRequest); + } + + private static function addSecretVersion(Secret $secret): SecretVersion + { + $addSecretVersionRequest = (new AddSecretVersionRequest()) + ->setParent($secret->getName()) + ->setPayload(new SecretPayload([ + 'data' => self::PAYLOAD, + ])); + return self::$secretClient->addSecretVersion($addSecretVersionRequest); + } + + private static function deleteSecret(string $name) + { + try { + $deleteSecretRequest = (new DeleteSecretRequest()) + ->setName($name); + self::$secretClient->deleteSecret($deleteSecretRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function iamGrantAccess(string $secretName, string $member) + { + $policy = self::$secretClient->getIamPolicy((new GetIamPolicyRequest())->setResource($secretName)); + + $bindings = $policy->getBindings(); + $bindings[] = new Binding([ + 'members' => [$member], + 'role' => 'roles/secretmanager.secretAccessor', + ]); + + $policy->setBindings($bindings); + $request = (new SetIamPolicyRequest()) + ->setResource($secretName) + ->setPolicy($policy); + self::$secretClient->setIamPolicy($request); + } + + public function testCreateParam() + { + $name = self::$client->parseName(self::$testParameterName); + + $output = $this->runFunctionSnippet('create_param', [ + $name['project'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Created parameter', $output); + } + + public function testCreateStructuredParameter() + { + $name = self::$client->parseName(self::$testParameterNameWithFormat); + + $output = $this->runFunctionSnippet('create_structured_param', [ + $name['project'], + $name['parameter'], + 'JSON', + ]); + + $this->assertStringContainsString('Created parameter', $output); + } + + public function testCreateParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionName); + + $output = $this->runFunctionSnippet('create_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + self::PAYLOAD, + ]); + + $this->assertStringContainsString('Created parameter version', $output); + } + + public function testCreateStructuredParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionNameWithFormat); + + $output = $this->runFunctionSnippet('create_structured_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + self::JSON_PAYLOAD, + ]); + + $this->assertStringContainsString('Created parameter version', $output); + } + + public function testCreateParamVersionWithSecret() + { + $name = self::$client->parseName(self::$testParameterVersionNameWithSecretReference); + + $output = $this->runFunctionSnippet('create_param_version_with_secret', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + self::SECRET_ID, + ]); + + $this->assertStringContainsString('Created parameter version', $output); + } + + public function testGetParam() + { + $name = self::$client->parseName(self::$testParameterToGet->getName()); + + $output = $this->runFunctionSnippet('get_param', [ + $name['project'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Found parameter', $output); + } + + public function testGetParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('get_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Found parameter version', $output); + $this->assertStringContainsString('Payload', $output); + } + + public function testListParam() + { + $output = $this->runFunctionSnippet('list_params', [ + self::$projectId, + ]); + + $this->assertStringContainsString('Found parameter', $output); + } + + public function testListParamVersion() + { + $name = self::$client->parseName(self::$testParameterToGet->getName()); + + $output = $this->runFunctionSnippet('list_param_versions', [ + $name['project'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Found parameter version', $output); + } + + public function testRenderParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToRender->getName()); + + $output = $this->runFunctionSnippet('render_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Rendered parameter version payload', $output); + } + + public function testDisableParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('disable_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Disabled parameter version', $output); + } + + public function testEnableParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('enable_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Enabled parameter version', $output); + } + + public function testDeleteParam() + { + $name = self::$client->parseName(self::$testParameterToDelete->getName()); + + $output = $this->runFunctionSnippet('delete_param', [ + $name['project'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Deleted parameter', $output); + } + + public function testDeleteParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToDelete->getName()); + + $output = $this->runFunctionSnippet('delete_param_version', [ + $name['project'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Deleted parameter version', $output); + } +} diff --git a/parametermanager/test/quickstartTest.php b/parametermanager/test/quickstartTest.php new file mode 100644 index 000000000..f4510dc63 --- /dev/null +++ b/parametermanager/test/quickstartTest.php @@ -0,0 +1,75 @@ +parameterName(self::$projectId, self::$locationId, self::$parameterId); + $parameterVersionName = $client->parameterVersionName(self::$projectId, self::$locationId, self::$parameterId, self::$versionId); + + try { + $deleteVersionRequest = (new DeleteParameterVersionRequest()) + ->setName($parameterVersionName); + $client->deleteParameterVersion($deleteVersionRequest); + + $deleteParameterRequest = (new DeleteParameterRequest()) + ->setName($parameterName); + $client->deleteParameter($deleteParameterRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + public function testQuickstart() + { + $output = self::runSnippet('quickstart', [ + self::$projectId, + self::$parameterId, + self::$versionId, + ]); + + $this->assertStringContainsString('Created parameter', $output); + $this->assertStringContainsString('Created parameter version', $output); + $this->assertStringContainsString('Payload', $output); + } +} diff --git a/parametermanager/test/regionalparametermanagerTest.php b/parametermanager/test/regionalparametermanagerTest.php new file mode 100644 index 000000000..5bea264ff --- /dev/null +++ b/parametermanager/test/regionalparametermanagerTest.php @@ -0,0 +1,448 @@ + 'secretmanager.' . self::$locationId . '.rep.googleapis.com']; + self::$secretClient = new SecretManagerServiceClient($optionsForSecretManager); + $options = ['apiEndpoint' => 'parametermanager.' . self::$locationId . '.rep.googleapis.com']; + self::$client = new ParameterManagerClient($options); + + self::$testParameterName = self::$client->parameterName(self::$projectId, self::$locationId, self::randomId()); + self::$testParameterNameWithFormat = self::$client->parameterName(self::$projectId, self::$locationId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterForVersion = self::createParameter($testParameterId, ParameterFormat::UNFORMATTED); + self::$testParameterVersionName = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterForVersionWithFormat = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testParameterVersionNameWithFormat = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + self::$testParameterVersionNameWithSecretReference = self::$client->parameterVersionName(self::$projectId, self::$locationId, $testParameterId, self::randomId()); + + $testParameterId = self::randomId(); + self::$testParameterToGet = self::createParameter($testParameterId, ParameterFormat::UNFORMATTED); + self::$testParameterVersionToGet = self::createParameterVersion($testParameterId, self::randomId(), self::PAYLOAD); + self::$testParameterVersionToGet1 = self::createParameterVersion($testParameterId, self::randomId(), self::PAYLOAD); + + $testParameterId = self::randomId(); + self::$testParameterToRender = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testSecret = self::createSecret(self::randomId()); + self::addSecretVersion(self::$testSecret); + $payload = sprintf('{"username": "test-user", "password": "__REF__(//secretmanager.googleapis.com/%s/versions/latest)"}', self::$testSecret->getName()); + self::$testParameterVersionToRender = self::createParameterVersion($testParameterId, self::randomId(), $payload); + self::iamGrantAccess(self::$testSecret->getName(), self::$testParameterToRender->getPolicyMember()->getIamPolicyUidPrincipal()); + sleep(120); + + self::$testParameterToDelete = self::createParameter(self::randomId(), ParameterFormat::JSON); + $testParameterId = self::randomId(); + self::$testParameterToDeleteVersion = self::createParameter($testParameterId, ParameterFormat::JSON); + self::$testParameterVersionToDelete = self::createParameterVersion($testParameterId, self::randomId(), self::JSON_PAYLOAD); + } + + public static function tearDownAfterClass(): void + { + self::deleteParameter(self::$testParameterName); + self::deleteParameter(self::$testParameterNameWithFormat); + + self::deleteParameterVersion(self::$testParameterVersionName); + self::deleteParameter(self::$testParameterForVersion->getName()); + + self::deleteParameterVersion(self::$testParameterVersionNameWithFormat); + self::deleteParameterVersion(self::$testParameterVersionNameWithSecretReference); + self::deleteParameter(self::$testParameterForVersionWithFormat->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToGet->getName()); + self::deleteParameterVersion(self::$testParameterVersionToGet1->getName()); + self::deleteParameter(self::$testParameterToGet->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToRender->getName()); + self::deleteParameter(self::$testParameterToRender->getName()); + self::deleteSecret(self::$testSecret->getName()); + + self::deleteParameterVersion(self::$testParameterVersionToDelete->getName()); + self::deleteParameter(self::$testParameterToDeleteVersion->getName()); + self::deleteParameter(self::$testParameterToDelete->getName()); + } + + private static function randomId(): string + { + return uniqid('php-snippets-'); + } + + private static function createParameter(string $parameterId, int $format): Parameter + { + $parent = self::$client->locationName(self::$projectId, self::$locationId); + $parameter = (new Parameter()) + ->setFormat($format); + + $request = (new CreateParameterRequest()) + ->setParent($parent) + ->setParameterId($parameterId) + ->setParameter($parameter); + + return self::$client->createParameter($request); + } + + private static function createParameterVersion(string $parameterId, string $versionId, string $payload): ParameterVersion + { + $parent = self::$client->parameterName(self::$projectId, self::$locationId, $parameterId); + + $parameterVersionPayload = new ParameterVersionPayload(); + $parameterVersionPayload->setData($payload); + + $parameterVersion = new ParameterVersion(); + $parameterVersion->setPayload($parameterVersionPayload); + + $request = (new CreateParameterVersionRequest()) + ->setParent($parent) + ->setParameterVersionId($versionId) + ->setParameterVersion($parameterVersion); + + return self::$client->createParameterVersion($request); + } + + private static function deleteParameter(string $name) + { + try { + $deleteParameterRequest = (new DeleteParameterRequest()) + ->setName($name); + self::$client->deleteParameter($deleteParameterRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function deleteParameterVersion(string $name) + { + try { + $deleteParameterVersionRequest = (new DeleteParameterVersionRequest()) + ->setName($name); + self::$client->deleteParameterVersion($deleteParameterVersionRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function createSecret(string $secretId): Secret + { + $parent = self::$secretClient->locationName(self::$projectId, self::$locationId); + $createSecretRequest = (new CreateSecretRequest()) + ->setParent($parent) + ->setSecretId($secretId) + ->setSecret(new Secret()); + + return self::$secretClient->createSecret($createSecretRequest); + } + + private static function addSecretVersion(Secret $secret): SecretVersion + { + $addSecretVersionRequest = (new AddSecretVersionRequest()) + ->setParent($secret->getName()) + ->setPayload(new SecretPayload([ + 'data' => self::PAYLOAD, + ])); + return self::$secretClient->addSecretVersion($addSecretVersionRequest); + } + + private static function deleteSecret(string $name) + { + try { + $deleteSecretRequest = (new DeleteSecretRequest()) + ->setName($name); + self::$secretClient->deleteSecret($deleteSecretRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + private static function iamGrantAccess(string $secretName, string $member) + { + $policy = self::$secretClient->getIamPolicy((new GetIamPolicyRequest())->setResource($secretName)); + + $bindings = $policy->getBindings(); + $bindings[] = new Binding([ + 'members' => [$member], + 'role' => 'roles/secretmanager.secretAccessor', + ]); + + $policy->setBindings($bindings); + $request = (new SetIamPolicyRequest()) + ->setResource($secretName) + ->setPolicy($policy); + self::$secretClient->setIamPolicy($request); + } + + public function testCreateRegionalParam() + { + $name = self::$client->parseName(self::$testParameterName); + + $output = $this->runFunctionSnippet('create_regional_param', [ + $name['project'], + $name['location'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Created regional parameter', $output); + } + + public function testCreateStructuredRegionalParam() + { + $name = self::$client->parseName(self::$testParameterNameWithFormat); + + $output = $this->runFunctionSnippet('create_structured_regional_param', [ + $name['project'], + $name['location'], + $name['parameter'], + 'JSON', + ]); + + $this->assertStringContainsString('Created regional parameter', $output); + } + + public function testCreateRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionName); + + $output = $this->runFunctionSnippet('create_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + self::PAYLOAD, + ]); + + $this->assertStringContainsString('Created regional parameter version', $output); + } + + public function testCreateStructuredRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionNameWithFormat); + + $output = $this->runFunctionSnippet('create_structured_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + self::JSON_PAYLOAD, + ]); + + $this->assertStringContainsString('Created regional parameter version', $output); + } + + public function testCreateRegionalParamVersionWithSecret() + { + $name = self::$client->parseName(self::$testParameterVersionNameWithSecretReference); + + $output = $this->runFunctionSnippet('create_regional_param_version_with_secret', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + self::SECRET_ID, + ]); + + $this->assertStringContainsString('Created regional parameter version', $output); + } + + public function testGetRegionalParam() + { + $name = self::$client->parseName(self::$testParameterToGet->getName()); + + $output = $this->runFunctionSnippet('get_regional_param', [ + $name['project'], + $name['location'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Found regional parameter', $output); + } + + public function testGetRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('get_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Found regional parameter version', $output); + $this->assertStringContainsString('Payload', $output); + } + + public function testListRegionalParam() + { + $output = $this->runFunctionSnippet('list_regional_params', [ + self::$projectId, + self::$locationId, + ]); + + $this->assertStringContainsString('Found regional parameter', $output); + } + + public function testListRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterToGet->getName()); + + $output = $this->runFunctionSnippet('list_regional_param_versions', [ + $name['project'], + $name['location'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Found regional parameter version', $output); + } + + public function testRenderRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToRender->getName()); + + $output = $this->runFunctionSnippet('render_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Rendered regional parameter version payload', $output); + } + + public function testDisableRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('disable_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Disabled regional parameter version', $output); + } + + public function testEnableRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToGet->getName()); + + $output = $this->runFunctionSnippet('enable_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Enabled regional parameter version', $output); + } + + public function testDeleteRegionalParam() + { + $name = self::$client->parseName(self::$testParameterToDelete->getName()); + + $output = $this->runFunctionSnippet('delete_regional_param', [ + $name['project'], + $name['location'], + $name['parameter'], + ]); + + $this->assertStringContainsString('Deleted regional parameter', $output); + } + + public function testDeleteRegionalParamVersion() + { + $name = self::$client->parseName(self::$testParameterVersionToDelete->getName()); + + $output = $this->runFunctionSnippet('delete_regional_param_version', [ + $name['project'], + $name['location'], + $name['parameter'], + $name['parameter_version'], + ]); + + $this->assertStringContainsString('Deleted regional parameter version', $output); + } +} diff --git a/parametermanager/test/regionalquickstartTest.php b/parametermanager/test/regionalquickstartTest.php new file mode 100644 index 000000000..35123f75f --- /dev/null +++ b/parametermanager/test/regionalquickstartTest.php @@ -0,0 +1,77 @@ + 'parametermanager.' . self::$locationId . '.rep.googleapis.com']; + $client = new ParameterManagerClient($options); + $parameterName = $client->parameterName(self::$projectId, self::$locationId, self::$parameterId); + $parameterVersionName = $client->parameterVersionName(self::$projectId, self::$locationId, self::$parameterId, self::$versionId); + + try { + $deleteVersionRequest = (new DeleteParameterVersionRequest()) + ->setName($parameterVersionName); + $client->deleteParameterVersion($deleteVersionRequest); + + $deleteParameterRequest = (new DeleteParameterRequest()) + ->setName($parameterName); + $client->deleteParameter($deleteParameterRequest); + } catch (GaxApiException $e) { + if ($e->getStatus() != 'NOT_FOUND') { + throw $e; + } + } + } + + public function testQuickstart() + { + $output = self::runSnippet('regional_quickstart', [ + self::$projectId, + self::$locationId, + self::$parameterId, + self::$versionId, + ]); + + $this->assertStringContainsString('Created regional parameter', $output); + $this->assertStringContainsString('Created regional parameter version', $output); + $this->assertStringContainsString('Payload', $output); + } +}