blob: 5e73e241c6d93c37ef3a1a84ca343784b1519139 [file] [log] [blame]
#!/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