diff --git a/.coveragerc b/.coveragerc index 5a6f23dafbb..61ef6f4acb3 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/README.md b/cloud_logging/README.md new file mode 100644 index 00000000000..31f06b852de --- /dev/null +++ b/cloud_logging/README.md @@ -0,0 +1,27 @@ +# Google Cloud Logging Samples + +This section contains samples for [Google Cloud Logging](https://cloud.google.com/logging). + +## Running the samples + +In order to run it, your environment must be setup with [authentication +information](https://developers.google.com/identity/protocols/application-default-credentials#howtheywork). If you're running it in your local development environment and you have the [Google Cloud SDK](https://cloud.google.com/sdk/) installed, you can do this easily by running: + + $ gcloud auth login + +## Additional resources + +For more information on Cloud Logging you can visit: + +> https://developers.google.com/logging + +For more information on the Clloud 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 + +## Other Samples diff --git a/cloud_logging/__init__.py b/cloud_logging/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cloud_logging/api/__init__.py b/cloud_logging/api/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/cloud_logging/api/list_logs.py b/cloud_logging/api/list_logs.py new file mode 100644 index 00000000000..c61daa89456 --- /dev/null +++ b/cloud_logging/api/list_logs.py @@ -0,0 +1,66 @@ +#!/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 + +For more information, see the README.md under /cloud_logging. +""" + +# [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 00000000000..c5f79b8c12f --- /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 f5ec4aa5cb1..ebb284202cf 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)