/* * Copyright (c) 2014 EMC Corporation * All Rights Reserved */ package com.emc.storageos.datadomain.restapi; import com.emc.storageos.datadomain.restapi.errorhandling.DataDomainApiException; /** * Created by zeldib on 2/4/14. * * Utility to parse export options for the DataDomain NFS system: * * <options> ::= <option> ' ' <options> ; * * <option> ::= ro | rw | * root_squash | no_root_squash | * all_squash | no_all_squash | * secure | insecure | * anonuid=<N> | anongid=<N> * ; * Using the space to separate the option. * For example * <options> * rw no_root_squash no_all_squash secure * <option * */ public class DDOptionInfo { public String permission; public String security; public String rootMapping; public String userMapping; public String anonUid; public String anonGid; public boolean secureConnection; static public DDOptionInfo parseOptions(String options) throws DataDomainApiException { DDOptionInfo info = new DDOptionInfo(); String optionArr[] = options.split("[ \b]+"); info.secureConnection = false; info.security = DataDomainApiConstants.DEFAULT_SECURITY; for (String option : optionArr) { switch (option) { case DataDomainApiConstants.PERMISSION_RO: { info.permission = DataDomainApiConstants.PERMISSION_RO; break; } case DataDomainApiConstants.PERMISSION_RW: { info.permission = DataDomainApiConstants.PERMISSION_RW; break; } case DataDomainApiConstants.ROOT_SQUASH: { info.rootMapping = DataDomainApiConstants.ROOT_SQUASH; break; } case DataDomainApiConstants.NO_ROOT_SQUASH: { info.rootMapping = DataDomainApiConstants.NO_ROOT_SQUASH; break; } case DataDomainApiConstants.ALL_SQUASH: { info.userMapping = DataDomainApiConstants.ALL_SQUASH; break; } case DataDomainApiConstants.NO_ALL_SQUASH: { info.userMapping = DataDomainApiConstants.NO_ALL_SQUASH; break; } case DataDomainApiConstants.SECURE: { info.secureConnection = true; break; } default: { if (option.startsWith(DataDomainApiConstants.ANONYMOUS_UID)) { String[] tokens = option.split("="); if (tokens.length == 3) { info.anonUid = tokens[2]; } else { throw DataDomainApiException.exceptions.failedProcessExportOption(option); } } else if (option.startsWith(DataDomainApiConstants.ANONYMOUS_GID)) { String[] tokens = option.split("="); if (tokens.length == 3) { info.anonGid = tokens[2]; } else { throw DataDomainApiException.exceptions.failedProcessExportOption(option); } } else if (option.startsWith(DataDomainApiConstants.SECURITY_TYPE_OPTION)) { info.security = option.substring(DataDomainApiConstants.SECURITY_TYPE_OPTION.length()); } else { throw DataDomainApiException.exceptions.failedProcessExportOption(option); } } } } return info; } }