def _enqueue_delete_ingress(self, ingress_meta): ingress_spec = {'type': None} ingress_del_event = self.create_event('Ingress', ingress_spec, ingress_meta, 'DELETED') IngressKM.delete(ingress_meta['uid']) self.enqueue_event(ingress_del_event) self.wait_for_all_tasks_done()
def _enqueue_add_ingress(self, namespace_name): ingress_uuid = str(uuid.uuid4()) ingress_name = 'test-ingress' ingress_meta = {'name': ingress_name, 'uid': ingress_uuid, 'namespace': namespace_name} ingress_spec = { 'rules': [{ 'http': { 'paths': [{ 'path': '/testpath', 'backend': { 'serviceName': 'test-service', 'servicePort': SERVICE_PORT} }] } }] } annotations = {'ingress.kubernetes.io/rewrite-target': '/'} ingress_add_event = self.create_event('Ingress', ingress_spec, ingress_meta, 'ADDED') ingress_add_event['object']['metadata']['annotations'] = annotations IngressKM.locate(ingress_uuid, ingress_add_event['object']) self.kube_mock.get_resource.return_value = {'spec': { "clusterIP": self.cluster_ip, }} self.enqueue_event(ingress_add_event) self.wait_for_all_tasks_done() return ingress_meta, ingress_uuid
def _enqueue_add_ingress(self, namespace_name): ingress_uuid = str(uuid.uuid4()) ingress_name = 'test-ingress' ingress_meta = {'name': ingress_name, 'uid': ingress_uuid, 'namespace': namespace_name} ingress_spec = { 'rules': [{ 'http': { 'paths': [{ 'path': '/testpath', 'backend': { 'serviceName': 'test-service', 'servicePort': SERVICE_PORT} }] } }] } annotations = {'ingress.kubernetes.io/rewrite-target': '/'} ingress_add_event = self.create_event('Ingress', ingress_spec, ingress_meta, 'ADDED') ingress_add_event['object']['metadata']['annotations'] = annotations IngressKM.locate(ingress_uuid, ingress_add_event['object']) self.kube_mock.get_resource.return_value = {'spec': { "clusterIP": self.cluster_ip, }} self.enqueue_event(ingress_add_event) return ingress_meta, ingress_uuid
def _enqueue_delete_ingress(self, ingress_meta): ingress_spec = {'type': None} ingress_del_event = self.create_event( 'Ingress', ingress_spec, ingress_meta, 'DELETED') IngressKM.delete(ingress_meta['uid']) self.enqueue_event(ingress_del_event) self.wait_for_all_tasks_done()
def _sync_ingress_lb(self): lb_uuid_set = set(LoadbalancerKM.keys()) ingress_uuid_set = set(IngressKM.keys()) deleted_ingress_set = lb_uuid_set - ingress_uuid_set for uuid in deleted_ingress_set: lb = LoadbalancerKM.get(uuid) if not lb: continue if not lb.annotations: continue owner = None kind = None cluster = None for kvp in lb.annotations['key_value_pair'] or []: if kvp['key'] == 'cluster': cluster = kvp['value'] elif kvp['key'] == 'owner': owner = kvp['value'] elif kvp['key'] == 'kind': kind = kvp['value'] if cluster == vnc_kube_config.cluster_name() and \ owner == 'k8s' and \ kind == self._k8s_event_type: self._create_ingress_event('delete', uuid, lb) break return
def update_ingress_backend(self, ns_name, service_name, oper): ingress_ids = self._find_ingress(self._ingress_label_cache, ns_name, service_name) for ingress_id in ingress_ids or []: ingress = IngressKM.get(ingress_id) lb = LoadbalancerKM.get(ingress_id) if not ingress or not lb: continue if oper == 'ADD': new_backend_list = self._get_new_backend_list( ingress.spec, ns_name) for new_backend in new_backend_list[:] or []: if new_backend['member']['serviceName'] == service_name: # Create a firewall rule for ingress to this service. fw_uuid = VncIngress.add_ingress_to_service_rule( ns_name, ingress.name, service_name) lb.add_firewall_rule(fw_uuid) self._create_listener_pool_member( ns_name, lb, new_backend) else: old_backend_list = self._get_old_backend_list(lb) for old_backend in old_backend_list[:] or []: if old_backend['member']['serviceName'] == service_name: self._delete_listener(old_backend['listener_id']) # Delete rules created for this ingress to service. deleted_fw_rule_uuid =\ VncIngress.delete_ingress_to_service_rule(ns_name, ingress.name, service_name) lb.remove_firewall_rule(deleted_fw_rule_uuid)
def _sync_ingress_lb(self): lb_uuid_list = list(LoadbalancerKM.keys()) ingress_uuid_list = list(IngressKM.keys()) for uuid in lb_uuid_list: if uuid in ingress_uuid_list: continue lb = LoadbalancerKM.get(uuid) if not lb: continue if not lb.annotations: continue for kvp in lb.annotations['key_value_pair'] or []: if kvp['key'] == 'owner' \ and kvp['value'] == 'k8s': self._create_ingress_event('delete', uuid, lb) break return
def update_ingress_backend(self, ns_name, service_name, oper): ingress_ids = self._find_ingress( self._ingress_label_cache, ns_name, service_name) for ingress_id in ingress_ids or []: ingress = IngressKM.get(ingress_id) lb = LoadbalancerKM.get(ingress_id) if not ingress or not lb: continue if oper == 'ADD': new_backend_list = self._get_new_backend_list(ingress.spec, ns_name) for new_backend in new_backend_list[:] or []: if new_backend['member']['serviceName'] == service_name: self._create_listener_pool_member( ns_name, lb, new_backend) else: old_backend_list = self._get_old_backend_list(lb) for old_backend in old_backend_list[:] or []: if old_backend['member']['serviceName'] == service_name: self._delete_listener(old_backend['listener_id'])
def _sync_ingress_lb(self): lb_uuid_set = set(LoadbalancerKM.keys()) ingress_uuid_set = set(IngressKM.keys()) deleted_ingress_set = lb_uuid_set - ingress_uuid_set for uuid in deleted_ingress_set: lb = LoadbalancerKM.get(uuid) if not lb: continue if not lb.annotations: continue owner = None kind = None for kvp in lb.annotations['key_value_pair'] or []: if kvp['key'] == 'owner': owner = kvp['value'] elif kvp['key'] == 'kind': kind = kvp['value'] if owner == 'k8s' and kind == self._k8s_event_type: self._create_ingress_event('delete', uuid, lb) break return