/*
* 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 com.aliyun.odps.mapred.cli;
import com.aliyun.odps.OdpsException;
import com.aliyun.odps.account.Account.AccountProvider;
import com.aliyun.odps.conf.Configuration;
/**
* Odps配置类,通常来自ODPS Console的设置.
*
* 使用ODPS Console提交作业时,ODPS Console的project、endpoint等设置会通过 JVM
* 系统属性(-D)的方式传给MapReduce主程序,这些属性包括:
* <UL>
* <LI>{@value #PROJNAME}
* <LI>{@value #ENDPOINT}
* <LI>{@value #ACCESSID}
* <LI>{@value #ACCESSKEY}
* <LI>{@value #PROXYHOST}
* <LI>{@value #PROXYPORT}
* </UL>
*/
public class OdpsConf extends Configuration {
private final static String PROJNAME = "odps.project.name";
private final static String ENDPOINT = "odps.end.point";
private final static String ACCESSID = "odps.access.id";
private final static String ACCESSKEY = "odps.access.key";
private final static String ACCOUNT_PROVIDER = "odps.account.provider";
private final static String PROXYHOST = "odps.proxy.host";
private final static String PROXYPORT = "odps.proxy.port";
private final static String RUNMODE = "odps.runner.mode";
static {
Configuration.addDefaultResource("odps-conf.xml");
}
public OdpsConf() {
}
/**
* 获取当前project.
*
* @return
*/
public String getProjName() {
return get(PROJNAME);
}
/**
* 设置当前project.
*
* @param projName
*/
public void setProjName(String projName) {
set(PROJNAME, projName);
}
/**
* 获取连接ODPS服务的URL地址.
*
* @return
*/
public String getEndpoint() {
return get(ENDPOINT);
}
/**
* 设置连接ODPS服务的URL地址.
*
* @param endpoint
*/
public void setEndpoint(String endpoint) {
set(ENDPOINT, endpoint);
}
/**
* 获取aliyun.com用户访问ID.
*
* @return
*/
public String getAccessId() {
return get(ACCESSID);
}
/**
* 设置aliyun.com用户访问ID.
*
* @param accessId
*/
public void setAccessId(String accessId) {
set(ACCESSID, accessId);
}
/**
* 获取aliyun.com用户访问Key.
*
* @return
*/
public String getAccessKey() {
return get(ACCESSKEY);
}
/**
* 设置aliyun.com用户访问Key.
*
* @param accessKey
*/
public void setAccessKey(String accessKey) {
set(ACCESSKEY, accessKey);
}
/**
* 获取代理主机地址.
*
* @return
*/
public String getProxyHost() {
return get(PROXYHOST);
}
/**
* 设置代理主机地址.
*
* @param proxyHost
*/
public void setProxyHost(String host) {
set(PROXYHOST, host);
}
/**
* 获取运行模式.
*
* @return
*/
public String getRunMode() {
return get(RUNMODE, "remote");
}
/**
* 设置运行模式.
*
* @param mode
*/
public void setRunMode(String mode) {
set(RUNMODE, mode);
}
/**
* 获取代理端口.
*
* @return
*/
public String getProxyPort() {
return get(PROXYPORT);
}
/**
* 设置代理端口.
*
* @param proxyPort
*/
public void setProxyPort(String port) {
set(PROXYPORT, port);
}
/**
* 获取帐号类型<br/>
* 取值范围:{@link com.aliyun.odps.account.Account.AccountProvider#ALIYUN} ,
* {@link com.aliyun.odps.account.Account.AccountProvider#TAOBAO},
* {@link com.aliyun.odps.account.Account.AccountProvider#DOMAIN} <br/>
* 默认值: {@link com.aliyun.odps.account.Account.AccountProvider#ALIYUN}
*
* @return 帐号类型:{@link com.aliyun.odps.account.Account.AccountProvider#ALIYUN}
* |{@link com.aliyun.odps.account.Account.AccountProvider#TAOBAO}|
* {@link com.aliyun.odps.account.Account.AccountProvider#DOMAIN}
* @throws OdpsException
*/
public AccountProvider getAccountProvider() throws OdpsException {
String provider = get(ACCOUNT_PROVIDER);
AccountProvider result = AccountProvider.ALIYUN;
if (provider != null) {
provider = provider.trim().toUpperCase();
try {
result = AccountProvider.valueOf(provider);
} catch (Exception exception) {
throw new OdpsException("Unsupport account provider:" + provider);
}
}
return result;
}
}