def sandesh_si_handle_request(self, req): si_resp = sandesh.ServiceInstanceListResp(si_names=[]) for si in ServiceInstanceSM.values(): if req.si_name and req.si_name != si.name: continue st = ServiceTemplateSM.get(si.service_template) sandesh_si = sandesh.ServiceInstance( name=(':').join(si.fq_name), si_type=st.virtualization_type, si_state=si.state) sandesh_vm_list = [] for vm_id in si.virtual_machines: vm = VirtualMachineSM.get(vm_id) if not vm: continue vm_str = ("%s: %s" % (vm.name, vm.uuid)) vr_name = 'None' vr = VirtualRouterSM.get(vm.virtual_router) if vr: vr_name = vr.name ha_str = "active" if vm.index < len(si.local_preference): if vm.index >= 0: ha = si.local_preference[vm.index] if ha and int(ha) == svc_info.get_standby_preference(): ha_str = "standby" if ha: ha_str = ha_str + ': ' + str(ha) else: ha_str = "unknown" vm = sandesh.ServiceInstanceVM(name=vm_str, vr_name=vr_name, ha=ha_str) sandesh_vm_list.append(vm) sandesh_si.vm_list = list(sandesh_vm_list) for nic in si.vn_info: vn = VirtualNetworkSM.get(nic['net-id']) if not vn: continue if nic['type'] == svc_info.get_left_if_str(): sandesh_si.left_vn = [vn.name, vn.uuid] if nic['type'] == svc_info.get_right_if_str(): sandesh_si.right_vn = [vn.name, vn.uuid] if nic['type'] == svc_info.get_management_if_str(): sandesh_si.management_vn = [vn.name, vn.uuid] si_resp.si_names.append(sandesh_si) si_resp.response(req.context())
def sandesh_si_handle_request(self, req): si_resp = sandesh.ServiceInstanceListResp(si_names=[]) if req.si_name is None: si_list = self._db.service_instance_list() for si_fq_name_str, si in si_list or []: sandesh_si = sandesh.ServiceInstance( name=si_fq_name_str, si_type=si.get('instance_type', ''), si_state=si.get('state', '')) sandesh_vm_list = [] for idx in range(0, int(si.get('max-instances', '0'))): prefix = self._db.get_vm_db_prefix(idx) if not (prefix + 'name') in si.keys(): continue vm_name = si.get(prefix + 'name', '') vm_uuid = si.get(prefix + 'uuid', '') vm_str = ("%s: %s" % (vm_name, vm_uuid)) vr_name = si.get(prefix + 'vrouter', '') ha = si.get(prefix + 'preference', '') if int(ha) == svc_info.get_standby_preference(): ha_str = ("standby: %s" % (ha)) else: ha_str = ("active: %s" % (ha)) vm = sandesh.ServiceInstanceVM(name=vm_str, vr_name=vr_name, ha=ha_str) sandesh_vm_list.append(vm) sandesh_si.vm_list = list(sandesh_vm_list) for itf_type in svc_info.get_if_str_list(): key = itf_type + '-vn' if key not in si.keys(): continue vn_name = si[key] vn_uuid = si[vn_name] if itf_type == svc_info.get_left_if_str(): sandesh_si.left_vn = [vn_name, vn_uuid] if itf_type == svc_info.get_right_if_str(): sandesh_si.right_vn = [vn_name, vn_uuid] if itf_type == svc_info.get_management_if_str(): sandesh_si.management_vn = [vn_name, vn_uuid] si_resp.si_names.append(sandesh_si) si_resp.response(req.context())
def sandesh_si_handle_request(self, req): si_resp = sandesh.ServiceInstanceListResp(si_names=[]) if req.si_name is None: vm_list = self._db.virtual_machine_list() si_list = self._db.service_instance_list() #walk all vms for vm_uuid, si in vm_list: if 'done' in si: continue #collect all ecmp instances sandesh_si = sandesh.ServiceInstance( name=si['si_fq_str'], si_type=si['instance_type']) sandesh_vm_list = [] for key, val in vm_list: if val['si_fq_str'] != si['si_fq_str']: continue vm_str = ("%s: %s" % (val['instance_name'], key)) vm = sandesh.ServiceInstanceVM(name=vm_str, vr_name=val.get( 'vrouter_name', '')) sandesh_vm_list.append(vm) val['done'] = True sandesh_si.vm_list = list(sandesh_vm_list) #find the vn and iip information for si_fq_str, si_info in si_list: if si_fq_str != si['si_fq_str']: continue self._sandesh_populate_vn_info(si_info, sandesh_si) si_info['done'] = True si_resp.si_names.append(sandesh_si) #walk all instances where vms are pending launch for si_fq_str, si_info in si_list: if 'done' in si_info.keys(): continue sandesh_si = sandesh.ServiceInstance( name=si_fq_str, si_type=si_info['instance_type']) sandesh_si.vm_list = [] sandesh_si.instance_name = '' self._sandesh_populate_vn_info(si_info, sandesh_si) si_resp.si_names.append(sandesh_si) si_resp.response(req.context())
def sandesh_si_handle_request(self, req): si_resp = sandesh.ServiceInstanceListResp(si_names=[]) if req.si_name is None: vm_list = list(self._svc_vm_cf.get_range()) for vm_uuid, si in vm_list: sandesh_si = sandesh.ServiceInstance(name=si['si_fq_str']) sandesh_si.vm_uuid = vm_uuid sandesh_si.instance_name = si['instance_name'] if _MGMT_STR in si: sandesh_si.mgmt_shared_iip = si[_MGMT_STR] if _LEFT_STR in si: sandesh_si.left_shared_iip = si[_LEFT_STR] if _RIGHT_STR in si: sandesh_si.right_shared_iip = si[_RIGHT_STR] si_resp.si_names.append(sandesh_si) si_resp.response(req.context())
def sandesh_si_handle_request(self, req): si_resp = sandesh.ServiceInstanceListResp(si_names=[]) if req.si_name is None: vm_list = list(self._svc_vm_cf.get_range()) si_list = list(self._svc_si_cf.get_range()) #walk all vms for vm_uuid, si in vm_list: if 'done' in si: continue #collect all ecmp instances sandesh_si = sandesh.ServiceInstance(name=si['si_fq_str']) vm_set = set() for key, val in vm_list: if val['si_fq_str'] != si['si_fq_str']: continue vm_str = ("%s: %s" % (val['instance_name'], key)) vm_set.add(vm_str) val['done'] = True sandesh_si.vm_list = list(vm_set) #find the vn and iip iformation for si_fq_str, si_info in si_list: if si_fq_str != si['si_fq_str']: continue self._sandesh_populate_vn_info(si_info, sandesh_si) si_info['done'] = True si_resp.si_names.append(sandesh_si) #walk all instances where vms are pending launch for si_fq_str, si_info in si_list: if 'done' in si_info.keys(): continue sandesh_si = sandesh.ServiceInstance(name=si_fq_str) sandesh_si.vm_list = set() sandesh_si.instance_name = '' self._sandesh_populate_vn_info(si_info, sandesh_si) si_resp.si_names.append(sandesh_si) si_resp.response(req.context())