def check_service(self, si): if si.max_instances>len(si.port_tuples): return False pt_list = list(si.port_tuples) pi_list = [] all_possible_pi=[] for pt_uuid in pt_list: pt_obj = PortTupleSM.get(pt_uuid) for vmi_uuid in pt_obj.virtual_machine_interfaces: vmi_obj = VirtualMachineInterfaceSM.get(vmi_uuid) pi_list.append(vmi_obj.physical_interface) st_obj = ServiceTemplateSM.get(si.service_template) if not st_obj.service_appliance_set: return False sa_set_obj = ServiceApplianceSetSM.get(st_obj.service_appliance_set) for sa_uuid in sa_set_obj.service_appliances: sa_obj = ServiceApplianceSM.get(sa_uuid) for key in sa_obj.physical_interfaces: all_possible_pi.append(sa_obj.physical_interfaces[key]) if not pi_list and all_possible_pi and si.max_instances>0: return False if not all_possible_pi and pi_list: return False for pi_uuid in pi_list: if not pi_uuid in all_possible_pi: return False return True
def check_service(self, si): if si.max_instances > len(si.port_tuples): return False pt_list = list(si.port_tuples) pi_list = [] all_possible_pi = [] for pt_uuid in pt_list: pt_obj = PortTupleSM.get(pt_uuid) for vmi_uuid in pt_obj.virtual_machine_interfaces: vmi_obj = VirtualMachineInterfaceSM.get(vmi_uuid) pi_list.append(vmi_obj.physical_interface) st_obj = ServiceTemplateSM.get(si.service_template) if not st_obj.service_appliance_set: return False sa_set_obj = ServiceApplianceSetSM.get(st_obj.service_appliance_set) for sa_uuid in sa_set_obj.service_appliances: sa_obj = ServiceApplianceSM.get(sa_uuid) for key in sa_obj.physical_interfaces: all_possible_pi.append(sa_obj.physical_interfaces[key]) if not pi_list and all_possible_pi and si.max_instances > 0: return False if not all_possible_pi and pi_list: return False for pi_uuid in pi_list: if not pi_uuid in all_possible_pi: return False return True
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 audit_snat_instances(self): for lr in LogicalRouterSM.values(): self.update_snat_instance(lr) for si in ServiceInstanceSM.values(): si_name = si.fq_name[-1] st_obj = ServiceTemplateSM.get(si.service_template) if st_obj.params['service_type'] != "source-nat": continue lr_uuid = si.logical_router lr = LogicalRouterSM.get(lr_uuid) if lr is None or lr.virtual_network is None: self.cleanup_snat_instance(lr_uuid, si.uuid)
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 audit_snat_instances(self): for lr in LogicalRouterSM.values(): self.update_snat_instance(lr) for si in ServiceInstanceSM.values(): si_name = si.fq_name[-1] st_obj = ServiceTemplateSM.get(si.service_template) if st_obj.params['service_type'] != "source-nat": continue lr_uuid = si_name.split('_')[1] lr = LogicalRouterSM.get(lr_uuid) if lr is None or lr.virtual_network is None: self.cleanup_snat_instance(lr_uuid, si.uuid)