#!/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 resource_management import *
import status_params

# server configurations
config = Script.get_config()

app_root = config['configurations']['global']['app_root']
app_name = config['clusterName']
conf_dir = format("{app_root}/conf")
storm_user = config['configurations']['global']['app_user']
log_dir = config['configurations']['global']['app_log_dir']
pid_dir = status_params.pid_dir
local_dir = config['configurations']['storm-site']['storm.local.dir']
user_group = config['configurations']['global']['user_group']
java64_home = config['hostLevelParams']['java_home']
nimbus_host = config['configurations']['storm-site']['nimbus.host']
nimbus_port = config['configurations']['storm-site']['nimbus.thrift.port']
rest_api_conf_file = format("{conf_dir}/config.yaml")
rest_lib_dir = format("{app_root}/external/storm-rest")
storm_bin = format("{app_root}/bin/storm.py")
storm_env_sh_template = config['configurations']['storm-env']['content']

metric_collector_host = default('/configurations/global/metric_collector_host', '')
metric_collector_port = default('/configurations/global/metric_collector_port', '')
metric_collector_lib = default('/configurations/global/metric_collector_lib', '')
metric_collector_app_id = format("{app_name}")

has_metric_collector = 1
if not metric_collector_lib:
  has_metric_collector = 0

security_enabled = config['configurations']['global']['security_enabled']

if security_enabled:
  _hostname_lowercase = config['hostname'].lower()
  _kerberos_domain = config['configurations']['storm-env']['kerberos_domain']
  _storm_client_principal_name = config['configurations']['storm-env']['storm_client_principal_name']
  _storm_server_principal_name = config['configurations']['storm-env']['storm_server_principal_name']

  storm_jaas_client_principal = _storm_client_principal_name.replace('_HOST', _hostname_lowercase)
  storm_client_keytab_path = config['configurations']['storm-env']['storm_client_keytab']
  storm_jaas_server_principal = _storm_server_principal_name.replace('_HOST',nimbus_host.lower())
  storm_jaas_stormclient_servicename = storm_jaas_server_principal.split("/")[0]
  storm_server_keytab_path = config['configurations']['storm-env']['storm_server_keytab']
  kinit_path_local = functions.get_kinit_path(["/usr/bin", "/usr/kerberos/bin", "/usr/sbin"])

metric_collector_sink_jar = "/usr/lib/storm/lib/ambari-metrics-storm-sink*.jar"
storm_lib_dir = format("{app_root}/lib")
