Repository: ambari Updated Branches: refs/heads/trunk 99d96d15c -> 77e4d50c8
AMBARI-10747 [WinTP2] Ambari server: HDPWIN stack - Ensure the specific hadoop users can be domain users Taking corrective action to switch the hadoop user to <domain>\hadoop for each active service after installation. Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/77e4d50c Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/77e4d50c Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/77e4d50c Branch: refs/heads/trunk Commit: 77e4d50c8c4c73ee446f01b05ea1d1d17567197b Parents: 99d96d1 Author: Florian Barca <fba...@hortonworks.com> Authored: Fri May 1 10:37:04 2015 -0700 Committer: Florian Barca <fba...@hortonworks.com> Committed: Fri May 1 10:37:04 2015 -0700 ---------------------------------------------------------------------- .../core/providers/__init__.py | 2 + .../core/providers/service.py | 3 + .../core/providers/windows/service.py | 211 ++++++++++++++++--- .../core/resources/service.py | 15 +- .../libraries/functions/install_hdp_msi.py | 16 +- .../functions/windows_service_utils.py | 38 ++-- .../libraries/script/script.py | 3 +- .../ambari_server/dbConfiguration_windows.py | 3 - .../main/python/ambari_server/serverSetup.py | 4 +- .../Ambari-DDL-SQLServer-CREATELOCAL.sql | 1 + .../AMBARI_METRICS/0.1.0/package/scripts/ams.py | 17 +- .../0.1.0/package/scripts/params_windows.py | 4 + .../FALCON/0.5.0.2.1/package/scripts/falcon.py | 4 + .../0.5.0.2.1/package/scripts/status_params.py | 2 + .../FLUME/1.4.0.2.0/package/scripts/flume.py | 7 + .../1.4.0.2.0/package/scripts/params_windows.py | 6 +- .../HBASE/0.96.0.2.0/package/scripts/hbase.py | 8 + .../package/scripts/params_windows.py | 10 +- .../HDFS/2.1.0.2.0/package/scripts/hdfs.py | 7 + .../2.1.0.2.0/package/scripts/journalnode.py | 2 +- .../HDFS/2.1.0.2.0/package/scripts/namenode.py | 6 +- .../2.1.0.2.0/package/scripts/params_windows.py | 11 +- .../2.1.0.2.0/package/scripts/status_params.py | 1 + .../2.1.0.2.0/package/scripts/zkfc_slave.py | 2 +- .../HIVE/0.12.0.2.0/package/scripts/hive.py | 8 + .../package/scripts/params_windows.py | 15 +- .../HIVE/0.12.0.2.0/package/scripts/webhcat.py | 5 + .../KNOX/0.5.0.2.2/package/scripts/knox.py | 9 +- .../KNOX/0.5.0.2.2/package/scripts/knox_ldap.py | 21 +- .../0.5.0.2.2/package/scripts/params_windows.py | 5 +- .../OOZIE/4.0.0.2.0/package/scripts/oozie.py | 22 +- .../4.0.0.2.0/package/scripts/params_windows.py | 3 +- .../package/scripts/params_windows.py | 5 +- .../package/scripts/params_windows.py | 5 +- .../STORM/0.9.1.2.1/package/scripts/nimbus.py | 3 +- .../0.9.1.2.1/package/scripts/params_windows.py | 9 +- .../STORM/0.9.1.2.1/package/scripts/storm.py | 20 +- .../0.9.1.2.1/package/scripts/supervisor.py | 2 +- .../0.9.1.2.1/package/scripts/ui_server.py | 2 +- .../0.4.0.2.1/package/scripts/params_windows.py | 3 +- .../2.1.0.2.0/package/scripts/params_windows.py | 9 +- .../YARN/2.1.0.2.0/package/scripts/service.py | 3 +- .../2.1.0.2.0/package/scripts/status_params.py | 12 +- .../YARN/2.1.0.2.0/package/scripts/yarn.py | 8 + .../3.4.5.2.0/package/scripts/params_windows.py | 3 +- .../3.4.5.2.0/package/scripts/zookeeper.py | 6 + .../2.1/hooks/after-INSTALL/scripts/params.py | 3 +- .../2.1/hooks/before-START/scripts/params.py | 2 +- .../ambari/server/upgrade/UpgradeTest.java | 12 +- .../hooks/before-START/test_before_start.py | 1 + 50 files changed, 463 insertions(+), 116 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/core/providers/__init__.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/core/providers/__init__.py b/ambari-common/src/main/python/resource_management/core/providers/__init__.py index b7f94e5..0cefd12 100644 --- a/ambari-common/src/main/python/resource_management/core/providers/__init__.py +++ b/ambari-common/src/main/python/resource_management/core/providers/__init__.py @@ -55,6 +55,7 @@ PROVIDERS = dict( ), winsrv=dict( Service="resource_management.core.providers.windows.service.ServiceProvider", + ServiceConfig="resource_management.core.providers.windows.service.ServiceConfigProvider", Execute="resource_management.core.providers.windows.system.ExecuteProvider", File="resource_management.core.providers.windows.system.FileProvider", Directory="resource_management.core.providers.windows.system.DirectoryProvider" @@ -69,6 +70,7 @@ PROVIDERS = dict( User="resource_management.core.providers.accounts.UserProvider", Group="resource_management.core.providers.accounts.GroupProvider", Service="resource_management.core.providers.service.ServiceProvider", + ServiceConfig="resource_management.core.providers.service.ServiceConfigProvider", ), ) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/core/providers/service.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/core/providers/service.py b/ambari-common/src/main/python/resource_management/core/providers/service.py index 23b1b3a..50167f1 100644 --- a/ambari-common/src/main/python/resource_management/core/providers/service.py +++ b/ambari-common/src/main/python/resource_management/core/providers/service.py @@ -94,3 +94,6 @@ class ServiceProvider(Provider): self.__upstart = os.path.exists("/sbin/start") \ and os.path.exists("/etc/init/%s.conf" % self.resource.service_name) return self.__upstart + +class ServiceConfigProvider(Provider): + pass http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/core/providers/windows/service.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/core/providers/windows/service.py b/ambari-common/src/main/python/resource_management/core/providers/windows/service.py index ba08899..174acea 100644 --- a/ambari-common/src/main/python/resource_management/core/providers/windows/service.py +++ b/ambari-common/src/main/python/resource_management/core/providers/windows/service.py @@ -18,34 +18,47 @@ limitations under the License. Ambari Agent """ -from resource_management.core.providers import Provider -from resource_management.core.base import Fail -import win32service import time +import win32api +import win32service +import win32serviceutil +import winerror + +from ambari_commons.os_windows import WinServiceController + +from resource_management.core.base import Fail +from resource_management.core.providers import Provider -_schSCManager = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS) +def safe_open_scmanager(): + try: + _schSCManager = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS) + except win32api.error, details: + raise Fail("Error opening Service Control Manager on the local machine: {0}".format(details.winerror)) + return _schSCManager + +def safe_open_service(hSCM, service_name): + try: + hSvc = win32serviceutil.SmartOpenService(hSCM, service_name, + win32service.SERVICE_ALL_ACCESS) + except win32api.error, details: + if details.winerror == winerror.ERROR_SERVICE_DOES_NOT_EXIST: + err_msg = "Invalid service name: {0}".format(service_name) + else: + err_msg = "Error configuring service {0}: {1}".format(service_name, details.winerror) + raise Fail(err_msg) + + return hSvc class ServiceProvider(Provider): def action_start(self): - self._service_handle = self._service_handle if hasattr(self, "_service_handle") else \ - win32service.OpenService(_schSCManager, self.resource.service_name, win32service.SERVICE_ALL_ACCESS) - if not self.status(): - self.enable() - win32service.StartService(self._service_handle, None) - self.wait_status(win32service.SERVICE_RUNNING) + WinServiceController.Start(self.resource.service_name, 5) def action_stop(self): - self._service_handle = self._service_handle if hasattr(self, "_service_handle") else \ - win32service.OpenService(_schSCManager, self.resource.service_name, win32service.SERVICE_ALL_ACCESS) - if self.status(): - win32service.ControlService(self._service_handle, win32service.SERVICE_CONTROL_STOP) - self.wait_status(win32service.SERVICE_STOPPED) + WinServiceController.Stop(self.resource.service_name, 5) def action_restart(self): - self._service_handle = win32service.OpenService(_schSCManager, self.resource.service_name, - win32service.SERVICE_ALL_ACCESS) self.action_stop() self.action_start() @@ -53,23 +66,34 @@ class ServiceProvider(Provider): raise Fail("Reload for Service resource not supported on windows") def status(self): - if win32service.QueryServiceStatusEx(self._service_handle)["CurrentState"] == win32service.SERVICE_RUNNING: + svcStatus = WinServiceController.QueryStatus(self.resource.service_name) + if svcStatus == win32service.SERVICE_RUNNING: return True return False def enable(self): - if win32service.QueryServiceConfig(self._service_handle)[1] == win32service.SERVICE_DISABLED: - win32service.ChangeServiceConfig(self._service_handle, - win32service.SERVICE_NO_CHANGE, - win32service.SERVICE_DEMAND_START, - win32service.SERVICE_NO_CHANGE, - None, - None, - 0, - None, - None, - None, - None) + hSCM = safe_open_scmanager() + + try: + hSvc = safe_open_service(hSCM, self.resource.service_name) + + if win32service.QueryServiceConfig(hSvc)[1] == win32service.SERVICE_DISABLED: + win32service.ChangeServiceConfig(hSvc, + win32service.SERVICE_NO_CHANGE, + win32service.SERVICE_DEMAND_START, + win32service.SERVICE_NO_CHANGE, + None, + None, + 0, + None, + None, + None, + None) + win32service.CloseServiceHandle(hSvc) + except win32api.error, details: + raise Fail("Error enabling service {0}: {1}".format(self.resource.service_name, details.winerror)) + finally: + win32service.CloseServiceHandle(hSCM) def get_current_status(self): return win32service.QueryServiceStatusEx(self._service_handle)["CurrentState"] @@ -77,4 +101,129 @@ class ServiceProvider(Provider): def wait_status(self, status, timeout=5): begin = time.time() while self.get_current_status() != status and (timeout == 0 or time.time() - begin < timeout): - time.sleep(1) \ No newline at end of file + time.sleep(1) + + +class ServiceConfigProvider(Provider): + def action_install(self): + hSCM = safe_open_scmanager() + + self._fix_system_user_name() + + try: + hSvc = win32service.CreateService(hSCM, + self.resource.service_name, + self.resource.display_name, + win32service.SERVICE_ALL_ACCESS, # desired access + win32service.SERVICE_WIN32_OWN_PROCESS, # service type + self.resource.start_type, + win32service.SERVICE_ERROR_NORMAL, # error control type + self.resource.exe_path, + None, + 0, + None, + self.resource.userName, + self.resource.password) + if self.resource.description: + try: + win32service.ChangeServiceConfig2(hSvc, win32service.SERVICE_CONFIG_DESCRIPTION, self.description) + except NotImplementedError: + pass ## ChangeServiceConfig2 and description do not exist on NT + + win32service.CloseServiceHandle(hSvc) + except win32api.error, details: + raise Fail("Error creating service {0}: {1}".format(self.resource.service_name, details.winerror)) + finally: + win32service.CloseServiceHandle(hSCM) + + def action_configure(self): + hSCM = safe_open_scmanager() + + try: + hSvc = safe_open_service(hSCM, self.resource.service_name) + + self._fix_system_user_name() + + try: + win32service.ChangeServiceConfig(hSvc, + win32service.SERVICE_NO_CHANGE, + self.resource.startType, + win32service.SERVICE_NO_CHANGE, + None, + None, + 0, + None, + self.resource.username, + self.resource.password, + self.resource.displayName) + if self.resource.description: + try: + win32service.ChangeServiceConfig2(hSvc, win32service.SERVICE_CONFIG_DESCRIPTION, self.resource.description) + except NotImplementedError: + pass ## ChangeServiceConfig2 and description do not exist on NT + except win32api.error, details: + raise Fail("Error configuring service {0}: {1}".format(self.resource.service_name, details.winerror)) + finally: + win32service.CloseServiceHandle(hSvc) + finally: + win32service.CloseServiceHandle(hSCM) + + def action_change_user(self): + hSCM = safe_open_scmanager() + + try: + hSvc = safe_open_service(hSCM, self.resource.service_name) + + self._fix_system_user_name() + + try: + win32service.ChangeServiceConfig(hSvc, + win32service.SERVICE_NO_CHANGE, + win32service.SERVICE_NO_CHANGE, + win32service.SERVICE_NO_CHANGE, + None, + None, + 0, + None, + self.resource.username, + self.resource.password, + None) + except win32api.error, details: + raise Fail("Error changing user for service {0}: {1}".format(self.resource.service_name, details.winerror)) + finally: + win32service.CloseServiceHandle(hSvc) + finally: + win32service.CloseServiceHandle(hSCM) + + def action_uninstall(self): + hSCM = safe_open_scmanager() + + try: + try: + hSvc = win32serviceutil.SmartOpenService(hSCM, self.resource.service_name, + win32service.SERVICE_ALL_ACCESS) + except win32api.error, details: + if details.winerror == winerror.ERROR_SERVICE_DOES_NOT_EXIST: + # Nothing to do + return + else: + raise Fail("Error removing service {0}: {1}".format(self.resource.service_name, details.winerror)) + + try: + win32service.DeleteService(hSvc) + except win32api.error: + # Error mostly means the service is running and its removal is delayed until the next opportunity + pass + finally: + win32service.CloseServiceHandle(hSvc) + finally: + win32service.CloseServiceHandle(hSCM) + + def _fix_system_user_name(self): + if self.resource.username.upper() == "NT AUTHORITY\\SYSTEM": + self.resource.username = None + + def _is_system_user(self): + if self.resource.username in ["NT AUTHORITY\\SYSTEM", "NT AUTHORITY\\NetworkService", "NT AUTHORITY\\LocalService"]: + return True + return False \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/core/resources/service.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/core/resources/service.py b/ambari-common/src/main/python/resource_management/core/resources/service.py index 20d5c1b..cb202cf 100644 --- a/ambari-common/src/main/python/resource_management/core/resources/service.py +++ b/ambari-common/src/main/python/resource_management/core/resources/service.py @@ -20,7 +20,7 @@ Ambari Agent """ -__all__ = ["Service"] +__all__ = ["Service", "ServiceConfig"] from resource_management.core.base import Resource, ResourceArgument, ForcedListArgument @@ -36,3 +36,16 @@ class Service(Resource): status_command = ResourceArgument() actions = ["nothing", "start", "stop", "restart", "reload"] + +class ServiceConfig(Resource): + action = ForcedListArgument(default="install") + service_name = ResourceArgument(default=lambda obj: obj.name) + display_name = ResourceArgument() + description = ResourceArgument() + start_type = ResourceArgument() + #exe_path = ResourceArgument() + #arguments = ResourceArgument() + username = ResourceArgument() + password = ResourceArgument() + + actions = ["nothing", "install", "configure", "change_user", "uninstall"] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/libraries/functions/install_hdp_msi.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/install_hdp_msi.py b/ambari-common/src/main/python/resource_management/libraries/functions/install_hdp_msi.py index ddb99e1..12ccc51 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/install_hdp_msi.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/install_hdp_msi.py @@ -93,24 +93,24 @@ OOZIE_DB_PASSWORD=oozie """ INSTALL_MSI_CMD = 'cmd /C start /wait msiexec /qn /i {hdp_msi_path} /lv {hdp_log_path} MSIUSEREALADMINDETECTION=1 ' \ - 'HDP_LAYOUT={hdp_layout_path} DESTROY_DATA=yes HDP_USER_PASSWORD={hadoop_password_arg} HDP=yes ' \ + 'HDP_LAYOUT={hdp_layout_path} DESTROY_DATA=yes HDP_USER={hadoop_user} HDP_USER_PASSWORD={hadoop_password_arg} HDP=yes ' \ 'KNOX=yes KNOX_MASTER_SECRET="AmbariHDP2Windows" FALCON=yes STORM=yes HBase=yes STORM=yes FLUME=yes SLIDER=yes PHOENIX=yes RANGER=no' CREATE_SERVICE_SCRIPT = os.path.abspath("sbin\createservice.ps1") -CREATE_SERVICE_CMD = 'cmd /C powershell -File "{script}" -username hadoop -password "{password}" -servicename ' \ +CREATE_SERVICE_CMD = 'cmd /C powershell -File "{script}" -username {username} -password "{password}" -servicename ' \ '{servicename} -hdpresourcesdir "{resourcedir}" -servicecmdpath "{servicecmd}"' INSTALL_MARKER_OK = "msi.installed" INSTALL_MARKER_FAILED = "msi.failed" _working_dir = None -def _ensure_services_created(hadoop_password): +def _ensure_services_created(hadoop_user, hadoop_password): resource_dir_hdfs = os.path.join(os.environ["HADOOP_HDFS_HOME"], "bin") service_cmd_hdfs = os.path.join(os.environ["HADOOP_HDFS_HOME"], "bin", "hdfs.cmd") if not check_windows_service_exists("journalnode"): - Execute(CREATE_SERVICE_CMD.format(script=CREATE_SERVICE_SCRIPT, password=hadoop_password, servicename="journalnode", + Execute(CREATE_SERVICE_CMD.format(script=CREATE_SERVICE_SCRIPT, username=hadoop_user, password=hadoop_password, servicename="journalnode", resourcedir=resource_dir_hdfs, servicecmd=service_cmd_hdfs), logoutput=True) if not check_windows_service_exists("zkfc"): - Execute(CREATE_SERVICE_CMD.format(script=CREATE_SERVICE_SCRIPT, password=hadoop_password, servicename="zkfc", + Execute(CREATE_SERVICE_CMD.format(script=CREATE_SERVICE_SCRIPT, username=hadoop_user, password=hadoop_password, servicename="zkfc", resourcedir=resource_dir_hdfs, servicecmd=service_cmd_hdfs), logoutput=True) @@ -155,7 +155,7 @@ def _write_marker(): open(os.path.join(_working_dir, INSTALL_MARKER_FAILED), "w").close() -def install_windows_msi(msi_url, save_dir, save_file, hadoop_password, stack_version): +def install_windows_msi(msi_url, save_dir, save_file, hadoop_user, hadoop_password, stack_version): global _working_dir _working_dir = save_dir save_dir = os.path.abspath(save_dir) @@ -194,10 +194,10 @@ def install_windows_msi(msi_url, save_dir, save_file, hadoop_password, stack_ver Execute( INSTALL_MSI_CMD.format(hdp_msi_path=hdp_msi_path, hdp_log_path=hdp_log_path, hdp_layout_path=hdp_layout_path, - hadoop_password_arg=hadoop_password_arg)) + hadoop_user=hadoop_user, hadoop_password_arg=hadoop_password_arg)) reload_windows_env() # create additional services manually due to hdp.msi limitaitons - _ensure_services_created(hadoop_password) + _ensure_services_created(hadoop_user, hadoop_password) _create_symlinks(stack_version) # finalizing install _write_marker() http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/libraries/functions/windows_service_utils.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/windows_service_utils.py b/ambari-common/src/main/python/resource_management/libraries/functions/windows_service_utils.py index 7d994b7..019a326 100644 --- a/ambari-common/src/main/python/resource_management/libraries/functions/windows_service_utils.py +++ b/ambari-common/src/main/python/resource_management/libraries/functions/windows_service_utils.py @@ -20,23 +20,35 @@ Ambari Agent """ from resource_management.core.exceptions import ComponentIsNotRunning -from resource_management.core.logger import Logger +from resource_management.core.providers.windows.service import safe_open_scmanager, safe_open_service + __all__ = ['check_windows_service_status', 'check_windows_service_exists'] import win32service -_schSCManager = win32service.OpenSCManager(None, None, win32service.SC_MANAGER_ALL_ACCESS) - def check_windows_service_status(service_name): - _service_handle = win32service.OpenService(_schSCManager, service_name, win32service.SERVICE_ALL_ACCESS) - if win32service.QueryServiceStatusEx(_service_handle)["CurrentState"] == win32service.SERVICE_STOPPED: - raise ComponentIsNotRunning() + _schSCManager = safe_open_scmanager() + + try: + _service_handle = safe_open_service(_schSCManager, service_name) + try: + if win32service.QueryServiceStatusEx(_service_handle)["CurrentState"] == win32service.SERVICE_STOPPED: + raise ComponentIsNotRunning() + finally: + win32service.CloseServiceHandle(_service_handle) + finally: + win32service.CloseServiceHandle(_schSCManager) def check_windows_service_exists(service_name): - typeFilter = win32service.SERVICE_WIN32 - stateFilter = win32service.SERVICE_STATE_ALL - statuses = win32service.EnumServicesStatus(_schSCManager, typeFilter, stateFilter) - for (short_name, desc, status) in statuses: - if short_name == service_name: - return True - return False + _schSCManager = safe_open_scmanager() + + try: + typeFilter = win32service.SERVICE_WIN32 + stateFilter = win32service.SERVICE_STATE_ALL + statuses = win32service.EnumServicesStatus(_schSCManager, typeFilter, stateFilter) + for (short_name, desc, status) in statuses: + if short_name == service_name: + return True + return False + finally: + win32service.CloseServiceHandle(_schSCManager) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-common/src/main/python/resource_management/libraries/script/script.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index 6ef4bb5..a4ddc7c 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -298,8 +298,9 @@ class Script(object): if OSCheck.is_windows_family(): #TODO hacky install of windows msi, remove it or move to old(2.1) stack definition when component based install will be implemented + hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] install_windows_msi(os.path.join(config['hostLevelParams']['jdk_location'], "hdp.msi"), - config["hostLevelParams"]["agentCacheDir"], "hdp.msi", self.get_password("hadoop"), + config["hostLevelParams"]["agentCacheDir"], "hdp.msi", hadoop_user, self.get_password(hadoop_user), str(config['hostLevelParams']['stack_version'])) reload_windows_env() pass http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/python/ambari_server/dbConfiguration_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/ambari_server/dbConfiguration_windows.py b/ambari-server/src/main/python/ambari_server/dbConfiguration_windows.py index 04db2af..96cd823 100644 --- a/ambari-server/src/main/python/ambari_server/dbConfiguration_windows.py +++ b/ambari-server/src/main/python/ambari_server/dbConfiguration_windows.py @@ -93,7 +93,6 @@ class MSSQLConfig(DBMSConfig): self.env_var_db_name = "" self.env_var_db_log_name = "" - self.env_var_db_owner = "" self.init_script_file = "" self.drop_tables_script_file = "" @@ -284,7 +283,6 @@ class MSSQLConfig(DBMSConfig): # Setup DB os.environ[self.env_var_db_name] = self.database_name os.environ[self.env_var_db_log_name] = self.database_name + '_log' - os.environ[self.env_var_db_owner] = 'hadoop' # Don't create the database, assume it already exists. Just clear out the known tables structure MSSQLConfig._execute_db_script(self.database_host, self.drop_tables_script_file) @@ -333,7 +331,6 @@ class MSSQLAmbariDBConfig(MSSQLConfig): self.env_var_db_name ='AMBARIDBNAME' self.env_var_db_log_name = 'AMBARIDBLOGNAME' - self.env_var_db_owner = 'AMBARIDBOWNER' # The values from options supersede the values from properties self.init_script_file = compress_backslashes(DBMSConfig._init_member_with_default(options, "init_db_script_file", http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/python/ambari_server/serverSetup.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/python/ambari_server/serverSetup.py b/ambari-server/src/main/python/ambari_server/serverSetup.py index 89e3afd..9986422 100644 --- a/ambari-server/src/main/python/ambari_server/serverSetup.py +++ b/ambari-server/src/main/python/ambari_server/serverSetup.py @@ -321,7 +321,9 @@ def check_ambari_user(options): def service_setup(register_service, svc_user, svc_password): from ambari_windows_service import svcsetup - result = svcsetup(register_service, svc_user, svc_password) + svc_user_setup = svc_user if svc_user.upper() != "NT AUTHORITY\\SYSTEM" else None + + result = svcsetup(register_service, svc_user_setup, svc_password) if result == 0: write_property(NR_USER_PROPERTY, svc_user) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATELOCAL.sql ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATELOCAL.sql b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATELOCAL.sql index 87e7a40..380b0a0 100644 --- a/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATELOCAL.sql +++ b/ambari-server/src/main/resources/Ambari-DDL-SQLServer-CREATELOCAL.sql @@ -118,6 +118,7 @@ GO ALTER authorization on DATABASE::$(AMBARIDBNAME) to [NT AUTHORITY\SYSTEM] GO +--set AMBARIDBOWNER=hadoop if exists (select 1 from master.sys.syslogins where name='$(AMBARIDBOWNER)') BEGIN CREATE USER [$(AMBARIDBOWNER)] FOR LOGIN [$(AMBARIDBOWNER)] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py index 8cbbed2..c7de4f3 100644 --- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py +++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/ams.py @@ -72,7 +72,11 @@ def ams(name=None): owner=params.ams_user, content=InlineTemplate(params.ams_env_sh_template) ) - pass + + ServiceConfig(params.ams_collector_win_service_name, + action="change_user", + username = params.ams_user, + password = Script.get_password(params.ams_user)) if params.is_hbase_distributed: # Configuration needed to support NN HA @@ -93,6 +97,11 @@ def ams(name=None): group=params.user_group, mode=0644 ) + else: + ServiceConfig(params.ams_embedded_hbase_win_service_name, + action="change_user", + username = params.ams_user, + password = Script.get_password(params.ams_user)) pass elif name == 'monitor': @@ -131,6 +140,12 @@ def ams(name=None): template_tag=None ) + ServiceConfig(params.ams_monitor_win_service_name, + action="change_user", + username = params.ams_user, + password = Script.get_password(params.ams_user)) + + @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) def ams(name=None): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_windows.py index 1b3509e..85a65e6 100644 --- a/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/AMBARI_METRICS/0.1.0/package/scripts/params_windows.py @@ -33,3 +33,7 @@ hadoop_bin_dir = os.path.join(os.environ["HADOOP_HOME"], "bin") hbase_cmd = os.path.join(os.environ["COLLECTOR_HOME"], "hbase", "bin", "hbase.cmd") hadoop_conf_dir = os.path.join(os.environ["HADOOP_HOME"], "conf") hbase_conf_dir = os.path.join(os.environ["COLLECTOR_HOME"], "hbase", "conf") + +ams_collector_win_service_name = "AmbariMetricsCollector" +ams_monitor_win_service_name = "AmbariMetricsCollector" +ams_embedded_hbase_win_service_name = "ams_hbase_master" http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py index 05bae60..62fb1dd 100644 --- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py +++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon.py @@ -169,6 +169,10 @@ def falcon(type, action = None): ) if type == 'server': + ServiceConfig(params.falcon_win_service_name, + action="change_user", + username=params.falcon_user, + password = Script.get_password(params.falcon_user)) if action == 'start': Service(params.falcon_win_service_name, action="start") if action == 'stop': http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/status_params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/status_params.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/status_params.py index 0556ec1..c5478e5 100644 --- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/status_params.py +++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/status_params.py @@ -24,6 +24,8 @@ config = Script.get_config() if OSCheck.is_windows_family(): falcon_win_service_name = "falcon" + hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] + falcon_user = hadoop_user else: falcon_pid_dir = config['configurations']['falcon-env']['falcon_pid_dir'] server_pid_file = format('{falcon_pid_dir}/falcon.pid') http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py index 11cae75..18055d5 100644 --- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py +++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume.py @@ -31,7 +31,14 @@ from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl def flume(action = None): import params + from service_mapping import flume_win_service_name + if action == 'config': + ServiceConfig(flume_win_service_name, + action="change_user", + username=params.flume_user, + password = Script.get_password(params.flume_user)) + # remove previously defined meta's for n in find_expected_agent_names(params.flume_conf_dir): os.unlink(os.path.join(params.flume_conf_dir, n, 'ambari-meta.json')) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params_windows.py index 87b9640..17177ec 100644 --- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params_windows.py @@ -24,8 +24,10 @@ import os # server configurations config = Script.get_config() +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] + hdp_root = os.path.abspath(os.path.join(os.environ["HADOOP_HOME"],"..")) flume_home = os.environ['FLUME_HOME'] flume_conf_dir = os.path.join(flume_home, 'conf') -flume_user = 'hadoop' -hdfs_user = "hadoop" +flume_user = hadoop_user +hdfs_user = hadoop_user http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py index 2ddd137..8ce244a 100644 --- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py +++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase.py @@ -33,6 +33,14 @@ def hbase(name=None): configuration_attributes=params.config['configuration_attributes']['hbase-site'] ) + if params.service_map.has_key(name): + # Manually overriding service logon user & password set by the installation package + service_name = params.service_map[name] + ServiceConfig(service_name, + action="change_user", + username = params.hbase_user, + password = Script.get_password(params.hbase_user)) + # name is 'master' or 'regionserver' or 'queryserver' or 'client' @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) def hbase(name=None): http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_windows.py index 571b93c..c132503 100644 --- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params_windows.py @@ -28,10 +28,16 @@ hbase_conf_dir = os.environ["HBASE_CONF_DIR"] hbase_bin_dir = os.path.join(os.environ["HBASE_HOME"],'bin') hbase_executable = os.path.join(hbase_bin_dir,"hbase.cmd") hdp_root = os.path.abspath(os.path.join(os.environ["HADOOP_HOME"],"..")) -hbase_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +hbase_user = hadoop_user #decomm params region_drainer = os.path.join(hbase_bin_dir,"draining_servers.rb") region_mover = os.path.join(hbase_bin_dir,"region_mover.rb") hbase_excluded_hosts = config['commandParams']['excluded_hosts'] -hbase_drain_only = config['commandParams']['mark_draining_only'] \ No newline at end of file +hbase_drain_only = config['commandParams']['mark_draining_only'] + +service_map = { + 'master' : status_params.hbase_master_win_service_name, + 'regionserver' : status_params.hbase_regionserver_win_service_name +} http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs.py index a15a486..a615c27 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs.py @@ -117,6 +117,13 @@ def hdfs(component=None): owner=params.hdfs_user, mode="f", ) + if params.service_map.has_key(component): + service_name = params.service_map[component] + ServiceConfig(service_name, + action="change_user", + username=params.hdfs_user, + password=Script.get_password(params.hdfs_user)) + if "hadoop-policy" in params.config['configurations']: XmlConfig("hadoop-policy.xml", conf_dir=params.hadoop_conf_dir, http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py index e8cc06c..8ec1fe9 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py @@ -174,7 +174,7 @@ class JournalNodeWindows(JournalNode): def configure(self, env): import params env.set_params(params) - hdfs() + hdfs("journalnode") pass def status(self, env): http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py index 2b6e6f8..dd439d7 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py @@ -249,11 +249,11 @@ class NameNodeDefault(NameNode): class NameNodeWindows(NameNode): def rebalancehdfs(self, env): - from ambari_commons.os_windows import run_os_command_impersonated + from ambari_commons.os_windows import UserHelper, run_os_command_impersonated import params env.set_params(params) - hdfs_user = params.hdfs_user + hdfs_username, hdfs_domain = UserHelper.parse_user_name(params.hdfs_user, ".") name_node_parameters = json.loads( params.name_node_params ) threshold = name_node_parameters['threshold'] @@ -272,7 +272,7 @@ class NameNodeWindows(NameNode): _print("Executing command %s\n" % command) parser = hdfs_rebalance.HdfsParser() - returncode, stdout, err = run_os_command_impersonated(' '.join(command), hdfs_user, Script.get_password(hdfs_user)) + returncode, stdout, err = run_os_command_impersonated(' '.join(command), hdfs_username, Script.get_password(params.hdfs_user), hdfs_domain) for line in stdout.split('\n'): _print('[balancer] %s %s' % (str(datetime.now()), line )) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_windows.py index c14e6ca..c3ee304 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params_windows.py @@ -58,9 +58,18 @@ if dfs_ha_enabled: namenode_id = nn_id namenode_rpc = nn_host -hdfs_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +hdfs_user = hadoop_user grep_exe = "findstr" name_node_params = default("/commandParams/namenode", None) exclude_packages = [] + +service_map = { + "datanode" : datanode_win_service_name, + "journalnode" : journalnode_win_service_name, + "namenode" : namenode_win_service_name, + "secondarynamenode" : snamenode_win_service_name, + "zkfc_slave": zkfc_win_service_name +} http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/status_params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/status_params.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/status_params.py index debb914..3e4cfe4 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/status_params.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/status_params.py @@ -27,6 +27,7 @@ if OSCheck.is_windows_family(): datanode_win_service_name = "datanode" snamenode_win_service_name = "secondarynamenode" journalnode_win_service_name = "journalnode" + zkfc_win_service_name = "zkfc" else: hadoop_pid_dir_prefix = config['configurations']['hadoop-env']['hadoop_pid_dir_prefix'] hdfs_user = config['configurations']['hadoop-env']['hdfs_user'] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/zkfc_slave.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/zkfc_slave.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/zkfc_slave.py index 28cd434..14de094 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/zkfc_slave.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/zkfc_slave.py @@ -36,7 +36,7 @@ class ZkfcSlave(Script): def configure(self, env): import params env.set_params(params) - hdfs() + hdfs("zkfc_slave") pass @OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py index 9de92c6..4df6014 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive.py @@ -29,13 +29,21 @@ from ambari_commons import OSConst @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) def hive(name=None): import params + XmlConfig("hive-site.xml", conf_dir = params.hive_conf_dir, configurations = params.config['configurations']['hive-site'], owner=params.hive_user, configuration_attributes=params.config['configuration_attributes']['hive-site'] ) + if name in ["hiveserver2","metastore"]: + # Manually overriding service logon user & password set by the installation package + service_name = params.service_map[name] + ServiceConfig(service_name, + action="change_user", + username = params.hive_user, + password = Script.get_password(params.hive_user)) Execute(format("cmd /c hadoop fs -mkdir -p {hive_warehouse_dir}"), logoutput=True, user=params.hadoop_user) if name == 'metastore': http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_windows.py index d84b226..329fe0c 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params_windows.py @@ -39,9 +39,9 @@ hcat_config_dir = os.environ["WEBHCAT_CONF_DIR"] hive_env_sh_template = config['configurations']['hive-env']['content'] hive_warehouse_dir = config['configurations']['hive-site']['hive.metastore.warehouse.dir'] -hive_user = "hadoop" -hadoop_user = "hadoop" -hcat_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +hive_user = hadoop_user +hcat_user = hadoop_user hive_bin = os.path.join(hive_home, "bin") hive_metastore_db_type = config['configurations']['hive-env']['hive_database_type'] @@ -51,4 +51,11 @@ hive_metastore_user_passwd = config['configurations']['hive-site']['javax.jdo.op hive_exclude_packages = [] ######## Metastore Schema -init_metastore_schema = not config['configurations']['hive-site']['datanucleus.autoCreateSchema'] \ No newline at end of file +init_metastore_schema = not config['configurations']['hive-site']['datanucleus.autoCreateSchema'] + +service_map = { + "metastore" : hive_metastore_win_service_name, + "client" : hive_client_win_service_name, + "hiveserver2" : hive_server_win_service_name, + "templeton" : webhcat_server_win_service_name +} http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py index d396f11..733ab0a 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat.py @@ -35,6 +35,11 @@ def webhcat(): conf_dir=params.hcat_config_dir, configurations=params.config['configurations']['webhcat-site'] ) + # Manually overriding service logon user & password set by the installation package + ServiceConfig(params.webhcat_server_win_service_name, + action="change_user", + username = params.hcat_user, + password = Script.get_password(params.hcat_user)) @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/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 ab25187..f3040ee 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 @@ -25,6 +25,7 @@ from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) def knox(): import params + from service_mapping import knox_geteway_win_service_name XmlConfig("gateway-site.xml", conf_dir=params.knox_conf_dir, @@ -33,6 +34,12 @@ def knox(): owner=params.knox_user ) + # Manually overriding service logon user & password set by the installation package + ServiceConfig(knox_geteway_win_service_name, + action="change_user", + username = params.knox_user, + password = Script.get_password(params.knox_user)) + File(os.path.join(params.knox_conf_dir, "gateway-log4j.properties"), owner=params.knox_user, content=params.gateway_log4j @@ -45,7 +52,7 @@ def knox(): ) if params.security_enabled: - TemplateConfig( os.path.join(knox_conf_dir, "krb5JAASLogin.conf"), + TemplateConfig( os.path.join(params.knox_conf_dir, "krb5JAASLogin.conf"), owner = params.knox_user, template_tag = None ) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_ldap.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_ldap.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_ldap.py index 08e28f5..c96605e 100644 --- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_ldap.py +++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_ldap.py @@ -20,7 +20,10 @@ limitations under the License. import os from resource_management import * -def ldap(): +from ambari_commons import OSConst +from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl + +def _ldap_common(): import params File(os.path.join(params.knox_conf_dir, 'ldap-log4j.properties'), @@ -37,3 +40,19 @@ def ldap(): content=params.users_ldif ) +@OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) +def ldap(): + import params + from service_mapping import knox_ldap_win_service_name + + # Manually overriding service logon user & password set by the installation package + ServiceConfig(knox_ldap_win_service_name, + action="change_user", + username = params.knox_user, + password = Script.get_password(params.knox_user)) + + _ldap_common() + +@OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) +def ldap(): + _ldap_common() \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_windows.py index 3d72735..652094a 100644 --- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params_windows.py @@ -36,7 +36,8 @@ knox_data_dir = os.path.join(knox_home, 'data') knox_master_secret_path = os.path.join(knox_data_dir, 'security', 'master') knox_cert_store_path = os.path.join(knox_data_dir, 'security', 'keystores', 'gateway.jks') -knox_user = 'hadoop' -hdfs_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +knox_user = hadoop_user +hdfs_user = hadoop_user knox_group = None mode = None http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py index 76e01ff..21ba06b 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie.py @@ -19,15 +19,15 @@ limitations under the License. """ import os -from resource_management.core.resources import Directory -from resource_management.core.resources import File -from resource_management.core.resources.system import Execute +from resource_management.core.resources.service import ServiceConfig +from resource_management.core.resources.system import Directory, Execute, File from resource_management.core.source import DownloadSource from resource_management.core.source import InlineTemplate from resource_management.core.source import Template -from resource_management.libraries.functions import format -from resource_management.libraries.functions import compare_versions +from resource_management.libraries.functions.format import format +from resource_management.libraries.functions.version import compare_versions from resource_management.libraries.resources.xml_config import XmlConfig +from resource_management.libraries.script.script import Script from resource_management.core.resources.packaging import Package from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl from ambari_commons import OSConst @@ -37,6 +37,8 @@ from ambari_commons.inet_utils import download_file def oozie(is_server=False): import params + from status_params import oozie_server_win_service_name + XmlConfig("oozie-site.xml", conf_dir=params.oozie_conf_dir, configurations=params.config['configurations']['oozie-site'], @@ -52,8 +54,16 @@ def oozie(is_server=False): Directory(params.oozie_tmp_dir, owner=params.oozie_user, - recursive = True, + recursive = True, ) + + if is_server: + # Manually overriding service logon user & password set by the installation package + ServiceConfig(oozie_server_win_service_name, + action="change_user", + username = params.oozie_user, + password = Script.get_password(params.oozie_user)) + download_file(os.path.join(params.config['hostLevelParams']['jdk_location'], "sqljdbc4.jar"), os.path.join(params.oozie_root, "extra_libs", "sqljdbc4.jar") ) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_windows.py index 9d6b062..ec404c4 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params_windows.py @@ -23,11 +23,12 @@ from status_params import * config = Script.get_config() +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] hdp_root = os.path.abspath(os.path.join(os.environ["HADOOP_HOME"], "..")) oozie_root = os.environ['OOZIE_ROOT'] oozie_home = os.environ['OOZIE_HOME'] oozie_conf_dir = os.path.join(oozie_home,'conf') -oozie_user = "hadoop" +oozie_user = hadoop_user oozie_tmp_dir = "c:\\hadoop\\temp\\oozie" oozie_env_cmd_template = config['configurations']['oozie-env']['content'] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/params_windows.py index 3e63083..7bb7ef8 100644 --- a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/params_windows.py @@ -32,5 +32,6 @@ if (('pig-log4j' in config['configurations']) and ('content' in config['configur else: log4j_props = None -pig_user = "hadoop" -hdfs_user = "hadoop" \ No newline at end of file +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +pig_user = hadoop_user +hdfs_user = hadoop_user http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params_windows.py index c28d062..932c5a4 100644 --- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params_windows.py @@ -30,5 +30,6 @@ slider_conf_dir = os.path.join(slider_home, 'conf') storm_slider_conf_dir = os.path.join(os.environ['STORM_HOME'], 'conf') slider_home_dir = slider_home -slider_user = 'hadoop' -hdfs_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +slider_user = hadoop_user +hdfs_user = hadoop_user http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py index 57db32d..8e3c6b4 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py @@ -42,7 +42,7 @@ class Nimbus(Script): def configure(self, env): import params env.set_params(params) - storm() + storm("nimbus") @OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT) @@ -136,6 +136,5 @@ class NimbusWindows(Nimbus): env.set_params(status_params) check_windows_service_status(status_params.nimbus_win_service_name) - if __name__ == "__main__": Nimbus().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params_windows.py index 152baa4..d98246c 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params_windows.py @@ -26,4 +26,11 @@ config = Script.get_config() hdp_root = os.path.abspath(os.path.join(os.environ["HADOOP_HOME"],"..")) conf_dir = os.environ["STORM_CONF_DIR"] -storm_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +storm_user = hadoop_user + +service_map = { + "nimbus" : nimbus_win_service_name, + "supervisor" : supervisor_win_service_name, + "ui" : ui_win_service_name +} http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py index 08d5b34..e7e5a4c 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/storm.py @@ -18,13 +18,13 @@ limitations under the License. """ -import resource_management -from resource_management.core.resources import File -from resource_management.core.resources import Execute -from resource_management.core.resources import Directory +from resource_management.core.exceptions import Fail +from resource_management.core.resources.service import ServiceConfig +from resource_management.core.resources.system import Directory, Execute, File from resource_management.core.source import InlineTemplate from resource_management.libraries.resources.template_config import TemplateConfig from resource_management.libraries.functions.format import format +from resource_management.libraries.script.script import Script from resource_management.core.source import Template from resource_management.libraries.functions import compare_versions from yaml_utils import yaml_config_template, yaml_config @@ -32,7 +32,7 @@ from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl from ambari_commons import OSConst @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) -def storm(): +def storm(name=None): import params yaml_config("storm.yaml", conf_dir=params.conf_dir, @@ -40,8 +40,16 @@ def storm(): owner=params.storm_user ) + if params.service_map.has_key(name): + service_name = params.service_map[name] + ServiceConfig(service_name, + action="change_user", + username = params.storm_user, + password = Script.get_password(params.storm_user)) + + @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) -def storm(): +def storm(name=None): import params Directory(params.log_dir, http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py index 4acfd80..cee42d4 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py @@ -39,7 +39,7 @@ class Supervisor(Script): def configure(self, env): import params env.set_params(params) - storm() + storm("supervisor") @OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py index 172a357..0814282 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py @@ -44,7 +44,7 @@ class UiServer(Script): def configure(self, env): import params env.set_params(params) - storm() + storm("ui") @OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY) class UiServerWindows(UiServer): http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/params_windows.py index 767ed1c..2a7bd8b 100644 --- a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/params_windows.py @@ -21,7 +21,8 @@ from resource_management import * import os config = Script.get_config() -tez_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +tez_user = hadoop_user tez_home_dir = None tez_conf_dir = "conf" http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_windows.py index edd4d17..0f8ce73 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params_windows.py @@ -27,9 +27,10 @@ from status_params import * # server configurations config = Script.get_config() -yarn_user = "hadoop" -hdfs_user = "hadoop" -smokeuser = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +yarn_user = hadoop_user +hdfs_user = hadoop_user +smokeuser = hadoop_user config_dir = os.environ["HADOOP_CONF_DIR"] hadoop_home = os.environ["HADOOP_HOME"] @@ -55,4 +56,4 @@ hadoopMapredExamplesJarName = "hadoop-mapreduce-examples-2.*.jar" exclude_hosts = default("/clusterHostInfo/decom_nm_hosts", []) exclude_file_path = default("/configurations/yarn-site/yarn.resourcemanager.nodes.exclude-path","/etc/hadoop/conf/yarn.exclude") -update_exclude_file_only = config['commandParams']['update_exclude_file_only'] \ No newline at end of file +update_exclude_file_only = config['commandParams']['update_exclude_file_only'] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py index f6487e5..c827529 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/service.py @@ -26,7 +26,7 @@ from ambari_commons import OSConst @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY) def service(componentName, action='start', serviceName='yarn'): import status_params - if componentName == 'resourcemanager' or componentName == 'nodemanager' or componentName == 'historyserver' or componentName == 'timelineserver': + if status_params.service_map.has_key(componentName): service_name = status_params.service_map[componentName] if action == 'start' or action == 'stop': Service(service_name, action=action) @@ -36,7 +36,6 @@ def service(componentName, action='start', serviceName='yarn'): @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) def service(componentName, action='start', serviceName='yarn'): - import params if serviceName == 'mapreduce' and componentName == 'historyserver': http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/status_params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/status_params.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/status_params.py index 42e6fad..61402a0 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/status_params.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/status_params.py @@ -25,7 +25,17 @@ config = Script.get_config() tmp_dir = Script.get_tmp_dir() if OSCheck.is_windows_family(): - service_map = {'resourcemanager':'resourcemanager', 'nodemanager':'nodemanager', 'historyserver':'jobhistoryserver', 'timelineserver':'historyserver'} + resourcemanager_win_service_name = 'resourcemanager' + nodemanager_win_service_name = 'nodemanager' + historyserver_win_service_name = 'jobhistoryserver' + timelineserver_win_service_name = 'timelineserver' + + service_map = { + 'resourcemanager' : resourcemanager_win_service_name, + 'nodemanager' : nodemanager_win_service_name, + 'historyserver' : historyserver_win_service_name, + 'timelineserver' : timelineserver_win_service_name + } else: mapred_user = config['configurations']['mapred-env']['mapred_user'] yarn_user = config['configurations']['yarn-env']['yarn_user'] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py index 22888e2..583e6e9 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn.py @@ -49,6 +49,14 @@ def yarn(name = None): mode='f' ) + if params.service_map.has_key(name): + service_name = params.service_map[name] + + ServiceConfig(service_name, + action="change_user", + username = params.yarn_user, + password = Script.get_password(params.yarn_user)) + @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT) def yarn(name = None): http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params_windows.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params_windows.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params_windows.py index c7302a5..e5ce948 100644 --- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params_windows.py +++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params_windows.py @@ -28,7 +28,8 @@ config = Script.get_config() # notused zookeeper_home_dir = os.environ["ZOOKEEPER_HOME"] config_dir = os.environ["ZOOKEEPER_CONF_DIR"] hdp_root = os.environ["HADOOP_NODE_INSTALL_ROOT"] -zk_user = "hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +zk_user = hadoop_user # notused zk_log_dir = config['configurations']['zookeeper-env']['zk_log_dir'] zk_data_dir = ensure_double_backslashes(config['configurations']['zoo.cfg']['dataDir']) http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py index d6c40ee..6ea9047 100644 --- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py +++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py @@ -107,6 +107,12 @@ def zookeeper(type = None, rolling_restart = False): configFile("zoo.cfg", template_name="zoo.cfg.j2", mode="f") configFile("configuration.xsl", template_name="configuration.xsl.j2", mode="f") + ServiceConfig(params.zookeeper_win_service_name, + action="change_user", + username = params.zk_user, + password = Script.get_password(params.zk_user)) + + Directory(params.zk_data_dir, owner=params.zk_user, mode="(OI)(CI)F", http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/after-INSTALL/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/after-INSTALL/scripts/params.py b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/after-INSTALL/scripts/params.py index 3f494d3..bfc605c 100644 --- a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/after-INSTALL/scripts/params.py +++ b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/after-INSTALL/scripts/params.py @@ -23,7 +23,8 @@ from urlparse import urlparse config = Script.get_config() hadoop_conf_dir = None hadoop_common_dir = os.path.join("share", "hadoop", "common", "lib") -hdfs_user="hadoop" +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] +hdfs_user = hadoop_user hadoop_common_bin = "bin" if os.environ.has_key("HADOOP_CONF_DIR"): http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/before-START/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/before-START/scripts/params.py b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/before-START/scripts/params.py index a9ac605..093ea38 100644 --- a/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/before-START/scripts/params.py +++ b/ambari-server/src/main/resources/stacks/HDPWIN/2.1/hooks/before-START/scripts/params.py @@ -35,4 +35,4 @@ if has_metric_collector: hadoop_conf_dir = os.environ["HADOOP_CONF_DIR"] hbase_conf_dir = os.environ["HBASE_CONF_DIR"] -hadoop_user = "hadoop" \ No newline at end of file +hadoop_user = config["configurations"]["cluster-env"]["hadoop.user.name"] http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java index 92b9297..0ca5bb0 100644 --- a/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java +++ b/ambari-server/src/test/java/org/apache/ambari/server/upgrade/UpgradeTest.java @@ -85,7 +85,7 @@ public class UpgradeTest { private static String DROP_DERBY_URL = "jdbc:derby:memory:myDB/ambari;drop=true"; private final String sourceVersion; - private Properties properties = new Properties(); + private Properties properties = new Properties(); private Injector injector; @@ -94,9 +94,9 @@ public class UpgradeTest { properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY, "remote"); properties.setProperty(Configuration.SERVER_JDBC_URL_KEY, Configuration.JDBC_IN_MEMORY_URL); properties.setProperty(Configuration.SERVER_JDBC_DRIVER_KEY, Configuration.JDBC_IN_MEMROY_DRIVER); - properties.setProperty(Configuration.METADETA_DIR_PATH,"src/test/resources/stacks"); - properties.setProperty(Configuration.SERVER_VERSION_FILE,"src/test/resources/version"); - properties.setProperty(Configuration.OS_VERSION_KEY,"centos5"); + properties.setProperty(Configuration.METADETA_DIR_PATH, "src/test/resources/stacks"); + properties.setProperty(Configuration.SERVER_VERSION_FILE, "src/test/resources/version"); + properties.setProperty(Configuration.OS_VERSION_KEY, "centos5"); properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY, "src/test/resources/"); } @@ -188,7 +188,7 @@ public class UpgradeTest { LOG.info("Upgrading schema to target version = " + targetVersion); UpgradeCatalog targetUpgradeCatalog = AbstractUpgradeCatalog - .getUpgradeCatalog(targetVersion); + .getUpgradeCatalog(targetVersion); LOG.debug("Target upgrade catalog. " + targetUpgradeCatalog); @@ -197,7 +197,7 @@ public class UpgradeTest { LOG.info("Upgrading schema from source version = " + sourceVersion); List<UpgradeCatalog> upgradeCatalogs = - schemaUpgradeHelper.getUpgradePath(sourceVersion, targetVersion); + schemaUpgradeHelper.getUpgradePath(sourceVersion, targetVersion); try { schemaUpgradeHelper.executeUpgrade(upgradeCatalogs); http://git-wip-us.apache.org/repos/asf/ambari/blob/77e4d50c/ambari-server/src/test/python/stacks/2.0.6/hooks/before-START/test_before_start.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-START/test_before_start.py b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-START/test_before_start.py index 2a810a0..fb2699a 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/hooks/before-START/test_before_start.py +++ b/ambari-server/src/test/python/stacks/2.0.6/hooks/before-START/test_before_start.py @@ -23,6 +23,7 @@ from mock.mock import MagicMock, call, patch from resource_management import Hook import json +@patch("platform.linux_distribution", new = MagicMock(return_value="Linux")) @patch("os.path.exists", new = MagicMock(return_value=True)) @patch.object(Hook, "run_custom_hook", new = MagicMock()) class TestHookBeforeStart(RMFTestCase):