Esempio n. 1
0
 def test_buildZooKeeperHosts_multiple(self):
     hosts = [
         zk.ZooKeeperConnectionConfig('127.0.0.1', port=2181,
                                      chroot='/test1'),
         zk.ZooKeeperConnectionConfig('127.0.0.2', port=2182,
                                      chroot='/test2')
     ]
     self.assertEqual('127.0.0.1:2181/test1,127.0.0.2:2182/test2',
                      zk.buildZooKeeperHosts(hosts))
Esempio n. 2
0
 def test_buildZooKeeperHosts_single(self):
     hosts = [
         zk.ZooKeeperConnectionConfig('127.0.0.1',
                                      port=2181,
                                      chroot='/test1')
     ]
     self.assertEqual('127.0.0.1:2181/test1', zk.buildZooKeeperHosts(hosts))
Esempio n. 3
0
    def setZooKeeperServers(self, zk_cfg):
        if not zk_cfg:
            return

        for server in zk_cfg:
            z = zk.ZooKeeperConnectionConfig(server['host'],
                                             server.get('port', 2181),
                                             server.get('chroot', None))
            name = z.host + '_' + str(z.port)
            self.zookeeper_servers[name] = z
Esempio n. 4
0
    def setupZK(self):
        f = ZookeeperServerFixture()
        self.useFixture(f)
        self.zookeeper_host = f.zookeeper_host
        self.zookeeper_port = f.zookeeper_port

        kz_fxtr = self.useFixture(
            ChrootedKazooFixture(self.zookeeper_host, self.zookeeper_port))
        self.zookeeper_chroot = kz_fxtr.zookeeper_chroot
        self.zk = zk.ZooKeeper()
        host = zk.ZooKeeperConnectionConfig(self.zookeeper_host,
                                            self.zookeeper_port,
                                            self.zookeeper_chroot)
        self.zk.connect([host])
        self.addCleanup(self.zk.disconnect)
Esempio n. 5
0
def loadSecureConfig(config, secure_config_path):
    secure = openConfig(secure_config_path)
    if not secure:  # empty file
        return

    # Eliminate any servers defined in the normal config
    if secure.get('zookeeper-servers', []):
        config.zookeeper_servers = {}

    # TODO(Shrews): Support ZooKeeper auth
    for server in secure.get('zookeeper-servers', []):
        z = zk.ZooKeeperConnectionConfig(server['host'],
                                         server.get('port', 2181),
                                         server.get('chroot', None))
        name = z.host + '_' + str(z.port)
        config.zookeeper_servers[name] = z
Esempio n. 6
0
def loadConfig(config_path):
    config = openConfig(config_path)

    # Call driver config reset now to clean global hooks like os_client_config
    for driver in Drivers.drivers.values():
        driver["config"].reset()

    newconfig = Config()
    newconfig.db = None
    newconfig.webapp = {
        'port': config.get('webapp', {}).get('port', 8005),
        'listen_address': config.get('webapp', {}).get('listen_address',
                                                       '0.0.0.0')
    }
    newconfig.providers = {}
    newconfig.labels = {}
    newconfig.elementsdir = config.get('elements-dir')
    newconfig.imagesdir = config.get('images-dir')
    newconfig.build_log_dir = config.get('build-log-dir')
    newconfig.build_log_retention = config.get('build-log-retention', 7)
    newconfig.provider_managers = {}
    newconfig.zookeeper_servers = {}
    newconfig.diskimages = {}

    for server in config.get('zookeeper-servers', []):
        z = zk.ZooKeeperConnectionConfig(server['host'],
                                         server.get('port', 2181),
                                         server.get('chroot', None))
        name = z.host + '_' + str(z.port)
        newconfig.zookeeper_servers[name] = z

    for diskimage in config.get('diskimages', []):
        d = DiskImage()
        d.name = diskimage['name']
        newconfig.diskimages[d.name] = d
        if 'elements' in diskimage:
            d.elements = u' '.join(diskimage['elements'])
        else:
            d.elements = ''
        # must be a string, as it's passed as env-var to
        # d-i-b, but might be untyped in the yaml and
        # interpreted as a number (e.g. "21" for fedora)
        d.release = str(diskimage.get('release', ''))
        d.rebuild_age = int(diskimage.get('rebuild-age', 86400))
        d.env_vars = diskimage.get('env-vars', {})
        if not isinstance(d.env_vars, dict):
            d.env_vars = {}
        d.image_types = set(diskimage.get('formats', []))
        d.pause = bool(diskimage.get('pause', False))
        d.username = diskimage.get('username', 'zuul')

    for label in config.get('labels', []):
        l = Label()
        l.name = label['name']
        newconfig.labels[l.name] = l
        l.max_ready_age = label.get('max-ready-age', 0)
        l.min_ready = label.get('min-ready', 0)
        l.pools = []

    for provider in config.get('providers', []):
        p = get_provider_config(provider)
        p.load(newconfig)
        newconfig.providers[p.name] = p
    return newconfig