def test_convertMapperToModel(self): """ Check that the converter function properly creates the appropriate proxy model classes. """ proxies = model.convertMapperToModel(self.proxyServices) # two services self.assertEquals(len(proxies), 2) for proxy in proxies: group = proxy.getEnabledGroup() # make sure the expected groups are enabled and that their host # counts are correct if proxy.name == 'web': self.assertTrue(group.name == 'prod') self.assertEquals(len(group.getHosts()), 3) elif proxy.name == 'dns': self.assertTrue(group.name == 'corp') self.assertEquals(len(group.getHosts()), 2) # one service should have two groups, the other should have one groups = proxy.getGroups() if proxy.name == 'web': self.assertEquals(len(groups), 2) elif proxy.name == 'dns': self.assertEquals(len(groups), 1)
def proxyManagerFactory(services): """ This factory is for simplifying the common task of creating a proxy manager with presets for many attributes and/or much data. """ # check to see what got passed, in case we need to convert it if isinstance(services[0], model.HostMapper): services = model.convertMapperToModel(services) # create the manager pm = ProxyManager(services) for serviceName, service in pm.getServices(): # set up the trackers for each group for groupName, group in pm.getGroups(serviceName): tracker = HostTracking(group) scheduler = schedulers.schedulerFactory(group.lbType, tracker) pm.addTracker(serviceName, groupName, tracker) # now let's setup actual proxies for the hosts in the enabled group group = service.getEnabledGroup() # XXX maybe won't need this next line #enabledTracker = pm.getTracker(service.name, group.name) for host, port in service.addresses: pm.createProxy(serviceName, host, port) # return proxy manager return pm