예제 #1
0
 def _deactivate(self, names, tag=None):
     for name in names:
         if self._domains.get(name):
             addrs = self._domains.remove(name, tag)
             if addrs:
                 for addr in addrs:
                     log.info('removed %s -> %s', name.idna(), addr)
예제 #2
0
 def _deactivate(self, names, tag=None):
     for name in names:
         if self._domains.get(name):
             addrs = self._domains.remove(name, tag)
             if addrs:
                 for addr in addrs:
                     log.info('removed %s -> %s', name.idna(), addr)
예제 #3
0
    def test_domain(self):
        """
        test suffix domain functionality:
        """

        reg = Registry(TEST_DOMAIN)

        self.assertIsNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY + "." + TEST_DOMAIN))
        self.assertIsNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY2 + "." + TEST_DOMAIN))

        log.info("Adding mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.add(PREFIX_NAME + TEST_KEY, TEST_NAMES)
        log.debug('_mapping %s' % reg._mappings)
        self.assertIsNotNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY + "." + TEST_DOMAIN))
        self.assertIsNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY2 + "." + TEST_DOMAIN))

        log.info("Removing mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.rename(TEST_KEY, TEST_KEY2)
        self.assertIsNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY + "." + TEST_DOMAIN))
        self.assertIsNotNone(
            reg._mappings.get(PREFIX_NAME + TEST_KEY2 + "." + TEST_DOMAIN))
예제 #4
0
 def activate(self, container):
     'Activate all rules associated with this container'
     desc = self._desc(container)
     with self._lock:
         self._active[container.id] = container
         mapping = self._get_mapping_by_container(container)
         if mapping:
             log.info('setting %s as active' % desc)
             key, names = mapping.key, mapping.names
             self._activate(names, container.addr, tag=key)
예제 #5
0
 def activate(self, container):
     'Activate all rules associated with this container'
     desc = self._desc(container)
     with self._lock:
         self._active[container.id] = container
         mapping = self._get_mapping_by_container(container)
         if mapping:
             log.info('setting %s as active' % desc)
             key, names = mapping.key, mapping.names
             self._activate(names, container.addr, tag=key)
예제 #6
0
    def deactivate(self, container):
        'Deactivate all rules associated with this container'
        with self._lock:
            old_container = self._active.get(container.id)
            if old_container is None:
                return
            del self._active[container.id]

            # since this container is active, get the old address so we can log
            # exactly which names/addresses are being deactivated
            desc = self._desc(container)
            mapping = self._get_mapping_by_container(container)
            if mapping:
                log.info('setting %s as inactive' % desc)
                self._deactivate(mapping.names, tag=mapping.key)
예제 #7
0
    def deactivate(self, container):
        'Deactivate all rules associated with this container'
        with self._lock:
            old_container = self._active.get(container.id)
            if old_container is None:
                return
            del self._active[container.id]

            # since this container is active, get the old address so we can log
            # exactly which names/addresses are being deactivated
            desc = self._desc(container)
            mapping = self._get_mapping_by_container(container)
            if mapping:
                log.info('setting %s as inactive' % desc)
                self._deactivate(mapping.names, tag=mapping.key)
예제 #8
0
    def test_registry_mappings(self):
        """
        test add / remove functionality:
        this is to map a container name/id to a set of domain names
        """

        reg = Registry()

        log.info("Adding mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.add(PREFIX_NAME + TEST_KEY, TEST_NAMES)
        self.assertIsNotNone(reg._mappings.get(PREFIX_NAME + TEST_KEY))

        log.info("Removing mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.remove(PREFIX_NAME + TEST_KEY)
        self.assertIsNone(reg._mappings.get(PREFIX_NAME + TEST_KEY))
예제 #9
0
    def test_registry_mappings_get(self):
        """
        test get functionality:
        this is to get a list of dns domain mapped
        to the specified key (container id / name)
        """

        reg = Registry()

        log.info("Removing mapping %s => %s", TEST_KEY, TEST_NAMES)
        names = reg.get(PREFIX_NAME + TEST_KEY)
        self.assertEqual([], names)

        log.info("Adding mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.add(PREFIX_NAME + TEST_KEY, TEST_NAMES)
        names = reg.get(PREFIX_NAME + TEST_KEY)
        self.assertEqual(TEST_NAMES, names)
예제 #10
0
    def test_registry_resolve(self):
        """
        test resolve method
        """

        reg = Registry()

        log.info("Adding %s", TEST_ADDR)
        reg._activate(TEST_NAMES2, TEST_ADDR, TEST_KEY)

        for name in TEST_NAMES:
            addrs = reg.resolve(name)
            log.debug('resolve %s result %s', name, addrs)
            self.assertIsNotNone(addrs)
            self.assertEqual(addrs, [TEST_ADDR])

        addrs = reg.resolve("foo.it")
        self.assertIsNone(addrs)
예제 #11
0
    def test_registry_domains_static(self):
        """
        test activate_static / deactivate_static functionality:
        this is to map a domain name to a particular address
        through the REST Api
        """

        reg = Registry()

        for domainName in TEST_NAMES:
            self.assertIsNone(reg._domains.get(domainName))

        log.info("Adding static %s", TEST_ADDR)
        reg.activate_static(TEST_NAMES2[0], TEST_ADDR)
        self.assertIsNotNone(reg._domains.get(TEST_NAMES[0]))

        log.info("Removing static %s", TEST_ADDR)
        reg.deactivate_static(TEST_NAMES2[0], TEST_ADDR)
        log.debug(reg.dump())
        self.assertIsNone(reg._domains.get(TEST_NAMES[0]))
예제 #12
0
    def test_mapping_rename(self):
        """
        test rename functionality:
        this is to update mapping when a container change name
        """

        reg = Registry()

        self.assertIsNone(reg._mappings.get(PREFIX_NAME + TEST_KEY))
        self.assertIsNone(reg._mappings.get(PREFIX_NAME + TEST_KEY2))

        log.info("Adding mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.add(PREFIX_NAME + TEST_KEY, TEST_NAMES)
        #        log.debug('_mapping %s' % reg._mappings)
        self.assertIsNotNone(reg._mappings.get(PREFIX_NAME + TEST_KEY))
        self.assertIsNone(reg._mappings.get(PREFIX_NAME + TEST_KEY2))

        log.info("Removing mapping %s => %s", TEST_KEY, TEST_NAMES)
        reg.rename(TEST_KEY, TEST_KEY2)
        self.assertIsNone(reg._mappings.get(PREFIX_NAME + TEST_KEY))
        self.assertIsNotNone(reg._mappings.get(PREFIX_NAME + TEST_KEY2))
예제 #13
0
    def test_registry_domains(self):
        """
        test activate / deactivate functionality:
        this is to map a domain name to a particular address
        you can inspect the DNS tree with print(reg.dump())
        """

        reg = Registry()

        for domainName in TEST_NAMES:
            self.assertIsNone(reg._domains.get(domainName))

        log.info("Adding %s", TEST_ADDR)
        reg._activate(TEST_NAMES2, TEST_ADDR, TEST_KEY)
        for domainName in TEST_NAMES:
            self.assertIsNotNone(reg._domains.get(domainName))

        log.info("Removing %s", TEST_ADDR)
        reg._deactivate(TEST_NAMES2, TEST_ADDR, TEST_KEY)
        log.debug(reg.dump())
        for domainName in TEST_NAMES:
            log.debug("name %s", domainName)
            self.assertIsNone(reg._domains.get(domainName))
예제 #14
0
    def test_registry_active(self):
        """
        test activate / deactivate functionality:
        this is to activate / deactivate all mapping
        related to the specified container
        """

        reg = Registry()

        foo = object()
        foo.id = TEST_ID
        foo.name = TEST_NAME
        foo.addrs = TEST_ADDRS
        container = Container(foo)

        self.assertIsNone(reg._active.get(container.id))

        log.info("Activating container %s", container.name)
        reg.activate(container)
        self.assertIsNotNone(reg._active.get(container.id))

        log.info("Deactivating container %s", container.name)
        reg.deactivate(container)
        self.assertIsNone(reg._active.get(container.id))
예제 #15
0
 def _activate(self, names, addr, tag=None):
     for name in names:
         self._domains.put(name, addr, tag)
         log.info('added %s -> %s key=%s', name.idna(), addr, tag)
예제 #16
0
 def _activate(self, names, addr, tag=None):
     for name in names:
         self._domains.put(name, addr, tag)
         log.info('added %s -> %s key=%s', name.idna(), addr, tag)