def doWork(self): configHolder = ConfigHolder(self.options.__dict__) monitor = Monitor(configHolder) for vmId in self.vmIds: host, port = monitor.getVmConnectionInfo(vmId) if host and port: Util.sshInteractive(host, port=port, sshKey=self.options.userPrivateKeyFile) else: sys.stderr.write("Couldn't find enough information to connect to VM '%s'\n" % vmId)
def get_vm_info(self): configHolder = \ StratusLabNodeDriver.get_config_section(self.location, self.driver.user_configurator) monitor = Monitor(configHolder) vm_infos = monitor.vmDetail([self.id]) if len(vm_infos) == 0: raise ValueError('cannot recover state information for %s' % self.id) return vm_infos[0]
def _getHostnameId(self, hostname): monitor = Monitor(self.configHolder) infoList = monitor.listNodes() info = None for i in infoList: if i.name == hostname: info = i break if not info: raise InputException('Failed to find node with hostname %s' % hostname) return int(info.id)
def get_vm_info(self): config_holder = \ StratusLabNodeDriver.get_config_section(self.location, self.driver.user_configurator) monitor = Monitor(config_holder) vm_infos = monitor.vmDetail([self.id]) if len(vm_infos) == 0: raise ValueError('cannot recover state information for %s' % self.id) return vm_infos[0]
def _startStopVmAndGetVmInfo(self): """Return VM monitoring info and VM id.""" self._startVm(noCheckImageUrl=True, raiseOnFailed=False) vmId = self.runner.vmIds[0] self._stopVm(self.runner) options = {} options["endpoint"] = getattr(self, "endpoint") options["username"] = getattr(self, "username", self.oneUsername) options["password"] = getattr(self, "password", self.proxyOneadminPassword) monitor = Monitor(ConfigHolder(options)) info = monitor._vmDetail(vmId) return info, vmId
def registrarTest(self): """Register a new node with ONE server, check that it is properly registered and remove it""" configHolder = self.configHolder.copy() configHolder.options["infoDriver"] = "kvm" configHolder.options["virtDriver"] = "kvm" configHolder.options["transfertDriver"] = "nfs" configHolder.options["networkDriver"] = "dummy" configHolder.options["username"] = self.oneUsername configHolder.options["password"] = self.proxyOneadminPassword registrar = Registrar(configHolder) hostname = "registrar.ip.test" vmId = registrar.register([hostname]) monitor = Monitor(configHolder) info = monitor.nodeDetail([vmId])[0] self.assertEqual(hostname, info.name) registrar.deregister(hostname) self.assertRaises(Exception, monitor.nodeDetail, [vmId])
def list_nodes_in_location(self, location): """ List the nodes (machine instances) that are active in the given location. """ configHolder = self._get_config_section(location) monitor = Monitor(configHolder) vms = monitor.listVms() nodes = [] for vm_info in vms: nodes.append(self._vm_info_to_node(vm_info, location)) return nodes
def parse(self): self.parser.usage = '%prog [options] [vm-id ...]' self.parser.description = ''' Provides information about the virtual machine with the given identifiers or all virtual machine if no identifier is given. The vm-id arguments are the identifiers of the machines to list. All virtual machines will be listed if no argument is given. ''' PortTranslationCommand.addCommonOptions(self.parser) AuthnCommand.addCloudEndpointOptions(self.parser) Monitor.addOptions(self.parser) self.parser.add_option('-m', dest='multi_site', action='store_true', help='Print state of virtual machines on multiple sites. ' '"endpoints" parameter should be set in user configuration ' 'file.', default=False) super(MainProgram, self).parse() self.options, self.vmIds = self.parser.parse_args()
def doWork(self): configHolder = ConfigHolder(self.options.__dict__, self.config or {}) if not self.vmIds and (self.options.multi_site and self.config.get('endpoints')): result = MultisiteMonitor(configHolder).formatVmList() else: monitor = Monitor(configHolder) if self.vmIds: vm_info_list = monitor.vmDetail(self.vmIds) if len(vm_info_list) == 1 and self.verboseLevel > Util.VERBOSE_LEVEL_DETAILED: result = monitor.formatVmAllAttributes(vm_info_list) else: result = monitor.formatVmDetails(vm_info_list) else: vm_info_list = monitor.listVms() result = monitor.formatVmList(vm_info_list) sys.stdout.write(result)
t_step = 10 printInfo("Waiting %i sec for image bundling." % timeout) while time.time() < t_stop: if creator.getVmState() in ("Done", "Failed"): break printInfo("Time remaining: %d" % (t_stop - time.time())) time.sleep(t_step) # Assert instance state vm_state = creator.getVmState() if vm_state != "Done": self.configHolder.username = self.testUsername self.configHolder.password = self.testPassword self.configHolder.endpoint = self.endpoint monitor = Monitor(self.configHolder) info = monitor._vmDetail(creator.getVmId()) info_attributes = info.getAttributes() msg = "Image creation failed. Instance final state '%s'. Error: %s" % ( vm_state, info_attributes.get("template_error_message", "not set"), ) self.fail(msg) # Assert new image. # Assuming we are running on FE and can access VM log file. vm_id = creator.getVmId() mp_and_id = "" for line in open("/var/log/one/%s.log" % vm_id).readlines(): if re.search("MARKETPLACE_AND_IMAGEID", line): mp_and_id = line.split()
def list_instances(self): self.slConfigHolder.set('ipToHostname', False) vms = Monitor(self.slConfigHolder).listVms() populate_vms_with_disk_sizes(vms, self.slConfigHolder.deepcopy()) return vms