AmbariConfig.py 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259
  1. #!/usr/bin/env python
  2. '''
  3. Licensed to the Apache Software Foundation (ASF) under one
  4. or more contributor license agreements. See the NOTICE file
  5. distributed with this work for additional information
  6. regarding copyright ownership. The ASF licenses this file
  7. to you under the Apache License, Version 2.0 (the
  8. "License"); you may not use this file except in compliance
  9. with the License. You may obtain a copy of the License at
  10. http://www.apache.org/licenses/LICENSE-2.0
  11. Unless required by applicable law or agreed to in writing, software
  12. distributed under the License is distributed on an "AS IS" BASIS,
  13. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  14. See the License for the specific language governing permissions and
  15. limitations under the License.
  16. '''
  17. import ConfigParser
  18. import StringIO
  19. config = ConfigParser.RawConfigParser()
  20. content = """
  21. [server]
  22. hostname=localhost
  23. url_port=8440
  24. secured_url_port=8441
  25. [agent]
  26. prefix=/tmp/ambari-agent
  27. tmp_dir=/tmp/ambari-agent/tmp # For test purposes
  28. data_cleanup_interval=86400
  29. data_cleanup_max_age=2592000
  30. ping_port=8670
  31. cache_dir=/var/lib/ambari-agent/cache
  32. [services]
  33. [python]
  34. custom_actions_dir = /var/lib/ambari-agent/resources/custom_actions
  35. [command]
  36. maxretries=2
  37. sleepBetweenRetries=1
  38. [security]
  39. keysdir=/tmp/ambari-agent
  40. server_crt=ca.crt
  41. passphrase_env_var_name=AMBARI_PASSPHRASE
  42. [heartbeat]
  43. state_interval = 6
  44. dirs=/etc/hadoop,/etc/hadoop/conf,/var/run/hadoop,/var/log/hadoop
  45. rpms=glusterfs,openssl,wget,net-snmp,ntpd,ganglia,nagios,glusterfs
  46. log_lines_count=300
  47. """
  48. s = StringIO.StringIO(content)
  49. config.readfp(s)
  50. imports = [
  51. "hdp/manifests/*.pp",
  52. "hdp-hadoop/manifests/*.pp",
  53. "hdp-hbase/manifests/*.pp",
  54. "hdp-zookeeper/manifests/*.pp",
  55. "hdp-oozie/manifests/*.pp",
  56. "hdp-pig/manifests/*.pp",
  57. "hdp-sqoop/manifests/*.pp",
  58. "hdp-templeton/manifests/*.pp",
  59. "hdp-hive/manifests/*.pp",
  60. "hdp-hcat/manifests/*.pp",
  61. "hdp-mysql/manifests/*.pp",
  62. "hdp-monitor-webserver/manifests/*.pp",
  63. "hdp-repos/manifests/*.pp"
  64. ]
  65. rolesToClass = {
  66. 'GLUSTERFS': 'hdp-hadoop::glusterfs',
  67. 'GLUSTERFS_CLIENT': 'hdp-hadoop::glusterfs_client',
  68. 'GLUSTERFS_SERVICE_CHECK': 'hdp-hadoop::glusterfs_service_check',
  69. 'NAMENODE': 'hdp-hadoop::namenode',
  70. 'DATANODE': 'hdp-hadoop::datanode',
  71. 'SECONDARY_NAMENODE': 'hdp-hadoop::snamenode',
  72. 'JOBTRACKER': 'hdp-hadoop::jobtracker',
  73. 'TASKTRACKER': 'hdp-hadoop::tasktracker',
  74. 'RESOURCEMANAGER': 'hdp-yarn::resourcemanager',
  75. 'NODEMANAGER': 'hdp-yarn::nodemanager',
  76. 'HISTORYSERVER': 'hdp-yarn::historyserver',
  77. 'YARN_CLIENT': 'hdp-yarn::yarn_client',
  78. 'HDFS_CLIENT': 'hdp-hadoop::client',
  79. 'MAPREDUCE_CLIENT': 'hdp-hadoop::client',
  80. 'MAPREDUCE2_CLIENT': 'hdp-yarn::mapreducev2_client',
  81. 'ZOOKEEPER_SERVER': 'hdp-zookeeper',
  82. 'ZOOKEEPER_CLIENT': 'hdp-zookeeper::client',
  83. 'HBASE_MASTER': 'hdp-hbase::master',
  84. 'HBASE_REGIONSERVER': 'hdp-hbase::regionserver',
  85. 'HBASE_CLIENT': 'hdp-hbase::client',
  86. 'PIG': 'hdp-pig',
  87. 'SQOOP': 'hdp-sqoop',
  88. 'OOZIE_SERVER': 'hdp-oozie::server',
  89. 'OOZIE_CLIENT': 'hdp-oozie::client',
  90. 'HIVE_CLIENT': 'hdp-hive::client',
  91. 'HCAT': 'hdp-hcat',
  92. 'HIVE_SERVER': 'hdp-hive::server',
  93. 'HIVE_METASTORE': 'hdp-hive::metastore',
  94. 'MYSQL_SERVER': 'hdp-mysql::server',
  95. 'WEBHCAT_SERVER': 'hdp-templeton::server',
  96. 'DASHBOARD': 'hdp-dashboard',
  97. 'NAGIOS_SERVER': 'hdp-nagios::server',
  98. 'GANGLIA_SERVER': 'hdp-ganglia::server',
  99. 'GANGLIA_MONITOR': 'hdp-ganglia::monitor',
  100. 'HTTPD': 'hdp-monitor-webserver',
  101. 'HUE_SERVER': 'hdp-hue::server',
  102. 'HDFS_SERVICE_CHECK': 'hdp-hadoop::hdfs::service_check',
  103. 'MAPREDUCE_SERVICE_CHECK': 'hdp-hadoop::mapred::service_check',
  104. 'MAPREDUCE2_SERVICE_CHECK': 'hdp-yarn::mapred2::service_check',
  105. 'ZOOKEEPER_SERVICE_CHECK': 'hdp-zookeeper::zookeeper::service_check',
  106. 'ZOOKEEPER_QUORUM_SERVICE_CHECK': 'hdp-zookeeper::quorum::service_check',
  107. 'HBASE_SERVICE_CHECK': 'hdp-hbase::hbase::service_check',
  108. 'HIVE_SERVICE_CHECK': 'hdp-hive::hive::service_check',
  109. 'HCAT_SERVICE_CHECK': 'hdp-hcat::hcat::service_check',
  110. 'OOZIE_SERVICE_CHECK': 'hdp-oozie::oozie::service_check',
  111. 'PIG_SERVICE_CHECK': 'hdp-pig::pig::service_check',
  112. 'SQOOP_SERVICE_CHECK': 'hdp-sqoop::sqoop::service_check',
  113. 'WEBHCAT_SERVICE_CHECK': 'hdp-templeton::templeton::service_check',
  114. 'DASHBOARD_SERVICE_CHECK': 'hdp-dashboard::dashboard::service_check',
  115. 'DECOMMISSION_DATANODE': 'hdp-hadoop::hdfs::decommission',
  116. 'HUE_SERVICE_CHECK': 'hdp-hue::service_check',
  117. 'RESOURCEMANAGER_SERVICE_CHECK': 'hdp-yarn::resourcemanager::service_check',
  118. 'HISTORYSERVER_SERVICE_CHECK': 'hdp-yarn::historyserver::service_check',
  119. 'TEZ_CLIENT': 'hdp-tez::tez_client',
  120. 'YARN_SERVICE_CHECK': 'hdp-yarn::yarn::service_check',
  121. 'FLUME_SERVER': 'hdp-flume',
  122. 'JOURNALNODE': 'hdp-hadoop::journalnode',
  123. 'ZKFC': 'hdp-hadoop::zkfc'
  124. }
  125. serviceStates = {
  126. 'START': 'running',
  127. 'INSTALL': 'installed_and_configured',
  128. 'STOP': 'stopped'
  129. }
  130. servicesToPidNames = {
  131. 'GLUSTERFS' : 'glusterd.pid$',
  132. 'NAMENODE': 'hadoop-{USER}-namenode.pid$',
  133. 'SECONDARY_NAMENODE': 'hadoop-{USER}-secondarynamenode.pid$',
  134. 'DATANODE': 'hadoop-{USER}-datanode.pid$',
  135. 'JOBTRACKER': 'hadoop-{USER}-jobtracker.pid$',
  136. 'TASKTRACKER': 'hadoop-{USER}-tasktracker.pid$',
  137. 'RESOURCEMANAGER': 'yarn-{USER}-resourcemanager.pid$',
  138. 'NODEMANAGER': 'yarn-{USER}-nodemanager.pid$',
  139. 'HISTORYSERVER': 'mapred-{USER}-historyserver.pid$',
  140. 'JOURNALNODE': 'hadoop-{USER}-journalnode.pid$',
  141. 'ZKFC': 'hadoop-{USER}-zkfc.pid$',
  142. 'OOZIE_SERVER': 'oozie.pid',
  143. 'ZOOKEEPER_SERVER': 'zookeeper_server.pid',
  144. 'FLUME_SERVER': 'flume-node.pid',
  145. 'TEMPLETON_SERVER': 'templeton.pid',
  146. 'NAGIOS_SERVER': 'nagios.pid',
  147. 'GANGLIA_SERVER': 'gmetad.pid',
  148. 'GANGLIA_MONITOR': 'gmond.pid',
  149. 'HBASE_MASTER': 'hbase-{USER}-master.pid',
  150. 'HBASE_REGIONSERVER': 'hbase-{USER}-regionserver.pid',
  151. 'HCATALOG_SERVER': 'webhcat.pid',
  152. 'KERBEROS_SERVER': 'kadmind.pid',
  153. 'HIVE_SERVER': 'hive-server.pid',
  154. 'HIVE_METASTORE': 'hive.pid',
  155. 'MYSQL_SERVER': 'mysqld.pid',
  156. 'HUE_SERVER': '/var/run/hue/supervisor.pid',
  157. 'WEBHCAT_SERVER': 'webhcat.pid',
  158. }
  159. #Each service, which's pid depends on user should provide user mapping
  160. servicesToLinuxUser = {
  161. 'NAMENODE': 'hdfs_user',
  162. 'SECONDARY_NAMENODE': 'hdfs_user',
  163. 'DATANODE': 'hdfs_user',
  164. 'JOURNALNODE': 'hdfs_user',
  165. 'ZKFC': 'hdfs_user',
  166. 'JOBTRACKER': 'mapred_user',
  167. 'TASKTRACKER': 'mapred_user',
  168. 'RESOURCEMANAGER': 'yarn_user',
  169. 'NODEMANAGER': 'yarn_user',
  170. 'HISTORYSERVER': 'mapred_user',
  171. 'HBASE_MASTER': 'hbase_user',
  172. 'HBASE_REGIONSERVER': 'hbase_user',
  173. }
  174. pidPathesVars = [
  175. {'var' : 'glusterfs_pid_dir_prefix',
  176. 'defaultValue' : '/var/run'},
  177. {'var' : 'hadoop_pid_dir_prefix',
  178. 'defaultValue' : '/var/run/hadoop'},
  179. {'var' : 'hadoop_pid_dir_prefix',
  180. 'defaultValue' : '/var/run/hadoop'},
  181. {'var' : 'ganglia_runtime_dir',
  182. 'defaultValue' : '/var/run/ganglia/hdp'},
  183. {'var' : 'hbase_pid_dir',
  184. 'defaultValue' : '/var/run/hbase'},
  185. {'var' : '',
  186. 'defaultValue' : '/var/run/nagios'},
  187. {'var' : 'zk_pid_dir',
  188. 'defaultValue' : '/var/run/zookeeper'},
  189. {'var' : 'oozie_pid_dir',
  190. 'defaultValue' : '/var/run/oozie'},
  191. {'var' : 'hcat_pid_dir',
  192. 'defaultValue' : '/var/run/webhcat'},
  193. {'var' : 'hive_pid_dir',
  194. 'defaultValue' : '/var/run/hive'},
  195. {'var' : 'mysqld_pid_dir',
  196. 'defaultValue' : '/var/run/mysqld'},
  197. {'var' : 'hcat_pid_dir',
  198. 'defaultValue' : '/var/run/webhcat'},
  199. {'var' : 'yarn_pid_dir_prefix',
  200. 'defaultValue' : '/var/run/hadoop-yarn'},
  201. {'var' : 'mapred_pid_dir_prefix',
  202. 'defaultValue' : '/var/run/hadoop-mapreduce'},
  203. ]
  204. class AmbariConfig:
  205. def getConfig(self):
  206. global config
  207. return config
  208. def getImports(self):
  209. global imports
  210. return imports
  211. def getRolesToClass(self):
  212. global rolesToClass
  213. return rolesToClass
  214. def getServiceStates(self):
  215. global serviceStates
  216. return serviceStates
  217. def getServicesToPidNames(self):
  218. global servicesToPidNames
  219. return servicesToPidNames
  220. def getPidPathesVars(self):
  221. global pidPathesVars
  222. return pidPathesVars
  223. def setConfig(customConfig):
  224. global config
  225. config = customConfig
  226. def main():
  227. print config
  228. if __name__ == "__main__":
  229. main()