You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by dm...@apache.org on 2015/03/10 22:33:08 UTC
[2/2] ambari git commit: AMBARI-10017. Rolling Upgrade: Expose
FinalizeUpgradeAction to API or force transition from UPGRADED to CURRENT for
cluster_version via API request. Additional fixes (dlysnichenko)
AMBARI-10017. Rolling Upgrade: Expose FinalizeUpgradeAction to API or force transition from UPGRADED to CURRENT for cluster_version via API request. Additional fixes (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/86f309f4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/86f309f4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/86f309f4
Branch: refs/heads/branch-2.0.0
Commit: 86f309f4bffd430f1aadab59c2f44efd27378d47
Parents: 73a80ef
Author: Lisnichenko Dmitro <dl...@hortonworks.com>
Authored: Tue Mar 10 23:32:04 2015 +0200
Committer: Lisnichenko Dmitro <dl...@hortonworks.com>
Committed: Tue Mar 10 23:32:47 2015 +0200
----------------------------------------------------------------------
ambari-server/sbin/ambari-server | 6 +-
.../ClusterStackVersionResourceProvider.java | 7 +-
ambari-server/src/main/python/ambari-server.py | 7 +-
.../main/python/ambari_server/serverUpgrade.py | 87 +++++++++++++++++++-
.../main/python/ambari_server/serverUtils.py | 32 ++++++-
.../main/python/ambari_server/setupActions.py | 1 +
.../main/python/ambari_server/setupSecurity.py | 35 ++------
ambari-server/src/main/python/upgradeHelper.py | 47 ++---------
.../src/test/python/TestUpgradeHelper.py | 53 ------------
9 files changed, 149 insertions(+), 126 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/sbin/ambari-server
----------------------------------------------------------------------
diff --git a/ambari-server/sbin/ambari-server b/ambari-server/sbin/ambari-server
index 168790b..24c327a 100755
--- a/ambari-server/sbin/ambari-server
+++ b/ambari-server/sbin/ambari-server
@@ -123,6 +123,10 @@ case "$1" in
echo -e "Syncing with LDAP..."
$PYTHON /usr/sbin/ambari-server.py $@
;;
+ set-current)
+ echo -e "Setting current version..."
+ $PYTHON /usr/sbin/ambari-server.py $@
+ ;;
setup-security)
echo -e "Security setup options..."
$PYTHON /usr/sbin/ambari-server.py $@
@@ -141,7 +145,7 @@ case "$1" in
;;
*)
echo "Usage: /usr/sbin/ambari-server
- {start|stop|restart|setup|setup-jce|upgrade|status|upgradestack|setup-ldap|sync-ldap|setup-security|refresh-stack-hash|backup|restore} [options]
+ {start|stop|restart|setup|setup-jce|upgrade|status|upgradestack|setup-ldap|sync-ldap|set-current|setup-security|refresh-stack-hash|backup|restore} [options]
Use usr/sbin/ambari-server <action> --help to get details on options available.
Or, simply invoke ambari-server.py --help to print the options."
exit 1
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
index e93e653..e872fe9 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ClusterStackVersionResourceProvider.java
@@ -499,13 +499,16 @@ public class ClusterStackVersionResourceProvider extends AbstractControllerResou
CommandReport report = finalizeUpgradeAction.execute(null);
LOG.info("Finalize output:");
- LOG.info("STDERR: {}", report.getStdErr());
LOG.info("STDOUT: {}", report.getStdOut());
+ LOG.info("STDERR: {}", report.getStdErr());
if (report.getStatus().equals(HostRoleStatus.COMPLETED.toString())) {
return getRequestStatus(null);
} else {
- throw new SystemException("Finalization failed");
+ String detailedOutput = "Finalization failed. More details: \n" +
+ "STDOUT: " + report.getStdOut() + "\n" +
+ "STDERR: " + report.getStdErr();
+ throw new SystemException(detailedOutput);
}
} catch (AmbariException e) {
throw new SystemException("Can not perform request", e);
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/ambari-server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari-server.py b/ambari-server/src/main/python/ambari-server.py
index 4adac67..22ab70f 100755
--- a/ambari-server/src/main/python/ambari-server.py
+++ b/ambari-server/src/main/python/ambari-server.py
@@ -34,12 +34,12 @@ from ambari_server.dbConfiguration import DATABASE_NAMES
from ambari_server.serverConfiguration import configDefaults, get_ambari_properties, PID_NAME
from ambari_server.serverUtils import is_server_runing, refresh_stack_hash
from ambari_server.serverSetup import reset, setup, setup_jce_policy
-from ambari_server.serverUpgrade import upgrade, upgrade_stack
+from ambari_server.serverUpgrade import upgrade, upgrade_stack, set_current
from ambari_server.setupHttps import setup_https
from ambari_server.setupActions import BACKUP_ACTION, LDAP_SETUP_ACTION, LDAP_SYNC_ACTION, PSTART_ACTION, \
REFRESH_STACK_HASH_ACTION, RESET_ACTION, RESTORE_ACTION, SETUP_ACTION, SETUP_SECURITY_ACTION, START_ACTION, \
- STATUS_ACTION, STOP_ACTION, UPGRADE_ACTION, UPGRADE_STACK_ACTION, SETUP_JCE_ACTION
+ STATUS_ACTION, STOP_ACTION, UPGRADE_ACTION, UPGRADE_STACK_ACTION, SETUP_JCE_ACTION, SET_CURRENT
from ambari_server.setupSecurity import setup_ldap, sync_ldap, setup_master_key, setup_ambari_krb5_jaas
from ambari_server.userInput import get_validated_string_input
@@ -360,6 +360,8 @@ def init_parser_options(parser):
parser.add_option('--jdbc-db', default=None, help="Specifies the database type [postgres|mysql|oracle] for the " \
"JDBC driver specified with the --jdbc-driver option. Used only with --jdbc-driver option.",
dest="jdbc_db")
+ parser.add_option('--cluster-name', default=None, help="Cluster name", dest="cluster_name")
+ parser.add_option('--version-display-name', default=None, help="Display name of desired repo version", dest="desired_repo_version")
@OsFamilyFuncImpl(OSConst.WINSRV_FAMILY)
@@ -498,6 +500,7 @@ def create_user_action_map(args, options):
UPGRADE_STACK_ACTION: UserActionPossibleArgs(upgrade_stack, [2, 4], args),
LDAP_SETUP_ACTION: UserAction(setup_ldap),
LDAP_SYNC_ACTION: UserAction(sync_ldap, options),
+ SET_CURRENT: UserAction(set_current, options),
SETUP_SECURITY_ACTION: UserActionRestart(setup_security, options),
REFRESH_STACK_HASH_ACTION: UserAction(refresh_stack_hash_action),
BACKUP_ACTION: UserActionPossibleArgs(backup, [1, 2], args),
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/ambari_server/serverUpgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/serverUpgrade.py b/ambari-server/src/main/python/ambari_server/serverUpgrade.py
index bcb6dca..3cba2ea 100644
--- a/ambari-server/src/main/python/ambari_server/serverUpgrade.py
+++ b/ambari-server/src/main/python/ambari_server/serverUpgrade.py
@@ -20,10 +20,13 @@ limitations under the License.
import json
import os
+import sys
import shutil
+import base64
+import urllib2
from ambari_commons.exceptions import FatalException
-from ambari_commons.logging_utils import print_info_msg, print_warning_msg, print_error_msg
+from ambari_commons.logging_utils import print_info_msg, print_warning_msg, print_error_msg, get_verbose
from ambari_commons.os_utils import is_root, run_os_command
from ambari_server.dbConfiguration import DBMSConfigFactory, check_jdbc_drivers
from ambari_server.properties import Properties
@@ -35,6 +38,8 @@ from ambari_server.serverConfiguration import configDefaults, \
SETUP_OR_UPGRADE_MSG
from ambari_server.setupSecurity import adjust_directory_permissions
from ambari_server.utils import compare_versions
+from ambari_server.serverUtils import is_server_runing, get_ambari_server_api_base
+from ambari_server.userInput import get_validated_string_input, get_prompt_default, read_password, get_YN_input
# constants
STACK_NAME_VER_SEP = "-"
@@ -323,3 +328,83 @@ def upgrade(args):
# check if ambari has obsolete LDAP configuration
if properties.get_property(LDAP_PRIMARY_URL_PROPERTY) and not properties.get_property(IS_LDAP_CONFIGURED):
args.warnings.append("Existing LDAP configuration is detected. You must run the \"ambari-server setup-ldap\" command to adjust existing LDAP configuration.")
+
+
+#
+# Set current cluster version (run Finalize during manual RU)
+#
+def set_current(options):
+ server_status, pid = is_server_runing()
+ if not server_status:
+ err = 'Ambari Server is not running.'
+ raise FatalException(1, err)
+
+ finalize_options = SetCurrentVersionOptions(options)
+
+ if finalize_options.no_finalize_options_set():
+ err = 'Must specify --cluster-name and --version-display-name. Please invoke ambari-server.py --help to print the options.'
+ raise FatalException(1, err)
+
+ admin_login = get_validated_string_input(prompt="Enter Ambari Admin login: ", default=None,
+ pattern=None, description=None,
+ is_pass=False, allowEmpty=False)
+ admin_password = get_validated_string_input(prompt="Enter Ambari Admin password: ", default=None,
+ pattern=None, description=None,
+ is_pass=True, allowEmpty=False)
+
+ properties = get_ambari_properties()
+ if properties == -1:
+ raise FatalException(1, "Failed to read properties file.")
+
+ base_url = get_ambari_server_api_base(properties)
+ url = base_url + "clusters/{0}/stack_versions".format(finalize_options.cluster_name)
+ admin_auth = base64.encodestring('%s:%s' % (admin_login, admin_password)).replace('\n', '')
+ request = urllib2.Request(url)
+ request.add_header('Authorization', 'Basic %s' % admin_auth)
+ request.add_header('X-Requested-By', 'ambari')
+
+ data = {
+ "ClusterStackVersions": {
+ "repository_version": finalize_options.desired_repo_version,
+ "state": "CURRENT"
+ }
+ }
+
+ if get_verbose():
+ sys.stdout.write('\nCalling API ' + url + ' : ' + str(data) + '\n')
+
+ request.add_data(json.dumps(data))
+ request.get_method = lambda: 'PUT'
+
+ try:
+ response = urllib2.urlopen(request)
+ except urllib2.HTTPError, e:
+ code = e.getcode()
+ content = e.read()
+ err = 'Error during setting current version. Http status code - {0}. \n {1}'.format(
+ code, content)
+ raise FatalException(1, err)
+ except Exception as e:
+ err = 'Setting current version failed. Error details: %s' % e
+ raise FatalException(1, err)
+
+ sys.stdout.write('\nCurrent version successfully updated to ' + finalize_options.desired_repo_version)
+
+ sys.stdout.write('\n')
+ sys.stdout.flush()
+
+
+class SetCurrentVersionOptions:
+ def __init__(self, options):
+ try:
+ self.cluster_name = options.cluster_name
+ except AttributeError:
+ self.cluster_name = None
+
+ try:
+ self.desired_repo_version = options.desired_repo_version
+ except AttributeError:
+ self.desired_repo_version = None
+
+ def no_finalize_options_set(self):
+ return self.cluster_name is None or self.desired_repo_version is None
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/ambari_server/serverUtils.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/serverUtils.py b/ambari-server/src/main/python/ambari_server/serverUtils.py
index 539f8f5..199fada 100644
--- a/ambari-server/src/main/python/ambari_server/serverUtils.py
+++ b/ambari-server/src/main/python/ambari_server/serverUtils.py
@@ -25,9 +25,15 @@ from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
from ambari_commons.os_check import OSConst
from ambari_commons.os_utils import run_os_command
from ambari_server.resourceFilesKeeper import ResourceFilesKeeper, KeeperException
-from ambari_server.serverConfiguration import configDefaults, PID_NAME, get_ambari_properties, get_stack_location
+from ambari_server.serverConfiguration import configDefaults, PID_NAME, get_ambari_properties, get_stack_location, \
+ CLIENT_API_PORT, SSL_API, DEFAULT_SSL_API_PORT, SSL_API_PORT
+# Ambari server API properties
+SERVER_API_HOST = '127.0.0.1'
+SERVER_API_PROTOCOL = 'http'
+SERVER_API_SSL_PROTOCOL = 'https'
+
@OsFamilyFuncImpl(OsFamilyImpl.DEFAULT)
def is_server_runing():
pid_file_path = os.path.join(configDefaults.PID_DIR, PID_NAME)
@@ -90,3 +96,27 @@ def refresh_stack_hash(properties):
msg = "Can not organize resource files at {0}: {1}".format(
resources_location, str(ex))
raise FatalException(-1, msg)
+
+
+#
+# Builds ambari-server API base url
+# Reads server protocol/port from configuration
+# And returns something like
+# http://127.0.0.1:8080:/api/v1/
+#
+def get_ambari_server_api_base(properties):
+ api_protocol = SERVER_API_PROTOCOL
+ api_port = CLIENT_API_PORT
+
+ api_ssl = False
+ api_ssl_prop = properties.get_property(SSL_API)
+ if api_ssl_prop is not None:
+ api_ssl = api_ssl_prop.lower() == "true"
+
+ if api_ssl:
+ api_protocol = SERVER_API_SSL_PROTOCOL
+ api_port = DEFAULT_SSL_API_PORT
+ api_port_prop = properties.get_property(SSL_API_PORT)
+ if api_port_prop is not None:
+ api_port = api_port_prop
+ return '{0}://{1}:{2!s}/api/v1/'.format(api_protocol, SERVER_API_HOST, api_port)
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/ambari_server/setupActions.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/setupActions.py b/ambari-server/src/main/python/ambari_server/setupActions.py
index cd5234b..0cfe1d9 100644
--- a/ambari-server/src/main/python/ambari_server/setupActions.py
+++ b/ambari-server/src/main/python/ambari_server/setupActions.py
@@ -31,6 +31,7 @@ STATUS_ACTION = "status"
SETUP_HTTPS_ACTION = "setup-https"
LDAP_SETUP_ACTION = "setup-ldap"
LDAP_SYNC_ACTION = "sync-ldap"
+SET_CURRENT = "set-current"
SETUP_GANGLIA_HTTPS_ACTION = "setup-ganglia-https"
ENCRYPT_PASSWORDS_ACTION = "encrypt-passwords"
SETUP_SECURITY_ACTION = "setup-security"
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/ambari_server/setupSecurity.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari_server/setupSecurity.py b/ambari-server/src/main/python/ambari_server/setupSecurity.py
index 18e703e..32cd397 100644
--- a/ambari-server/src/main/python/ambari_server/setupSecurity.py
+++ b/ambari-server/src/main/python/ambari_server/setupSecurity.py
@@ -45,7 +45,7 @@ from ambari_server.serverConfiguration import configDefaults, \
SECURITY_PROVIDER_KEY_CMD, SECURITY_MASTER_KEY_FILENAME, SSL_TRUSTSTORE_PASSWORD_ALIAS, \
SSL_TRUSTSTORE_PASSWORD_PROPERTY, SSL_TRUSTSTORE_PATH_PROPERTY, SSL_TRUSTSTORE_TYPE_PROPERTY, \
SSL_API, SSL_API_PORT, DEFAULT_SSL_API_PORT, CLIENT_API_PORT
-from ambari_server.serverUtils import is_server_runing
+from ambari_server.serverUtils import is_server_runing, get_ambari_server_api_base
from ambari_server.setupActions import SETUP_ACTION, LDAP_SETUP_ACTION
from ambari_server.userInput import get_validated_string_input, get_prompt_default, read_password, get_YN_input
@@ -59,11 +59,7 @@ REGEX_ANYTHING = ".*"
CLIENT_SECURITY_KEY = "client.security"
-# Ambari server API properties
-SERVER_API_HOST = '127.0.0.1'
-SERVER_API_PROTOCOL = 'http'
-SERVER_API_SSL_PROTOCOL = 'https'
-SERVER_API_LDAP_URL = '/api/v1/ldap_sync_events'
+SERVER_API_LDAP_URL = 'ldap_sync_events'
def read_master_key(isReset=False):
@@ -225,7 +221,11 @@ def sync_ldap(options):
err = 'Ambari Server is not running.'
raise FatalException(1, err)
- ldap_configured = get_ambari_properties().get_property(IS_LDAP_CONFIGURED)
+ properties = get_ambari_properties()
+ if properties == -1:
+ raise FatalException(1, "Failed to read properties file.")
+
+ ldap_configured = properties.get_property(IS_LDAP_CONFIGURED)
if ldap_configured != 'true':
err = "LDAP is not configured. Run 'ambari-server setup-ldap' first."
raise FatalException(1, err)
@@ -244,26 +244,7 @@ def sync_ldap(options):
pattern=None, description=None,
is_pass=True, allowEmpty=False)
- properties = get_ambari_properties()
- if properties == -1:
- raise FatalException(1, "Failed to read properties file.")
-
- api_protocol = SERVER_API_PROTOCOL
- api_port = CLIENT_API_PORT
-
- api_ssl = False
- api_ssl_prop = properties.get_property(SSL_API)
- if api_ssl_prop is not None:
- api_ssl = api_ssl_prop.lower() == "true"
-
- if api_ssl:
- api_protocol = SERVER_API_SSL_PROTOCOL
- api_port = DEFAULT_SSL_API_PORT
- api_port_prop = properties.get_property(SSL_API_PORT)
- if api_port_prop is not None:
- api_port = api_port_prop
-
- url = '{0}://{1}:{2!s}{3}'.format(api_protocol, SERVER_API_HOST, api_port, SERVER_API_LDAP_URL)
+ url = get_ambari_server_api_base(properties) + SERVER_API_LDAP_URL
admin_auth = base64.encodestring('%s:%s' % (admin_login, admin_password)).replace('\n', '')
request = urllib2.Request(url)
request.add_header('Authorization', 'Basic %s' % admin_auth)
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/main/python/upgradeHelper.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/upgradeHelper.py b/ambari-server/src/main/python/upgradeHelper.py
index 2426d69..11292e9 100644
--- a/ambari-server/src/main/python/upgradeHelper.py
+++ b/ambari-server/src/main/python/upgradeHelper.py
@@ -165,7 +165,6 @@ class Options(Const):
MODIFY_CONFIG_ACTION = "update-configs"
BACKUP_CONFIG_ACTION = "backup-configs"
INSTALL_YARN_MR2_ACTION = "install-yarn-mr2"
- FINALIZE_RU_ACTION = "finalize-ru"
MR_MAPPING_FILE = "mr_mapping"
CAPACITY_SCHEDULER_TAG = "capacity-scheduler"
@@ -197,9 +196,6 @@ class Options(Const):
# for verify action
REPORT_FILE = None
- # for finalize action
- REPO_VERSION = None
-
API_TOKENS = {
"user": None,
"pass": None
@@ -901,9 +897,7 @@ def install_services():
"the status of the install requests."
-def validate_response(response, expect_body, http_code):
- if http_code is not None and http_code < 200 or http_code >= 300:
- return 1, "HTTP code {0}\n".format(http_code) + response
+def validate_response(response, expect_body):
if expect_body:
if "\"href\" : \"" not in response:
return 1, response
@@ -916,13 +910,16 @@ def validate_response(response, expect_body, http_code):
def curl(url, tokens=None, headers=None, request_type="GET", data=None, parse=False,
- simulate=None, validate=False, validate_expect_body=False, request_http_code=False):
+ simulate=None, validate=False, validate_expect_body=False):
simulate_only = Options.CURL_PRINT_ONLY is not None or (simulate is not None and simulate is True)
print_url = Options.CURL_PRINT_ONLY is not None and simulate is not None
curl_path = '/usr/bin/curl'
- curl_list = [curl_path, '-X', request_type]
+ curl_list = [curl_path]
+
+ curl_list.append('-X')
+ curl_list.append(request_type)
if tokens is not None:
curl_list.append('-u')
@@ -931,9 +928,6 @@ def curl(url, tokens=None, headers=None, request_type="GET", data=None, parse=Fa
curl_list.append('-u')
curl_list.append("%s:%s" % (Options.API_TOKENS["user"], Options.API_TOKENS["pass"]))
- if request_http_code:
- curl_list += ['-w', '\n%{http_code}']
-
if request_type in Options.POST_REQUESTS:
curl_list.append(url)
@@ -955,17 +949,12 @@ def curl(url, tokens=None, headers=None, request_type="GET", data=None, parse=Fa
if print_url:
Options.logger.info(" ".join(curl_list))
- http_code = None
if not simulate_only:
osStat = subprocess.Popen(
curl_list,
stderr=subprocess.PIPE,
stdout=subprocess.PIPE)
out, err = osStat.communicate()
- if request_http_code:
- out_lines = out.splitlines()
- http_code = int(out_lines[-1])
- out = '\n'.join(out_lines[0:-1])
if 0 != osStat.returncode:
error = "curl call failed. out: " + out + " err: " + err
Options.logger.error(error)
@@ -976,7 +965,7 @@ def curl(url, tokens=None, headers=None, request_type="GET", data=None, parse=Fa
out = "{}"
if validate and not simulate_only:
- retcode, errdata = validate_response(out, validate_expect_body, http_code)
+ retcode, errdata = validate_response(out, validate_expect_body)
if not retcode == 0:
raise FatalException(retcode, errdata)
@@ -1145,18 +1134,6 @@ def verify_configuration():
Options.logger.error("Report file close error: %s" % e.message)
-def finalize_ru():
- TARGET_URL = Options.CLUSTER_URL + '/stack_versions'
- request = {
- "ClusterStackVersions": {
- "repository_version": Options.REPO_VERSION,
- "state": "CURRENT"
- }
- }
- curl(TARGET_URL, request_type="PUT", data=request,
- validate=True, validate_expect_body=False, request_http_code=True)
-
-
def report_formatter(report_file, config_item, analyzed_list_item):
prefix = "Configuration item %s" % config_item
if analyzed_list_item["fail"]["count"] > 0:
@@ -1178,8 +1155,7 @@ def main():
Options.MODIFY_CONFIG_ACTION: modify_configs,
Options.INSTALL_YARN_MR2_ACTION: install_services,
Options.BACKUP_CONFIG_ACTION: backup_configs,
- Options.VERIFY_ACTION: verify_configuration,
- Options.FINALIZE_RU_ACTION: finalize_ru
+ Options.VERIFY_ACTION: verify_configuration
}
parser = optparse.OptionParser(usage="usage: %prog [options] action\n Valid actions: "
@@ -1203,8 +1179,6 @@ def main():
parser.add_option('--password', default=None, help="Ambari admin password", dest="password")
parser.add_option('--clustername', default=None, help="Cluster name", dest="clustername")
- parser.add_option('--repository-version', default=None, help="Repository version", dest="repo_version")
-
(options, args) = parser.parse_args()
Options.initialize_logger(options.logfile)
options.warnings = []
@@ -1237,10 +1211,6 @@ def main():
if options.report is None:
options.warnings.append("Should be provided report option")
- if action == Options.FINALIZE_RU_ACTION:
- if options.repo_version is None:
- options.warnings.append("Should be provided repository-version option")
-
if len(options.warnings) != 0:
print parser.print_help()
for warning in options.warnings:
@@ -1261,7 +1231,6 @@ def main():
"pass": options.password
}
Options.REPORT_FILE = options.report
- Options.REPO_VERSION = options.repo_version
if action in action_list:
Options.initialize()
http://git-wip-us.apache.org/repos/asf/ambari/blob/86f309f4/ambari-server/src/test/python/TestUpgradeHelper.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/TestUpgradeHelper.py b/ambari-server/src/test/python/TestUpgradeHelper.py
index 8e88883..2f47620 100644
--- a/ambari-server/src/test/python/TestUpgradeHelper.py
+++ b/ambari-server/src/test/python/TestUpgradeHelper.py
@@ -78,7 +78,6 @@ class TestUpgradeHelper(TestCase):
report = "report.txt"
warnings = []
printonly = False
- repo_version = None
args = ["update-configs"]
modify_action_mock.return_value = MagicMock()
@@ -94,57 +93,5 @@ class TestUpgradeHelper(TestCase):
self.assertEqual(options.clustername, upgradeHelper.Options.CLUSTER_NAME)
- @patch("optparse.OptionParser")
- @patch("upgradeHelper.finalize_ru")
- @patch("__builtin__.open")
- def test_Finalize_options(self, open_mock, finalize_ru_mock, option_parser_mock):
- class options(object):
- user = "test_user"
- hostname = "127.0.0.1"
- clustername = "test1"
- password = "test_password"
- upgrade_json = None
- from_stack = None
- to_stack = None
- logfile = "test.log"
- report = None
- warnings = []
- printonly = False
- repo_version = None
-
- args = ["finalize-ru"]
- test_mock = MagicMock()
- test_mock.parse_args = lambda: (options, args)
- option_parser_mock.return_value = test_mock
-
- try:
- upgradeHelper.main()
- except upgradeHelper.FatalException:
- # Expected
- pass
-
- class options(object):
- user = "test_user"
- hostname = "127.0.0.1"
- clustername = "test1"
- password = "test_password"
- upgrade_json = None
- from_stack = None
- to_stack = None
- logfile = "test.log"
- report = None
- warnings = []
- printonly = False
- repo_version = 'HDP-2.2.2.0-2561'
-
- args = ["finalize-ru"]
- test_mock = MagicMock()
- test_mock.parse_args = lambda: (options, args)
- option_parser_mock.return_value = test_mock
-
- upgradeHelper.main()
- self.assertTrue(finalize_ru_mock.called)
-
-
if __name__ == "__main__":
unittest.main()