monitoring/snippets/v3/uptime-check-client/snippets.py (204 lines of code) (raw):

# 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. from __future__ import print_function import argparse import os import pprint from google.cloud import monitoring_v3 from google.cloud.monitoring_v3.services.uptime_check_service import pagers from google.cloud.monitoring_v3.types import uptime from google.protobuf import field_mask_pb2 import tabulate # [START monitoring_uptime_check_create] def create_uptime_check_config_get( project_id: str, host_name: str = None, display_name: str = None ) -> uptime.UptimeCheckConfig: """Creates a new uptime check configuration Args: project_id: Google Cloud project id where the uptime check is created host_name: An example label's value for the "host" label display_name: A human friendly name of the configuration Returns: A structure that describes a new created uptime check """ config = monitoring_v3.UptimeCheckConfig() config.display_name = display_name or "New GET uptime check" config.monitored_resource = { "type": "uptime_url", "labels": {"host": host_name or "example.com"}, } config.http_check = { "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.GET, "path": "/", "port": 80, } config.timeout = {"seconds": 10} config.period = {"seconds": 300} client = monitoring_v3.UptimeCheckServiceClient() new_config = client.create_uptime_check_config( request={"parent": project_id, "uptime_check_config": config} ) pprint.pprint(new_config) return new_config def create_uptime_check_config_post( project_id: str, host_name: str = None, display_name: str = None ) -> uptime.UptimeCheckConfig: """Creates a new uptime check configuration Args: project_id: Google Cloud project id where the uptime check is created host_name: An example label's value for the "host" label display_name: A human friendly name of the configuration Returns: A structure that describes a new created uptime check """ config = monitoring_v3.UptimeCheckConfig() config.display_name = display_name or "New POST uptime check" config.monitored_resource = { "type": "uptime_url", "labels": {"host": host_name or "example.com"}, } config.http_check = { "request_method": monitoring_v3.UptimeCheckConfig.HttpCheck.RequestMethod.POST, "content_type": monitoring_v3.UptimeCheckConfig.HttpCheck.ContentType.URL_ENCODED, "body": "foo=bar".encode("utf-8"), "path": "/", "port": 80, } config.timeout = {"seconds": 10} config.period = {"seconds": 300} client = monitoring_v3.UptimeCheckServiceClient() new_config = client.create_uptime_check_config( request={"parent": project_id, "uptime_check_config": config} ) pprint.pprint(new_config) return new_config # [END monitoring_uptime_check_create] # [START monitoring_uptime_check_update] def update_uptime_check_config( config_name: str, new_display_name: str = None, new_http_check_path: str = None ) -> uptime.UptimeCheckConfig: """Creates a new uptime check configuration Args: config_name: Uptime check configuration identity new_display_name: A new human friendly name of the configuration new_http_check_path: A new HTTP endpoint of the configuration Returns: A structure that describes the updated uptime check """ client = monitoring_v3.UptimeCheckServiceClient() config = client.get_uptime_check_config(request={"name": config_name}) field_mask = field_mask_pb2.FieldMask() if new_display_name: field_mask.paths.append("display_name") config.display_name = new_display_name if new_http_check_path: field_mask.paths.append("http_check.path") config.http_check.path = new_http_check_path changed_config = client.update_uptime_check_config( request={"uptime_check_config": config, "update_mask": field_mask} ) pprint.pprint(changed_config) return changed_config # [END monitoring_uptime_check_update] # [START monitoring_uptime_check_list_configs] def list_uptime_check_configs(project_id: str) -> pagers.ListUptimeCheckConfigsPager: """Gets all uptime checks defined in the Google Cloud project Args: project_id: Google Cloud project id Returns: A list of configurations. Iterating over this object will yield results and resolve additional pages automatically. """ client = monitoring_v3.UptimeCheckServiceClient() configs = client.list_uptime_check_configs(request={"parent": project_id}) for config in configs: pprint.pprint(config) return configs # [END monitoring_uptime_check_list_configs] # [START monitoring_uptime_check_list_ips] def list_uptime_check_ips() -> pagers.ListUptimeCheckIpsPager: """Gets all locations and IP addresses used by uptime check servers Returns: A list of locations and IP addresses of uptime check servers. Iterating over this object will yield results and resolve additional pages automatically. """ client = monitoring_v3.UptimeCheckServiceClient() ips = client.list_uptime_check_ips(request={}) print( tabulate.tabulate( [(ip.region, ip.location, ip.ip_address) for ip in ips], ("region", "location", "ip_address"), ) ) return ips # [END monitoring_uptime_check_list_ips] # [START monitoring_uptime_check_get] def get_uptime_check_config(config_name: str) -> uptime.UptimeCheckConfig: """Reads the uptime check configuration Args: config_name: Uptime check configuration identity Returns: A structure that describes the updated uptime check """ client = monitoring_v3.UptimeCheckServiceClient() config = client.get_uptime_check_config(request={"name": config_name}) pprint.pprint(config) return config # [END monitoring_uptime_check_get] # [START monitoring_uptime_check_delete] # `config_name` is the `name` field of an UptimeCheckConfig. # See https://cloud.google.com/monitoring/api/ref_v3/rest/v3/projects.uptimeCheckConfigs#UptimeCheckConfig. def delete_uptime_check_config(config_name: str) -> None: """Deletes the uptime check configuration Args: config_name: Uptime check configuration identity """ client = monitoring_v3.UptimeCheckServiceClient() client.delete_uptime_check_config(request={"name": config_name}) print("Deleted ", config_name) # [END monitoring_uptime_check_delete] class MissingProjectIdError(Exception): pass def project_id() -> str: """Retrieves the project id from the environment variable. Raises: MissingProjectIdError -- When not set. Returns: str -- the project name """ project_id = os.environ["GOOGLE_CLOUD_PROJECT"] if not project_id: raise MissingProjectIdError( "Set the environment variable " + "GCLOUD_PROJECT to your Google Cloud Project Id." ) return project_id def project_name() -> str: return "projects/" + project_id() if __name__ == "__main__": parser = argparse.ArgumentParser( description="Demonstrates Uptime Check API operations." ) subparsers = parser.add_subparsers(dest="command") list_uptime_check_configs_parser = subparsers.add_parser( "list-uptime-check-configs", help=list_uptime_check_configs.__doc__ ) list_uptime_check_ips_parser = subparsers.add_parser( "list-uptime-check-ips", help=list_uptime_check_ips.__doc__ ) create_uptime_check_config_get_parser = subparsers.add_parser( "create-uptime-check-get", help=create_uptime_check_config_get.__doc__ ) create_uptime_check_config_get_parser.add_argument( "-d", "--display_name", required=False, ) create_uptime_check_config_get_parser.add_argument( "-o", "--host_name", required=False, ) create_uptime_check_config_post_parser = subparsers.add_parser( "create-uptime-check-post", help=create_uptime_check_config_post.__doc__ ) create_uptime_check_config_post_parser.add_argument( "-d", "--display_name", required=False, ) create_uptime_check_config_post_parser.add_argument( "-o", "--host_name", required=False, ) get_uptime_check_config_parser = subparsers.add_parser( "get-uptime-check-config", help=get_uptime_check_config.__doc__ ) get_uptime_check_config_parser.add_argument( "-m", "--name", required=True, ) delete_uptime_check_config_parser = subparsers.add_parser( "delete-uptime-check-config", help=delete_uptime_check_config.__doc__ ) delete_uptime_check_config_parser.add_argument( "-m", "--name", required=True, ) update_uptime_check_config_parser = subparsers.add_parser( "update-uptime-check-config", help=update_uptime_check_config.__doc__ ) update_uptime_check_config_parser.add_argument( "-m", "--name", required=True, ) update_uptime_check_config_parser.add_argument( "-d", "--display_name", required=False, ) update_uptime_check_config_parser.add_argument( "-p", "--uptime_check_path", required=False, ) args = parser.parse_args() if args.command == "list-uptime-check-configs": list_uptime_check_configs(project_name()) elif args.command == "list-uptime-check-ips": list_uptime_check_ips() elif args.command == "create-uptime-check-get": create_uptime_check_config_get( project_name(), args.host_name, args.display_name ) elif args.command == "create-uptime-check-post": create_uptime_check_config_post( project_name(), args.host_name, args.display_name ) elif args.command == "get-uptime-check-config": get_uptime_check_config(args.name) elif args.command == "delete-uptime-check-config": delete_uptime_check_config(args.name) elif args.command == "update-uptime-check-config": if not args.display_name and not args.uptime_check_path: print("Nothing to update. Pass --display_name or " "--uptime_check_path.") else: update_uptime_check_config( args.name, args.display_name, args.uptime_check_path )