public ScmContainerLocationResponse processRequest()

in hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/protocol/StorageContainerLocationProtocolServerSideTranslatorPB.java [409:743]


  public ScmContainerLocationResponse processRequest(
      ScmContainerLocationRequest request) throws ServiceException {
    try {
      switch (request.getCmdType()) {
      case AllocateContainer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setContainerResponse(allocateContainer(
                request.getContainerRequest(), request.getVersion()))
            .build();
      case GetContainer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetContainerResponse(
                getContainer(request.getGetContainerRequest()))
            .build();
      case GetContainerToken:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setContainerTokenResponse(
                getContainerToken(request.getContainerTokenRequest()))
            .build();
      case GetContainerWithPipeline:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetContainerWithPipelineResponse(getContainerWithPipeline(
                request.getGetContainerWithPipelineRequest(),
                request.getVersion()))
            .build();
      case GetContainerWithPipelineBatch:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetContainerWithPipelineBatchResponse(
                getContainerWithPipelineBatch(
                    request.getGetContainerWithPipelineBatchRequest(),
                    request.getVersion()))
            .build();
      case GetExistContainerWithPipelinesInBatch:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetExistContainerWithPipelinesInBatchResponse(
                getExistContainerWithPipelinesInBatch(
                    request.getGetExistContainerWithPipelinesInBatchRequest(),
                    request.getVersion()))
            .build();
      case ListContainer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setScmListContainerResponse(listContainer(
                request.getScmListContainerRequest()))
            .build();
      case QueryNode:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setNodeQueryResponse(queryNode(request.getNodeQueryRequest(),
                request.getVersion()))
            .build();
      case SingleNodeQuery:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setSingleNodeQueryResponse(querySingleNode(request
                .getSingleNodeQueryRequest()))
            .build();
      case CloseContainer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setScmCloseContainerResponse(closeContainer(
                request.getScmCloseContainerRequest()))
            .build();
      case AllocatePipeline:
        if (scm.getLayoutVersionManager().needsFinalization() &&
            !scm.getLayoutVersionManager().isAllowed(
                HDDSLayoutFeature.ERASURE_CODED_STORAGE_SUPPORT)
        ) {
          if (request.getPipelineRequest().getReplicationType() ==
              HddsProtos.ReplicationType.EC) {
            throw new SCMException("Cluster is not finalized yet, it is"
                + " not enabled to create pipelines with Erasure Coded"
                + " replication type.",
                SCMException.ResultCodes.INTERNAL_ERROR);
          }
        }
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setPipelineResponse(allocatePipeline(
                request.getPipelineRequest(), request.getVersion()))
            .build();
      case ListPipelines:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setListPipelineResponse(listPipelines(
                request.getListPipelineRequest(), request.getVersion()))
            .build();
      case ActivatePipeline:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setActivatePipelineResponse(activatePipeline(
                request.getActivatePipelineRequest()))
            .build();
      case DeactivatePipeline:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setDeactivatePipelineResponse(deactivatePipeline(
                request.getDeactivatePipelineRequest()))
            .build();
      case ClosePipeline:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setClosePipelineResponse(closePipeline(
                request.getClosePipelineRequest()))
            .build();
      case GetScmInfo:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetScmInfoResponse(getScmInfo(
                request.getGetScmInfoRequest()))
            .build();
      case InSafeMode:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setInSafeModeResponse(inSafeMode(
                request.getInSafeModeRequest()))
            .build();
      case ForceExitSafeMode:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setForceExitSafeModeResponse(forceExitSafeMode(
                request.getForceExitSafeModeRequest()))
            .build();
      case StartReplicationManager:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setStartReplicationManagerResponse(startReplicationManager(
                request.getStartReplicationManagerRequest()))
            .build();
      case StopReplicationManager:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setStopReplicationManagerResponse(stopReplicationManager(
                request.getStopReplicationManagerRequest()))
            .build();
      case GetReplicationManagerStatus:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setReplicationManagerStatusResponse(getReplicationManagerStatus(
                request.getSeplicationManagerStatusRequest()))
            .build();
      case GetReplicationManagerReport:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetReplicationManagerReportResponse(getReplicationManagerReport(
                request.getReplicationManagerReportRequest()))
            .build();
      case StartContainerBalancer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setStartContainerBalancerResponse(startContainerBalancer(
                request.getStartContainerBalancerRequest()))
            .build();
      case StopContainerBalancer:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setStopContainerBalancerResponse(stopContainerBalancer(
                request.getStopContainerBalancerRequest()))
            .build();
      case GetContainerBalancerStatus:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setContainerBalancerStatusResponse(getContainerBalancerStatus(
                request.getContainerBalancerStatusRequest()))
            .build();
      case GetContainerBalancerStatusInfo:
        return ScmContainerLocationResponse.newBuilder()
                .setCmdType(request.getCmdType())
                .setStatus(Status.OK)
                .setContainerBalancerStatusInfoResponse(getContainerBalancerStatusInfo(
                        request.getContainerBalancerStatusInfoRequest()))
                .build();
      case GetPipeline:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetPipelineResponse(getPipeline(
                request.getGetPipelineRequest(), request.getVersion()))
            .build();
      case GetSafeModeRuleStatuses:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType()).setStatus(Status.OK)
            .setGetSafeModeRuleStatusesResponse(getSafeModeRuleStatues(
                request.getGetSafeModeRuleStatusesRequest()))
            .build();
      case DecommissionNodes:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setDecommissionNodesResponse(decommissionNodes(
                request.getDecommissionNodesRequest()))
            .build();
      case GetContainersOnDecomNode:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetContainersOnDecomNodeResponse(getContainersOnDecomNode(request.getGetContainersOnDecomNodeRequest()))
            .build();
      case RecommissionNodes:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setRecommissionNodesResponse(recommissionNodes(
                request.getRecommissionNodesRequest()))
            .build();
      case StartMaintenanceNodes:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setStartMaintenanceNodesResponse(startMaintenanceNodes(
                request.getStartMaintenanceNodesRequest()))
          .build();
      case FinalizeScmUpgrade:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setFinalizeScmUpgradeResponse(getFinalizeScmUpgrade(
                request.getFinalizeScmUpgradeRequest()))
            .build();
      case QueryUpgradeFinalizationProgress:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setQueryUpgradeFinalizationProgressResponse(
                getQueryUpgradeFinalizationProgress(
                    request.getQueryUpgradeFinalizationProgressRequest()))
            .build();
      case DatanodeUsageInfo:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setDatanodeUsageInfoResponse(getDatanodeUsageInfo(
                request.getDatanodeUsageInfoRequest(),
                request.getVersion()))
            .build();
      case GetContainerCount:
        return ScmContainerLocationResponse.newBuilder()
          .setCmdType(request.getCmdType())
          .setStatus(Status.OK)
          .setGetContainerCountResponse(getContainerCount(
                  request.getGetContainerCountRequest()))
          .build();
      case GetClosedContainerCount:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetContainerCountResponse(getClosedContainerCount(
                request.getGetContainerCountRequest()))
            .build();
      case GetContainerReplicas:
        return ScmContainerLocationResponse.newBuilder()
          .setCmdType(request.getCmdType())
          .setStatus(Status.OK)
          .setGetContainerReplicasResponse(getContainerReplicas(
              request.getGetContainerReplicasRequest(),
              request.getVersion()))
          .build();
      case GetFailedDeletedBlocksTransaction:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetFailedDeletedBlocksTxnResponse(getFailedDeletedBlocksTxn(
                request.getGetFailedDeletedBlocksTxnRequest()
            ))
            .build();
      case ResetDeletedBlockRetryCount:
        return ScmContainerLocationResponse.newBuilder()
              .setCmdType(request.getCmdType())
              .setStatus(Status.OK)
              .setResetDeletedBlockRetryCountResponse(
                  getResetDeletedBlockRetryCount(
                      request.getResetDeletedBlockRetryCountRequest()))
              .build();
      case TransferLeadership:
        return ScmContainerLocationResponse.newBuilder()
              .setCmdType(request.getCmdType())
              .setStatus(Status.OK)
              .setTransferScmLeadershipResponse(
                  transferScmLeadership(
                      request.getTransferScmLeadershipRequest()))
              .build();
      case DecommissionScm:
        return ScmContainerLocationResponse.newBuilder()
              .setCmdType(request.getCmdType())
              .setStatus(Status.OK)
              .setDecommissionScmResponse(decommissionScm(
                  request.getDecommissionScmRequest()))
              .build();
      case GetMetrics:
        return ScmContainerLocationResponse.newBuilder()
            .setCmdType(request.getCmdType())
            .setStatus(Status.OK)
            .setGetMetricsResponse(getMetrics(request.getGetMetricsRequest()))
            .build();
      default:
        throw new IllegalArgumentException(
            "Unknown command type: " + request.getCmdType());
      }
    } catch (IOException e) {
      RatisUtil
          .checkRatisException(e, scm.getClientRpcPort(), scm.getScmId(), scm.getHostname(), ROLE_TYPE);
      throw new ServiceException(e);
    }
  }