You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2016/03/31 22:57:12 UTC

ambari git commit: AMBARI-15575: Stack Featurize Knox Service (jluniya)

Repository: ambari
Updated Branches:
  refs/heads/trunk 4ecd3c762 -> 1d6ca13ae


AMBARI-15575: Stack Featurize Knox Service (jluniya)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/1d6ca13a
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/1d6ca13a
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/1d6ca13a

Branch: refs/heads/trunk
Commit: 1d6ca13aec42e864235d9b5fa3047cbc1e9c0f7c
Parents: 4ecd3c7
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Thu Mar 31 13:57:06 2016 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Thu Mar 31 13:57:06 2016 -0700

----------------------------------------------------------------------
 .../libraries/functions/constants.py            |  2 +
 .../libraries/functions/stack_features.py       | 15 +++++++-
 .../KNOX/0.5.0.2.2/package/scripts/knox.py      |  6 ++-
 .../0.5.0.2.2/package/scripts/knox_gateway.py   |  9 +++--
 .../0.5.0.2.2/package/scripts/params_linux.py   | 40 ++++++++++----------
 .../0.5.0.2.2/package/scripts/status_params.py  | 11 +++++-
 .../KNOX/0.5.0.2.2/package/scripts/upgrade.py   |  8 ++--
 .../HDP/2.0.6/properties/stack_features.json    | 10 +++++
 8 files changed, 68 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-common/src/main/python/resource_management/libraries/functions/constants.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/constants.py b/ambari-common/src/main/python/resource_management/libraries/functions/constants.py
index f444b65..1bfec09 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/constants.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/constants.py
@@ -61,3 +61,5 @@ class StackFeature:
   PIG_ON_TEZ = "pig_on_tez"
   RANGER_USERSYNC_NON_ROOT = "ranger_usersync_non_root"
   ACCUMULO_KERBEROS_USER_AUTH = "accumulo_kerberos_user_auth"
+  KNOX_VERSIONED_DATA_DIR = "knox_versioned_data_dir"
+  KNOX_SSO_TOPOLOGY = "knox_sso_topology"

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py
index ff3ec45..bfbf250 100644
--- a/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/stack_features.py
@@ -138,6 +138,16 @@ _DEFAULT_STACK_FEATURES = {
       "name": "accumulo_kerberos_user_auth",
       "description": "Accumulo Kerberos User Auth (AMBARI-10163)",
       "min_version": "2.3.0.0"
+    },
+    {
+      "name": "knox_versioned_data_dir",
+      "description": "Use versioned data dir for Knox (AMBARI-13164)",
+      "min_version": "2.3.2.0"
+    },
+    {
+      "name": "knox_sso_topology",
+      "description": "Knox SSO Topology support (AMBARI-13975)",
+      "min_version": "2.3.8.0"
     }
   ]
 }
@@ -151,7 +161,10 @@ def check_stack_feature(stack_feature, stack_version):
   """
   stack_features_config = default("/configurations/cluster-env/stack_features", None)
   data = _DEFAULT_STACK_FEATURES
-  
+
+  if not stack_version:
+    return False
+
   if stack_features_config:
     data = json.loads(stack_features_config)
   

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox.py
index df10136..fbd879f 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox.py
@@ -31,6 +31,8 @@ from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 
 from resource_management.core.logger import Logger
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions import StackFeature
 
 @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
 def knox():
@@ -66,7 +68,7 @@ def knox():
      content=InlineTemplate(params.admin_topology_template)
   )
 
-  if Script.is_stack_greater_or_equal_to(params.version_formatted, "2.3.8.0"):
+  if params.version_formatted and check_stack_feature(StackFeature.KNOX_SSO_TOPOLOGY, params.version_formatted):
       File(os.path.join(params.knox_conf_dir, "topologies", "knoxsso.xml"),
          group=params.knox_group,
          owner=params.knox_user,
@@ -123,7 +125,7 @@ def knox():
          content=InlineTemplate(params.admin_topology_template)
     )
 
-    if Script.is_stack_greater_or_equal_to(params.version_formatted, "2.3.8.0"):
+    if params.version_formatted and check_stack_feature(StackFeature.KNOX_SSO_TOPOLOGY, params.version_formatted):
         File(os.path.join(params.knox_conf_dir, "topologies", "knoxsso.xml"),
             group=params.knox_group,
             owner=params.knox_user,

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
index b72fc6f..aa5ce1f 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
@@ -25,7 +25,6 @@ from resource_management.libraries.functions import conf_select, tar_archive
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions.check_process_status import check_process_status
 from resource_management.libraries.functions import format
-from resource_management.libraries.functions.version import compare_versions, format_stack_version
 from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions import Direction
@@ -47,11 +46,14 @@ import upgrade
 from knox import knox, update_knox_logfolder_permissions
 from knox_ldap import ldap
 from setup_ranger_knox import setup_ranger_knox
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions import StackFeature
 
 
 class KnoxGateway(Script):
   def get_stack_to_component(self):
-    return {"HDP": "knox-server"}
+    import params
+    return {params.stack_name: "knox-server"}
 
   def install(self, env):
     import params
@@ -113,8 +115,7 @@ class KnoxGatewayDefault(KnoxGateway):
   def pre_upgrade_restart(self, env, upgrade_type=None):
     import params
     env.set_params(params)
-    if params.version and compare_versions(format_stack_version(params.version), '2.2.0.0') >= 0:
-
+    if params.version and check_stack_feature(StackFeature.ROLLING_UPGRADE, params.version):
       absolute_backup_dir = None
       if params.upgrade_direction and params.upgrade_direction == Direction.UPGRADE:
         Logger.info("Backing up directories. Initial conf folder: %s" % os.path.realpath(params.knox_conf_dir))

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py
index e3efe7c..79bdb3e 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_linux.py
@@ -33,9 +33,12 @@ from resource_management.libraries.resources.hdfs_resource import HdfsResource
 from resource_management.libraries.functions import stack_select
 from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.get_not_managed_resources import get_not_managed_resources
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions import StackFeature
 
 # server configurations
 config = Script.get_config()
+stack_root = Script.get_stack_root()
 
 tmp_dir = Script.get_tmp_dir()
 stack_name = default("/hostLevelParams/stack_name", None)
@@ -54,18 +57,16 @@ upgrade_from_version = default("/hostLevelParams/current_version", None)
 
 # server configurations
 # Default value used in HDP 2.3.0.0 and earlier.
-
 knox_data_dir = '/var/lib/knox/data'
 
 # Important, it has to be strictly greater than 2.3.0.0!!!
-if stack_name and stack_name.upper() == "HDP":
-  Logger.info(format("HDP version to use is {version_formatted}"))
-  if Script.is_stack_greater(version_formatted, "2.3.0.0"):
-    # This is the current version. In the case of a Rolling Upgrade, it will be the newer version.
-    # In the case of a Downgrade, it will be the version downgrading to.
-    # This is always going to be a symlink to /var/lib/knox/data_${version}
-    knox_data_dir = format('/usr/hdp/{version}/knox/data')
-    Logger.info(format("Detected HDP with stack version {version}, will use knox_data_dir = {knox_data_dir}"))
+Logger.info(format("Stack version to use is {version_formatted}"))
+if version_formatted and check_stack_feature(StackFeature.KNOX_VERSIONED_DATA_DIR, version_formatted):
+  # This is the current version. In the case of a Rolling Upgrade, it will be the newer version.
+  # In the case of a Downgrade, it will be the version downgrading to.
+  # This is always going to be a symlink to /var/lib/knox/data_${version}
+  knox_data_dir = format('{stack_root}/{version}/knox/data')
+  Logger.info(format("Detected stack with version {version}, will use knox_data_dir = {knox_data_dir}"))
 
 
 knox_master_secret_path = format('{knox_data_dir}/security/master')
@@ -83,15 +84,14 @@ ldap_bin = '/usr/lib/knox/bin/ldap.sh'
 knox_client_bin = '/usr/lib/knox/bin/knoxcli.sh'
 
 # HDP 2.2+ parameters
-if Script.is_stack_greater_or_equal("2.2"):
-  knox_bin = '/usr/hdp/current/knox-server/bin/gateway.sh'
-  knox_conf_dir = '/usr/hdp/current/knox-server/conf'
-  ldap_bin = '/usr/hdp/current/knox-server/bin/ldap.sh'
-  knox_client_bin = '/usr/hdp/current/knox-server/bin/knoxcli.sh'
-
-  knox_master_secret_path = '/usr/hdp/current/knox-server/data/security/master'
-  knox_cert_store_path = '/usr/hdp/current/knox-server/data/security/keystores/gateway.jks'
-  knox_data_dir = '/usr/hdp/current/knox-server/data/'
+if stack_version_formatted and check_stack_feature(StackFeature.ROLLING_UPGRADE, stack_version_formatted):
+  knox_bin = format('{stack_root}/current/knox-server/bin/gateway.sh')
+  knox_conf_dir = format('{stack_root}/current/knox-server/conf')
+  ldap_bin = format('{stack_root}/current/knox-server/bin/ldap.sh')
+  knox_client_bin = format('{stack_root}/current/knox-server/bin/knoxcli.sh')
+  knox_master_secret_path = format('{stack_root}/current/knox-server/data/security/master')
+  knox_cert_store_path = format('{stack_root}/current/knox-server/data/security/keystores/gateway.jks')
+  knox_data_dir = format('{stack_root}/current/knox-server/data/')
 
 knox_group = default("/configurations/knox-env/knox_group", "knox")
 mode = 0644
@@ -211,7 +211,7 @@ if has_oozie:
   oozie_server_port = get_port_from_url(config['configurations']['oozie-site']['oozie.base.url'])
 
 # Knox managed properties
-knox_managed_pid_symlink= "/usr/hdp/current/knox-server/pids"
+knox_managed_pid_symlink= format('{stack_root}/current/knox-server/pids')
 
 # server configurations
 knox_master_secret = config['configurations']['knox-env']['knox_master_secret']
@@ -301,7 +301,7 @@ if has_ranger_admin:
   downloaded_custom_connector = format("{tmp_dir}/{jdbc_jar_name}")
 
   driver_curl_source = format("{jdk_location}/{jdbc_symlink_name}")
-  driver_curl_target = format("/usr/hdp/current/knox-server/ext/{jdbc_jar_name}")
+  driver_curl_target = format("{stack_root}/current/knox-server/ext/{jdbc_jar_name}")
 
   knox_ranger_plugin_config = {
     'username': repo_config_username,

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/status_params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/status_params.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/status_params.py
index b1a5ebc..b4e8831 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/status_params.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/status_params.py
@@ -22,16 +22,23 @@ from resource_management.libraries.functions.default import default
 from resource_management.libraries.functions import get_kinit_path
 from resource_management.libraries.script.script import Script
 from ambari_commons import OSCheck
+from resource_management.libraries.functions.version import format_stack_version
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions import StackFeature
+
 
 config = Script.get_config()
+stack_root = Script.get_stack_root()
+stack_version_unformatted = config['hostLevelParams']['stack_version']
+stack_version_formatted = format_stack_version(stack_version_unformatted)
 
 if OSCheck.is_windows_family():
   knox_gateway_win_service_name = "gateway"
   knox_ldap_win_service_name = "ldap"
 else:
   knox_conf_dir = '/etc/knox/conf'
-  if Script.is_stack_greater_or_equal("2.2"):
-    knox_conf_dir = '/usr/hdp/current/knox-server/conf'
+  if stack_version_formatted and check_stack_feature(StackFeature.ROLLING_UPGRADE, stack_version_formatted):
+    knox_conf_dir = format('{stack_root}/current/knox-server/conf')
   knox_pid_dir = config['configurations']['knox-env']['knox_pid_dir']
   knox_pid_file = format("{knox_pid_dir}/gateway.pid")
   ldap_pid_file = format("{knox_pid_dir}/ldap.pid")

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/upgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/upgrade.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/upgrade.py
index 8dd0cb2..63949f8 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/upgrade.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/upgrade.py
@@ -27,7 +27,8 @@ from resource_management.core.exceptions import Fail
 from resource_management.libraries.functions import tar_archive
 from resource_management.libraries.functions import format
 from resource_management.libraries.functions import Direction
-from resource_management.libraries.functions.version import compare_versions,format_stack_version
+from resource_management.libraries.functions.stack_features import check_stack_feature
+from resource_management.libraries.functions import StackFeature
 
 
 BACKUP_TEMP_DIR = "knox-upgrade-backup"
@@ -81,10 +82,9 @@ def _get_directory_mappings_during_upgrade():
   # By default, use this for all stacks.
   knox_data_dir = '/var/lib/knox/data'
 
-  if params.stack_name and params.stack_name.upper() == "HDP" and \
-          compare_versions(format_stack_version(params.upgrade_from_version), "2.3.0.0") > 0:
+  if params.upgrade_from_version and check_stack_feature(StackFeature.KNOX_VERSIONED_DATA_DIR, params.upgrade_from_version):
     # Use the version that is being upgraded from.
-    knox_data_dir = format('/usr/hdp/{upgrade_from_version}/knox/data')
+    knox_data_dir = format('{stack_root}/{upgrade_from_version}/knox/data')
 
 
   directories = {knox_data_dir: BACKUP_DATA_ARCHIVE,

http://git-wip-us.apache.org/repos/asf/ambari/blob/1d6ca13a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json
index 6e4d672..7ac61eb 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json
+++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/properties/stack_features.json
@@ -112,6 +112,16 @@
       "name": "accumulo_kerberos_user_auth",
       "description": "Accumulo Kerberos User Auth (AMBARI-10163)",
       "min_version": "2.3.0.0"
+    },
+    {
+      "name": "knox_versioned_data_dir",
+      "description": "Use versioned data dir for Knox (AMBARI-13164)",
+      "min_version": "2.3.2.0"
+    },
+    {
+      "name": "knox_sso_topology",
+      "description": "Knox SSO Topology support (AMBARI-13975)",
+      "min_version": "2.3.8.0"
     }
   ]
 }