Пример #1
0
    def _connect(self):
        # Start the local load balancer in front of Marathon
        service = Service(
            'marathon.local', 'marathon:%s' % self._urls, self._socketpath, 'unix', 
            'http', healthcheck=True, healthcheckurl='/ping')

        for url in self._urls:
            parsed = urlparse(url)

            # Resolve hostnames since HAproxy wants IP addresses
            ipaddr = socket.gethostbyname(parsed.hostname or '127.0.0.1')
            server = Server(ipaddr, parsed.port or 80)
            service._add(server)

        self._backend.update(self._marathonService, {self._socketpath: service})
Пример #2
0
    def _connect(self):
        # Start the local load balancer in front of Marathon
        service = Service('marathon',
                          'marathon:%s' % self._urls,
                          self._socketpath,
                          'unix',
                          'http',
                          healthcheck=True,
                          healthcheckurl='/ping')

        for url in self._urls:
            parsed = urlparse(url)

            # Resolve hostnames since HAproxy wants IP addresses
            ipaddr = socket.gethostbyname(parsed.hostname or '127.0.0.1')
            server = Server(ipaddr, parsed.port or 80, parsed.hostname)
            service._add(server)

        self._backend.update(self._marathonService,
                             {self._socketpath: service})
Пример #3
0
    def _refresh(self):
        services = {}

        # Start the local load balancer in front of Marathon
        service = Service('marathon.local', 'marathon:%s' % self._urls, self._socketpath, 'unix')
        services[self._socketpath] = service

        for url in self._urls:
            parsed = urlparse(url)

            # Resolve hostnames since HAproxy wants IP addresses
            ipaddr = socket.gethostbyname(parsed.hostname or '127.0.0.1')
            server = Server(ipaddr, parsed.port or 80)
            service._add(server)

        # Poll Marathon for running tasks
        try:
            logging.debug("GET Marathon services from %s", self._socketpath)
            response = unixrequest('GET', self._socketpath, '/v2/tasks', None, {'Accept': 'application/json'})
            services.update(self._parse(response))
        finally:
            self._backend.update(self, services)
        logging.debug("Refreshed services from Marathon at %s", self._urls)