def test_etcd_watchers_init_with_conf_values(self, *_): agent = CalicoDhcpAgent() provided_kwargs = get_etcd_connection_settings() def check_provided_args(watcher_obj, expected_key_to_poll): for attr_name in ('etcd_scheme', 'etcd_key', 'etcd_cert', 'etcd_ca'): self.assertEqual(getattr(watcher_obj, attr_name), provided_kwargs[attr_name]) # provided hosts are stored in form of list [(host, port)...] # on etcd watcher etcd_host, etcd_port = provided_kwargs['etcd_addrs'].split(':') self.assertEqual(watcher_obj.etcd_hosts, [(etcd_host, int(etcd_port))]) self.assertEqual(watcher_obj.key_to_poll, expected_key_to_poll) expected_key = \ datamodel_v1.dir_for_host(socket.gethostname()) + '/workload' check_provided_args(agent.etcd, expected_key) expected_key = datamodel_v1.SUBNET_DIR check_provided_args(agent.etcd.subnet_watcher, expected_key)
def test_etcd_watchers_init_with_conf_values(self, *_): agent = CalicoDhcpAgent() provided_kwargs = get_etcd_connection_settings() def check_provided_args(watcher_obj, expected_key_to_poll): for attr_name in ('etcd_scheme', 'etcd_key', 'etcd_cert', 'etcd_ca'): self.assertEqual( getattr(watcher_obj, attr_name), provided_kwargs[attr_name] ) # provided hosts are stored in form of list [(host, port)...] # on etcd watcher etcd_host, etcd_port = provided_kwargs['etcd_addrs'].split(':') self.assertEqual(watcher_obj.etcd_hosts, [(etcd_host, int(etcd_port))]) self.assertEqual(watcher_obj.key_to_poll, expected_key_to_poll) expected_key = \ datamodel_v1.dir_for_host(socket.gethostname()) + '/workload' check_provided_args(agent.etcd, expected_key) expected_key = datamodel_v1.SUBNET_DIR check_provided_args(agent.etcd.subnet_watcher, expected_key)
def __init__(self, agent): watcher_kwargs = get_etcd_connection_settings() watcher_kwargs['key_to_poll'] = \ datamodel_v1.dir_for_host(socket.gethostname()) + "/workload" super(CalicoEtcdWatcher, self).__init__(**watcher_kwargs) self.agent = agent self.suppress_dnsmasq_updates = False # Register the etcd paths that we need to watch. self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>/endpoint/<endpoint_id>", on_set=self.on_endpoint_set, on_del=self.on_endpoint_delete ) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>/endpoint", on_del=self.on_dir_delete ) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>", on_del=self.on_dir_delete ) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>", on_del=self.on_dir_delete ) self.register_path( "/calico/v1/host/<hostname>/workload", on_del=self.on_dir_delete ) # Networks for which Dnsmasq needs updating. self.dirty_networks = set() # Subnets that have changed in etcd since when we last read them. self.dirty_subnets = set() # Also watch the etcd subnet tree. When something in that subtree # changes, the subnet watcher will tell _this_ watcher to resync. self.subnet_watcher = SubnetWatcher(self) eventlet.spawn(self.subnet_watcher.loop)
def __init__(self, agent): watcher_kwargs = get_etcd_connection_settings() watcher_kwargs['key_to_poll'] = \ datamodel_v1.dir_for_host(socket.gethostname()) + "/workload" super(CalicoEtcdWatcher, self).__init__(**watcher_kwargs) self.agent = agent self.suppress_dnsmasq_updates = False # Register the etcd paths that we need to watch. self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>/endpoint/<endpoint_id>", on_set=self.on_endpoint_set, on_del=self.on_endpoint_delete) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>/endpoint", on_del=self.on_dir_delete) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>" + "/<workload_id>", on_del=self.on_dir_delete) self.register_path( "/calico/v1/host/<hostname>/workload/<orchestrator>", on_del=self.on_dir_delete) self.register_path("/calico/v1/host/<hostname>/workload", on_del=self.on_dir_delete) # Networks for which Dnsmasq needs updating. self.dirty_networks = set() # Subnets that have changed in etcd since when we last read them. self.dirty_subnets = set() # Also watch the etcd subnet tree. When something in that subtree # changes, the subnet watcher will tell _this_ watcher to resync. self.subnet_watcher = SubnetWatcher(self) eventlet.spawn(self.subnet_watcher.loop)
def test_dir_for_host(self): self.assertEqual(dir_for_host("foo"), "/calico/v1/host/foo")
def test_dir_for_host(self): self.assertEqual(dir_for_host("foo"), "/calico/v1/host/foo")