Merge "Delete region logic and orm script changes"
This commit is contained in:
commit
7ca26d96a5
@ -57,7 +57,18 @@ def delete_customer_region(customer_id, region_id):
|
|||||||
datamanager = CmsDataManager()
|
datamanager = CmsDataManager()
|
||||||
try:
|
try:
|
||||||
customer_region = datamanager.get_record('customer_region')
|
customer_region = datamanager.get_record('customer_region')
|
||||||
customer_region.delete_region_for_customer(customer_id, region_id)
|
cust_regions = customer_region.get_regions_for_customer(customer_id)
|
||||||
|
|
||||||
|
for region in cust_regions:
|
||||||
|
# when "force_delete" option is used on delete customer region
|
||||||
|
# request, we don't need to execute the delete_region_for_customer
|
||||||
|
# function as it has already been previously handled by the
|
||||||
|
# force_delete option
|
||||||
|
if region.region.name == region_id:
|
||||||
|
customer_region.delete_region_for_customer(customer_id,
|
||||||
|
region_id)
|
||||||
|
break
|
||||||
|
|
||||||
datamanager.flush()
|
datamanager.flush()
|
||||||
datamanager.commit()
|
datamanager.commit()
|
||||||
except Exception as exp:
|
except Exception as exp:
|
||||||
@ -91,7 +102,10 @@ def delete_flavor_region(flavor_uuid, region_name):
|
|||||||
flavor_rec = datamanager.get_record('flavor')
|
flavor_rec = datamanager.get_record('flavor')
|
||||||
sql_flavor = flavor_rec.get_flavor_by_id(flavor_uuid)
|
sql_flavor = flavor_rec.get_flavor_by_id(flavor_uuid)
|
||||||
|
|
||||||
if sql_flavor is None:
|
# An empty 'flavor_regions' indicates that force_delete option was
|
||||||
|
# used on delete flavor region request. As the flavor is no longer
|
||||||
|
# associated with any region, we can skip the remove_region function.
|
||||||
|
if sql_flavor is None or not sql_flavor.flavor_regions:
|
||||||
return
|
return
|
||||||
|
|
||||||
sql_flavor.remove_region(region_name)
|
sql_flavor.remove_region(region_name)
|
||||||
@ -112,7 +126,10 @@ def delete_image_region(image_uuid, region_name):
|
|||||||
image_rec = datamanager.get_record('image')
|
image_rec = datamanager.get_record('image')
|
||||||
sql_image = image_rec.get_image_by_id(image_uuid)
|
sql_image = image_rec.get_image_by_id(image_uuid)
|
||||||
|
|
||||||
if sql_image is None:
|
# An empty sql_image.regions indicates that force_delete option was
|
||||||
|
# used on delete image region request. As the image is no longer
|
||||||
|
# associated with any region, we can skip the remove_region function.
|
||||||
|
if sql_image is None or not sql_image.regions:
|
||||||
return
|
return
|
||||||
|
|
||||||
sql_image.remove_region(region_name)
|
sql_image.remove_region(region_name)
|
||||||
|
@ -32,9 +32,14 @@ def add_update_template_data(data):
|
|||||||
raise
|
raise
|
||||||
|
|
||||||
|
|
||||||
def delete_resource_status_data(resource_id):
|
def delete_resource_status_data(resource_id, region):
|
||||||
# delete all resource status entries for the given resource_id
|
# delete resource status entry for the given resource_id and region
|
||||||
pass
|
logger.debug("delete resource status data for resource %s and "
|
||||||
|
"region %s" % (resource_id, region))
|
||||||
|
conn = factory.get_region_resource_id_status_connection()
|
||||||
|
resource_id, region = conn.get_resource_region_data(resource_id, region)
|
||||||
|
conn = factory.get_region_resource_id_status_connection()
|
||||||
|
conn.delete_resource_status_entry(resource_id, region)
|
||||||
|
|
||||||
|
|
||||||
def get_template_data(resource_id, region):
|
def get_template_data(resource_id, region):
|
||||||
@ -102,15 +107,6 @@ def get_regions_by_status_resource_id(status, resource_id):
|
|||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def delete_resource_template_data(resource_id, region):
|
|
||||||
logger.debug("delete resource_template_data for resource %s and "
|
|
||||||
"region %s" % (resource_id, region))
|
|
||||||
conn = factory.get_region_resource_id_status_connection()
|
|
||||||
resource_id, region = conn.get_resource_region_data(resource_id, region)
|
|
||||||
conn = factory.get_resource_stack_data_connection()
|
|
||||||
conn.delete_resource_template(resource_id, region)
|
|
||||||
|
|
||||||
|
|
||||||
def validate_resource_type(resource_type):
|
def validate_resource_type(resource_type):
|
||||||
allowed_resource_type = config['allowed_resource_type']
|
allowed_resource_type = config['allowed_resource_type']
|
||||||
if resource_type not in allowed_resource_type:
|
if resource_type not in allowed_resource_type:
|
||||||
|
@ -1,18 +0,0 @@
|
|||||||
""" SoT interface definition"""
|
|
||||||
|
|
||||||
|
|
||||||
class BaseSoT(object):
|
|
||||||
|
|
||||||
def save_resource_to_sot(self,
|
|
||||||
tracking_id,
|
|
||||||
transaction_id,
|
|
||||||
resource_list,
|
|
||||||
headers={}):
|
|
||||||
raise NotImplementedError("Please Implement this method")
|
|
||||||
|
|
||||||
def validate_sot_state(self):
|
|
||||||
raise NotImplementedError("Please Implement this method")
|
|
||||||
|
|
||||||
|
|
||||||
class SoTError(Exception):
|
|
||||||
pass
|
|
@ -1,43 +0,0 @@
|
|||||||
import yaml
|
|
||||||
|
|
||||||
|
|
||||||
def merge_yamls(document, section):
|
|
||||||
document_dict = yaml.safe_load(document)
|
|
||||||
section_dict = yaml.safe_load(section)
|
|
||||||
merge_dict(section_dict, document_dict)
|
|
||||||
new_document = yaml.dump(document_dict)
|
|
||||||
return new_document
|
|
||||||
|
|
||||||
|
|
||||||
# source is being merged into destiantion
|
|
||||||
def merge_dict(source, destination):
|
|
||||||
for key, value in list(source.items()):
|
|
||||||
if isinstance(value, dict):
|
|
||||||
# get node or create one
|
|
||||||
node = destination.setdefault(key, {})
|
|
||||||
merge_dict(value, node)
|
|
||||||
else:
|
|
||||||
destination[key] = value
|
|
||||||
|
|
||||||
return destination
|
|
||||||
|
|
||||||
document = """
|
|
||||||
a: 1
|
|
||||||
b:
|
|
||||||
c: 3
|
|
||||||
d: 4
|
|
||||||
f:
|
|
||||||
h: h1
|
|
||||||
"""
|
|
||||||
|
|
||||||
section = """
|
|
||||||
b:
|
|
||||||
d: 6
|
|
||||||
e: 5
|
|
||||||
f:
|
|
||||||
g: g1
|
|
||||||
h:
|
|
||||||
h1: h2
|
|
||||||
"""
|
|
||||||
|
|
||||||
print((merge_yamls(document, section)))
|
|
@ -158,6 +158,23 @@ class ResStatusConnection(region_resource_id_status.ResourceStatusBase):
|
|||||||
except oslo_db.exception.DBDuplicateEntry as e:
|
except oslo_db.exception.DBDuplicateEntry as e:
|
||||||
logger.warning("Duplicate entry: {}".format(str(e)))
|
logger.warning("Duplicate entry: {}".format(str(e)))
|
||||||
|
|
||||||
|
def delete_resource_status_entry(self, resource_id, region_name):
|
||||||
|
# note that when a resource_status entry is deleted, its corresponding
|
||||||
|
# entry in resource_template_data is deleted as well
|
||||||
|
try:
|
||||||
|
session = self._engine_facade.get_session()
|
||||||
|
with session.begin():
|
||||||
|
record = session.query(ResourceStatusRecord).\
|
||||||
|
filter_by(resource_id=resource_id,
|
||||||
|
region=region_name).delete()
|
||||||
|
if record is None:
|
||||||
|
logger.exception(
|
||||||
|
'Resource status data not found with resource id {} '
|
||||||
|
'and region name {}'.format(resource_id, region_name))
|
||||||
|
|
||||||
|
except Exception as exp:
|
||||||
|
raise
|
||||||
|
|
||||||
def get_records_by_resource_id(self, resource_id):
|
def get_records_by_resource_id(self, resource_id):
|
||||||
return self.get_records_by_filter_args(resource_id=resource_id)
|
return self.get_records_by_filter_args(resource_id=resource_id)
|
||||||
|
|
||||||
@ -323,21 +340,6 @@ class ResTemplateConnection(region_resource_id_status.ResourceTemplateBase):
|
|||||||
except oslo_db.exception.DBDuplicateEntry as e:
|
except oslo_db.exception.DBDuplicateEntry as e:
|
||||||
logger.warning("Duplicate entry: {}".format(str(e)))
|
logger.warning("Duplicate entry: {}".format(str(e)))
|
||||||
|
|
||||||
def delete_resource_template(self, resource_id, region_name):
|
|
||||||
try:
|
|
||||||
session = self._engine_facade.get_session()
|
|
||||||
with session.begin():
|
|
||||||
record = session.query(ResourceTemplateRecord).\
|
|
||||||
filter_by(resource_id=resource_id,
|
|
||||||
region=region_name).delete()
|
|
||||||
if record is None:
|
|
||||||
logger.exception(
|
|
||||||
'Template data not found with resource id {} and '
|
|
||||||
'region name {}'.format(resource_id, region_name))
|
|
||||||
|
|
||||||
except Exception as exp:
|
|
||||||
raise
|
|
||||||
|
|
||||||
def get_resource_template_data(self, resource_id, region):
|
def get_resource_template_data(self, resource_id, region):
|
||||||
logger.debug("Get resource template data by resource {} and "
|
logger.debug("Get resource template data by resource {} and "
|
||||||
"region '{}' ".format(resource_id, region))
|
"region '{}' ".format(resource_id, region))
|
||||||
|
@ -36,7 +36,7 @@ def invoke_delete_region(data):
|
|||||||
resource_type=data['resource_type'],
|
resource_type=data['resource_type'],
|
||||||
resource_id=data['resource_id'], region=data['region'])
|
resource_id=data['resource_id'], region=data['region'])
|
||||||
# delete heat template entry
|
# delete heat template entry
|
||||||
regionResourceIdStatus.delete_resource_template_data(
|
regionResourceIdStatus.delete_resource_status_data(
|
||||||
data['resource_id'], data['region'])
|
data['resource_id'], data['region'])
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -151,8 +151,8 @@ class CreateResource(unittest.TestCase):
|
|||||||
'get_regions_by_status_resource_id', return_value=None)
|
'get_regions_by_status_resource_id', return_value=None)
|
||||||
@patch.object(ResourceService.uuid_utils, 'get_random_uuid',
|
@patch.object(ResourceService.uuid_utils, 'get_random_uuid',
|
||||||
return_value='uuid-gen-123456')
|
return_value='uuid-gen-123456')
|
||||||
def test_create_flavor_sot_data_check(self, tranid, result,
|
def test_create_flavor_data_check(self, tranid, result,
|
||||||
yamlbuilder, database):
|
yamlbuilder, database):
|
||||||
"""check list creating."""
|
"""check list creating."""
|
||||||
input_data = InputData(
|
input_data = InputData(
|
||||||
transaction_id='497ab942-1ac0-11e6-82f3-005056a5129b',
|
transaction_id='497ab942-1ac0-11e6-82f3-005056a5129b',
|
||||||
|
Loading…
x
Reference in New Issue
Block a user