#!/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.

"""

from functions import calc_xmn_from_xms
from resource_management import *
import status_params

# server configurations
config = Script.get_config()

java64_home = config['hostLevelParams']['java_home']
hbase_root = config['configurations']['global']['app_root']
hbase_instance_name = config['configurations']['global']['hbase_instance_name']
hbase_user = status_params.hbase_user
user_group = config['configurations']['global']['user_group']

pid_dir = status_params.pid_dir
tmp_dir = config['configurations']['hbase-site']['hbase.tmp.dir']
local_dir = substitute_vars(config['configurations']['hbase-site']['hbase.local.dir'],
                            config['configurations']['hbase-site'])
conf_dir = format("{hbase_root}/conf")
log_dir = config['configurations']['global']['app_log_dir']
input_conf_files_dir = config['configurations']['global']['app_input_conf_dir']

hbase_hdfs_root_dir = config['configurations']['hbase-site']['hbase.rootdir']

"""
Read various ports
"""
rest_port = default("/configurations/global/hbase_rest_port", 1700)
thrift_port = default("/configurations/global/hbase_thrift_port", 9090)
thrift2_port = default("/configurations/global/hbase_thrift2_port", 9091)
thrift_info_port = default("/configurations/global/hbase_info_thrift_port", 9095)
thrift2_info_port = default("/configurations/global/hbase_info_thrift2_port", 9096)

"""
Compute or read various heap sizes
"""
master_heapsize = config['configurations']['hbase-env']['hbase_master_heapsize']
regionserver_heapsize = config['configurations']['hbase-env']['hbase_regionserver_heapsize']
regionserver_xmn_max = config['configurations']['hbase-env']['hbase_regionserver_xmn_max']
regionserver_xmn_percent = config['configurations']['hbase-env']['hbase_regionserver_xmn_ratio']
regionserver_xmn_size = calc_xmn_from_xms(regionserver_heapsize, regionserver_xmn_percent, regionserver_xmn_max)

restserver_heapsize =  default("/configurations/hbase-env/hbase_restserver_heapsize", "512m")
thriftserver_heapsize =  default("/configurations/hbase-env/hbase_thriftserver_heapsize", "512m")
thrift2server_heapsize =  default("/configurations/hbase-env/hbase_thrift2server_heapsize", "512m")

hbase_env_sh_template = config['configurations']['hbase-env']['content']
java_library_path = config['configurations']['global']['java_library_path']
hbase_additional_cp = config['configurations']['global']['hbase_additional_cp']

# log4j.properties
if (('hbase-log4j' in config['configurations']) and ('content' in config['configurations']['hbase-log4j'])):
  log4j_props = config['configurations']['hbase-log4j']['content']
else:
  log4j_props = None