blob: bb941c76346ea808abc9a3d19664a620ed882d03 [file] [log] [blame]
/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.hadoop.fs.viewfs;
import java.net.URI;
import org.apache.hadoop.conf.Configuration;
/**
* Utilities for config variables of the viewFs See {@link ViewFs}
*/
public class ConfigUtil {
/**
* Get the config variable prefix for the specified mount table
* @param mountTableName - the name of the mount table
* @return the config variable prefix for the specified mount table
*/
public static String getConfigViewFsPrefix(final String mountTableName) {
return Constants.CONFIG_VIEWFS_PREFIX + "." + mountTableName;
}
/**
* Get the config variable prefix for the default mount table
* @return the config variable prefix for the default mount table
*/
public static String getConfigViewFsPrefix() {
return
getConfigViewFsPrefix(Constants.CONFIG_VIEWFS_PREFIX_DEFAULT_MOUNT_TABLE);
}
/**
* Add a link to the config for the specified mount table
* @param conf - add the link to this conf
* @param mountTableName
* @param src - the src path name
* @param target - the target URI link
*/
public static void addLink(Configuration conf, final String mountTableName,
final String src, final URI target) {
conf.set(getConfigViewFsPrefix(mountTableName) + "." +
Constants.CONFIG_VIEWFS_LINK + "." + src, target.toString());
}
/**
* Add a link to the config for the default mount table
* @param conf - add the link to this conf
* @param src - the src path name
* @param target - the target URI link
*/
public static void addLink(final Configuration conf, final String src,
final URI target) {
addLink( conf, Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE,
src, target);
}
/**
* Add config variable for homedir for default mount table
* @param conf - add to this conf
* @param homedir - the home dir path starting with slash
*/
public static void setHomeDirConf(final Configuration conf,
final String homedir) {
setHomeDirConf( conf,
Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE, homedir);
}
/**
* Add config variable for homedir the specified mount table
* @param conf - add to this conf
* @param homedir - the home dir path starting with slash
*/
public static void setHomeDirConf(final Configuration conf,
final String mountTableName, final String homedir) {
if (!homedir.startsWith("/")) {
throw new IllegalArgumentException("Home dir should start with /:"
+ homedir);
}
conf.set(getConfigViewFsPrefix(mountTableName) + "." +
Constants.CONFIG_VIEWFS_HOMEDIR, homedir);
}
/**
* Get the value of the home dir conf value for default mount table
* @param conf - from this conf
* @return home dir value, null if variable is not in conf
*/
public static String getHomeDirValue(final Configuration conf) {
return getHomeDirValue(conf, Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE);
}
/**
* Get the value of the home dir conf value for specfied mount table
* @param conf - from this conf
* @param mountTableName - the mount table
* @return home dir value, null if variable is not in conf
*/
public static String getHomeDirValue(final Configuration conf,
final String mountTableName) {
return conf.get(getConfigViewFsPrefix(mountTableName) + "." +
Constants.CONFIG_VIEWFS_HOMEDIR);
}
}