summaryrefslogtreecommitdiffstats
path: root/doctor_tests/app_manager
diff options
context:
space:
mode:
Diffstat (limited to 'doctor_tests/app_manager')
-rw-r--r--doctor_tests/app_manager/vnfm.py28
1 files changed, 19 insertions, 9 deletions
diff --git a/doctor_tests/app_manager/vnfm.py b/doctor_tests/app_manager/vnfm.py
index 7a3c9ad..68fdbb8 100644
--- a/doctor_tests/app_manager/vnfm.py
+++ b/doctor_tests/app_manager/vnfm.py
@@ -109,7 +109,7 @@ class VNFManager(Thread):
if ep.service_id == maint_id and
ep.interface == 'public'][0]
self.log.info('maintenance endpoint: %s' % self.maint_endpoint)
-
+ self.update_constraints_lock = False
self.update_constraints()
def delete_remote_instance_constraints(self, instance_id):
@@ -153,6 +153,10 @@ class VNFManager(Thread):
self.delete_remote_group_constraints(self.ha_group)
def update_constraints(self):
+ while self.update_constraints_lock:
+ self.log.info('Waiting update_constraints_lock...')
+ time.sleep(1)
+ self.update_constraints_lock = True
self.log.info('Update constraints')
if self.project_id is None:
self.project_id = self.keystone.projects.list(
@@ -185,7 +189,7 @@ class VNFManager(Thread):
"recovery_time": 4,
"resource_mitigation": True}
self.log.info('create doctor_ha_app_group constraints: %s'
- % self.nonha_group)
+ % self.ha_group)
self.update_remote_group_constraints(self.ha_group)
instance_constraints = {}
for ha_instance in self.ha_instances:
@@ -195,7 +199,7 @@ class VNFManager(Thread):
"group_id": self.ha_group["group_id"],
"instance_name": ha_instance.name,
"max_interruption_time": 120,
- "migration_type": "MIGRATION",
+ "migration_type": "MIGRATE",
"resource_mitigation": True,
"lead_time": 40}
self.log.info('create ha instance constraints: %s'
@@ -208,7 +212,7 @@ class VNFManager(Thread):
"group_id": self.nonha_group["group_id"],
"instance_name": nonha_instance.name,
"max_interruption_time": 120,
- "migration_type": "MIGRATION",
+ "migration_type": "MIGRATE",
"resource_mitigation": True,
"lead_time": 40}
self.log.info('create nonha instance constraints: %s'
@@ -234,11 +238,12 @@ class VNFManager(Thread):
for instance_id in deleted:
self.delete_remote_instance_constraints(instance_id)
updated = added + modified
- for instance in [instance_constraints[i] in i in updated]:
+ for instance in [instance_constraints[i] for i in updated]:
self.update_remote_instance_constraints(instance)
if updated or deleted:
# Some instance constraints have changed
self.instance_constraints = instance_constraints.copy()
+ self.update_constraints_lock = False
def active_instance_id(self):
# Need rertry as it takes time after heat template done before
@@ -358,14 +363,20 @@ class VNFManager(Thread):
instance_ids = (self.get_session_instance_ids(
payload['instance_ids'],
payload['session_id']))
- reply['instance_ids'] = instance_ids
- reply_state = 'ACK_MAINTENANCE'
+ my_instance_ids = self.get_instance_ids()
+ invalid_instances = (
+ [instance_id for instance_id in instance_ids
+ if instance_id not in my_instance_ids])
+ if invalid_instances:
+ self.log.error('Invalid instances: %s' % invalid_instances)
+ reply_state = 'NACK_MAINTENANCE'
+ else:
+ reply_state = 'ACK_MAINTENANCE'
elif state == 'SCALE_IN':
# scale down "self.scale" instances that is VCPUS equaling
# at least a single compute node
self.scale_instances(-self.scale)
- reply['instance_ids'] = self.get_instance_ids()
reply_state = 'ACK_SCALE_IN'
elif state == 'MAINTENANCE_COMPLETE':
@@ -411,7 +422,6 @@ class VNFManager(Thread):
if reply_state:
if self.conf.admin_tool.type == 'fenix':
self.headers['X-Auth-Token'] = self.session.get_token()
- reply['session_id'] = payload['session_id']
reply['state'] = reply_state
url = payload['reply_url']
self.log.info('VNFM reply: %s' % reply)