async def exec_add_dynamic_endpoint(s, pod, _old, action, logger): ename = action['name'] pname = pod['metadata']['name'] cname = action['target'] logger.info(f'configuring pod:{pname} for d_endpoint:{ename}') l7mp_instance = get_l7mp_instance(pod) ep = { 'name': action['name'], 'spec': action['spec'], } endpoint_obj = l7mp_client.IoL7mpApiV1Cluster(**ep) request = l7mp_client.IoL7mpApiV1EndPointRequest(endpoint=endpoint_obj) try: l7mp_instance.add_end_point(cname, request) except l7mp_client.exceptions.ApiException as e: content = json.loads(e.body).get('content', '') if e.status == 400 and content.endswith(' already defined'): # FIXME: cannot update, so this will be ok for now. logger.warning('already defined', ) else: logger.warning(f'request: {request}') raise e except urllib3.exceptions.MaxRetryError as e: raise kopf.TemporaryError(f'{e}', delay=5)
async def exec_add_target(s, pod, _old, action, logger): tname = action['name'] pname = pod['metadata']['name'] tspec = action['spec'] tspec = convert_to_old_api(logger, 'targets', tspec) logger.info(f'configuring pod:{pname} for target:{tname}') l7mp_instance = get_l7mp_instance(pod) cluster = deepcopy(tspec['cluster']) cluster['name'] = tname cluster_obj = l7mp_client.IoL7mpApiV1Cluster(**cluster) request = l7mp_client.IoL7mpApiV1ClusterRequest(cluster=cluster) try: l7mp_instance.add_cluster(request) except l7mp_client.exceptions.ApiException as e: content = json.loads(e.body).get('content', '') if e.status == 400 and content.endswith(' already defined'): # FIXME: cannot update, so this will be ok for now. logger.warning('already defined', ) else: logger.warning(f"request:\n{request}") raise e except urllib3.exceptions.MaxRetryError as e: raise kopf.TemporaryError(f'{e}', delay=5) await set_owner_status(s, 'targets', tname, logger)