Skip to content

Commit f7179af

Browse files
ryanmatsdpebot
authored andcommitted
Python KMS Apiary P1 samples (GoogleCloudPlatform#779)
* Draft of first half of KMS samples * reversed wrong change * KMS Apiary Python samples - P1 * Few minor style issues * Adding back in space i accidentally deleted * Addressed all code review comments * Renamed api directory to api-client * Addressed more code review comments * Formatting change * Fix quickstart test Change-Id: Ib79dc1345c9c40547f3fd4e9c3c9a48963a3b399 * Update readme Change-Id: Icf4a66083f56d6f51be76ba1cf3b5dc8daf2c4c1 * Add readme Change-Id: I2fbaa55092ef8787f1423d499aa310cab258c0c1 * Added parsers * Final minor changes to parsers * Added autogenerated README * Changed snippets_test keyring name and cryptokey name
1 parent faddda1 commit f7179af

File tree

8 files changed

+638
-10
lines changed

8 files changed

+638
-10
lines changed

conftest.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ def api_client_inject_project_id(cloud_config):
8080
the project ID from cloud_config."""
8181
import googleapiclient.http
8282

83-
class ProjectIdInjectingHttpRequest(googleapiclient.http.HttpRequest):
84-
def __init__(self, http, postproc, uri, *args, **kwargs):
85-
uri = uri.replace('YOUR_PROJECT_ID', cloud_config.project)
86-
super(ProjectIdInjectingHttpRequest, self).__init__(
87-
http, postproc, uri, *args, **kwargs)
83+
old_execute = googleapiclient.http.HttpRequest.execute
84+
85+
def new_execute(self, http=None, num_retries=0):
86+
self.uri = self.uri.replace('YOUR_PROJECT_ID', cloud_config.project)
87+
return old_execute(self, http=http, num_retries=num_retries)
8888

8989
with mock.patch(
90-
'googleapiclient.http.HttpRequest',
91-
new=ProjectIdInjectingHttpRequest):
90+
'googleapiclient.http.HttpRequest.execute',
91+
new=new_execute):
9292
yield

kms/api-client/README.rst

+109
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
.. This file is automatically generated. Do not edit this file directly.
2+
3+
Google Cloud KMS API Python Samples
4+
===============================================================================
5+
6+
This directory contains samples for Google Cloud KMS API. The `Google Cloud KMS API`_ is a service that allows you to keep encryption keys centrally in the cloud, for direct use by cloud services.
7+
8+
9+
10+
11+
.. _Google Cloud KMS API: https://cloud.google.com/kms/docs/
12+
13+
Setup
14+
-------------------------------------------------------------------------------
15+
16+
17+
Authentication
18+
++++++++++++++
19+
20+
Authentication is typically done through `Application Default Credentials`_,
21+
which means you do not have to change the code to authenticate as long as
22+
your environment has credentials. You have a few options for setting up
23+
authentication:
24+
25+
#. When running locally, use the `Google Cloud SDK`_
26+
27+
.. code-block:: bash
28+
29+
gcloud beta auth application-default login
30+
31+
32+
#. When running on App Engine or Compute Engine, credentials are already
33+
set-up. However, you may need to configure your Compute Engine instance
34+
with `additional scopes`_.
35+
36+
#. You can create a `Service Account key file`_. This file can be used to
37+
authenticate to Google Cloud Platform services from any environment. To use
38+
the file, set the ``GOOGLE_APPLICATION_CREDENTIALS`` environment variable to
39+
the path to the key file, for example:
40+
41+
.. code-block:: bash
42+
43+
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/service_account.json
44+
45+
.. _Application Default Credentials: https://cloud.google.com/docs/authentication#getting_credentials_for_server-centric_flow
46+
.. _additional scopes: https://cloud.google.com/compute/docs/authentication#using
47+
.. _Service Account key file: https://developers.google.com/identity/protocols/OAuth2ServiceAccount#creatinganaccount
48+
49+
Install Dependencies
50+
++++++++++++++++++++
51+
52+
#. Install `pip`_ and `virtualenv`_ if you do not already have them.
53+
54+
#. Create a virtualenv. Samples are compatible with Python 2.7 and 3.4+.
55+
56+
.. code-block:: bash
57+
58+
$ virtualenv env
59+
$ source env/bin/activate
60+
61+
#. Install the dependencies needed to run the samples.
62+
63+
.. code-block:: bash
64+
65+
$ pip install -r requirements.txt
66+
67+
.. _pip: https://pip.pypa.io/
68+
.. _virtualenv: https://virtualenv.pypa.io/
69+
70+
Samples
71+
-------------------------------------------------------------------------------
72+
73+
Quickstart
74+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
75+
76+
77+
78+
To run this sample:
79+
80+
.. code-block:: bash
81+
82+
$ python quickstart.py
83+
84+
85+
Snippets
86+
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
87+
88+
89+
90+
To run this sample:
91+
92+
.. code-block:: bash
93+
94+
$ python snippets.py
95+
96+
usage: snippets.py [-h]
97+
{create_keyring,create_cryptokey,encrypt,decrypt,disable_cryptokey_version,destroy_cryptokey_version,add_member_to_cryptokey_policy,get_keyring_policy}
98+
...
99+
100+
positional arguments:
101+
{create_keyring,create_cryptokey,encrypt,decrypt,disable_cryptokey_version,destroy_cryptokey_version,add_member_to_cryptokey_policy,get_keyring_policy}
102+
103+
optional arguments:
104+
-h, --help show this help message and exit
105+
106+
107+
108+
109+
.. _Google Cloud SDK: https://cloud.google.com/sdk/

kms/api/README.rst.in renamed to kms/api-client/README.rst.in

+3
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,6 @@ setup:
1515
samples:
1616
- name: Quickstart
1717
file: quickstart.py
18+
- name: Snippets
19+
file: snippets.py
20+
show_help: True
File renamed without changes.

kms/api/quickstart_test.py renamed to kms/api-client/quickstart_test.py

+1-3
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,7 @@
1313
# limitations under the License.
1414

1515

16-
def test_quickstart(api_client_inject_project_id, capsys):
16+
def test_quickstart(api_client_inject_project_id):
1717
import quickstart
1818

1919
quickstart.run_quickstart()
20-
out, _ = capsys.readouterr()
21-
assert 'No key rings found' in out
File renamed without changes.

0 commit comments

Comments
 (0)