From 266e89709fa980a3e5ecfe922d9a35e03ff2390f Mon Sep 17 00:00:00 2001 From: Jon Wayne Parrott Date: Thu, 17 Sep 2015 12:59:45 -0700 Subject: [PATCH] Adding cloud logging api sample. --- .coveragerc | 1 + cloud_logging/__init__.py | 0 cloud_logging/api/__init__.py | 0 cloud_logging/api/list_logs.py | 85 +++++++++++++++++++++++++++++ cloud_logging/api/list_logs_test.py | 35 ++++++++++++ storage/api/list_objects.py | 2 +- 6 files changed, 122 insertions(+), 1 deletion(-) create mode 100644 cloud_logging/__init__.py create mode 100644 cloud_logging/api/__init__.py create mode 100644 cloud_logging/api/list_logs.py create mode 100644 cloud_logging/api/list_logs_test.py diff --git a/.coveragerc b/.coveragerc index 5a6f23dafbb4..61ef6f4acb3f 100644 --- a/.coveragerc +++ b/.coveragerc @@ -7,6 +7,7 @@ include = datastore/* monitoring/* storage/* + cloud_logging/* [report] exclude_lines = pragma: NO COVER diff --git a/cloud_logging/__init__.py b/cloud_logging/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/cloud_logging/api/__init__.py b/cloud_logging/api/__init__.py new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/cloud_logging/api/list_logs.py b/cloud_logging/api/list_logs.py new file mode 100644 index 000000000000..cb44eece22d8 --- /dev/null +++ b/cloud_logging/api/list_logs.py @@ -0,0 +1,85 @@ +#!/usr/bin/env python + +# Copyright 2015 Google Inc. All rights reserved. +# +# 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. + +"""Command-line program to list the logs in a Google Cloud Platform project. + +This sample is used in this section of the documentation: + + https://cloud.google.com/logging/docs + +In order to run it, your environment must be setup with authentication +information [1]. If you're running it in your local development environment and + +you have the Google Cloud SDK [2] installed, you can do this easily by running: + $ gcloud auth login + +[1] https://developers.google.com/identity/protocols/application-default-\ +credentials#howtheywork +[2] https://cloud.google.com/sdk/ + +For more information on Cloud Logging you can visit: + https://cloud.google.com/logging + +For more information on the Cloud Logging API Python library surface you +can visit: + https://developers.google.com/resources/api-libraries/documentation/logging\ +/v1beta3/python/latest/ + +For information on the Python Client Library visit: + https://developers.google.com/api-client-library/python +""" + +# [START all] +import argparse + +from googleapiclient import discovery +from oauth2client.client import GoogleCredentials + + +# [START list_logs] +def list_logs(project_id, logging_service): + request = logging_service.projects().logs().list(projectsId=project_id) + + while request: + response = request.execute() + for log in response['logs']: + print(log['name']) + + request = logging_service.projects().logs().list_next( + request, response) +# [END list_logs] + + +def main(project_id): + # [START build_service] + credentials = GoogleCredentials.get_application_default() + logging_service = discovery.build( + 'logging', 'v1beta3', credentials=credentials) + # [END build_service] + + list_logs(project_id, logging_service) + + +if __name__ == '__main__': + parser = argparse.ArgumentParser( + description=__doc__, + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('project_id', help='Your Google Cloud project ID.') + + args = parser.parse_args() + + main(args.project_id) +# [END all] diff --git a/cloud_logging/api/list_logs_test.py b/cloud_logging/api/list_logs_test.py new file mode 100644 index 000000000000..c5f79b8c12f1 --- /dev/null +++ b/cloud_logging/api/list_logs_test.py @@ -0,0 +1,35 @@ +# Copyright 2015, Google, Inc. +# 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. + +import re +import unittest + +import tests + +from . import list_logs + + +class TestListLogs(tests.CloudBaseTest): + + def test_main(self): + with tests.capture_stdout() as stdout: + list_logs.main(self.project_id) + + output = stdout.getvalue().strip() + + self.assertRegexpMatches( + output, re.compile(r'.*', re.S)) + + +if __name__ == '__main__': + unittest.main() diff --git a/storage/api/list_objects.py b/storage/api/list_objects.py index f5ec4aa5cb1f..ebb284202cf3 100644 --- a/storage/api/list_objects.py +++ b/storage/api/list_objects.py @@ -74,7 +74,7 @@ def main(argv): # If you have too many items to list in one request, list_next() will # automatically handle paging with the pageToken. - while req is not None: + while req: resp = req.execute() print(json.dumps(resp, indent=2)) req = service.objects().list_next(req, resp)