public void watch(ApiClient apiClient, String appName, String serviceName, String namespace)
            throws HyscaleException {
        ServiceMetadata serviceMetadata = new ServiceMetadata();
        serviceMetadata.setAppName(appName);
        serviceMetadata.setServiceName(serviceName);
        String selector = ResourceSelectorUtil.getServiceSelector(appName, serviceName);
        PodParent podParent = HyscaleContextUtil.getSpringBean(PodParentProvider.class).getPodParent(apiClient, appName, serviceName, namespace);
        if (podParent == null) {
            LOGGER.error("Error while fetching pod parent of service {}", serviceName);
            throw new HyscaleException(DeployerErrorCodes.FAILED_TO_RETRIEVE_SERVICE_REPLICAS);
        }

        Integer replicas = null;
        String latestPodSelector = null;

        PodParentHandler podParentHandler = PodParentFactory.getHandler(podParent.getKind());
        latestPodSelector = podParentHandler.getPodSelector(apiClient, podParent.getParent(), selector);
        replicas = podParentHandler.getReplicas(podParent.getParent());

        if (replicas == 0) {
            WorkflowLogger.info(DeployerActivity.SERVICE_WITH_ZERO_REPLICAS);
            return;
        }

        if (latestPodSelector == null) {
            throw new HyscaleException(DeployerErrorCodes.FAILED_TO_RETRIEVE_SERVICE_REPLICAS);
        }
        OkHttpClient previousHttpClient = apiClient.getHttpClient();
        OkHttpClient newHttpClient = getUpdatedHttpClient(previousHttpClient);
        apiClient.setHttpClient(newHttpClient);
        try {
            watchPods(apiClient, serviceMetadata, namespace, latestPodSelector, replicas);
        } finally {
            apiClient.setHttpClient(previousHttpClient);
        }
    }
It will fetch pod parent by using of servicename and namespace, based on pod parent it will get  latestpodselector.
Now it will start watching pod event changes on cluster based on namespace and latestpodselector.
While watching pods it is reading status, here we are mainly reading three status (initialization, creations and readiness),
after completion of each status we are showing status done message, whenever we get any pod has failed status immediately come out from watch
and show deployment fail message.

@param apiClient
@param appName
@param serviceName
@param namespace
deployer/deployer-services/src/main/java/io/hyscale/deployer/services/handler/impl/V1PodHandler.java