Skip to content

Commit

Permalink
Add left interface in service instance based on the template index
Browse files Browse the repository at this point in the history
Change-Id: I7bb693e2c8f0306f3d189f10bb874169f44dd644
  • Loading branch information
rrugge committed Sep 25, 2014
1 parent 2972c61 commit 507c3b7
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 10 deletions.
16 changes: 10 additions & 6 deletions src/config/svc-monitor/svc_monitor/instance_manager.py
Expand Up @@ -64,8 +64,9 @@ def _get_default_security_group(self, vn_obj):
try:
sg_obj = self._vnc_lib.security_group_read(fq_name=sg_fq_name)
except Exception as e:
sg_fq_name_str = ':'.join(sg_fq_name)
self.logger.log(
"Error: Security group default not found %s" % (proj_obj.name))
"Error: Security group not found %s" % (sg_fq_name_str))
return sg_obj

def _get_instance_name(self, si_obj, inst_count):
Expand Down Expand Up @@ -151,9 +152,12 @@ def _create_svc_vm_port(self, nic, instance_name, st_obj, si_obj,
vmi_obj.set_virtual_network(vn_obj)
vmi_updated = True

if if_properties is None:
if_properties = VirtualMachineInterfacePropertiesType(nic['type'])
vmi_obj.set_virtual_machine_interface_properties(if_properties)
vmi_updated = True

if local_preference:
if if_properties is None:
if_properties = VirtualMachineInterfacePropertiesType(nic['type'])
if local_preference != if_properties.get_local_preference():
if_properties.set_local_preference(local_preference)
vmi_obj.set_virtual_machine_interface_properties(if_properties)
Expand Down Expand Up @@ -323,7 +327,7 @@ def _get_nic_info(self, si_obj, si_props, st_props):
(st_props.get_service_type() ==
svc_info.get_snat_service_type())):
vn_id = self._create_snat_vn(proj_obj, si_obj,
si_props, vn_fq_name_str)
si_props, vn_fq_name_str, idx)
elif (itf_type == svc_info.get_right_if_str() and
(st_props.get_service_type() ==
svc_info.get_lb_service_type())):
Expand Down Expand Up @@ -660,7 +664,7 @@ def clean_resources(self, proj_fq_str, si_fq_str):
si_fq_str.split(':')[-1])
self._delete_svc_vn(proj_obj.get_fq_name() + [vn_name])

def _create_snat_vn(self, proj_obj, si_obj, si_props, vn_fq_name_str):
def _create_snat_vn(self, proj_obj, si_obj, si_props, vn_fq_name_str, idx):
# SNAT NetNS use a dedicated network (non shared vn)
vn_name = '%s_%s' % (svc_info.get_snat_left_network_prefix_name(),
si_obj.name)
Expand All @@ -676,7 +680,7 @@ def _create_snat_vn(self, proj_obj, si_obj, si_props, vn_fq_name_str):
if vn_fq_name_str != ':'.join(vn_fq_name):
left_if = ServiceInstanceInterfaceType(
virtual_network=':'.join(vn_fq_name))
si_props.insert_interface_list(0, left_if)
si_props.insert_interface_list(idx, left_if)
si_obj.set_service_instance_properties(si_props)
self._vnc_lib.service_instance_update(si_obj)
self.logger.log("Info: SI %s updated with left vn %s" %
Expand Down
22 changes: 18 additions & 4 deletions src/config/svc-monitor/svc_monitor/svc_monitor.py
Expand Up @@ -326,6 +326,19 @@ def _check_si_status(self, si_fq_name_str, si_info):

return status

def _check_vm_si_link(self, vm_uuid, si_info):
try:
vm_obj = self._vnc_lib.virtual_machine_read(id=vm_uuid)
except NoIdError:
return

si_fq_str = si_info['si_fq_str']
si_refs = vm_obj.get_service_instance_refs()
if (si_refs is None) or (si_refs[0]['to'][0] == 'ERROR'):
proj_name = self._get_proj_name_from_si_fq_str(si_fq_str)
self._delete_svc_instance(vm_uuid, proj_name,
si_fq_str, si_info['instance_type'])

def _delmsg_project_service_instance(self, idents):
proj_fq_str = idents['project']
si_fq_str = idents['service-instance']
Expand Down Expand Up @@ -608,15 +621,16 @@ def launch_ssrc(monitor):

def timer_callback(monitor):
si_list = monitor.db.service_instance_list()
if not si_list:
return

for si_fq_name_str, si_info in si_list:
for si_fq_name_str, si_info in si_list or []:
status = monitor._check_si_status(si_fq_name_str, si_info)
if status == 'ERROR':
monitor.logger.log("Relaunch SI %s" % (si_fq_name_str))
monitor._restart_svc(si_fq_name_str)

vm_list = monitor.db.virtual_machine_list()
for vm_uuid, si_info in vm_list or []:
monitor._check_vm_si_link(vm_uuid, si_info)

def launch_timer(monitor):
while True:
gevent.sleep(svc_info.get_vm_health_interval())
Expand Down

0 comments on commit 507c3b7

Please sign in to comment.