def set_cr_desired_state( kube_client: kubernetes_tools.KubeClient, service: str, instance: str, instance_type: str, desired_state: str, ): try: kubernetes_tools.set_cr_desired_state( kube_client=kube_client, cr_id=cr_id(service, instance, instance_type), desired_state=desired_state, ) except ApiException as e: error_message = (f"Error while setting state {desired_state} of " f"{service}.{instance}: {e}") raise RuntimeError(error_message)
def instance_set_state(request,) -> None: service = request.swagger_data.get("service") instance = request.swagger_data.get("instance") desired_state = request.swagger_data.get("desired_state") try: instance_type = validate_service_instance( service, instance, settings.cluster, settings.soa_dir ) except NoConfigurationForServiceError: error_message = "deployment key %s not found" % ".".join( [settings.cluster, instance] ) raise ApiFailure(error_message, 404) except Exception: error_message = traceback.format_exc() raise ApiFailure(error_message, 500) if instance_type in INSTANCE_TYPES_WITH_SET_STATE: try: cr_id_fn = cr_id_fn_for_instance_type(instance_type) kube_client = KubeClient() kubernetes_tools.set_cr_desired_state( kube_client=kube_client, cr_id=cr_id_fn(service=service, instance=instance), desired_state=desired_state, ) except ApiException as e: error_message = ( f"Error while setting state {desired_state} of " f"{service}.{instance}: {e}" ) raise ApiFailure(error_message, 500) else: error_message = ( f"instance_type {instance_type} of {service}.{instance} doesn't " f"support set_state, must be in INSTANCE_TYPES_WITH_SET_STATE, " f"currently: {INSTANCE_TYPES_WITH_SET_STATE}" ) raise ApiFailure(error_message, 404)