@Override
    public Integer call() throws Exception {

        if (!CommandUtil.isInputValid(this)) {
            return ToolConstants.INVALID_INPUT_ERROR_CODE;
        }

        List<WorkflowContext> contextList = new ArrayList<>();
        for (String each : serviceList) {
            WorkflowContext context = new WorkflowContextBuilder(appName).withNamespace(namespace)
                    .withServiceName(each).withAuthConfig(authConfigBuilder.getAuthConfig()).get();
            if (!clusterValidator.validate(context)) {
                WorkflowLogger.logPersistedActivities();
                return ToolConstants.INVALID_INPUT_ERROR_CODE;
            }
            contextList.add(context);
        }

        WorkflowLogger.info(ControllerActivity.WAITING_FOR_SERVICE_STATUS);

        WorkflowLogger.header(ControllerActivity.APP_NAME, appName);
        try {
            boolean isLarge = false;
            List<String[]> rowList = new ArrayList<String[]>();
            for (WorkflowContext context : contextList) {
                statusComponentInvoker.execute(context);
                Object statusAttr = context.getAttribute(
                        WorkflowConstants.DEPLOYMENT_STATUS);
                if (statusAttr != null) {
                    DeploymentStatus serviceStatus = (DeploymentStatus) statusAttr;
                    if (serviceStatus.getServiceAddress() != null) {
                        isLarge = isLarge ? isLarge : serviceStatus.getServiceAddress().length() > TableFields.SERVICE_ADDRESS.getLength();
                    }
                    String[] tableRow = StatusUtil.getRowData(serviceStatus);
                    rowList.add(tableRow);
                }
            }
            TableFormatter table = StatusUtil.getStatusTable(isLarge);
            rowList.forEach(each -> table.addRow(each));
            WorkflowLogger.logTable(table);
        } catch (HyscaleException e) {
            logger.error("Error while getting status for app: {}, in namespace: {}", appName, namespace);
            WorkflowLogger.error(ControllerActivity.ERROR_WHILE_FETCHING_STATUS, e.toString());
            throw e;
        } finally {
            WorkflowLogger.footer();
        }
        return ToolConstants.HYSCALE_SUCCESS_CODE;
    }
This class executes 'hyscale get service status' command.
It is a sub-command of the 'hyscale get service' command

Options:
  serviceList - list of service names
  namespace - namespace in which the app is deployed
  appName - name of the app
<p>
Eg: hyscale get service status -s s1 -n dev -a sample
<p>
Fetches the service status from the given cluster.
The service status has been abstracted over the pod status,see {@link DeploymentStatus},
gives the information about service and the failure message when it is in
NotRunning status.
@see HyscaleGetServiceCommand .
Every command/sub-command has to implement the {@link Callable} so that
whenever the command is executed the {@link #call()}
method will be invoked
workflow-controller/controller-service/src/main/java/io/hyscale/controller/commands/get/service/HyscaleServiceStatusCommand.java