You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by sw...@apache.org on 2014/12/30 04:11:39 UTC
[1/2] ambari git commit: Revert "AMBARI-8770 [WinGA] Add windows
server assembly for AMS. Unit test failure on CentOS."
Repository: ambari
Updated Branches:
refs/heads/trunk dc8355c64 -> ab8c0e350
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/amc_service.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/amc_service.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/amc_service.py
deleted file mode 100644
index b901e5c..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/amc_service.py
+++ /dev/null
@@ -1,174 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import optparse
-import os
-import sys
-
-from ambari_commons.ambari_service import AmbariService
-from ambari_commons.exceptions import FatalException
-from ambari_commons.os_utils import remove_file
-from ambari_commons.os_windows import SvcStatusCallback, WinServiceController
-from ambari_metrics_collector.serviceConfiguration import get_properties, get_value_from_properties, DEBUG_MODE_KEY, \
- SUSPEND_START_MODE_KEY, PID_OUT_FILE, SERVER_OUT_FILE_KEY, SERVER_OUT_FILE, SERVICE_USERNAME_KEY, SERVICE_PASSWORD_KEY, \
- DEFAULT_CONF_DIR, EMBEDDED_HBASE_MASTER_SERVICE
-from embedded_hbase_service import EmbeddedHBaseService
-from main import server_process_main
-
-
-class AMCollectorService(AmbariService):
- AmbariService._svc_name_ = "AmbariMetricsCollector"
- AmbariService._svc_display_name_ = "Ambari Metrics Collector"
- AmbariService._svc_description_ = "Ambari Metrics Collector Service"
-
- AmbariService._AdjustServiceVersion()
-
- # Adds the necessary script dir(s) to the Python's modules path.
- # Modify this as the deployed product's dir structure changes.
- def _adjustPythonPath(self, current_dir):
- python_path = os.path.join(current_dir, "sbin")
- sys.path.insert(0, python_path)
- pass
-
- @classmethod
- def Install(cls, startupMode = "auto", username = None, password = None, interactive = False,
- perfMonIni = None, perfMonDll = None):
- script_path = os.path.dirname(__file__.replace('/', os.sep))
- classPath = os.path.join(script_path, cls.__module__) + "." + cls.__name__
-
- return AmbariService.Install(classPath, startupMode, username, password, interactive,
- perfMonIni, perfMonDll)
-
- def SvcDoRun(self):
- scmStatus = SvcStatusCallback(self)
-
- properties = get_properties()
- self.options.debug = get_value_from_properties(properties, DEBUG_MODE_KEY, self.options.debug)
- self.options.suspend_start = get_value_from_properties(properties, SUSPEND_START_MODE_KEY, self.options.suspend_start)
-
- self.redirect_output_streams()
-
- childProc = server_process_main(self.options, scmStatus)
-
- if not self._StopOrWaitForChildProcessToFinish(childProc):
- return
-
- remove_file(PID_OUT_FILE)
- pass
-
- def _InitOptionsParser(self):
- return init_options_parser()
-
- def redirect_output_streams(self):
- properties = get_properties()
-
- outFilePath = properties[SERVER_OUT_FILE_KEY]
- if (outFilePath is None or outFilePath == ""):
- outFilePath = SERVER_OUT_FILE
-
- self._RedirectOutputStreamsToFile(outFilePath)
- pass
-
-def ctrlHandler(ctrlType):
- AMCollectorService.DefCtrlCHandler()
- return True
-
-def svcsetup():
- AMCollectorService.set_ctrl_c_handler(ctrlHandler)
-
- # we don't save password between 'setup' runs, so we can't run Install every time. We run 'setup' only if user and
- # password provided or if service not installed
- if (SERVICE_USERNAME_KEY in os.environ and SERVICE_PASSWORD_KEY in os.environ):
- EmbeddedHBaseService.Install(username=os.environ[SERVICE_USERNAME_KEY], password=os.environ[SERVICE_PASSWORD_KEY])
- AMCollectorService.Install(username=os.environ[SERVICE_USERNAME_KEY], password=os.environ[SERVICE_PASSWORD_KEY])
- else:
- EmbeddedHBaseService.Install()
- AMCollectorService.Install()
- pass
-
-#
-# Starts the Ambari Metrics Collector. The server can start as a service or standalone process.
-# args:
-# options.is_process = True - start the server as a process. For now, there is no restrictions for the number of
-# server instances that can run like this.
-# options.is_process = False - start the server in normal mode, as a Windows service. If the Ambari Metrics Collector
-# is not registered as a service, the function fails. By default, only one instance of the service can
-# possibly run.
-#
-def start(options):
- AMCollectorService.set_ctrl_c_handler(ctrlHandler)
-
- if options.is_process:
- #Run as a normal process. Invoke the ServiceMain directly.
- childProc = server_process_main(options)
-
- childProc.wait()
-
- remove_file(PID_OUT_FILE)
- else:
- AMCollectorService.Start()
-
-#
-# Stops the Ambari Metrics Collector. Ineffective when the server is started as a standalone process.
-#
-def stop():
- AMCollectorService.Stop()
-
-#
-# Prints the Ambari Metrics Collector service status.
-#
-def svcstatus(options):
- options.exit_message = None
-
- statusStr = AMCollectorService.QueryStatus()
- print "Ambari Metrics Collector is " + statusStr
-
-
-def setup(options):
- svcsetup()
-
-def init_options_parser():
- parser = optparse.OptionParser(usage="usage: %prog action [options]", )
- parser.add_option('--config', dest="conf_dir",
- default=DEFAULT_CONF_DIR,
- help="Configuration files directory")
- parser.add_option('--debug', action="store_true", dest='debug', default=False,
- help="Start ambari-metrics-collector in debug mode")
- parser.add_option('--suspend-start', action="store_true", dest='suspend_start', default=False,
- help="Freeze ambari-metrics-collector Java process at startup in debug mode")
- parser.add_option('--process', action="store_true", dest='is_process', default=False,
- help="Start ambari-metrics-collector as a process, not as a service")
- parser.add_option('--noembedded', action="store_true", dest='no_embedded_hbase', default=False,
- help="Don't attempt to start the HBASE services. Expect them to be already installed and running.")
-
- # --help reserved for help
- return parser
-
-
-def init_service_debug(options):
- if options.debug:
- sys.frozen = 'windows_exe' # Fake py2exe so we can debug
-
-
-def ensure_hdp_service_soft_dependencies():
- ret = WinServiceController.EnsureServiceIsStarted(EMBEDDED_HBASE_MASTER_SERVICE)
- if ret != 0:
- err = 'ERROR: Cannot start service "{0}". Error = {1}'.format(EMBEDDED_HBASE_MASTER_SERVICE, ret)
- raise FatalException(1, err)
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py
deleted file mode 100644
index a699774..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/embedded_hbase_service.py
+++ /dev/null
@@ -1,201 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import os
-import win32service
-import win32api
-from win32serviceutil import RemoveService, SmartOpenService
-import winerror
-
-from ambari_commons.xml_utils import ConvertToXml
-from ambari_metrics_collector.serviceConfiguration import EMBEDDED_HBASE_MASTER_SERVICE, EMBEDDED_HBASE_SUBDIR, \
- find_jdk, get_java_exe_path, build_jvm_args
-
-MASTER_JVM_ARGS = '{0} ' \
- '"-XX:+UseConcMarkSweepGC" "-Djava.net.preferIPv4Stack=true" ' \
- '-Dhadoop.home.dir="{1}" -Dhbase.log.dir="{2}" -Dhbase.log.file={3} -Dhbase.home.dir="{1}" -Dhbase.id.str="{4}" ' \
- '-Dhbase.root.logger="INFO,DRFA" -Dhbase.security.logger="INFO,RFAS" ' \
- '-classpath "{5}" org.apache.hadoop.hbase.master.HMaster start'
-
-#-Xmx1000m "-XX:+UseConcMarkSweepGC" "-Djava.net.preferIPv4Stack=true"
-# -Dhbase.log.dir="C:\test\ambari-metrics-timelineservice-0.1.0-SNAPSHOT\hbase\logs" -Dhbase.log.file="hbase.log" -Dhbase.home.dir="C:\test\ambari-metrics-timelineservice-0.1.0-SNAPSHOT\hbase" -Dhbase.id.str="Administrator"
-# -XX:OnOutOfMemoryError="taskkill /F /PID p" -Dhbase.root.logger="INFO,console" -Dhbase.security.logger="INFO,DRFAS"
-# -classpath "C:\test\ambari-metrics-timelineservice-0.1.0-SNAPSHOT\hbase\conf;C:\jdk1.7.0_67\lib\tools.jar;C:\test\ambari-metrics-timelineservice-0.1.0-SNAPSHOT\hbase;C:\test\ambari-metrics-timelineservice-0.1.0-SNAPSHOT\hbase\lib\*"
-# org.apache.hadoop.hbase.master.HMaster start
-def _build_master_java_args(username = None):
- hbase_home_dir = os.path.abspath(EMBEDDED_HBASE_SUBDIR)
- hbase_log_dir = os.path.join(os.sep, "var", "log", EMBEDDED_HBASE_MASTER_SERVICE)
- hbase_log_file = "hbase.log"
- hbase_user_id = username if username else "SYSTEM"
-
- if not os.path.exists(hbase_log_dir):
- os.makedirs(hbase_log_dir)
-
- java_class_path = os.path.join(hbase_home_dir, "conf")
- java_class_path += os.pathsep + os.path.join(find_jdk(), "lib", "tools.jar")
- java_class_path += os.pathsep + hbase_home_dir
- java_class_path += os.pathsep + os.path.join(hbase_home_dir, "lib", "*")
-
- args = MASTER_JVM_ARGS.format(build_jvm_args(), hbase_home_dir, hbase_log_dir, hbase_log_file, hbase_user_id, java_class_path)
-
- return args
-
-
-def _get_config_file_path():
- config_file_path = os.path.join(os.getcwd(), EMBEDDED_HBASE_SUBDIR, "bin", EMBEDDED_HBASE_MASTER_SERVICE + ".xml")
- return config_file_path
-
-class EmbeddedHBaseService:
- _svc_name_ = EMBEDDED_HBASE_MASTER_SERVICE
- _svc_display_name_ = "Apache Ambari Metrics " + EMBEDDED_HBASE_MASTER_SERVICE
- _exe_name_ = os.path.join(EMBEDDED_HBASE_SUBDIR, "bin", EMBEDDED_HBASE_MASTER_SERVICE + ".exe")
-
- @classmethod
- def _get_start_type(cls, startupMode):
- if startupMode == "auto":
- startType = win32service.SERVICE_AUTO_START
- elif startupMode == "disabled":
- startType = win32service.SERVICE_DISABLED
- else:
- startType = win32service.SERVICE_DEMAND_START
- return startType
-
- @classmethod
- def Install(cls, startupMode = "auto", username = None, password = None):
- print "Installing service %s" % (cls._svc_name_)
-
- # Configure master.xml, which drives the java subprocess
- java_path = get_java_exe_path()
- java_args = _build_master_java_args(username)
-
- config_file_path = _get_config_file_path()
-
- xmlFileContents = _MasterXml()
- xmlFileContents.service.id = EMBEDDED_HBASE_MASTER_SERVICE
- xmlFileContents.service.name = EMBEDDED_HBASE_MASTER_SERVICE
- xmlFileContents.service.description = "This service runs " + EMBEDDED_HBASE_MASTER_SERVICE
- xmlFileContents.service.executable = java_path
- xmlFileContents.service.arguments = java_args
-
- xmlFile = open(config_file_path, "w")
- xmlFile.write( str(xmlFileContents) )
- xmlFile.close()
-
- startType = cls._get_start_type(startupMode)
- serviceType = win32service.SERVICE_WIN32_OWN_PROCESS
- errorControl = win32service.SERVICE_ERROR_NORMAL
-
- commandLine = os.path.abspath(cls._exe_name_)
- hscm = win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
- try:
- try:
- hs = win32service.CreateService(hscm,
- cls._svc_name_,
- cls._svc_display_name_,
- win32service.SERVICE_ALL_ACCESS, # desired access
- serviceType, # service type
- startType,
- errorControl, # error control type
- commandLine,
- None,
- 0,
- None,
- username,
- password)
- print "Service installed"
- win32service.CloseServiceHandle(hs)
- finally:
- win32service.CloseServiceHandle(hscm)
- except win32service.error, exc:
- if exc.winerror==winerror.ERROR_SERVICE_EXISTS:
- cls.Update(username, password)
- else:
- print "Error installing service: %s (%d)" % (exc.strerror, exc.winerror)
- err = exc.winerror
- except ValueError, msg: # Can be raised by custom option handler.
- print "Error installing service: %s" % str(msg)
- err = -1
- # xxx - maybe I should remove after _any_ failed install - however,
- # xxx - it may be useful to help debug to leave the service as it failed.
- # xxx - We really _must_ remove as per the comments above...
- # As we failed here, remove the service, so the next installation
- # attempt works.
- try:
- RemoveService(cls._svc_name_)
- except win32api.error:
- print "Warning - could not remove the partially installed service."
-
- @classmethod
- def Update(cls, startupMode = "auto", username = None, password = None):
- # Handle the default arguments.
- if startupMode is None:
- startType = win32service.SERVICE_NO_CHANGE
- else:
- startType = cls._get_start_type(startupMode)
-
- hscm = win32service.OpenSCManager(None,None,win32service.SC_MANAGER_ALL_ACCESS)
- serviceType = win32service.SERVICE_WIN32_OWN_PROCESS
-
- commandLine = os.path.abspath(cls._exe_name_)
-
- try:
- hs = SmartOpenService(hscm, cls._svc_name_, win32service.SERVICE_ALL_ACCESS)
- try:
- win32service.ChangeServiceConfig(hs,
- serviceType, # service type
- startType,
- win32service.SERVICE_NO_CHANGE, # error control type
- commandLine,
- None,
- 0,
- None,
- username,
- password,
- cls._svc_display_name_)
- print "Service updated"
- finally:
- win32service.CloseServiceHandle(hs)
- finally:
- win32service.CloseServiceHandle(hscm)
-
-class _MasterXml(ConvertToXml):
- service = "" #Service entity
-
- def __init__(self):
- self.service = _ServiceXml()
-
- def __str__(self):
- result = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
- result += str(self.service)
- return result
-
-class _ServiceXml(ConvertToXml):
- def __init__(self):
- self.id = ""
- self.name = ""
- self.description = ""
- self.executable = ""
- self.arguments = ""
-
- def __str__(self):
- result = "<service>\n"
- result += self.attributesToXml()
- result += "</service>"
- return result
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/main.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/main.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/main.py
deleted file mode 100644
index 172861e..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/main.py
+++ /dev/null
@@ -1,214 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import os
-import subprocess
-import sys
-
-from ambari_commons.exceptions import FatalException, NonFatalException
-from ambari_commons.logging_utils import print_info_msg, print_warning_msg, print_error_msg
-from ambari_metrics_collector.serviceConfiguration import get_java_exe_path, get_java_cp, build_jvm_args, \
- SETUP_ACTION, START_ACTION, STOP_ACTION, RESTART_ACTION, STATUS_ACTION, PID_DIR, EXITCODE_OUT_FILE, \
- SERVER_OUT_FILE, PID_OUT_FILE, SERVER_LOG_FILE
-
-
-# debug settings
-SERVER_START_DEBUG = False
-SUSPEND_START_MODE = False
-
-AMS_ENV_CMD = "ams-env.cmd"
-
-SERVER_START_CMD = \
- "-cp {0} {1} " + \
- "-Djava.net.preferIPv4Stack=true " \
- "-Dproc_timelineserver " + \
- "org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer"
-SERVER_START_CMD_DEBUG = \
- "-cp {0} {1} " + \
- "-Djava.net.preferIPv4Stack=true " \
- "-Dproc_timelineserver " + \
- " -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend={2} " + \
- "org.apache.hadoop.yarn.server.applicationhistoryservice.ApplicationHistoryServer"
-
-AMC_DIE_MSG = "Ambari Metrics Collector java process died with exitcode {0}. Check {1} for more information."
-
-
-def save_pid(pid, pidfile):
- """
- Save pid to pidfile.
- """
- try:
- pfile = open(pidfile, "w")
- pfile.write("%s\n" % pid)
- except IOError:
- pass
- finally:
- try:
- pfile.close()
- except:
- pass
-
-
-def exec_ams_env_cmd(options):
- ams_env_cmd = os.path.join(options.conf_dir, AMS_ENV_CMD)
- if os.path.exists(ams_env_cmd):
- cmds = ["cmd.exe", "/C", ams_env_cmd]
- procAms = subprocess.Popen(cmds, env=os.environ)
- out, err = procAms.communicate()
- if err is not None and err is not "":
- print_warning_msg(AMS_ENV_CMD + " error output: " + err)
- if out is not None and out is not "":
- print_info_msg(AMS_ENV_CMD + " output: " + out)
- else:
- err = 'ERROR: Cannot execute "{0}"'.format(ams_env_cmd)
- raise FatalException(1, err)
-
-
-def server_process_main(options, scmStatus=None):
- if scmStatus is not None:
- scmStatus.reportStartPending()
-
- # debug mode
- try:
- global DEBUG_MODE
- DEBUG_MODE = options.debug
- except AttributeError:
- pass
-
- # stop Java process at startup?
- try:
- global SUSPEND_START_MODE
- SUSPEND_START_MODE = options.suspend_start
- except AttributeError:
- pass
-
- #options.conf_dir <= --config
- if not os.path.isdir(options.conf_dir):
- err = 'ERROR: Cannot find configuration directory "{0}"'.format(options.conf_dir)
- raise FatalException(1, err)
-
- #execute ams-env.cmd
- exec_ams_env_cmd(options)
-
- #Ensure the 3 Hadoop services required are started on the local machine
- if not options.no_embedded_hbase:
- from amc_service import ensure_hdp_service_soft_dependencies
- ensure_hdp_service_soft_dependencies()
-
- if scmStatus is not None:
- scmStatus.reportStartPending()
-
- java_exe = get_java_exe_path()
- java_class_path = get_java_cp()
- java_heap_max = build_jvm_args()
- command_base = SERVER_START_CMD_DEBUG if (DEBUG_MODE or SERVER_START_DEBUG) else SERVER_START_CMD
- suspend_mode = 'y' if SUSPEND_START_MODE else 'n'
- command = command_base.format(java_class_path, java_heap_max, suspend_mode)
- if not os.path.exists(PID_DIR):
- os.makedirs(PID_DIR, 0755)
-
- #Ignore the requirement to run as root. In Windows, by default the child process inherits the security context
- # and the environment from the parent process.
- param_list = java_exe + " " + command
-
- print_info_msg("Running server: " + str(param_list))
- procJava = subprocess.Popen(param_list, env=os.environ)
-
- #wait for server process for SERVER_START_TIMEOUT seconds
- print "Waiting for server start..."
-
- pidJava = procJava.pid
- if pidJava <= 0:
- procJava.terminate()
- exitcode = procJava.returncode
- save_pid(exitcode, EXITCODE_OUT_FILE)
-
- if scmStatus is not None:
- scmStatus.reportStopPending()
-
- raise FatalException(-1, AMC_DIE_MSG.format(exitcode, SERVER_OUT_FILE))
- else:
- save_pid(pidJava, PID_OUT_FILE)
- print "Server PID at: " + PID_OUT_FILE
- print "Server out at: " + SERVER_OUT_FILE
- print "Server log at: " + SERVER_LOG_FILE
-
- if scmStatus is not None:
- scmStatus.reportStarted()
-
- return procJava
-
-def main():
- from amc_service import init_options_parser, init_service_debug, setup, start, stop, svcstatus
-
- parser = init_options_parser()
- (options, args) = parser.parse_args()
-
- options.warnings = []
- options.exit_message = None
-
- init_service_debug(options)
-
- if len(args) == 0:
- print parser.print_help()
- parser.error("No action entered")
-
- action = args[0]
-
- try:
- if action == SETUP_ACTION:
- setup(options)
- elif action == START_ACTION:
- start(options)
- elif action == STOP_ACTION:
- stop()
- elif action == RESTART_ACTION:
- stop()
- start(options)
- elif action == STATUS_ACTION:
- svcstatus(options)
- else:
- parser.error("Invalid action")
-
- if options.warnings:
- for warning in options.warnings:
- print_warning_msg(warning)
- pass
- options.exit_message = "Ambari Metrics Collector '%s' completed with warnings." % action
- pass
- except FatalException as e:
- if e.reason is not None:
- print_error_msg("Exiting with exit code {0}. \nREASON: {1}".format(e.code, e.reason))
- sys.exit(e.code)
- except NonFatalException as e:
- options.exit_message = "Ambari Metrics Collector '%s' completed with warnings." % action
- if e.reason is not None:
- print_warning_msg(e.reason)
-
- if options.exit_message is not None:
- print options.exit_message
-
-
-if __name__ == "__main__":
- try:
- main()
- except (KeyboardInterrupt, EOFError):
- print("\nAborting ... Keyboard Interrupt.")
- sys.exit(1)
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/pom.xml b/ambari-metrics/pom.xml
index d99cc82..da7fc14 100644
--- a/ambari-metrics/pom.xml
+++ b/ambari-metrics/pom.xml
@@ -57,33 +57,6 @@
<build>
<plugins>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.8</version>
- <executions>
- <execution>
- <id>parse-version</id>
- <phase>validate</phase>
- <goals>
- <goal>parse-version</goal>
- </goals>
- </execution>
- <execution>
- <id>regex-property</id>
- <goals>
- <goal>regex-property</goal>
- </goals>
- <configuration>
- <name>ambariVersion</name>
- <value>${project.version}</value>
- <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
- <replacement>$1.$2.$3</replacement>
- <failIfNoMatch>false</failIfNoMatch>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptors>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-server/src/main/python/ambari-server-state/Entities.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/python/ambari-server-state/Entities.py b/ambari-server/src/main/python/ambari-server-state/Entities.py
index b9f61c3..379c95f 100644
--- a/ambari-server/src/main/python/ambari-server-state/Entities.py
+++ b/ambari-server/src/main/python/ambari-server-state/Entities.py
@@ -1,3 +1,5 @@
+import inspect
+
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
@@ -14,7 +16,20 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-from ambari_commons.xml_utils import ConvertToXml
+class ConvertToXml:
+ "Template class, allow to output fields in xml format"
+ def getField(self):
+ return [name for name, obj in inspect.getmembers(self)
+ if not name.startswith("__") and not inspect.isroutine(obj)]
+
+ def attributesToXml(self):
+ result = ""
+ listOfAttr = self.getField()
+ for attrName in listOfAttr:
+ result += "<" + attrName + ">"
+ result += str(getattr(self, attrName))
+ result += "</" + attrName + ">"
+ return result
class Configurations(ConvertToXml):
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index d33828b..af4fc01 100644
--- a/pom.xml
+++ b/pom.xml
@@ -179,8 +179,6 @@
<exclude>derby.log</exclude>
<exclude>CHANGES.txt</exclude>
<exclude>pass.txt</exclude>
- <exclude>ambari-metrics/ambari-metrics-host-monitoring/conf/unix/metric_groups.conf</exclude>
- <exclude>ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_groups.conf</exclude>
<exclude>contrib/addons/test/dataServices/jmx/data/cluster_configuration.json.nohbase</exclude>
<exclude>contrib/ambari-scom/msi/src/GUI_Ambari.sln</exclude>
<exclude>version</exclude>
[2/2] ambari git commit: Revert "AMBARI-8770 [WinGA] Add windows
server assembly for AMS. Unit test failure on CentOS."
Posted by sw...@apache.org.
Revert "AMBARI-8770 [WinGA] Add windows server assembly for AMS. Unit test failure on CentOS."
This reverts commit 19e972cf98423200bf30518803f066669f2dcd2a.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/ab8c0e35
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/ab8c0e35
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/ab8c0e35
Branch: refs/heads/trunk
Commit: ab8c0e350fded50f32edbe23e2a14376caebbbfc
Parents: dc8355c
Author: Siddharth Wagle <sw...@hortonworks.com>
Authored: Mon Dec 29 19:11:02 2014 -0800
Committer: Siddharth Wagle <sw...@hortonworks.com>
Committed: Mon Dec 29 19:11:02 2014 -0800
----------------------------------------------------------------------
ambari-agent/conf/windows/service_wrapper.py | 2 +-
.../src/main/python/ambari_commons/os_utils.py | 17 +-
.../main/python/ambari_commons/os_windows.py | 21 +-
.../src/main/python/ambari_commons/xml_utils.py | 33 ---
ambari-metrics/ambari-metrics-assembly/pom.xml | 77 +------
.../src/main/assembly/collector-windows.xml | 101 --------
.../src/main/assembly/monitor-windows.xml | 84 -------
.../src/main/assembly/monitor.xml | 2 +-
.../src/main/assembly/sink-windows.xml | 60 -----
.../conf/windows/ambari-metrics-monitor.cmd | 17 --
.../conf/windows/metric_groups.conf | 19 --
.../conf/windows/metric_monitor.ini | 30 ---
.../ambari-metrics-host-monitoring/pom.xml | 146 ++++--------
.../src/main/python/amhm_service.py | 231 -------------------
.../src/main/python/core/__init__.py | 3 +-
.../src/main/python/core/config_reader.py | 66 +-----
.../src/main/python/core/controller.py | 27 +--
.../src/main/python/core/emitter.py | 17 +-
.../src/main/python/core/stop_handler.py | 138 -----------
.../src/main/python/main.py | 58 +----
.../conf/windows/ambari-metrics-collector.cmd | 17 --
.../conf/windows/ams-env.cmd | 16 --
.../conf/windows/ams-site.xml | 25 --
.../conf/windows/ams.properties | 17 --
.../conf/windows/log4j.properties | 29 ---
.../ambari-metrics-timelineservice/pom.xml | 31 ---
.../python/ambari_metrics_collector/__init__.py | 21 --
.../ambari_metrics_collector/properties.py | 223 ------------------
.../serviceConfiguration.py | 152 ------------
.../src/main/python/amc_service.py | 174 --------------
.../src/main/python/embedded_hbase_service.py | 201 ----------------
.../src/main/python/main.py | 214 -----------------
ambari-metrics/pom.xml | 27 ---
.../main/python/ambari-server-state/Entities.py | 17 +-
pom.xml | 2 -
35 files changed, 105 insertions(+), 2210 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-agent/conf/windows/service_wrapper.py
----------------------------------------------------------------------
diff --git a/ambari-agent/conf/windows/service_wrapper.py b/ambari-agent/conf/windows/service_wrapper.py
index 5eb06c4..40be1d0 100644
--- a/ambari-agent/conf/windows/service_wrapper.py
+++ b/ambari-agent/conf/windows/service_wrapper.py
@@ -92,7 +92,7 @@ class AmbariAgentService(AmbariService):
# Soft dependency on the Windows Time service
ensure_time_service_is_started()
- self.heartbeat_stop_handler = HeartbeatStopHandlers(AmbariAgentService._heventSvcStop)
+ self.heartbeat_stop_handler = HeartbeatStopHandlers(self._heventSvcStop)
self.ReportServiceStatus(win32service.SERVICE_RUNNING)
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-common/src/main/python/ambari_commons/os_utils.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/ambari_commons/os_utils.py b/ambari-common/src/main/python/ambari_commons/os_utils.py
index 942a920..3f4819d 100644
--- a/ambari-common/src/main/python/ambari_commons/os_utils.py
+++ b/ambari-common/src/main/python/ambari_commons/os_utils.py
@@ -48,17 +48,14 @@ def quote_path(filepath):
filepath_ret = filepath
return filepath_ret
-def _search_file(filename, search_path, pathsep):
+def search_file(filename, search_path, pathsep=os.pathsep):
+ """ Given a search path, find file with requested name """
for path in string.split(search_path, pathsep):
candidate = os.path.join(path, filename)
if os.path.exists(candidate):
return os.path.abspath(candidate)
return None
-def search_file(filename, search_path, pathsep=os.pathsep):
- """ Given a search path, find file with requested name """
- return _search_file(filename, search_path, pathsep)
-
def copy_file(src, dest_file):
try:
shutil.copyfile(src, dest_file)
@@ -106,7 +103,9 @@ def get_password(prompt):
return os_getpass(prompt)
def find_in_path(file):
- full_path = _search_file(file, os.environ["PATH"], os.pathsep)
- if full_path is None:
- raise Exception("File {0} not found in PATH".format(file))
- return full_path
\ No newline at end of file
+ dirs = os.environ["PATH"].split(os.pathsep)
+ for dir in dirs:
+ full_path = os.path.join(dir, file)
+ if os.path.exists(full_path):
+ return full_path
+ raise Exception("File {} not found in PATH".format(file))
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-common/src/main/python/ambari_commons/os_windows.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/ambari_commons/os_windows.py b/ambari-common/src/main/python/ambari_commons/os_windows.py
index 7918a2f..2fb98e4 100644
--- a/ambari-common/src/main/python/ambari_commons/os_windows.py
+++ b/ambari-common/src/main/python/ambari_commons/os_windows.py
@@ -402,7 +402,7 @@ class WinService(win32serviceutil.ServiceFramework):
# _svc_display_name_ = The service display name
# _svc_description_ = The service description
- _heventSvcStop = win32event.CreateEvent(None, 1, 0, None)
+ _heventSvcStop = win32event.CreateEvent(None, 0, 0, None)
_hmtxOut = win32event.CreateMutex(None, False, None) #[fbarca] Python doesn't support critical sections
def __init__(self, *args):
@@ -418,18 +418,17 @@ class WinService(win32serviceutil.ServiceFramework):
def SvcStop(self):
self.ReportServiceStatus(win32service.SERVICE_STOP_PENDING)
- win32event.SetEvent(WinService._heventSvcStop)
+ win32event.SetEvent(self._heventSvcStop)
# Service code entry point. Override it to implement the intended functionality.
def ServiceMain(self):
#Default implementation, does nothing.
- win32event.WaitForSingleObject(WinService._heventSvcStop, win32event.INFINITE)
+ win32event.WaitForSingleObject(self._heventSvcStop, win32event.INFINITE)
pass
- @staticmethod
- def DefCtrlCHandler():
+ def DefCtrlCHandler(self):
print_info_msg("Ctrl+C handler invoked. Stopping.")
- win32event.SetEvent(WinService._heventSvcStop)
+ win32event.SetEvent(self._heventSvcStop)
pass
#username domain\\username : The Username the service is to run under
@@ -439,7 +438,7 @@ class WinService(win32serviceutil.ServiceFramework):
#perfmonini file: .ini file to use for registering performance monitor data
#perfmondll file: .dll file to use when querying the service for performance data, default = perfmondata.dll
@classmethod
- def Install(cls, classPath = None, startupMode = "auto", username = None, password = None, interactive = False,
+ def Install(cls, startupMode = "auto", username = None, password = None, interactive = False,
perfMonIni = None, perfMonDll = None):
installArgs = [sys.argv[0], "--startup=" + startupMode]
if username is not None and username:
@@ -453,8 +452,7 @@ class WinService(win32serviceutil.ServiceFramework):
if perfMonDll is not None and perfMonDll:
installArgs.append("--perfmondll=" + perfMonDll)
installArgs.append("install")
-
- win32serviceutil.HandleCommandLine(cls, classPath, installArgs)
+ win32serviceutil.HandleCommandLine(cls, None, installArgs)
@classmethod
def Start(cls, waitSecs = 30):
@@ -485,12 +483,11 @@ class WinService(win32serviceutil.ServiceFramework):
def CheckForStop(self):
#Check for stop event to be signaled
- return win32event.WAIT_OBJECT_0 == win32event.WaitForSingleObject(WinService._heventSvcStop, 1)
+ return win32event.WAIT_OBJECT_0 == win32event.WaitForSingleObject(self._heventSvcStop, 1)
def _StopOrWaitForChildProcessToFinish(self, childProcess):
#Wait for the child process to finish or for the stop event to be signaled
- if(win32event.WAIT_OBJECT_0 == win32event.WaitForMultipleObjects([WinService._heventSvcStop, childProcess._handle],
- False, win32event.INFINITE)):
+ if(win32event.WAIT_OBJECT_0 == win32event.WaitForMultipleObjects([self._heventSvcStop, childProcess._handle], False, win32event.INFINITE)):
# The OS only detaches the child process when the master process exits.
# We must kill it manually.
try:
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-common/src/main/python/ambari_commons/xml_utils.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/ambari_commons/xml_utils.py b/ambari-common/src/main/python/ambari_commons/xml_utils.py
deleted file mode 100644
index 31b2968..0000000
--- a/ambari-common/src/main/python/ambari_commons/xml_utils.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-#* Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import inspect
-import os
-
-class ConvertToXml:
- "Template class, allow to output fields in xml format"
- def getField(self):
- return [name for name, obj in inspect.getmembers(self)
- if not name.startswith("__") and not inspect.isroutine(obj)]
-
- def attributesToXml(self):
- result = ""
- listOfAttr = self.getField()
- for attrName in listOfAttr:
- result += "<" + attrName + ">"
- result += str(getattr(self, attrName))
- result += "</" + attrName + ">\n"
- return result
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-assembly/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/pom.xml b/ambari-metrics/ambari-metrics-assembly/pom.xml
index 0a47b8a..1e020cb 100644
--- a/ambari-metrics/ambari-metrics-assembly/pom.xml
+++ b/ambari-metrics/ambari-metrics-assembly/pom.xml
@@ -26,9 +26,9 @@
<version>0.1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
+
<artifactId>ambari-metrics-assembly</artifactId>
<packaging>pom</packaging>
- <version>0.1.0-SNAPSHOT</version>
<properties>
<collector.dir>${project.basedir}/../ambari-metrics-timelineservice</collector.dir>
@@ -48,33 +48,6 @@
<build>
<plugins>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.8</version>
- <executions>
- <execution>
- <id>parse-version</id>
- <phase>validate</phase>
- <goals>
- <goal>parse-version</goal>
- </goals>
- </execution>
- <execution>
- <id>regex-property</id>
- <goals>
- <goal>regex-property</goal>
- </goals>
- <configuration>
- <name>ambariVersion</name>
- <value>${project.version}</value>
- <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
- <replacement>$1.$2.$3</replacement>
- <failIfNoMatch>false</failIfNoMatch>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
@@ -121,7 +94,7 @@
<finalName>ambari-metrics-collector-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
- <descriptor>${assemblydescriptor.collector}</descriptor>
+ <descriptor>src/main/assembly/collector.xml</descriptor>
</descriptors>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
@@ -137,7 +110,7 @@
<finalName>ambari-metrics-monitor-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
- <descriptor>${assemblydescriptor.monitor}</descriptor>
+ <descriptor>src/main/assembly/monitor.xml</descriptor>
</descriptors>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
@@ -153,7 +126,7 @@
<finalName>ambari-metrics-hadoop-sink-${project.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
- <descriptor>${assemblydescriptor.sink}</descriptor>
+ <descriptor>src/main/assembly/sink.xml</descriptor>
</descriptors>
<tarLongFileMode>gnu</tarLongFileMode>
</configuration>
@@ -737,48 +710,6 @@
</plugins>
</build>
</profile>
- <profile>
- <id>windows</id>
- <activation>
- <os>
- <family>win</family>
- </os>
- </activation>
- <properties>
- <envClassifier>win</envClassifier>
- <dirsep>\</dirsep>
- <pathsep>;</pathsep>
- <executable.python>python</executable.python>
- <executable.shell>cmd</executable.shell>
- <fileextension.shell>cmd</fileextension.shell>
- <fileextension.dot.shell-default>.cmd</fileextension.dot.shell-default>
- <assemblydescriptor.collector>src/main/assembly/collector-windows.xml</assemblydescriptor.collector>
- <assemblydescriptor.monitor>src/main/assembly/monitor-windows.xml</assemblydescriptor.monitor>
- <assemblydescriptor.sink>src/main/assembly/sink-windows.xml</assemblydescriptor.sink>
- <packagingFormat>jar</packagingFormat>
- </properties>
- </profile>
- <profile>
- <id>linux</id>
- <activation>
- <os>
- <family>unix</family>
- </os>
- </activation>
- <properties>
- <envClassifier>linux</envClassifier>
- <dirsep>/</dirsep>
- <pathsep>:</pathsep>
- <executable.python>${project.basedir}/../ambari-common/src/main/unix/ambari-python-wrap</executable.python>
- <executable.shell>sh</executable.shell>
- <fileextension.shell>sh</fileextension.shell>
- <fileextension.dot.shell-default></fileextension.dot.shell-default>
- <assemblydescriptor.collector>src/main/assembly/collector.xml</assemblydescriptor.collector>
- <assemblydescriptor.monitor>src/main/assembly/monitor.xml</assemblydescriptor.monitor>
- <assemblydescriptor.sink>src/main/assembly/sink.xml</assemblydescriptor.sink>
- <packagingFormat>jar</packagingFormat>
- </properties>
- </profile>
</profiles>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
deleted file mode 100644
index 3faa085..0000000
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/collector-windows.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
- <id>collector</id>
- <formats>
- <format>dir</format>
- </formats>
- <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${collector.dir}/target/embedded/${hbase.folder}</directory>
- <outputDirectory>hbase</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>${collector.dir}/conf/windows</directory>
- <outputDirectory>/</outputDirectory>
- <includes>
- <include>ambari-metrics-collector.cmd</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${collector.dir}/conf/windows</directory>
- <outputDirectory>conf</outputDirectory>
- <includes>
- <include>ams.properties</include>
- <include>ams-env.cmd</include>
- <include>ams-site.xml</include>
- <include>log4j.properties</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${collector.dir}/target/lib</directory>
- <outputDirectory>lib</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>${collector.dir}/src/main/python</directory>
- <outputDirectory>/sbin</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${collector.dir}/src/main/python/ambari_metrics_collector</directory>
- <outputDirectory>/sbin/ambari_metrics_collector</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/../../ambari-common/src/main/python/ambari_commons</directory>
- <outputDirectory>/sbin/ambari_commons</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/../../ambari-common/src/main/python/ambari_commons/resources</directory>
- <outputDirectory>/sbin/ambari_commons/resources</outputDirectory>
- <includes>
- <include>*.json</include>
- </includes>
- </fileSet>
- </fileSets>
- <dependencySets>
- <dependencySet>
- <unpack>false</unpack>
- <outputDirectory>hbase/lib</outputDirectory>
- <useProjectArtifact>false</useProjectArtifact>
- <includes>
- <include>org.antlr:antlr*</include>
- <include>org.apache.phoenix:phoenix-core</include>
- </includes>
- </dependencySet>
- <dependencySet>
- <unpack>false</unpack>
- <outputDirectory>lib</outputDirectory>
- <useProjectArtifact>false</useProjectArtifact>
- <includes>
- <include>org.apache.ambari:ambari-metrics-timelineservice</include>
- </includes>
- </dependencySet>
- </dependencySets>
-</assembly>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
deleted file mode 100644
index 3b877a7..0000000
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor-windows.xml
+++ /dev/null
@@ -1,84 +0,0 @@
-<!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<assembly>
- <id>windows-dist</id>
- <formats>
- <format>dir</format>
- </formats>
- <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${monitor.dir}/src/main/python</directory>
- <outputDirectory>/sbin</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/../../ambari-common/src/main/python/ambari_commons</directory>
- <outputDirectory>/sbin/ambari_commons</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${project.basedir}/../../ambari-common/src/main/python/ambari_commons/resources</directory>
- <outputDirectory>/sbin/ambari_commons/resources</outputDirectory>
- <includes>
- <include>*.json</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${monitor.dir}/src/main/python/core</directory>
- <outputDirectory>/sbin/core</outputDirectory>
- <includes>
- <include>*.py</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${monitor.dir}/target/psutil_build</directory>
- <outputDirectory>/sbin/psutil/build</outputDirectory>
- <includes>
- <include>*.egg</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${monitor.dir}/conf/windows</directory>
- <outputDirectory>conf</outputDirectory>
- <includes>
- <include>metric_groups.conf</include>
- <include>metric_monitor.ini</include>
- </includes>
- </fileSet>
- <fileSet>
- <directory>${monitor.dir}/conf/windows</directory>
- <outputDirectory>/</outputDirectory>
- <includes>
- <include>ambari-metrics-monitor.cmd</include>
- </includes>
- </fileSet>
- </fileSets>
- <dependencySets>
- <dependencySet>
- <useProjectArtifact>false</useProjectArtifact>
- <excludes>
- <exclude>*</exclude>
- </excludes>
- </dependencySet>
- </dependencySets>
-</assembly>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor.xml
index 5944616..3513972 100644
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor.xml
+++ b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/monitor.xml
@@ -31,8 +31,8 @@
<outputDirectory>site-packages/resource_monitoring</outputDirectory>
</fileSet>
<fileSet>
- <directory>${monitor.dir}/conf/unix</directory>
<outputDirectory>conf</outputDirectory>
+ <directory>${monitor.dir}/conf/unix</directory>
<includes>
<include>metric_groups.conf</include>
<include>metric_monitor.ini</include>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-assembly/src/main/assembly/sink-windows.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/sink-windows.xml b/ambari-metrics/ambari-metrics-assembly/src/main/assembly/sink-windows.xml
deleted file mode 100644
index a65d6f2..0000000
--- a/ambari-metrics/ambari-metrics-assembly/src/main/assembly/sink-windows.xml
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
- <id>hadoop-sink</id>
- <formats>
- <format>dir</format>
- </formats>
- <includeBaseDirectory>false</includeBaseDirectory>
- <fileSets>
- <fileSet>
- <directory>${hadoop-sink.dir}/src/main/conf</directory>
- <outputDirectory>hadoop-sink/conf</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>${flume-sink.dir}/src/main/conf</directory>
- <outputDirectory>hadoop-sink/conf</outputDirectory>
- </fileSet>
- <fileSet>
- <directory>${storm-sink.dir}/src/main/conf</directory>
- <outputDirectory>hadoop-sink/conf</outputDirectory>
- </fileSet>
- </fileSets>
-
- <files>
- <file>
- <source>${hadoop-sink.dir}/target/ambari-metrics-hadoop-sink-with-common-${project.version}.jar</source>
- <outputDirectory>hadoop-sink</outputDirectory>
- </file>
- <file>
- <source>${flume-sink.dir}/target/ambari-metrics-flume-sink-with-common-${project.version}.jar</source>
- <outputDirectory>hadoop-sink</outputDirectory>
- </file>
- <file>
- <source>${storm-sink.dir}/target/ambari-metrics-storm-sink-with-common-${project.version}.jar</source>
- <outputDirectory>hadoop-sink</outputDirectory>
- </file>
- </files>
-
-
-
-
-</assembly>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/ambari-metrics-monitor.cmd
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/ambari-metrics-monitor.cmd b/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/ambari-metrics-monitor.cmd
deleted file mode 100644
index 115b6a6..0000000
--- a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/ambari-metrics-monitor.cmd
+++ /dev/null
@@ -1,17 +0,0 @@
-@rem Licensed to the Apache Software Foundation (ASF) under one or more
-@rem contributor license agreements. See the NOTICE file distributed with
-@rem this work for additional information regarding copyright ownership.
-@rem The ASF licenses this file to You under the Apache License, Version 2.0
-@rem (the "License"); you may not use this file except in compliance with
-@rem the License. You may obtain a copy of the License at
-@rem
-@rem http://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-
-@echo off
-python.exe -u %~dp0\sbin\amhm_service.py %* 2>&1
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_groups.conf
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_groups.conf b/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_groups.conf
deleted file mode 100644
index 6d5a62f..0000000
--- a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_groups.conf
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "host_metric_groups": {
- "all": {
- "collect_every": "10",
- "metrics": [
- {
- "name": "bytes_out",
- "value_threshold": "128"
- }
- ]
- }
- },
- "process_metric_groups": {
- "": {
- "collect_every": "15",
- "metrics": []
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_monitor.ini
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_monitor.ini b/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_monitor.ini
deleted file mode 100644
index bc2b461..0000000
--- a/ambari-metrics/ambari-metrics-host-monitoring/conf/windows/metric_monitor.ini
+++ /dev/null
@@ -1,30 +0,0 @@
-;
-; Licensed to the Apache Software Foundation (ASF) under one
-; or more contributor license agreements. See the NOTICE file
-; distributed with this work for additional information
-; regarding copyright ownership. The ASF licenses this file
-; to you under the Apache License, Version 2.0 (the
-; "License"); you may not use this file except in compliance
-; with the License. You may obtain a copy of the License at
-;
-; http://www.apache.org/licenses/LICENSE-2.0
-;
-; Unless required by applicable law or agreed to in writing, software
-; distributed under the License is distributed on an "AS IS" BASIS,
-; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-; See the License for the specific language governing permissions and
-; limitations under the License.
-;
-
-[default]
-debug_level = INFO
-metrics_server = {{ams_collector_host_single}}:{{ams_collector_port}}
-enable_time_threshold = false
-enable_value_threshold = false
-
-[emitter]
-send_interval = 60
-
-[collector]
-collector_sleep_interval = 5
-max_queue_size = 5000
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/pom.xml b/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
index c2f322c..c213057 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
+++ b/ambari-metrics/ambari-metrics-host-monitoring/pom.xml
@@ -32,7 +32,6 @@
<resmonitor.install.dir>
/usr/lib/python2.6/site-packages/resource_monitoring
</resmonitor.install.dir>
- <final.name>${project.artifactId}-${project.version}</final.name>
</properties>
<build>
<plugins>
@@ -83,12 +82,55 @@
<version>3.0</version>
</plugin>
<plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <configuration>
+ <tarLongFileMode>gnu</tarLongFileMode>
+ <descriptors>
+ <descriptor>${project.basedir}/../../ambari-project/src/main/assemblies/empty.xml</descriptor>
+ </descriptors>
+ </configuration>
+ <executions>
+ <execution>
+ <id>build-tarball</id>
+ <phase>none</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-antrun-plugin</artifactId>
+ <version>1.7</version>
+ <executions>
+ <execution>
+ <id>psutils-compile</id>
+ <phase>process-test-classes</phase>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ <configuration>
+ <target name="psutils-compile">
+ <exec dir="${basedir}/src/main/python/psutil" executable="${project.basedir}/../../ambari-common/src/main/unix/ambari-python-wrap" failonerror="true">
+ <arg value="setup.py" />
+ <arg value="build" />
+ <arg value="--build-platlib" />
+ <arg value="${basedir}/target/psutil_build" />
+ </exec>
+ </target>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+
+ <plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<executions>
<execution>
<configuration>
- <executable>${executable.python}</executable>
+ <executable>${project.basedir}/../../ambari-common/src/main/unix/ambari-python-wrap</executable>
<workingDirectory>src/test/python</workingDirectory>
<arguments>
<argument>unitTests.py</argument>
@@ -111,8 +153,6 @@
<artifactId>apache-rat-plugin</artifactId>
<configuration>
<excludes>
- <exclude>conf/unix/metric_groups.conf</exclude>
- <exclude>conf/windows/metric_groups.conf</exclude>
<exclude>src/main/python/psutil/**</exclude>
<exclude>.pydevproject</exclude>
</excludes>
@@ -128,102 +168,4 @@
</plugin>
</plugins>
</build>
- <profiles>
- <profile>
- <id>windows</id>
- <activation>
- <os>
- <family>win</family>
- </os>
- </activation>
- <properties>
- <envClassifier>win</envClassifier>
- <dirsep>\</dirsep>
- <pathsep>;</pathsep>
- <executable.python>python</executable.python>
- <executable.shell>cmd</executable.shell>
- <fileextension.shell>cmd</fileextension.shell>
- <fileextension.dot.shell-default>.cmd</fileextension.dot.shell-default>
- <assemblydescriptor>src/main/assemblies/amhm-windows.xml</assemblydescriptor>
- <packagingFormat>jar</packagingFormat>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>psutils-compile</id>
- <phase>process-test-classes</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <target name="psutils-compile">
- <exec dir="${basedir}/src/main/python/psutil" executable="python" failonerror="true">
- <arg value="setup.py" />
- <arg value="bdist_egg" />
- <arg value="--bdist-dir" />
- <arg value="${basedir}/target/psutil_build_temp" />
- <arg value="--dist-dir" />
- <arg value="${basedir}/target/psutil_build" />
- </exec>
- </target>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- <profile>
- <id>linux</id>
- <activation>
- <os>
- <family>unix</family>
- </os>
- </activation>
- <properties>
- <envClassifier>linux</envClassifier>
- <dirsep>/</dirsep>
- <pathsep>:</pathsep>
- <executable.python>${project.basedir}/../../ambari-common/src/main/unix/ambari-python-wrap</executable.python>
- <executable.shell>sh</executable.shell>
- <fileextension.shell>sh</fileextension.shell>
- <fileextension.dot.shell-default></fileextension.dot.shell-default>
- <assemblydescriptor>src/main/assemblies/empty.xml</assemblydescriptor>
- <packagingFormat>jar</packagingFormat>
- </properties>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-antrun-plugin</artifactId>
- <version>1.7</version>
- <executions>
- <execution>
- <id>psutils-compile</id>
- <phase>process-test-classes</phase>
- <goals>
- <goal>run</goal>
- </goals>
- <configuration>
- <target name="psutils-compile">
- <exec dir="${basedir}/src/main/python/psutil" executable="python" failonerror="true">
- <arg value="setup.py" />
- <arg value="build" />
- <arg value="--build-platlib" />
- <arg value="${basedir}/target/psutil_build" />
- </exec>
- </target>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
</project>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
deleted file mode 100644
index 0f8daab..0000000
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/amhm_service.py
+++ /dev/null
@@ -1,231 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-import glob
-
-import optparse
-import os
-import sys
-
-from ambari_commons.ambari_service import AmbariService
-from ambari_commons.exceptions import FatalException, NonFatalException
-from ambari_commons.logging_utils import print_warning_msg, print_error_msg, print_info_msg
-from ambari_commons.os_utils import search_file, run_os_command
-from ambari_commons.os_windows import SvcStatusCallback
-from core.config_reader import SERVER_OUT_FILE, SERVICE_USERNAME_KEY, SERVICE_PASSWORD_KEY, \
- SETUP_ACTION, START_ACTION, STOP_ACTION, RESTART_ACTION, STATUS_ACTION
-from core.stop_handler import bind_signal_handlers, StopHandler
-from main import server_process_main
-
-
-#
-# Windows-specific service implementation. This class will be instantiated directly by pythonservice.exe.
-#
-class AMHostMonitoringService(AmbariService):
- AmbariService._svc_name_ = "AmbariMetricsHostMonitoring"
- AmbariService._svc_display_name_ = "Ambari Metrics Host Monitoring"
- AmbariService._svc_description_ = "Ambari Metrics Host Monitoring Service"
-
- AmbariService._AdjustServiceVersion()
-
- # Adds the necessary script dir to the Python's modules path.
- # Modify this as the deployed product's dir structure changes.
- def _adjustPythonPath(self, current_dir):
- python_path = os.path.join(current_dir, "sbin")
- sys.path.insert(0, python_path)
- pass
-
- def SvcDoRun(self):
- scmStatus = SvcStatusCallback(self)
-
- self.redirect_output_streams()
-
- stopHandler = StopHandler(AMHostMonitoringService._heventSvcStop)
- bind_signal_handlers(stopHandler)
-
- AMHostMonitoringService.set_ctrl_c_handler(ctrlHandler)
-
- server_process_main(stopHandler, scmStatus)
- pass
-
- def _InitOptionsParser(self):
- return init_options_parser()
-
- def redirect_output_streams(self):
- self._RedirectOutputStreamsToFile(SERVER_OUT_FILE)
- pass
-
-
-def ctrlHandler(ctrlType):
- AMHostMonitoringService.DefCtrlCHandler()
- return True
-
-
-def svcsetup():
- AMHostMonitoringService.set_ctrl_c_handler(ctrlHandler)
- # we don't save password between 'setup' runs, so we can't run Install every time. We run 'setup' only if user and
- # password provided or if service not installed
- if (SERVICE_USERNAME_KEY in os.environ and SERVICE_PASSWORD_KEY in os.environ):
- AMHostMonitoringService.Install(username=os.environ[SERVICE_USERNAME_KEY], password=os.environ[SERVICE_PASSWORD_KEY])
- elif AMHostMonitoringService.QueryStatus() == "not installed":
- AMHostMonitoringService.Install()
- pass
-
-
-#
-# Starts the Ambari Metrics Collector. The server can start as a service or standalone process.
-# args:
-# options.is_process = True - start the server as a process. For now, there is no restrictions for the number of
-# server instances that can run like this.
-# options.is_process = False - start the server in normal mode, as a Windows service. If the Ambari Metrics Collector
-# is not registered as a service, the function fails. By default, only one instance of the service can
-# possibly run.
-#
-def start(options):
- AMHostMonitoringService.set_ctrl_c_handler(ctrlHandler)
-
- if options.is_process:
- #Run as a normal process. Invoke the ServiceMain directly.
- stopHandler = StopHandler(AMHostMonitoringService._heventSvcStop)
- bind_signal_handlers(stopHandler)
- server_process_main(stopHandler)
- else:
- AMHostMonitoringService.Start()
-
-#
-# Stops the Ambari Metrics Collector. Ineffective when the server is started as a standalone process.
-#
-def stop():
- AMHostMonitoringService.Stop()
-
-#
-# Prints the Ambari Metrics Collector service status.
-#
-def svcstatus(options):
- options.exit_message = None
-
- statusStr = AMHostMonitoringService.QueryStatus()
- print "Ambari Metrics Collector is " + statusStr
-
-
-def init_options_parser():
- parser = optparse.OptionParser(usage="usage: %prog action [options]", )
- parser.add_option('-d', '--debug', action="store_true", dest='debug', default=False,
- help="Start Ambari Metrics Host Monitoring in debug mode")
- parser.add_option('-p', '--process', action="store_true", dest='is_process', default=False,
- help="Start Ambari Metrics Host Monitoring as a normal process, not as a service")
-
- # --help reserved for help
- return parser
-
-def find_python_exe_path():
- paths = "." + os.pathsep + os.environ["PATH"]
-
- # Find python.exe by attempting to load it as a resource dll
- python_path = search_file("python.exe", paths)
- return os.path.dirname(python_path)
-
-
-def find_psutil_egg():
- abs_subdir = os.path.join(os.getcwd(), "sbin", "psutil", "build")
- egg_files = glob.glob(os.path.join(abs_subdir, "psutil*-win-amd64.egg"))
- if egg_files is None or len(egg_files) == 0:
- err = "Unable to find the expected psutil egg file in {0}. " \
- "Verify that the installation carried out correctly.".format(abs_subdir)
- raise FatalException(1, err)
- if len(egg_files) > 1:
- err = "Multiple psutil egg files found in {0}".format(abs_subdir)
- print_warning_msg(err)
- #Return the latest
- return egg_files[len(egg_files) - 1]
-
-
-def setup_psutil():
- python_exe_path = find_python_exe_path()
- egg_file = find_psutil_egg()
- cmd = [os.path.join(python_exe_path, "Scripts", "easy_install"), "--upgrade", egg_file]
-
- retval, std_out, std_err = run_os_command(cmd)
- if std_err is not None and std_err != '':
- print_warning_msg(std_err)
- print_info_msg(std_out)
- if 0 != retval:
- err = "Psutil egg installation failed. Exit code={0}, err output={1}".format(retval, std_err)
- raise FatalException(1, err)
-
- # Now the egg should be installed in the site_packages dir
-
-def win_main():
- parser = init_options_parser()
- (options, args) = parser.parse_args()
-
- options.warnings = []
- options.exit_message = None
-
- if options.debug:
- sys.frozen = 'windows_exe' # Fake py2exe so we can debug
-
- if len(args) == 0:
- print parser.print_help()
- parser.error("No action entered")
-
- action = args[0]
-
- try:
- if action == SETUP_ACTION:
- setup_psutil()
- svcsetup()
- elif action == START_ACTION:
- start(options)
- elif action == STOP_ACTION:
- stop()
- elif action == RESTART_ACTION:
- stop()
- start(options)
- elif action == STATUS_ACTION:
- svcstatus(options)
- else:
- parser.error("Invalid action")
-
- if options.warnings:
- for warning in options.warnings:
- print_warning_msg(warning)
- pass
- options.exit_message = "Ambari Metrics Host Monitoring '%s' completed with warnings." % action
- pass
- except FatalException as e:
- if e.reason is not None:
- print_error_msg("Exiting with exit code {0}. \nREASON: {1}".format(e.code, e.reason))
- sys.exit(e.code)
- except NonFatalException as e:
- options.exit_message = "Ambari Metrics Host Monitoring '%s' completed with warnings." % action
- if e.reason is not None:
- print_warning_msg(e.reason)
-
- if options.exit_message is not None:
- print options.exit_message
-
- sys.exit(0)
-
-if __name__ == "__main__":
- try:
- win_main()
- except (KeyboardInterrupt, EOFError):
- print("\nAborting ... Keyboard Interrupt.")
- sys.exit(1)
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
index f607ec1..996120f 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/__init__.py
@@ -19,9 +19,8 @@ limitations under the License.
"""
import os, sys
-
path = os.path.abspath(__file__)
-path = os.path.normpath(os.path.join(os.path.dirname(path), "..", "psutil", "build"))
+path = os.path.join(os.path.dirname(os.path.dirname(path)), "psutil/build/")
for dir in os.walk(path).next()[1]:
if 'lib' in dir:
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
index 463c98c..daabf37 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/config_reader.py
@@ -22,67 +22,10 @@ import ConfigParser
import StringIO
import json
import os
-from ambari_commons import OSConst
-from ambari_commons.os_family_impl import OsFamilyImpl
-
-
-#
-# Abstraction for OS-dependent configuration defaults
-#
-class ConfigDefaults(object):
- def get_config_file_path(self):
- pass
- def get_metric_file_path(self):
- pass
-
-@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)
-class ConfigDefaultsWindows(ConfigDefaults):
- def __init__(self):
- self._CONFIG_FILE_PATH = "conf\\metric_monitor.ini"
- self._METRIC_FILE_PATH = "conf\\metric_groups.conf"
- pass
-
- def get_config_file_path(self):
- return self._CONFIG_FILE_PATH
- def get_metric_file_path(self):
- return self._METRIC_FILE_PATH
-
-@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT)
-class ConfigDefaultsLinux(ConfigDefaults):
- def __init__(self):
- self._CONFIG_FILE_PATH = "/etc/ambari-metrics-monitor/conf/metric_monitor.ini"
- self._METRIC_FILE_PATH = "/etc/ambari-metrics-monitor/conf/metric_groups.conf"
- pass
-
- def get_config_file_path(self):
- return self._CONFIG_FILE_PATH
- def get_metric_file_path(self):
- return self._METRIC_FILE_PATH
-
-configDefaults = ConfigDefaults()
-
config = ConfigParser.RawConfigParser()
-
-CONFIG_FILE_PATH = configDefaults.get_config_file_path()
-METRIC_FILE_PATH = configDefaults.get_metric_file_path()
-
-OUT_DIR = os.path.join(os.sep, "var", "log", "ambari-metrics-host-monitoring")
-SERVER_OUT_FILE = OUT_DIR + os.sep + "ambari-metrics-host-monitoring.out"
-SERVER_LOG_FILE = OUT_DIR + os.sep + "ambari-metrics-host-monitoring.log"
-
-PID_DIR = os.path.join(os.sep, "var", "run", "ambari-metrics-host-monitoring")
-PID_OUT_FILE = PID_DIR + os.sep + "ambari-metrics-host-monitoring.pid"
-EXITCODE_OUT_FILE = PID_DIR + os.sep + "ambari-metrics-host-monitoring.exitcode"
-
-SERVICE_USERNAME_KEY = "TMP_AMHM_USERNAME"
-SERVICE_PASSWORD_KEY = "TMP_AMHM_PASSWORD"
-
-SETUP_ACTION = "setup"
-START_ACTION = "start"
-STOP_ACTION = "stop"
-RESTART_ACTION = "restart"
-STATUS_ACTION = "status"
+CONFIG_FILE_PATH = "/etc/ambari-metrics-monitor/conf/metric_monitor.ini"
+METRIC_FILE_PATH = "/etc/ambari-metrics-monitor/conf/metric_groups.conf"
config_content = """
[default]
@@ -153,11 +96,6 @@ class Configuration:
self.metric_groups = json.load(open(METRIC_FILE_PATH))
else:
print 'No metric configs found at {0}'.format(METRIC_FILE_PATH)
- self.metric_groups = \
- {
- 'host_metric_groups': [],
- 'process_metric_groups': []
- }
pass
def getConfig(self):
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/controller.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/controller.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/controller.py
index e0ef804..51f0980 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/controller.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/controller.py
@@ -33,7 +33,7 @@ logger = logging.getLogger()
class Controller(threading.Thread):
- def __init__(self, config, stop_handler):
+ def __init__(self, config):
# Process initialization code
threading.Thread.__init__(self)
logger.debug('Initializing Controller thread.')
@@ -48,42 +48,27 @@ class Controller(threading.Thread):
self.metric_collector = MetricsCollector(self.event_queue, self.application_metric_map)
self.server_url = config.get_server_address()
self.sleep_interval = config.get_collector_sleep_interval()
- self._stop_handler = stop_handler
self.initialize_events_cache()
- self.emitter = Emitter(self.config, self.application_metric_map, stop_handler)
- self._t = None
+ self.emitter = Emitter(self.config, self.application_metric_map)
def run(self):
logger.info('Running Controller thread: %s' % threading.currentThread().getName())
-
- self.start_emitter()
-
- # Wake every 5 seconds to push events to the queue
+ # Wake every 5 seconds to push events to the queue
while True:
if (self.event_queue.full()):
logger.warn('Event Queue full!! Suspending further collections.')
else:
self.enqueque_events()
pass
- #Wait for the service stop event instead of sleeping blindly
- if 0 == self._stop_handler.wait(self.sleep_interval):
- logger.info('Shutting down Controller thread')
- break
-
- if not self._t is None:
- self._t.cancel()
- self._t.join(5)
-
- #The emitter thread should have stopped by now, just ensure it has shut down properly
- self.emitter.join(5)
+ time.sleep(self.sleep_interval)
pass
# TODO: Optimize to not use Timer class and use the Queue instead
def enqueque_events(self):
# Queue events for up to a minute
for event in self.events_cache:
- self._t = Timer(event.get_collect_interval(), self.metric_collector.process_event, args=(event,))
- self._t.start()
+ t = Timer(event.get_collect_interval(), self.metric_collector.process_event, args=(event,))
+ t.start()
pass
def initialize_events_cache(self):
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/emitter.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/emitter.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/emitter.py
index c3fd543..be83250 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/emitter.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/emitter.py
@@ -32,13 +32,12 @@ class Emitter(threading.Thread):
"""
Wake up every send interval seconds and empty the application metric map.
"""
- def __init__(self, config, application_metric_map, stop_handler):
+ def __init__(self, config, application_metric_map):
threading.Thread.__init__(self)
logger.debug('Initializing Emitter thread.')
self.lock = threading.Lock()
self.collector_address = config.get_server_address()
self.send_interval = config.get_send_interval()
- self._stop_handler = stop_handler
self.application_metric_map = application_metric_map
def run(self):
@@ -46,16 +45,10 @@ class Emitter(threading.Thread):
while True:
try:
self.submit_metrics()
- #Wait for the service stop event instead of sleeping blindly
- if 0 == self._stop_handler.wait(self.send_interval):
- logger.info('Shutting down Emitter thread')
- return
+ time.sleep(self.send_interval)
except Exception, e:
logger.warn('Unable to emit events. %s' % str(e))
- #Wait for the service stop event instead of sleeping blindly
- if 0 == self._stop_handler.wait(self.RETRY_SLEEP_INTERVAL):
- logger.info('Shutting down Emitter thread - abort retry')
- return
+ time.sleep(self.RETRY_SLEEP_INTERVAL)
logger.info('Retrying emit after %s seconds.' % self.RETRY_SLEEP_INTERVAL)
pass
@@ -76,9 +69,7 @@ class Emitter(threading.Thread):
logger.warn("Error sending metrics to server. Retrying after {0} "
"...".format(self.RETRY_SLEEP_INTERVAL))
retry_count += 1
- #Wait for the service stop event instead of sleeping blindly
- if 0 == self._stop_handler.wait(self.RETRY_SLEEP_INTERVAL):
- return
+ time.sleep(self.RETRY_SLEEP_INTERVAL)
pass
pass
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py
deleted file mode 100644
index bfb6957..0000000
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/core/stop_handler.py
+++ /dev/null
@@ -1,138 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import logging
-import os
-import signal
-import threading
-import traceback
-
-from ambari_commons import OSConst, OSCheck
-from ambari_commons.exceptions import FatalException
-from ambari_commons.os_family_impl import OsFamilyImpl
-
-
-logger = logging.getLogger()
-
-_handler = None
-
-
-class StopHandler(object):
- def set_stop(self):
- pass
-
- def wait(self, timeout=None):
- return -1
-
-
-#
-# Windows implementation
-#
-@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)
-class StopHandlerWindows(StopHandler):
- def __init__(self, stopEvent=None):
- import win32event
- # Event used to gracefully stop the process
- if stopEvent is None:
- # Allow standalone testing
- self._heventStop = win32event.CreateEvent(None, 0, 0, None)
- else:
- # Allow one unique event per process
- self._heventStop = stopEvent
-
- def set_stop(self):
- import win32event
- win32event.SetEvent(self._heventStop)
-
- def wait(self, timeout=None):
- '''
- :param timeout: Time to wait, in seconds.
- :return: 0 == stop event signaled, -1 = timeout
- '''
- import win32event
-
- if timeout is None:
- timeout = win32event.INFINITE
- else:
- timeout = timeout * 1000
-
- result = win32event.WaitForSingleObject(self._heventStop, timeout)
- if(win32event.WAIT_OBJECT_0 != result and win32event.WAIT_TIMEOUT != result):
- raise FatalException(-1, "Error waiting for stop event: " + str(result))
- if (win32event.WAIT_TIMEOUT == result):
- return -1
- logger.info("Stop event received")
- return result # 0 -> stop
-
-
-#
-# Linux implementation
-#
-def signal_handler(signum, frame):
- global _handler
- _handler.set_stop()
-
-def debug(sig, frame):
- """Interrupt running process, and provide a python prompt for
- interactive debugging."""
- d = {'_frame': frame} # Allow access to frame object.
- d.update(frame.f_globals) # Unless shadowed by global
- d.update(frame.f_locals)
-
- message = "Signal received : entering python shell.\nTraceback:\n"
- message += ''.join(traceback.format_stack(frame))
- logger.info(message)
-
-
-@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT)
-class StopHandlerLinux(StopHandler):
- def __init__(self, stopEvent=None):
- # Event used to gracefully stop the process
- if stopEvent is None:
- # Allow standalone testing
- self.stop_event = threading.Event()
- else:
- # Allow one unique event per process
- self.stop_event = stopEvent
-
- def set_stop(self):
- self.stop_event.set()
-
- def wait(self, timeout=None):
- # Stop process when stop event received
- if self.stop_event.wait(timeout):
- logger.info("Stop event received")
- return 0
- # Timeout
- return -1
-
-
-def bind_signal_handlers(new_handler=None):
- if OSCheck.get_os_family() != OSConst.WINSRV_FAMILY:
- signal.signal(signal.SIGINT, signal_handler)
- signal.signal(signal.SIGTERM, signal_handler)
- signal.signal(signal.SIGUSR1, debug)
-
- if new_handler is None:
- global _handler
- _handler = StopHandler()
- else:
- _handler = new_handler
- return _handler
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/main.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/main.py b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/main.py
index 37e77e5..09ae7e4 100644
--- a/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/main.py
+++ b/ambari-metrics/ambari-metrics-host-monitoring/src/main/python/main.py
@@ -18,67 +18,27 @@ See the License for the specific language governing permissions and
limitations under the License.
'''
+import core
+from core.controller import Controller
+from core.config_reader import Configuration
import logging
-import os
+import signal
import sys
-from ambari_commons.os_utils import remove_file
-
-from core.controller import Controller
-from core.config_reader import Configuration, PID_OUT_FILE, SERVER_LOG_FILE, SERVER_OUT_FILE
-from core.stop_handler import bind_signal_handlers
-
-
logger = logging.getLogger()
-
-def save_pid(pid, pidfile):
- """
- Save pid to pidfile.
- """
- try:
- pfile = open(pidfile, "w")
- pfile.write("%s\n" % pid)
- except IOError:
- pass
- finally:
- try:
- pfile.close()
- except:
- pass
-
-
def main(argv=None):
# Allow Ctrl-C
- stop_handler = bind_signal_handlers()
-
- server_process_main(stop_handler)
-
-def server_process_main(stop_handler, scmStatus=None):
- if scmStatus is not None:
- scmStatus.reportStartPending()
-
- save_pid(os.getpid(), PID_OUT_FILE)
+ signal.signal(signal.SIGINT, signal.SIG_DFL)
config = Configuration()
- controller = Controller(config, stop_handler)
-
+ controller = Controller(config)
+
_init_logging(config)
-
+
logger.info('Starting Server RPC Thread: %s' % ' '.join(sys.argv))
controller.start()
-
- print "Server out at: " + SERVER_OUT_FILE
- print "Server log at: " + SERVER_LOG_FILE
-
- if scmStatus is not None:
- scmStatus.reportStarted()
-
- #The controller thread finishes when the stop event is signaled
- controller.join()
-
- remove_file(PID_OUT_FILE)
- pass
+ controller.start_emitter()
def _init_logging(config):
_levels = {
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ambari-metrics-collector.cmd
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ambari-metrics-collector.cmd b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ambari-metrics-collector.cmd
deleted file mode 100644
index 2cfff6f..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ambari-metrics-collector.cmd
+++ /dev/null
@@ -1,17 +0,0 @@
-@rem Licensed to the Apache Software Foundation (ASF) under one or more
-@rem contributor license agreements. See the NOTICE file distributed with
-@rem this work for additional information regarding copyright ownership.
-@rem The ASF licenses this file to You under the Apache License, Version 2.0
-@rem (the "License"); you may not use this file except in compliance with
-@rem the License. You may obtain a copy of the License at
-@rem
-@rem http://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-
-@echo off
-python.exe -u %~dp0\sbin\main.py %* 2>&1
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-env.cmd
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-env.cmd b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-env.cmd
deleted file mode 100644
index af99fc4..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-env.cmd
+++ /dev/null
@@ -1,16 +0,0 @@
-@rem Licensed to the Apache Software Foundation (ASF) under one or more
-@rem contributor license agreements. See the NOTICE file distributed with
-@rem this work for additional information regarding copyright ownership.
-@rem The ASF licenses this file to You under the Apache License, Version 2.0
-@rem (the "License"); you may not use this file except in compliance with
-@rem the License. You may obtain a copy of the License at
-@rem
-@rem http://www.apache.org/licenses/LICENSE-2.0
-@rem
-@rem Unless required by applicable law or agreed to in writing, software
-@rem distributed under the License is distributed on an "AS IS" BASIS,
-@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-@rem See the License for the specific language governing permissions and
-@rem limitations under the License.
-
-@rem Set environment variables here.
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-site.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-site.xml b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-site.xml
deleted file mode 100644
index c2dd100..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams-site.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
- ~ Licensed to the Apache Software Foundation (ASF) under one
- ~ or more contributor license agreements. See the NOTICE file
- ~ distributed with this work for additional information
- ~ regarding copyright ownership. The ASF licenses this file
- ~ to you under the Apache License, Version 2.0 (the
- ~ "License"); you may not use this file except in compliance
- ~ with the License. You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<configuration>
-
- <!-- Site specific AMS configuration properties -->
-
-</configuration>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams.properties
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams.properties b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams.properties
deleted file mode 100644
index 3df60b0..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/ams.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/conf/windows/log4j.properties
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/log4j.properties b/ambari-metrics/ambari-metrics-timelineservice/conf/windows/log4j.properties
deleted file mode 100644
index d354a27..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/conf/windows/log4j.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# Define some default values that can be overridden by system properties
-# Root logger option
-log4j.rootLogger=INFO,file
-
-# Direct log messages to a log file
-log4j.appender.file=org.apache.log4j.RollingFileAppender
-log4j.appender.file.File=\\var\\log\\ambari-metrics-collector\\ambari-metrics-collector.log
-log4j.appender.file.MaxFileSize=80MB
-log4j.appender.file.MaxBackupIndex=60
-log4j.appender.file.layout=org.apache.log4j.PatternLayout
-log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p [%t] %c{1}:%L - %m%n
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/pom.xml
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/pom.xml b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
index 46504a7..196d7a1 100644
--- a/ambari-metrics/ambari-metrics-timelineservice/pom.xml
+++ b/ambari-metrics/ambari-metrics-timelineservice/pom.xml
@@ -42,33 +42,6 @@
<build>
<plugins>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>build-helper-maven-plugin</artifactId>
- <version>1.8</version>
- <executions>
- <execution>
- <id>parse-version</id>
- <phase>validate</phase>
- <goals>
- <goal>parse-version</goal>
- </goals>
- </execution>
- <execution>
- <id>regex-property</id>
- <goals>
- <goal>regex-property</goal>
- </goals>
- <configuration>
- <name>ambariVersion</name>
- <value>${project.version}</value>
- <regex>^([0-9]+)\.([0-9]+)\.([0-9]+)(\.|-).*</regex>
- <replacement>$1.$2.$3</replacement>
- <failIfNoMatch>false</failIfNoMatch>
- </configuration>
- </execution>
- </executions>
- </plugin>
- <plugin>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
@@ -86,10 +59,6 @@
</executions>
</plugin>
<plugin>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.0</version>
- </plugin>
- <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.7</version>
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py
deleted file mode 100644
index 38e1a5e..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-#!/usr/bin/env python
-"""
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-
-Ambari Agent
-
-"""
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py
deleted file mode 100644
index 8e00762..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/properties.py
+++ /dev/null
@@ -1,223 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import os
-import re
-import time
-
-#Apache License Header
-ASF_LICENSE_HEADER = '''
-# Copyright 2011 The Apache Software Foundation
-#
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-'''
-
-# A Python replacement for java.util.Properties
-# Based on http://code.activestate.com/recipes
-# /496795-a-python-replacement-for-javautilproperties/
-class Properties(object):
- def __init__(self, props=None):
- self._props = {}
- self._origprops = {}
- self._keymap = {}
-
- self.othercharre = re.compile(r'(?<!\\)(\s*\=)|(?<!\\)(\s*\:)')
- self.othercharre2 = re.compile(r'(\s*\=)|(\s*\:)')
- self.bspacere = re.compile(r'\\(?!\s$)')
-
- def __parse(self, lines):
- lineno = 0
- i = iter(lines)
- for line in i:
- lineno += 1
- line = line.strip()
- if not line:
- continue
- if line[0] == '#':
- continue
- escaped = False
- sepidx = -1
- flag = 0
- m = self.othercharre.search(line)
- if m:
- first, last = m.span()
- start, end = 0, first
- flag = 1
- wspacere = re.compile(r'(?<![\\\=\:])(\s)')
- else:
- if self.othercharre2.search(line):
- wspacere = re.compile(r'(?<![\\])(\s)')
- start, end = 0, len(line)
- m2 = wspacere.search(line, start, end)
- if m2:
- first, last = m2.span()
- sepidx = first
- elif m:
- first, last = m.span()
- sepidx = last - 1
- while line[-1] == '\\':
- nextline = i.next()
- nextline = nextline.strip()
- lineno += 1
- line = line[:-1] + nextline
- if sepidx != -1:
- key, value = line[:sepidx], line[sepidx + 1:]
- else:
- key, value = line, ''
- self.process_pair(key, value)
-
- def process_pair(self, key, value):
- oldkey = key
- oldvalue = value
- keyparts = self.bspacere.split(key)
- strippable = False
- lastpart = keyparts[-1]
- if lastpart.find('\\ ') != -1:
- keyparts[-1] = lastpart.replace('\\', '')
- elif lastpart and lastpart[-1] == ' ':
- strippable = True
- key = ''.join(keyparts)
- if strippable:
- key = key.strip()
- oldkey = oldkey.strip()
- oldvalue = self.unescape(oldvalue)
- value = self.unescape(value)
- self._props[key] = None if value is None else value.strip()
- if self._keymap.has_key(key):
- oldkey = self._keymap.get(key)
- self._origprops[oldkey] = None if oldvalue is None else oldvalue.strip()
- else:
- self._origprops[oldkey] = None if oldvalue is None else oldvalue.strip()
- self._keymap[key] = oldkey
-
- def unescape(self, value):
- newvalue = value
- if not value is None:
- newvalue = value.replace('\:', ':')
- newvalue = newvalue.replace('\=', '=')
- return newvalue
-
- def removeOldProp(self, key):
- if self._origprops.has_key(key):
- del self._origprops[key]
- pass
-
- def removeProp(self, key):
- if self._props.has_key(key):
- del self._props[key]
- pass
-
- def load(self, stream):
- if type(stream) is not file:
- raise TypeError, 'Argument should be a file object!'
- if stream.mode != 'r':
- raise ValueError, 'Stream should be opened in read-only mode!'
- try:
- self.fileName = os.path.abspath(stream.name)
- lines = stream.readlines()
- self.__parse(lines)
- except IOError:
- raise
-
- def get_property(self, key):
- return self._props.get(key, '')
-
- def propertyNames(self):
- return self._props.keys()
-
- def getPropertyDict(self):
- return self._props
-
- def __getitem__(self, name):
- return self.get_property(name)
-
- def __getattr__(self, name):
- try:
- return self.__dict__[name]
- except KeyError:
- if hasattr(self._props, name):
- return getattr(self._props, name)
-
- def sort_props(self):
- tmp_props = {}
- for key in sorted(self._props.iterkeys()):
- tmp_props[key] = self._props[key]
- self._props = tmp_props
- pass
-
- def sort_origprops(self):
- tmp_props = self._origprops.copy()
- self._origprops.clear()
- for key in sorted(tmp_props.iterkeys()):
- self._origprops[key] = tmp_props[key]
- pass
-
- def store(self, out, header=""):
- """ Write the properties list to the stream 'out' along
- with the optional 'header' """
- if out.mode[0] != 'w':
- raise ValueError, 'Steam should be opened in write mode!'
- try:
- out.write(''.join(('#', ASF_LICENSE_HEADER, '\n')))
- out.write(''.join(('#', header, '\n')))
- # Write timestamp
- tstamp = time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime())
- out.write(''.join(('#', tstamp, '\n')))
- # Write properties from the pristine dictionary
- for prop, val in self._origprops.items():
- if val is not None:
- out.write(''.join((prop, '=', val, '\n')))
- out.close()
- except IOError:
- raise
-
- def store_ordered(self, out, header=""):
- """ Write the properties list to the stream 'out' along
- with the optional 'header' """
- if out.mode[0] != 'w':
- raise ValueError, 'Steam should be opened in write mode!'
- try:
- out.write(''.join(('#', ASF_LICENSE_HEADER, '\n')))
- out.write(''.join(('#', header, '\n')))
- # Write timestamp
- tstamp = time.strftime('%a %b %d %H:%M:%S %Z %Y', time.localtime())
- out.write(''.join(('#', tstamp, '\n')))
- # Write properties from the pristine dictionary
- for key in sorted(self._origprops.iterkeys()):
- val = self._origprops[key]
- if val is not None:
- out.write(''.join((key, '=', val, '\n')))
- out.close()
- except IOError:
- raise
http://git-wip-us.apache.org/repos/asf/ambari/blob/ab8c0e35/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py
----------------------------------------------------------------------
diff --git a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py b/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py
deleted file mode 100644
index 5e73e24..0000000
--- a/ambari-metrics/ambari-metrics-timelineservice/src/main/python/ambari_metrics_collector/serviceConfiguration.py
+++ /dev/null
@@ -1,152 +0,0 @@
-#!/usr/bin/env python
-
-'''
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-'''
-
-import os
-
-from ambari_commons.exceptions import FatalException
-from ambari_commons.logging_utils import print_info_msg
-from ambari_commons.os_utils import search_file
-from ambari_metrics_collector.properties import Properties
-
-
-AMS_CONF_VAR = "AMS_CONF"
-DEFAULT_CONF_DIR = "conf"
-AMS_PROPERTIES_FILE = "ams.properties"
-
-JAVA_HOME = "JAVA_HOME"
-
-DEBUG_MODE_KEY = "ams.server.debug"
-SUSPEND_START_MODE_KEY = "ams.server.debug.suspend.start"
-
-SERVER_OUT_FILE_KEY = "ams.output.file.path"
-
-DEFAULT_LIBS_DIR = "lib"
-
-EMBEDDED_HBASE_MASTER_SERVICE = "ams_hbase_master"
-
-EMBEDDED_HBASE_SUBDIR = "hbase"
-
-JAVA_EXE_SUBPATH = "bin\\java.exe"
-
-JAVA_HEAP_MAX_DEFAULT = "-Xmx1g"
-
-HADOOP_HEAPSIZE = "HADOOP_HEAPSIZE"
-HADOOP_HEAPSIZE_DEFAULT = "1024"
-
-DEBUG_MODE = False
-SUSPEND_START_MODE = False
-
-OUT_DIR = "\\var\\log\\ambari-metrics-collector"
-SERVER_OUT_FILE = OUT_DIR + "\\ambari-metrics-collector.out"
-SERVER_LOG_FILE = OUT_DIR + "\\ambari-metrics-collector.log"
-
-PID_DIR = "\\var\\run\\ambari-metrics-collector"
-PID_OUT_FILE = PID_DIR + "\\ambari-metrics-collector.pid"
-EXITCODE_OUT_FILE = PID_DIR + "\\ambari-metrics-collector.exitcode"
-
-SERVICE_USERNAME_KEY = "TMP_AMC_USERNAME"
-SERVICE_PASSWORD_KEY = "TMP_AMC_PASSWORD"
-
-SETUP_ACTION = "setup"
-START_ACTION = "start"
-STOP_ACTION = "stop"
-RESTART_ACTION = "restart"
-STATUS_ACTION = "status"
-
-def get_conf_dir():
- try:
- conf_dir = os.environ[AMS_CONF_VAR]
- except KeyError:
- conf_dir = DEFAULT_CONF_DIR
- return conf_dir
-
-def find_properties_file():
- conf_file = search_file(AMS_PROPERTIES_FILE, get_conf_dir())
- if conf_file is None:
- err = 'File %s not found in search path $%s: %s' % (AMS_PROPERTIES_FILE,
- AMS_CONF_VAR, get_conf_dir())
- print err
- raise FatalException(1, err)
- else:
- print_info_msg('Loading properties from ' + conf_file)
- return conf_file
-
-# Load AMC properties and return dict with values
-def get_properties():
- conf_file = find_properties_file()
-
- properties = None
- try:
- properties = Properties()
- properties.load(open(conf_file))
- except (Exception), e:
- print 'Could not read "%s": %s' % (conf_file, e)
- return -1
- return properties
-
-def get_value_from_properties(properties, key, default=""):
- try:
- value = properties.get_property(key)
- if not value:
- value = default
- except:
- return default
- return value
-
-def get_java_cp():
- conf_dir = get_conf_dir()
- conf_dir = os.path.abspath(conf_dir) + os.pathsep + os.path.join(os.path.abspath(DEFAULT_LIBS_DIR), "*")
- if conf_dir.find(' ') != -1:
- conf_dir = '"' + conf_dir + '"'
- return conf_dir
-
-def find_jdk():
- try:
- java_home = os.environ[JAVA_HOME]
- except Exception:
- # No JAVA_HOME set
- err = "ERROR: JAVA_HOME is not set and could not be found."
- raise FatalException(1, err)
-
- if not os.path.isdir(java_home):
- err = "ERROR: JAVA_HOME {0} does not exist.".format(java_home)
- raise FatalException(1, err)
-
- java_exe = os.path.join(java_home, JAVA_EXE_SUBPATH)
- if not os.path.isfile(java_exe):
- err = "ERROR: {0} is not executable.".format(java_exe)
- raise FatalException(1, err)
-
- return java_home
-
-def get_java_exe_path():
- jdk_path = find_jdk()
- java_exe = os.path.join(jdk_path, JAVA_EXE_SUBPATH)
- return java_exe
-
-def build_jvm_args():
- try:
- # check envvars which might override default args
- hadoop_heapsize = os.environ[HADOOP_HEAPSIZE]
- java_heap_max = "-Xms{0}m".format(hadoop_heapsize)
- except Exception:
- java_heap_max = JAVA_HEAP_MAX_DEFAULT
-
- return java_heap_max