def satisfying_machine(constraints): for machine in maas_machines: if satisfies(machine, constraints)[0]: maas_machines.remove(machine) return machine return None
def update(self): machines = self.controller.machines( include_placeholders=self.show_placeholders) if self.show_only_ready: machines = [ m for m in machines if m.status == MaasMachineStatus.READY ] for mw in self.machine_widgets: machine = next( (m for m in machines if mw.machine.instance_id == m.instance_id), None) if machine is None: self.remove_machine(mw.machine) n_satisfying_machines = len(machines) def get_placement_filter_label(d): s = "" for atype, al in d.items(): s += " ".join([ "{} {}".format(cc.service_name, cc.display_name) for cc in al ]) return s for m in machines: if not satisfies(m, self.constraints)[0]: self.remove_machine(m) n_satisfying_machines -= 1 continue assignment_names = "" ad = self.controller.assignments_for_machine(m) assignment_names = get_placement_filter_label(ad) filter_label = "{} {}".format(m.filter_label(), assignment_names) if self.filter_string != "" and \ self.filter_string not in filter_label: self.remove_machine(m) continue mw = self.find_machine_widget(m) if mw is None: mw = self.add_machine_widget(m) mw.update() self.filter_edit_box.set_info(len(self.machine_widgets), n_satisfying_machines) self.sort_machine_widgets()
def update(self): machines = self.controller.machines( include_placeholders=self.show_placeholders) if self.show_only_ready: machines = [m for m in machines if m.status == MaasMachineStatus.READY] for mw in self.machine_widgets: machine = next((m for m in machines if mw.machine.instance_id == m.instance_id), None) if machine is None: self.remove_machine(mw.machine) n_satisfying_machines = len(machines) def get_placement_filter_label(d): s = "" for atype, al in d.items(): s += " ".join(["{} {}".format(cc.service_name, cc.display_name) for cc in al]) return s for m in machines: if not satisfies(m, self.constraints)[0]: self.remove_machine(m) n_satisfying_machines -= 1 continue assignment_names = "" ad = self.controller.assignments_for_machine(m) assignment_names = get_placement_filter_label(ad) filter_label = "{} {}".format(m.filter_label(), assignment_names) if self.filter_string != "" and \ self.filter_string not in filter_label: self.remove_machine(m) continue mw = self.find_machine_widget(m) if mw is None: mw = self.add_machine_widget(m) mw.update() self.filter_edit_box.set_info(len(self.machine_widgets), n_satisfying_machines) self.sort_machine_widgets()
def _do_test(self, cons, nfailures, machine=None): if not machine: machine = self.machine1 sat, failures = satisfies(machine, cons) self.assertEqual(sat, nfailures == 0) self.assertEqual(len(failures), nfailures)