def create_stackdriver_group(project, job_name, region): client = monitoring.GroupServiceClient() name, dashboard_name = generate_group_meta(project, job_name, region) group = { "display_name": dashboard_name, "filter": "resource.metadata.name=starts_with({})".format(job_name), } try: group = client.create_group(request={"name": name, "group": group}) except Exception as e: msg = ("Could not create a Stackdriver for job '{}': {}. " "Skipping...".format(job_name, e)) logging.error(msg) return group_id = group.name.split("/")[-1] url = STACKDRIVER_GROUP_TPL.format( base_url=STACKDRIVER_GROUP_BASE_URL, group_id=group_id, display_name=dashboard_name, project=project, ) msg = "Created dashboard '{}' for job '{}': {}".format( dashboard_name, job_name, url) logging.info(msg) return url
def get_stackdriver_group_url(project, job_name, region): client = monitoring.GroupServiceClient() name, dashboard_name = generate_group_meta(project, job_name, region) groups = client.list_groups(request={"name": name}) for group in groups: if group.display_name == dashboard_name: group_id = group.name.split("/")[-1] return STACKDRIVER_GROUP_TPL.format( base_url=STACKDRIVER_GROUP_BASE_URL, group_id=group_id, display_name=dashboard_name, project=project, )
def delete_stackdriver_group(project, job_name, region): client = monitoring.GroupServiceClient() name, dashboard_name = generate_group_meta(project, job_name, region) try: for group in client.list_groups(name): if group.display_name == dashboard_name: client.delete_group(group.name, recursive=True) msg = "Deleted dashboard '{}' for job '{}'".format( dashboard_name, job_name) logging.info(msg) return except Exception as e: msg = ("Could not delete a Stackdriver for job '{}': {}. " "Skipping...".format(job_name, e)) logging.error(msg) return logging.warning( "No dashboard for job '{}' could be found. Nothing deleted".format( job_name))