class ResourceTaggingManager {

    public String getPacmanTagValue(String resourceId, Map<String, Object> clientMap, AWSService serviceType) {
        switch (serviceType) {
        case S3: {
            try {
                AmazonS3 s3Client = (AmazonS3) clientMap.get("client");
                BucketTaggingConfiguration bucketTaggingConfiguration = s3Client
                        .getBucketTaggingConfiguration(resourceId);
                if (null == bucketTaggingConfiguration) {// this is the case
                                                         // when bucket does not
                                                         // exists , this is the
                                                         // case when inventory
                                                         // sync is delayed
                    return null;
                }
                List<TagSet> existingTargets = bucketTaggingConfiguration.getAllTagSets();
                Map<String, String> existingTags = existingTargets.get(0).getAllTags();
                return existingTags.get(CommonUtils.getPropValue(PacmanSdkConstants.PACMAN_AUTO_FIX_TAG_NAME));

            } catch (Exception exception) {
                logger.error("error tagging bucekt - > " + resourceId, exception);
                throw exception;
            }

        }
        case EC2: {

            return getEC2PacManTagValue(resourceId, clientMap);
        }
        case VOLUME: {
            return getEC2PacManTagValue(resourceId, clientMap);
        }
        case SNAPSHOT: {
            return getEC2PacManTagValue(resourceId, clientMap);
        }
        case IAM: {
            return "";
        }
        case ELB_APP: {
            return  getAppElbPacManTagValue(resourceId, clientMap);
        }
        
        case ELB_CLASSIC: {
            return "";
        }
        case REDSHIFT: {
            return "";
        }
        
        case RDS: {
            return "";
        }
        case ELASTICSEARCH: {
            return "";
        }

        default:
            throw new OperationNotPermittedException("this resource tagging is not imlemented yet");
        }

    }

}