001/** 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, software 013 * distributed under the License is distributed on an "AS IS" BASIS, 014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 015 * See the License for the specific language governing permissions and 016 * limitations under the License. 017 */ 018package org.apache.hadoop.fs.viewfs; 019 020import java.net.URI; 021 022import org.apache.hadoop.conf.Configuration; 023 024/** 025 * Utilities for config variables of the viewFs See {@link ViewFs} 026 */ 027public class ConfigUtil { 028 /** 029 * Get the config variable prefix for the specified mount table 030 * @param mountTableName - the name of the mount table 031 * @return the config variable prefix for the specified mount table 032 */ 033 public static String getConfigViewFsPrefix(final String mountTableName) { 034 return Constants.CONFIG_VIEWFS_PREFIX + "." + mountTableName; 035 } 036 037 /** 038 * Get the config variable prefix for the default mount table 039 * @return the config variable prefix for the default mount table 040 */ 041 public static String getConfigViewFsPrefix() { 042 return 043 getConfigViewFsPrefix(Constants.CONFIG_VIEWFS_PREFIX_DEFAULT_MOUNT_TABLE); 044 } 045 046 /** 047 * Add a link to the config for the specified mount table 048 * @param conf - add the link to this conf 049 * @param mountTableName 050 * @param src - the src path name 051 * @param target - the target URI link 052 */ 053 public static void addLink(Configuration conf, final String mountTableName, 054 final String src, final URI target) { 055 conf.set(getConfigViewFsPrefix(mountTableName) + "." + 056 Constants.CONFIG_VIEWFS_LINK + "." + src, target.toString()); 057 } 058 059 /** 060 * Add a link to the config for the default mount table 061 * @param conf - add the link to this conf 062 * @param src - the src path name 063 * @param target - the target URI link 064 */ 065 public static void addLink(final Configuration conf, final String src, 066 final URI target) { 067 addLink( conf, Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE, 068 src, target); 069 } 070 071 /** 072 * Add config variable for homedir for default mount table 073 * @param conf - add to this conf 074 * @param homedir - the home dir path starting with slash 075 */ 076 public static void setHomeDirConf(final Configuration conf, 077 final String homedir) { 078 setHomeDirConf( conf, 079 Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE, homedir); 080 } 081 082 /** 083 * Add config variable for homedir the specified mount table 084 * @param conf - add to this conf 085 * @param homedir - the home dir path starting with slash 086 */ 087 public static void setHomeDirConf(final Configuration conf, 088 final String mountTableName, final String homedir) { 089 if (!homedir.startsWith("/")) { 090 throw new IllegalArgumentException("Home dir should start with /:" 091 + homedir); 092 } 093 conf.set(getConfigViewFsPrefix(mountTableName) + "." + 094 Constants.CONFIG_VIEWFS_HOMEDIR, homedir); 095 } 096 097 /** 098 * Get the value of the home dir conf value for default mount table 099 * @param conf - from this conf 100 * @return home dir value, null if variable is not in conf 101 */ 102 public static String getHomeDirValue(final Configuration conf) { 103 return getHomeDirValue(conf, Constants.CONFIG_VIEWFS_DEFAULT_MOUNT_TABLE); 104 } 105 106 /** 107 * Get the value of the home dir conf value for specfied mount table 108 * @param conf - from this conf 109 * @param mountTableName - the mount table 110 * @return home dir value, null if variable is not in conf 111 */ 112 public static String getHomeDirValue(final Configuration conf, 113 final String mountTableName) { 114 return conf.get(getConfigViewFsPrefix(mountTableName) + "." + 115 Constants.CONFIG_VIEWFS_HOMEDIR); 116 } 117}