private void checkForVolumeEdit(ApiClient apiClient, WorkflowContext context, List<Volume> volumeList) {

	    V1PersistentVolumeClaimHandler pvcHandler = (V1PersistentVolumeClaimHandler) ResourceHandlers
				.getHandlerOf(ResourceKind.PERSISTENT_VOLUME_CLAIM.getKind());
		String appName = context.getAppName();
		String envName = context.getEnvName();
		String serviceName = context.getServiceName();
		String namespace = context.getNamespace();

		String selector = ResourceSelectorUtil.getSelector(appName, envName, serviceName);
		List<V1PersistentVolumeClaim> pvcList = null;
		try {
			pvcList = pvcHandler.getBySelector(apiClient, selector, true, namespace);
		} catch (HyscaleException ex) {
			logger.debug("Error while fetching PVCs with selector: {}, error: {}", selector, ex.getMessage());
		}

		if (pvcList != null && !pvcList.isEmpty()) {

			Map<String, V1PersistentVolumeClaim> volumeVsPVC = pvcList.stream().collect(
					Collectors.toMap(pvc -> KubernetesVolumeUtil.getVolumeName(pvc), pvc -> pvc, (key1, key2) -> {
						return key1;
					}));

			StringBuilder warnMsgBuilder = new StringBuilder();
			volumeList.stream().forEach(volume -> {
				V1PersistentVolumeClaim pvc = volumeVsPVC.get(volume.getName());

				if (pvc == null) {
					// new volume does not exist on cluster
					return;
				}
				String storageClass = pvc.getSpec().getStorageClassName();
				if (StringUtils.isBlank(storageClass)) {
					logger.debug("Storage class not found in spec, getting from annotation");
					storageClass = pvc.getMetadata().getAnnotations().get(AnnotationKey.K8S_STORAGE_CLASS.getAnnotation());
				}
				Quantity existingSize = pvc.getStatus().getCapacity() != null ? pvc.getStatus().getCapacity().get(STORAGE)
						: null;
				if (existingSize == null) {
					logger.debug("Size not found in status, getting from spec");
					V1ResourceRequirements resources = pvc.getSpec().getResources();
					existingSize = resources != null
							? (resources.getRequests() != null ? resources.getRequests().get(STORAGE) : null)
							: null;
				}
				Quantity newSize = Quantity.fromString(StringUtils.isNotBlank(volume.getSize()) ? volume.getSize()
						: K8SRuntimeConstants.DEFAULT_VOLUME_SIZE);
				boolean isStorageClassSame = matchStorageClass(storageClass, volume.getStorageClass());
				boolean isSizeSame = newSize.equals(existingSize);
				if (!isStorageClassSame || !isSizeSame) {
					warnMsgBuilder.append(volume.getName()).append(ToolConstants.COMMA).append(ToolConstants.SPACE);
				}
			});
			String warnMsg = warnMsgBuilder.toString();
			if (StringUtils.isNotBlank(warnMsg)) {
				warnMsg = HyscaleStringUtil.removeSuffixStr(warnMsg, ToolConstants.COMMA + ToolConstants.SPACE);
				logger.debug(DeployerActivity.IGNORING_VOLUME_MODIFICATION.getActivityMessage(), serviceName, warnMsg);
				WorkflowLogger.persist(DeployerActivity.IGNORING_VOLUME_MODIFICATION, serviceName, warnMsg);
			}
		}
	}
Validate volume edit is supported,
<p> print warn message for size and storage class changes
Get all pvc for this service and app
Create map of volume name to pvc
For volumes check existing values through pvcs
@param apiClient
@param context
@param volumeList
workflow-controller/controller-service/src/main/java/io/hyscale/controller/validator/impl/VolumeValidator.java