def test_normalize_hostname_regression_11156(): # The issue here was that we used "rstrip" which works on characters, # not substrings. Having the domain (example.com) start with an eee # causes the hostname to get stripped of it's "eee"s ending in an # empty hostname accidentally. e = Environment('name') e.hosts['eee.example.com'] = host = Mock() e.host_domain = 'example.com' assert host == e.get_host('eee')
class Deployment(object): environment = None def __init__(self, env_name, host_name, overrides, secret_files, secret_data, host_data, timeout, platform, os_env=None): self.env_name = env_name self.host_name = host_name self.overrides = overrides self.host_data = host_data self.secret_files = secret_files self.secret_data = secret_data self.timeout = timeout self.platform = platform self.os_env = os_env def load(self): from batou.environment import Environment if self.os_env: os.environ.update(self.os_env) self.environment = Environment(self.env_name, self.timeout, self.platform) self.environment.deployment = self self.environment.load() self.environment.overrides = self.overrides for hostname, data in self.host_data.items(): self.environment.hosts[hostname].data.update(data) self.environment.secret_files = self.secret_files self.environment.secret_data = self.secret_data self.environment.configure() def deploy(self, root, predict_only): host = self.environment.get_host(self.host_name) root = self.environment.get_root(root, host) root.component.deploy(predict_only)
def test_get_host_without_subdomain_also_works(): e = Environment('name') e.hosts['example.com'] = host = Mock() e.host_domain = 'example.com' assert host == e.get_host('example.com')
def test_get_host_normalizes_hostname(): e = Environment('name') e.hosts['asdf.example.com'] = host = Mock() e.host_domain = 'example.com' assert host == e.get_host('asdf') assert host == e.get_host('asdf.example.com')
def test_get_host_raises_keyerror_if_unknown(): e = Environment('name') with pytest.raises(KeyError): e.get_host('asdf')
def test_get_host_without_subdomain_also_works(): e = Environment("name") e.hosts["example.com"] = host = Mock() e.host_domain = "example.com" assert host == e.get_host("example.com")
def test_get_host_normalizes_hostname(): e = Environment("name") e.hosts["asdf.example.com"] = host = Mock() e.host_domain = "example.com" assert host == e.get_host("asdf") assert host == e.get_host("asdf.example.com")