class EruptMicroserviceController {

    private final EruptNodeMicroservice eruptNodeMicroservice;

    @PostMapping(CloudRestApiConst.REGISTER_NODE)
    public void registerNode(@RequestBody MetaNode metaNode, HttpServletRequest request, HttpServletResponse response) {<FILL_FUNCTION_BODY>}

    //移除实例
    @PostMapping(CloudRestApiConst.REMOVE_INSTANCE_NODE)
    public void removeInstanceNode(@RequestParam String nodeName, @RequestParam String accessToken, HttpServletRequest request) {
        Optional.ofNullable(CloudServerUtil.findEruptCloudServerAnnotation()).ifPresent(it -> it.removeNode(nodeName, request));
        eruptNodeMicroservice.safeRemoveInstance(nodeName, accessToken);
    }

}

        CloudNode cloudNode = eruptNodeMicroservice.findNodeByAppName(metaNode.getNodeName(), metaNode.getAccessToken());
        if (!cloudNode.getStatus()) {
            response.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
            throw new RuntimeException(metaNode.getNodeName() + " prohibiting the registration");
        }
        Optional.ofNullable(CloudServerUtil.findEruptCloudServerAnnotation()).ifPresent(it -> it.registerNode(metaNode, request));
        for (String location : metaNode.getNodeAddress()) {
            if (!CloudServerUtil.nodeHealth(metaNode.getNodeName(), location)) {
                throw new RuntimeException("Unable to establish a connection with " + location);
            }
        }
        eruptNodeMicroservice.registerNode(cloudNode, metaNode);
    
<no_super_class>