예제 #1
0
 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)
예제 #2
0
    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]
예제 #3
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)
예제 #4
0
    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]
예제 #5
0
파일: Testor.py 프로젝트: StratusLab/client
    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
예제 #6
0
파일: Testor.py 프로젝트: StratusLab/client
 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])
예제 #7
0
    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
예제 #8
0
    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()
예제 #10
0
    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)
예제 #11
0
파일: Testor.py 프로젝트: StratusLab/client
        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()
예제 #12
0
 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