Skip to content
This repository has been archived by the owner on Dec 31, 2023. It is now read-only.

Commit

Permalink
chore: migrate to owl bot (#119)
Browse files Browse the repository at this point in the history
* chore: migrate to owl bot

* chore: copy files from googleapis-gen 6a5da3f1274b088752f074da5bc9e30bd1beb27e

* chore: run the post processor

* 🦉 Updates from OwlBot

* Update .OwlBot.lock.yaml

* 🦉 Updates from OwlBot

* chore: add SECURITY.md (#122)

chore: add SECURITY.md

* Update .OwlBot.lock.yaml

* 🦉 Updates from OwlBot

Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
Co-authored-by: google-cloud-policy-bot[bot] <80869356+google-cloud-policy-bot[bot]@users.noreply.github.com>
  • Loading branch information
3 people authored May 12, 2021
1 parent fbf9ba3 commit 29205ef
Show file tree
Hide file tree
Showing 8 changed files with 171 additions and 261 deletions.
4 changes: 4 additions & 0 deletions .github/.OwlBot.lock.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
docker:
digest: sha256:c0deb0984dd1c56fa04aaf6974f23f4fe674d80f4329310c3f52cd46c40b7419
image: gcr.io/repo-automation-bots/owlbot-python:latest

29 changes: 29 additions & 0 deletions .github/.OwlBot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Copyright 2021 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

docker:
image: gcr.io/repo-automation-bots/owlbot-python:latest

deep-remove-regex:
- /owl-bot-staging

deep-preserve-regex:
- /owl-bot-staging/v1beta1

deep-copy-regex:
- source: /google/devtools/containeranalysis/(v.*)/.*-py/(.*)
dest: /owl-bot-staging/$1/$2

begin-after-commit-hash: 6a5da3f1274b088752f074da5bc9e30bd1beb27e

2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,6 @@ repos:
hooks:
- id: black
- repo: https://gitlab.com/pycqa/flake8
rev: 3.9.1
rev: 3.9.0
hooks:
- id: flake8
16 changes: 15 additions & 1 deletion CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -160,7 +160,21 @@ Running System Tests
auth settings and change some configuration in your project to
run all the tests.

- System tests will be run against an actual project. You should use local credentials from gcloud when possible. See `Best practices for application authentication <https://cloud.google.com/docs/authentication/best-practices-applications#local_development_and_testing_with_the>`__. Some tests require a service account. For those tests see `Authenticating as a service account <https://cloud.google.com/docs/authentication/production>`__.
- System tests will be run against an actual project and
so you'll need to provide some environment variables to facilitate
authentication to your project:

- ``GOOGLE_APPLICATION_CREDENTIALS``: The path to a JSON key file;
Such a file can be downloaded directly from the developer's console by clicking
"Generate new JSON key". See private key
`docs <https://cloud.google.com/storage/docs/authentication#generating-a-private-key>`__
for more details.

- Once you have downloaded your json keys, set the environment variable
``GOOGLE_APPLICATION_CREDENTIALS`` to the absolute path of the json file::

$ export GOOGLE_APPLICATION_CREDENTIALS="/Users/<your_username>/path/to/app_credentials.json"


*************
Test Coverage
Expand Down
14 changes: 12 additions & 2 deletions noxfile.py
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,16 @@ def lint(session):
session.run("flake8", "google", "tests")


@nox.session(python=DEFAULT_PYTHON_VERSION)
@nox.session(python="3.6")
def blacken(session):
"""Run black. Format code to uniform standard."""
"""Run black.
Format code to uniform standard.
This currently uses Python 3.6 due to the automated Kokoro run of synthtool.
That run uses an image that doesn't have 3.6 installed. Before updating this
check the state of the `gcp_ubuntu_config` we use for that Kokoro run.
"""
session.install(BLACK_VERSION)
session.run(
"black", *BLACK_PATHS,
Expand Down Expand Up @@ -124,6 +131,9 @@ def system(session):
# Check the value of `RUN_SYSTEM_TESTS` env var. It defaults to true.
if os.environ.get("RUN_SYSTEM_TESTS", "true") == "false":
session.skip("RUN_SYSTEM_TESTS is set to false, skipping")
# Sanity check: Only run tests if the environment variable is set.
if not os.environ.get("GOOGLE_APPLICATION_CREDENTIALS", ""):
session.skip("Credentials must be set via environment variable")
# Install pyopenssl for mTLS testing.
if os.environ.get("GOOGLE_API_USE_CLIENT_CERTIFICATE", "false") == "true":
session.install("pyopenssl")
Expand Down
110 changes: 110 additions & 0 deletions owlbot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Copyright 2018 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""This script is used to synthesize generated parts of this library."""

import synthtool as s
import synthtool.gcp as gcp
import logging
from synthtool.languages import python

logging.basicConfig(level=logging.DEBUG)

common = gcp.CommonTemplates()

default_version = "v1"

for library in s.get_staging_dirs(default_version):
s.replace(
library / "google/**/*client.py",
r"""google-cloud-devtools-containeranalysis""",
r"""google-cloud-containeranalysis""",
)

# Fix imported type from grafeas
s.replace(
library / "google/**/types/containeranalysis.py",
"from grafeas\.v1 import vulnerability_pb2 as vulnerability",
"from grafeas.grafeas_v1.types import vulnerability"
)

# Insert helper method to get grafeas client
s.replace(
library / "google/**/client.py",
"class ContainerAnalysisClientMeta\(type\):",
"from grafeas import grafeas_v1\n"
"from grafeas.grafeas_v1.services.grafeas import transports\n\n"
"class ContainerAnalysisClientMeta(type):",
)

s.replace(
library / "google/**/async_client.py",
"class ContainerAnalysisAsyncClient:",
"from grafeas import grafeas_v1\n"
"from grafeas.grafeas_v1.services.grafeas import transports\n\n"
"class ContainerAnalysisAsyncClient:",
)

s.replace(
library / "google/**/client.py",
r"""(\s+)def set_iam_policy\(""",
r'''\n\g<1>def get_grafeas_client(
self
) -> grafeas_v1.GrafeasClient:
transport = type(self).get_transport_class("grpc")()
grafeas_transport = grafeas_v1.services.grafeas.transports.GrafeasGrpcTransport(
host=transport._host,
scopes=transport.AUTH_SCOPES
)
return grafeas_v1.GrafeasClient(transport=grafeas_transport)
\g<1># Service calls
\g<1>def set_iam_policy(''',
)

s.replace(
library / "google/**/async_client.py",
r"""(\s+)async def set_iam_policy\(""",
r'''\n\g<1>def get_grafeas_client(
self
) -> grafeas_v1.GrafeasClient:
transport = type(self).get_transport_class("grpc_asyncio")()
grafeas_transport = grafeas_v1.services.grafeas.transports.GrafeasGrpcTransport(
host=transport._host,
scopes=transport.AUTH_SCOPES
)
return grafeas_v1.GrafeasClient(transport=grafeas_transport)
\g<1># Service calls
\g<1>async def set_iam_policy(''',
)

s.move(library, excludes=["setup.py", "README.rst", "docs/index.rst"])

s.remove_staging_dirs()

# ----------------------------------------------------------------------------
# Add templated files
# ----------------------------------------------------------------------------
templated_files = common.py_library(
samples=False, # set to True only if there are samples
microgenerator=True,
cov_level=98,
)
s.move(templated_files, excludes=[".coveragerc"]) # microgenerator has a good coveragerc

python.py_samples(skip_readmes=True)


s.shell.run(["nox", "-s", "blacken"], hide_output=False)
128 changes: 0 additions & 128 deletions synth.metadata

This file was deleted.

Loading

0 comments on commit 29205ef

Please sign in to comment.