def get_run_vms_or_none(self, run_name): """Get list of VMs for a run name or return None""" if not self.cdb: raise ProgrammingError("cannot persist anything without setup/validation") cyvm_a = self.cdb.get_iaas_by_runname(run_name) vm_a = [] for cyvm in cyvm_a: rvm = RunVM() rvm.instanceid = cyvm.iaasid rvm.nodeid = cyvm.nodeid rvm.hostname = cyvm.hostname rvm.service_type = cyvm.service_type rvm.parent = cyvm.parent rvm.runlogdir = cyvm.runlogdir rvm.vmlogdir = cyvm.vmlogdir for e in cyvm.events: xtras = {} for x in e.extra: xtras[x.key] = x.value c = CYvent(e.source, e.name, e.unique_event_key, e.timestamp, xtras) rvm.events.append(c) vm_a.append(rvm) return vm_a
def vms_launched(m, run_name, eventname): provisioner = _get_provisioner(m, run_name) vms = [] for event in provisioner.events: if event.name == eventname: vm = RunVM() if eventname == "new_node": vm.instanceid = event.extra['iaas_id'] vm.nodeid = event.extra['node_id'] elif eventname == "node_started": vm.instanceid = event.extra['iaas_id'] vm.nodeid = event.extra['node_id'] else: raise IncompatibleEnvironment("eventname is illegal") vm.hostname = event.extra['public_ip'] # todo: 'unknown' is hardcoded in fetchkill, too vm.service_type = "unknown" + vm.WORKER_SUFFIX m.runlogs.new_vm(vm) vms.append(vm) return vms