dac751d04b
Change-Id: I7a88d9bec69371bec1004572a4fa87cdfbbf1f28
112 lines
3.8 KiB
Python
Executable File
112 lines
3.8 KiB
Python
Executable File
import cli_comander as cli
|
|
import db_comander as db
|
|
import initializer
|
|
import logging
|
|
import sys
|
|
import utils
|
|
import yaml_handler as yh
|
|
|
|
|
|
log = logging.getLogger(__name__)
|
|
|
|
|
|
def _validate_service(service):
|
|
allowed_services = ['CMS', 'FMS', 'IMS']
|
|
if service.upper() not in allowed_services:
|
|
raise Exception("service should be one of {}".format(allowed_services))
|
|
return service.upper()
|
|
|
|
|
|
def _init():
|
|
initializer.init_log()
|
|
return
|
|
|
|
|
|
def read_csv_file(file):
|
|
log.debug("reading file {}".format(file))
|
|
return utils.read_csv_file(file)
|
|
|
|
|
|
def resource_db_clean(resource_id, service):
|
|
log.debug("cleaning {} db for resource {}".format(service, resource_id))
|
|
db.remove_resource_db(resource_id, service)
|
|
return
|
|
|
|
|
|
def check_yaml_file(resource_id):
|
|
log.debug('checking yml file if exist for resource {}'.format(resource_id))
|
|
files = yh.check_yaml_exist(resource_id)
|
|
message = 'no yaml files found for this resource'
|
|
if files:
|
|
message = "found files please remove manualy {}".format(files)
|
|
log.debug(message)
|
|
return
|
|
|
|
|
|
def get_resource_regions(resource_id, service_name):
|
|
|
|
if service_name.upper() == 'CMS':
|
|
db_regions = db.get_cms_db_resource_regions(resource_id, service_name)
|
|
elif service_name.upper() == 'FMS':
|
|
db_regions = db.get_fms_db_resource_regions(resource_id, service_name)
|
|
elif service_name.upper() == 'IMS':
|
|
db_regions = db.get_ims_db_resource_regions(resource_id, service_name)
|
|
|
|
# db_regions = db.get_resource_regions(resource_id, service_name)
|
|
orm_regions = cli.get_resource_regions(resource_id, service_name)
|
|
return orm_regions, db_regions
|
|
|
|
|
|
def clean_rds_resource_status(resource_id):
|
|
log.debug("clean rds status db for resource {}".format(resource_id))
|
|
db.remove_rds_resource_status(resource_id)
|
|
return
|
|
|
|
|
|
def _start_cleaning():
|
|
log.info('start cleaning')
|
|
file_path = sys.argv[1]
|
|
service = _validate_service(sys.argv[2])
|
|
resourses_to_clean = read_csv_file(file_path)
|
|
for resource_id in resourses_to_clean:
|
|
try:
|
|
log.debug(
|
|
'check if resource {} has any regions before clean'.format(
|
|
resource_id))
|
|
resource_regions, db_regions = get_resource_regions(resource_id,
|
|
service)
|
|
if resource_regions or db_regions:
|
|
log.error(
|
|
"got regions {} {} please clean regions from orm before"
|
|
" removing the resource {}".format(resource_regions,
|
|
db_regions,
|
|
resource_id))
|
|
raise Exception(
|
|
"got regions {} {} please clean regions from orm before"
|
|
" removing the resource {}".format(resource_regions,
|
|
db_regions,
|
|
resource_id))
|
|
|
|
log.debug('cleaning {}'.format(resource_id))
|
|
resource_db_clean(resource_id, service)
|
|
check_yaml_file(resource_id)
|
|
clean_rds_resource_status(resource_id)
|
|
if service.upper() == "IMS":
|
|
db.remove_rds_image_metadata(resource_id)
|
|
|
|
except Exception as exp:
|
|
log.error("---------------{}---------------".format(exp.message))
|
|
if 'not found' not in exp.message:
|
|
log.exception(exp)
|
|
continue
|
|
return
|
|
|
|
|
|
if __name__ == '__main__':
|
|
warning_message = raw_input(
|
|
'IMPORTANT:- please note its your responsibility to backup the db'
|
|
' before running this script... click enter before continue'
|
|
)
|
|
_init()
|
|
_start_cleaning()
|