copr-be: a better cloud.ibm.com automation logging

This commit is contained in:
Pavel Raiskup 2022-09-22 17:19:02 +02:00
parent 7b10fc515e
commit aa3b617c74
2 changed files with 16 additions and 2 deletions

View file

@ -2,6 +2,7 @@
import argparse
import datetime
import logging
import os
import subprocess
import sys
@ -20,11 +21,15 @@ def _get_arg_parser():
parser = argparse.ArgumentParser()
parser.add_argument("--token-file", default=DEFAULT_TOKEN_FILE)
parser.add_argument("--pool")
parser.add_argument("--log-level", default="info")
return parser
def _main():
opts = _get_arg_parser().parse_args()
log_level = getattr(logging, opts.log_level.upper())
logging.basicConfig(format='%(levelname)s: %(message)s', level=log_level)
log = logging.getLogger()
pool_id = opts.pool or os.getenv("RESALLOC_POOL_ID")
if not pool_id:
@ -47,6 +52,7 @@ def _main():
# Resalloc works with underscores, which is not allowed in IBM Cloud
name = server["name"].replace("-", "_")
if name.startswith(pool_id):
log.debug("found instance %s in state %s, id=%s", name, server["status"], server["id"])
resources.add(name)
volumes = service.list_volumes(limit=LIMIT).result["volumes"]
@ -54,6 +60,7 @@ def _main():
# Resalloc works with underscores, which is not allowed in IBM Cloud
name = volume["name"].replace("-", "_")
if name.startswith(pool_id):
log.debug("found volume %s in state %s, id: %s", name, volume["status"], volume["id"])
name = name.rsplit("_", 1)[0]
resources.add(name)

View file

@ -225,27 +225,30 @@ def delete_instance(service, instance_name, opts):
def delete_instance_attempt(service, instance_name, opts):
""" one attempt to delete instance by it's name """
log = opts.log
log.info("Deleting instance %s", instance_name)
log.info("Searching for instance %s", instance_name)
delete_instance_id = None
response_list = service.list_instances().get_result()['instances']
for item in response_list:
log.debug("Available: %s %s %s", item['id'], item['name'], item['status'])
if instance_name == item['name']:
log.debug("Found instance: %s %s %s", item['id'], item['name'], item['status'])
delete_instance_id = item['id']
floating_ip_id = None
response_list = service.list_floating_ips().get_result()['floating_ips']
for floating_ip in response_list:
if floating_ip["name"].startswith(instance_name):
log.debug("Found floating IP %s", floating_ip["name"])
floating_ip_id = floating_ip["id"]
if delete_instance_id:
log.info("Deleting instance %s: %s", delete_instance_id, instance_name)
resp = service.delete_instance(delete_instance_id)
assert resp.status_code == 204
log.debug("Delete instance request delivered")
if floating_ip_id:
log.info("Deleting Floating IP %s", floating_ip_id)
resp = service.delete_floating_ip(floating_ip_id)
assert resp.status_code == 204
log.debug("Delete IP request delivered")
@ -258,6 +261,9 @@ def delete_instance_attempt(service, instance_name, opts):
if not volume["name"].startswith(instance_name):
continue
log.debug("Found volume %s %s %s", volume["name"], volume["status"],
volume["id"])
# Otherwise Error: Delete volume failed. Volume can be deleted
# only when its status is available or failed., Code: 409
if not volume["status"] in ["available", "failed"]:
@ -267,6 +273,7 @@ def delete_instance_attempt(service, instance_name, opts):
if volume_ids:
for volume_id in volume_ids:
log.info("Deleting volume %s", volume_id)
resp = service.delete_volume(volume_id)
assert resp.status_code == 204
log.debug("Delete volume request delivered")