def test_exclusive(self):
        s = ExclusiveSet()
        assert_that(len(s), is_(0))
        assert_that('1' in s, is_(False))
        assert_that('2' in s, is_(False))

        s.add('1')
        assert_that(len(s), is_(1))
        assert_that('1' in s, is_(True))
        assert_that('2' in s, is_(False))

        self.assertRaises(DuplicatedValue, s.add, '1')

        s.remove('1')
        assert_that(len(s), is_(0))
示例#2
0
    def _register_services(self):
        common.services.register(ServiceName.AGENT_CONFIG, self._config)
        common.services.register(ServiceName.LOCKED_VMS, ExclusiveSet())

        threadpool = RequestIdExecutor(
            ThreadPoolExecutor(self._config.workers))
        common.services.register(ThreadPoolExecutor, threadpool)

        self._registrant = ChairmanRegistrant(self._config.chairman_list)
        self._config.on_config_change(self._config.CHAIRMAN,
                                      self._registrant.update_chairman_list)
        common.services.register(ServiceName.REGISTRANT, self._registrant)

        state_json_file = os.path.join(
            self._config.options.config_path,
            self._config.DEFAULT_STATE_FILE)
        state = State(state_json_file)

        mode = Mode(state)
        mode.on_change(self._registrant.trigger_chairman_update)
        common.services.register(ServiceName.MODE, mode)

        ds_tags = DatastoreTags(state)
        ds_tags.on_change(self._registrant.trigger_chairman_update)
        common.services.register(ServiceName.DATASTORE_TAGS, ds_tags)
示例#3
0
    def get_occupied_vnc_ports(self):
        vms = self.vim_client.get_vms()

        ports = ExclusiveSet()
        for vm in vms:
            if vm.config and vm.config.extraConfig:
                enabled = False
                port = None
                for option in vm.config.extraConfig:
                    if option.key == self.EXTRA_CONFIG_VNC_ENABLED:
                        enabled = option.value.upper() == 'TRUE'
                    elif option.key == self.EXTRA_CONFIG_VNC_PORT:
                        port = int(option.value)
                if enabled:
                    try:
                        ports.add(port)
                    except DuplicatedValue:
                        self._logger.warning("port %d already occupied" % port)
        return ports
示例#4
0
    def _register_services(self):
        common.services.register(ServiceName.AGENT_CONFIG, self._config)
        common.services.register(ServiceName.LOCKED_VMS, ExclusiveSet())

        state_json_file = os.path.join(self._config.options.config_path,
                                       self._config.DEFAULT_STATE_FILE)
        state = State(state_json_file)

        mode = Mode(state)
        common.services.register(ServiceName.MODE, mode)
示例#5
0
    def get_occupied_vnc_ports(self):
        vms = self.vim_client.get_vms()

        ports = ExclusiveSet()
        for vm in vms:
            if vm.config and vm.config.extraConfig:
                enabled = False
                port = None
                for option in vm.config.extraConfig:
                    if option.key == self.EXTRA_CONFIG_VNC_ENABLED:
                        enabled = option.value.upper() == 'TRUE'
                    elif option.key == self.EXTRA_CONFIG_VNC_PORT:
                        port = int(option.value)
                if enabled:
                    try:
                        ports.add(port)
                    except DuplicatedValue:
                        self._logger.warning("port %d already occupied" % port)
        return ports
示例#6
0
    def _register_services(self):
        common.services.register(ServiceName.AGENT_CONFIG, self._config)
        common.services.register(ServiceName.LOCKED_VMS, ExclusiveSet())

        threadpool = RequestIdExecutor(ThreadPoolExecutor(
            self._config.workers))
        common.services.register(ThreadPoolExecutor, threadpool)

        state_json_file = os.path.join(self._config.options.config_path,
                                       self._config.DEFAULT_STATE_FILE)
        state = State(state_json_file)

        mode = Mode(state)
        common.services.register(ServiceName.MODE, mode)
    def test_exclusive(self):
        s = ExclusiveSet()
        assert_that(len(s), is_(0))
        assert_that('1' in s, is_(False))
        assert_that('2' in s, is_(False))

        s.add('1')
        assert_that(len(s), is_(1))
        assert_that('1' in s, is_(True))
        assert_that('2' in s, is_(False))

        self.assertRaises(DuplicatedValue, s.add, '1')

        s.remove('1')
        assert_that(len(s), is_(0))
示例#8
0
    def setUp(self):
        self._threadpool = ThreadPoolExecutor(16)
        self.state_file = tempfile.mktemp()
        self.state = CommonState(self.state_file)

        common.services.register(ThreadPoolExecutor, self._threadpool)

        common.services.register(ServiceName.REQUEST_ID, threading.local())
        common.services.register(ServiceName.LOCKED_VMS, ExclusiveSet())
        common.services.register(ServiceName.MODE, Mode(self.state))

        self.agent_conf_dir = mkdtemp(delete=True)
        self.hostname = "localhost"

        self._config = MagicMock()
        self._config.hypervisor = "fake"
        self._config.agent_id = stable_uuid("agent_id")
        self._config.hostname = "localhost"
        self._config.host_port = 1234
        self._config.host_version = "X.X.X"
        self._config.reboot_required = False
        self._config.image_datastores = []
        common.services.register(ServiceName.AGENT_CONFIG, self._config)