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})
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})
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)