test_oozie_server.py 64 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300
  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 json
  18. from mock.mock import MagicMock, call, patch
  19. from stacks.utils.RMFTestCase import *
  20. from resource_management.core import shell
  21. from resource_management.core.exceptions import Fail
  22. from resource_management.libraries import functions
  23. from resource_management.libraries.providers.hdfs_resource import WebHDFSUtil
  24. import hashlib
  25. import tempfile
  26. md5_mock = MagicMock()
  27. md5_mock.hexdigest.return_value = "abc123hash"
  28. @patch("platform.linux_distribution", new = MagicMock(return_value="Linux"))
  29. @patch.object(hashlib, "md5", new=MagicMock(return_value=md5_mock))
  30. @patch.object(WebHDFSUtil, "run_command", new=MagicMock(return_value={}))
  31. @patch.object(tempfile, "gettempdir", new=MagicMock(return_value="/tmp"))
  32. class TestOozieServer(RMFTestCase):
  33. COMMON_SERVICES_PACKAGE_DIR = "OOZIE/4.0.0.2.0/package"
  34. STACK_VERSION = "2.0.6"
  35. UPGRADE_STACK_VERSION = "2.2"
  36. def setUp(self):
  37. self.maxDiff = None
  38. def test_configure_default(self):
  39. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  40. classname = "OozieServer",
  41. command = "configure",
  42. config_file="default.json",
  43. hdp_stack_version = self.STACK_VERSION,
  44. target = RMFTestCase.TARGET_COMMON_SERVICES
  45. )
  46. self.assert_configure_default()
  47. self.assertNoMoreResources()
  48. def test_configure_default_mysql(self):
  49. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  50. classname = "OozieServer",
  51. command = "configure",
  52. config_file="default_oozie_mysql.json",
  53. hdp_stack_version = self.STACK_VERSION,
  54. target = RMFTestCase.TARGET_COMMON_SERVICES
  55. )
  56. self.assertResourceCalled('HdfsResource', '/user/oozie',
  57. security_enabled = False,
  58. hadoop_bin_dir = '/usr/bin',
  59. keytab = UnknownConfigurationMock(),
  60. kinit_path_local = '/usr/bin/kinit',
  61. user = 'hdfs',
  62. owner = 'oozie',
  63. hadoop_conf_dir = '/etc/hadoop/conf',
  64. type = 'directory',
  65. action = ['create_on_execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name=UnknownConfigurationMock(), default_fs='hdfs://c6401.ambari.apache.org:8020',
  66. mode = 0775,
  67. )
  68. self.assertResourceCalled('HdfsResource', None,
  69. security_enabled = False,
  70. hadoop_bin_dir = '/usr/bin',
  71. keytab = UnknownConfigurationMock(),
  72. kinit_path_local = '/usr/bin/kinit',
  73. user = 'hdfs',
  74. action = ['execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name=UnknownConfigurationMock(), default_fs='hdfs://c6401.ambari.apache.org:8020',
  75. hadoop_conf_dir = '/etc/hadoop/conf',
  76. )
  77. self.assertResourceCalled('Directory', '/etc/oozie/conf',
  78. owner = 'oozie',
  79. group = 'hadoop',
  80. recursive = True,
  81. )
  82. self.assertResourceCalled('XmlConfig', 'oozie-site.xml',
  83. group = 'hadoop',
  84. conf_dir = '/etc/oozie/conf',
  85. mode = 0664,
  86. configuration_attributes = {u'final': {u'oozie.service.CallableQueueService.queue.size': u'true',
  87. u'oozie.service.PurgeService.purge.interval': u'true'}},
  88. owner = 'oozie',
  89. configurations = self.getConfig()['configurations']['oozie-site'],
  90. )
  91. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-env.sh',
  92. content = InlineTemplate(self.getConfig()['configurations']['oozie-env']['content']),
  93. owner = 'oozie',
  94. )
  95. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-log4j.properties',
  96. content = 'log4jproperties\nline2',
  97. owner = 'oozie',
  98. group = 'hadoop',
  99. mode = 0644,
  100. )
  101. self.assertResourceCalled('File', '/etc/oozie/conf/adminusers.txt',
  102. owner = 'oozie',
  103. group = 'hadoop',
  104. )
  105. self.assertResourceCalled('File', '/usr/lib/ambari-agent/DBConnectionVerification.jar',
  106. content = DownloadSource('http://c6401.ambari.apache.org:8080/resources/DBConnectionVerification.jar'),
  107. )
  108. self.assertResourceCalled('File', '/etc/oozie/conf/hadoop-config.xml',
  109. owner = 'oozie',
  110. group = 'hadoop',
  111. )
  112. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-default.xml',
  113. owner = 'oozie',
  114. group = 'hadoop',
  115. )
  116. self.assertResourceCalled('Directory', '/etc/oozie/conf/action-conf',
  117. owner = 'oozie',
  118. group = 'hadoop',
  119. )
  120. self.assertResourceCalled('File', '/etc/oozie/conf/action-conf/hive.xml',
  121. owner = 'oozie',
  122. group = 'hadoop',
  123. )
  124. self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
  125. action = ['delete'],
  126. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  127. )
  128. self.assertResourceCalled('Directory', '/usr/lib/oozie//var/tmp/oozie',
  129. owner = 'oozie',
  130. cd_access = 'a',
  131. group = 'hadoop',
  132. recursive = True,
  133. mode = 0755,
  134. )
  135. self.assertResourceCalled('Directory', '/var/run/oozie',
  136. owner = 'oozie',
  137. cd_access = 'a',
  138. group = 'hadoop',
  139. recursive = True,
  140. mode = 0755,
  141. )
  142. self.assertResourceCalled('Directory', '/var/log/oozie',
  143. owner = 'oozie',
  144. cd_access = 'a',
  145. group = 'hadoop',
  146. recursive = True,
  147. mode = 0755,
  148. )
  149. self.assertResourceCalled('Directory', '/var/tmp/oozie',
  150. owner = 'oozie',
  151. cd_access = 'a',
  152. group = 'hadoop',
  153. recursive = True,
  154. mode = 0755,
  155. )
  156. self.assertResourceCalled('Directory', '/hadoop/oozie/data',
  157. owner = 'oozie',
  158. cd_access = 'a',
  159. group = 'hadoop',
  160. recursive = True,
  161. mode = 0755,
  162. )
  163. self.assertResourceCalled('Directory', '/var/lib/oozie',
  164. owner = 'oozie',
  165. cd_access = 'a',
  166. group = 'hadoop',
  167. recursive = True,
  168. mode = 0755,
  169. )
  170. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
  171. owner = 'oozie',
  172. cd_access = 'a',
  173. group = 'hadoop',
  174. recursive = True,
  175. mode = 0755,
  176. )
  177. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
  178. owner = 'oozie',
  179. cd_access = 'a',
  180. group = 'hadoop',
  181. recursive = True,
  182. mode = 0755,
  183. )
  184. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
  185. owner = 'oozie',
  186. recursive = True,
  187. group = 'hadoop',
  188. mode = 0755,
  189. cd_access = 'a',
  190. )
  191. self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
  192. recursive = True,
  193. )
  194. self.assertResourceCalled('Execute', ('tar', '-xvf', '/usr/lib/oozie/oozie-sharelib.tar.gz', '-C', '/usr/lib/oozie'),
  195. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]]",
  196. sudo = True,
  197. )
  198. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/lib/oozie/libext'),
  199. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  200. sudo = True,
  201. )
  202. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/lib/oozie/libext/ext-2.2.zip'),
  203. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  204. sudo = True,
  205. )
  206. self.assertResourceCalled('Execute', ('chown', '-RL', 'oozie:hadoop', '/var/lib/oozie/oozie-server/conf'),
  207. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  208. sudo = True,
  209. )
  210. self.assertResourceCalled('File', '/tmp/mysql-connector-java.jar',
  211. content = DownloadSource('http://c6401.ambari.apache.org:8080/resources//mysql-jdbc-driver.jar'),
  212. )
  213. self.assertResourceCalled('Execute', ('cp',
  214. '--remove-destination',
  215. '/tmp/mysql-connector-java.jar',
  216. '/usr/lib/oozie/libext/mysql-connector-java.jar'),
  217. path = ['/bin', '/usr/bin/'],
  218. sudo = True,
  219. )
  220. self.assertResourceCalled('File', '/usr/lib/oozie/libext/mysql-connector-java.jar',
  221. owner = 'oozie',
  222. group = 'hadoop',
  223. )
  224. self.assertResourceCalled('Execute', 'ambari-sudo.sh cp /usr/lib/falcon/oozie/ext/falcon-oozie-el-extension-*.jar /usr/lib/oozie/libext',
  225. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  226. )
  227. self.assertResourceCalled('Execute', 'ambari-sudo.sh chown oozie:hadoop /usr/lib/oozie/libext/falcon-oozie-el-extension-*.jar',
  228. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  229. )
  230. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
  231. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]] && test -f /usr/lib/oozie/.prepare_war_cmd && [[ `cat /usr/lib/oozie/.prepare_war_cmd` == 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ' ]]",
  232. user = 'oozie',
  233. )
  234. self.assertResourceCalled('File', '/usr/lib/oozie/.hashcode',
  235. content = 'abc123hash',
  236. mode = 0644,
  237. )
  238. self.assertResourceCalled('File', '/usr/lib/oozie/.prepare_war_cmd',
  239. content = 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
  240. mode = 0644,
  241. )
  242. self.assertResourceCalled('Execute', ('chown', '-R', 'oozie:hadoop', '/var/lib/oozie/oozie-server'),
  243. sudo = True,
  244. )
  245. @patch("os.path.isfile")
  246. def test_start_default(self, isfile_mock):
  247. isfile_mock.return_value = True
  248. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  249. classname = "OozieServer",
  250. command = "start",
  251. config_file="default.json",
  252. hdp_stack_version = self.STACK_VERSION,
  253. target = RMFTestCase.TARGET_COMMON_SERVICES
  254. )
  255. self.assert_configure_default()
  256. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/ooziedb.sh create -sqlfile oozie.sql -run',
  257. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  258. ignore_failures = True,
  259. user = 'oozie',
  260. )
  261. self.assertResourceCalled('Execute', 'hadoop --config /etc/hadoop/conf dfs -put /usr/lib/oozie/share /user/oozie',
  262. path = ['/usr/bin:/usr/bin'],
  263. user = 'oozie',
  264. )
  265. self.assertResourceCalled('HdfsResource', '/user/oozie/share',
  266. security_enabled = False,
  267. hadoop_bin_dir = '/usr/bin',
  268. keytab = UnknownConfigurationMock(),
  269. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  270. user = 'hdfs',
  271. hdfs_site = self.getConfig()['configurations']['hdfs-site'],
  272. kinit_path_local = '/usr/bin/kinit',
  273. principal_name = UnknownConfigurationMock(),
  274. recursive_chmod = True,
  275. action = ['create_on_execute'],
  276. hadoop_conf_dir = '/etc/hadoop/conf',
  277. type = 'directory',
  278. mode = 0755,
  279. )
  280. self.assertResourceCalled('HdfsResource', None,
  281. security_enabled = False,
  282. hadoop_bin_dir = '/usr/bin',
  283. keytab = UnknownConfigurationMock(),
  284. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  285. hdfs_site = self.getConfig()['configurations']['hdfs-site'],
  286. kinit_path_local = '/usr/bin/kinit',
  287. principal_name = UnknownConfigurationMock(),
  288. user = 'hdfs',
  289. action = ['execute'],
  290. hadoop_conf_dir = '/etc/hadoop/conf',
  291. )
  292. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-start.sh',
  293. environment = {'OOZIE_CONFIG': '/etc/oozie/conf'},
  294. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  295. user = 'oozie',
  296. )
  297. self.assertNoMoreResources()
  298. def test_stop_default(self):
  299. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  300. classname = "OozieServer",
  301. command = "stop",
  302. config_file="default.json",
  303. hdp_stack_version = self.STACK_VERSION,
  304. target = RMFTestCase.TARGET_COMMON_SERVICES
  305. )
  306. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-stop.sh',
  307. environment = {'OOZIE_CONFIG': '/etc/oozie/conf'},
  308. only_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  309. user = 'oozie',
  310. )
  311. self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
  312. action = ['delete'],
  313. )
  314. self.assertNoMoreResources()
  315. def test_configure_secured(self):
  316. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  317. classname = "OozieServer",
  318. command = "configure",
  319. config_file="secured.json",
  320. hdp_stack_version = self.STACK_VERSION,
  321. target = RMFTestCase.TARGET_COMMON_SERVICES
  322. )
  323. self.assert_configure_secured()
  324. self.assertNoMoreResources()
  325. @patch("os.path.isfile")
  326. def test_start_secured(self, isfile_mock):
  327. isfile_mock.return_value = True
  328. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  329. classname = "OozieServer",
  330. command = "start",
  331. config_file="secured.json",
  332. hdp_stack_version = self.STACK_VERSION,
  333. target = RMFTestCase.TARGET_COMMON_SERVICES
  334. )
  335. self.assert_configure_secured()
  336. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/ooziedb.sh create -sqlfile oozie.sql -run',
  337. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  338. ignore_failures = True,
  339. user = 'oozie',
  340. )
  341. self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/oozie.service.keytab oozie/c6402.ambari.apache.org@EXAMPLE.COM;',
  342. user = 'oozie',
  343. )
  344. self.assertResourceCalled('Execute', 'hadoop --config /etc/hadoop/conf dfs -put /usr/lib/oozie/share /user/oozie',
  345. path = ['/usr/bin:/usr/bin'],
  346. user = 'oozie',
  347. )
  348. self.assertResourceCalled('HdfsResource', '/user/oozie/share',
  349. security_enabled = True,
  350. hadoop_bin_dir = '/usr/bin',
  351. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  352. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  353. user = 'hdfs',
  354. hdfs_site = self.getConfig()['configurations']['hdfs-site'],
  355. kinit_path_local = '/usr/bin/kinit',
  356. principal_name = 'hdfs',
  357. recursive_chmod = True,
  358. action = ['create_on_execute'],
  359. hadoop_conf_dir = '/etc/hadoop/conf',
  360. type = 'directory',
  361. mode = 0755,
  362. )
  363. self.assertResourceCalled('HdfsResource', None,
  364. security_enabled = True,
  365. hadoop_bin_dir = '/usr/bin',
  366. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  367. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  368. hdfs_site = self.getConfig()['configurations']['hdfs-site'],
  369. kinit_path_local = '/usr/bin/kinit',
  370. principal_name = 'hdfs',
  371. user = 'hdfs',
  372. action = ['execute'],
  373. hadoop_conf_dir = '/etc/hadoop/conf',
  374. )
  375. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-start.sh',
  376. environment = {'OOZIE_CONFIG': '/etc/oozie/conf'},
  377. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  378. user = 'oozie',
  379. )
  380. self.assertNoMoreResources()
  381. def test_stop_secured(self):
  382. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  383. classname = "OozieServer",
  384. command = "stop",
  385. config_file="secured.json",
  386. hdp_stack_version = self.STACK_VERSION,
  387. target = RMFTestCase.TARGET_COMMON_SERVICES
  388. )
  389. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-stop.sh',
  390. environment = {'OOZIE_CONFIG': '/etc/oozie/conf'},
  391. only_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  392. user = 'oozie',
  393. )
  394. self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
  395. action = ['delete'],
  396. )
  397. self.assertNoMoreResources()
  398. def assert_configure_default(self):
  399. self.assertResourceCalled('HdfsResource', '/user/oozie',
  400. security_enabled = False,
  401. hadoop_conf_dir = '/etc/hadoop/conf',
  402. keytab = UnknownConfigurationMock(),
  403. kinit_path_local = '/usr/bin/kinit',
  404. user = 'hdfs',
  405. owner = 'oozie',
  406. hadoop_bin_dir = '/usr/bin',
  407. type = 'directory',
  408. action = ['create_on_execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name=UnknownConfigurationMock(), default_fs='hdfs://c6401.ambari.apache.org:8020',
  409. mode = 0775,
  410. )
  411. self.assertResourceCalled('HdfsResource', None,
  412. security_enabled = False,
  413. hadoop_bin_dir = '/usr/bin',
  414. keytab = UnknownConfigurationMock(),
  415. kinit_path_local = '/usr/bin/kinit',
  416. user = 'hdfs',
  417. action = ['execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name=UnknownConfigurationMock(), default_fs='hdfs://c6401.ambari.apache.org:8020',
  418. hadoop_conf_dir = '/etc/hadoop/conf',
  419. )
  420. self.assertResourceCalled('Directory', '/etc/oozie/conf',
  421. owner = 'oozie',
  422. group = 'hadoop',
  423. recursive = True
  424. )
  425. self.assertResourceCalled('XmlConfig', 'oozie-site.xml',
  426. owner = 'oozie',
  427. group = 'hadoop',
  428. mode = 0664,
  429. conf_dir = '/etc/oozie/conf',
  430. configurations = self.getConfig()['configurations']['oozie-site'],
  431. configuration_attributes = self.getConfig()['configuration_attributes']['oozie-site']
  432. )
  433. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-env.sh',
  434. owner = 'oozie',
  435. content = InlineTemplate(self.getConfig()['configurations']['oozie-env']['content'])
  436. )
  437. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-log4j.properties',
  438. owner = 'oozie',
  439. group = 'hadoop',
  440. mode = 0644,
  441. content = 'log4jproperties\nline2'
  442. )
  443. self.assertResourceCalled('File', '/etc/oozie/conf/adminusers.txt',
  444. owner = 'oozie',
  445. group = 'hadoop',
  446. )
  447. self.assertResourceCalled('File', '/etc/oozie/conf/hadoop-config.xml',
  448. owner = 'oozie',
  449. group = 'hadoop',
  450. )
  451. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-default.xml',
  452. owner = 'oozie',
  453. group = 'hadoop',
  454. )
  455. self.assertResourceCalled('Directory', '/etc/oozie/conf/action-conf',
  456. owner = 'oozie',
  457. group = 'hadoop',
  458. )
  459. self.assertResourceCalled('File', '/etc/oozie/conf/action-conf/hive.xml',
  460. owner = 'oozie',
  461. group = 'hadoop',
  462. )
  463. self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
  464. action = ['delete'],
  465. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  466. )
  467. self.assertResourceCalled('Directory', '/usr/lib/oozie//var/tmp/oozie',
  468. owner = 'oozie',
  469. group = 'hadoop',
  470. recursive = True,
  471. mode = 0755,
  472. cd_access='a'
  473. )
  474. self.assertResourceCalled('Directory', '/var/run/oozie',
  475. owner = 'oozie',
  476. group = 'hadoop',
  477. recursive = True,
  478. mode = 0755,
  479. cd_access='a'
  480. )
  481. self.assertResourceCalled('Directory', '/var/log/oozie',
  482. owner = 'oozie',
  483. group = 'hadoop',
  484. recursive = True,
  485. mode = 0755,
  486. cd_access='a'
  487. )
  488. self.assertResourceCalled('Directory', '/var/tmp/oozie',
  489. owner = 'oozie',
  490. group = 'hadoop',
  491. recursive = True,
  492. mode = 0755,
  493. cd_access='a'
  494. )
  495. self.assertResourceCalled('Directory', '/hadoop/oozie/data',
  496. owner = 'oozie',
  497. group = 'hadoop',
  498. recursive = True,
  499. mode = 0755,
  500. cd_access='a'
  501. )
  502. self.assertResourceCalled('Directory', '/var/lib/oozie',
  503. owner = 'oozie',
  504. group = 'hadoop',
  505. recursive = True,
  506. mode = 0755,
  507. cd_access='a'
  508. )
  509. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
  510. owner = 'oozie',
  511. group = 'hadoop',
  512. recursive = True,
  513. mode = 0755,
  514. cd_access='a'
  515. )
  516. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
  517. owner = 'oozie',
  518. group = 'hadoop',
  519. recursive = True,
  520. mode = 0755,
  521. cd_access='a'
  522. )
  523. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
  524. owner = 'oozie',
  525. group = 'hadoop',
  526. recursive = True,
  527. mode = 0755,
  528. cd_access='a'
  529. )
  530. self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
  531. recursive = True,
  532. )
  533. self.assertResourceCalled('Execute', ('tar', '-xvf', '/usr/lib/oozie/oozie-sharelib.tar.gz', '-C', '/usr/lib/oozie'),
  534. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]]",
  535. sudo = True,
  536. )
  537. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/lib/oozie/libext'),
  538. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  539. sudo = True,
  540. )
  541. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/lib/oozie/libext/ext-2.2.zip'),
  542. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  543. sudo = True,
  544. )
  545. self.assertResourceCalled('Execute', ('chown', '-RL', 'oozie:hadoop', '/var/lib/oozie/oozie-server/conf'),
  546. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  547. sudo = True,
  548. )
  549. self.assertResourceCalled('Execute', 'ambari-sudo.sh cp /usr/lib/falcon/oozie/ext/falcon-oozie-el-extension-*.jar /usr/lib/oozie/libext',
  550. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  551. )
  552. self.assertResourceCalled('Execute', 'ambari-sudo.sh chown oozie:hadoop /usr/lib/oozie/libext/falcon-oozie-el-extension-*.jar',
  553. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  554. )
  555. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
  556. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]] && test -f /usr/lib/oozie/.prepare_war_cmd && [[ `cat /usr/lib/oozie/.prepare_war_cmd` == 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ' ]]",
  557. user = 'oozie',
  558. )
  559. self.assertResourceCalled('File', '/usr/lib/oozie/.hashcode',
  560. content = 'abc123hash',
  561. mode = 0644,
  562. )
  563. self.assertResourceCalled('File', '/usr/lib/oozie/.prepare_war_cmd',
  564. content = 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war ',
  565. mode = 0644,
  566. )
  567. self.assertResourceCalled('Execute', ('chown', '-R', 'oozie:hadoop', '/var/lib/oozie/oozie-server'),
  568. sudo = True,
  569. )
  570. def assert_configure_secured(self):
  571. self.assertResourceCalled('HdfsResource', '/user/oozie',
  572. security_enabled = True,
  573. hadoop_conf_dir = '/etc/hadoop/conf',
  574. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  575. kinit_path_local = '/usr/bin/kinit',
  576. user = 'hdfs',
  577. owner = 'oozie',
  578. hadoop_bin_dir = '/usr/bin',
  579. type = 'directory',
  580. action = ['create_on_execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name='hdfs', default_fs='hdfs://c6401.ambari.apache.org:8020',
  581. mode = 0775,
  582. )
  583. self.assertResourceCalled('HdfsResource', None,
  584. security_enabled = True,
  585. hadoop_bin_dir = '/usr/bin',
  586. keytab = '/etc/security/keytabs/hdfs.headless.keytab',
  587. kinit_path_local = '/usr/bin/kinit',
  588. user = 'hdfs',
  589. action = ['execute'], hdfs_site=self.getConfig()['configurations']['hdfs-site'], principal_name='hdfs', default_fs='hdfs://c6401.ambari.apache.org:8020',
  590. hadoop_conf_dir = '/etc/hadoop/conf',
  591. )
  592. self.assertResourceCalled('Directory', '/etc/oozie/conf',
  593. owner = 'oozie',
  594. group = 'hadoop',
  595. recursive = True
  596. )
  597. self.assertResourceCalled('XmlConfig', 'oozie-site.xml',
  598. owner = 'oozie',
  599. group = 'hadoop',
  600. mode = 0664,
  601. conf_dir = '/etc/oozie/conf',
  602. configurations = self.getConfig()['configurations']['oozie-site'],
  603. configuration_attributes = self.getConfig()['configuration_attributes']['oozie-site']
  604. )
  605. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-env.sh',
  606. owner = 'oozie',
  607. content = InlineTemplate(self.getConfig()['configurations']['oozie-env']['content'])
  608. )
  609. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-log4j.properties',
  610. owner = 'oozie',
  611. group = 'hadoop',
  612. mode = 0644,
  613. content = 'log4jproperties\nline2'
  614. )
  615. self.assertResourceCalled('File', '/etc/oozie/conf/adminusers.txt',
  616. owner = 'oozie',
  617. group = 'hadoop',
  618. )
  619. self.assertResourceCalled('File', '/etc/oozie/conf/hadoop-config.xml',
  620. owner = 'oozie',
  621. group = 'hadoop',
  622. )
  623. self.assertResourceCalled('File', '/etc/oozie/conf/oozie-default.xml',
  624. owner = 'oozie',
  625. group = 'hadoop',
  626. )
  627. self.assertResourceCalled('Directory', '/etc/oozie/conf/action-conf',
  628. owner = 'oozie',
  629. group = 'hadoop',
  630. )
  631. self.assertResourceCalled('File', '/etc/oozie/conf/action-conf/hive.xml',
  632. owner = 'oozie',
  633. group = 'hadoop',
  634. )
  635. self.assertResourceCalled('File', '/var/run/oozie/oozie.pid',
  636. action = ['delete'],
  637. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  638. )
  639. self.assertResourceCalled('Directory', '/usr/lib/oozie//var/tmp/oozie',
  640. owner = 'oozie',
  641. group = 'hadoop',
  642. recursive = True,
  643. mode = 0755,
  644. cd_access='a'
  645. )
  646. self.assertResourceCalled('Directory', '/var/run/oozie',
  647. owner = 'oozie',
  648. group = 'hadoop',
  649. recursive = True,
  650. mode = 0755,
  651. cd_access='a'
  652. )
  653. self.assertResourceCalled('Directory', '/var/log/oozie',
  654. owner = 'oozie',
  655. group = 'hadoop',
  656. recursive = True,
  657. mode = 0755,
  658. cd_access='a'
  659. )
  660. self.assertResourceCalled('Directory', '/var/tmp/oozie',
  661. owner = 'oozie',
  662. group = 'hadoop',
  663. recursive = True,
  664. mode = 0755,
  665. cd_access='a'
  666. )
  667. self.assertResourceCalled('Directory', '/hadoop/oozie/data',
  668. owner = 'oozie',
  669. group = 'hadoop',
  670. recursive = True,
  671. mode = 0755,
  672. cd_access='a'
  673. )
  674. self.assertResourceCalled('Directory', '/var/lib/oozie',
  675. owner = 'oozie',
  676. group = 'hadoop',
  677. recursive = True,
  678. mode = 0755,
  679. cd_access='a'
  680. )
  681. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/webapps/',
  682. owner = 'oozie',
  683. group = 'hadoop',
  684. recursive = True,
  685. mode = 0755,
  686. cd_access='a'
  687. )
  688. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server/conf',
  689. owner = 'oozie',
  690. group = 'hadoop',
  691. recursive = True,
  692. mode = 0755,
  693. cd_access='a'
  694. )
  695. self.assertResourceCalled('Directory', '/var/lib/oozie/oozie-server',
  696. owner = 'oozie',
  697. group = 'hadoop',
  698. recursive = True,
  699. mode = 0755,
  700. cd_access='a'
  701. )
  702. self.assertResourceCalled('Directory', '/usr/lib/oozie/libext',
  703. recursive = True,
  704. )
  705. self.assertResourceCalled('Execute', ('tar', '-xvf', '/usr/lib/oozie/oozie-sharelib.tar.gz', '-C', '/usr/lib/oozie'),
  706. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]]",
  707. sudo = True,
  708. )
  709. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/lib/oozie/libext'),
  710. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  711. sudo = True,
  712. )
  713. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/lib/oozie/libext/ext-2.2.zip'),
  714. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  715. sudo = True,
  716. )
  717. self.assertResourceCalled('Execute', ('chown', '-RL', 'oozie:hadoop', '/var/lib/oozie/oozie-server/conf'),
  718. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  719. sudo = True,
  720. )
  721. self.assertResourceCalled('Execute', 'ambari-sudo.sh cp /usr/lib/falcon/oozie/ext/falcon-oozie-el-extension-*.jar /usr/lib/oozie/libext',
  722. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  723. )
  724. self.assertResourceCalled('Execute', 'ambari-sudo.sh chown oozie:hadoop /usr/lib/oozie/libext/falcon-oozie-el-extension-*.jar',
  725. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1'",
  726. )
  727. self.assertResourceCalled('Execute', 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war -secure',
  728. not_if = "ambari-sudo.sh su oozie -l -s /bin/bash -c '[RMF_EXPORT_PLACEHOLDER]ls /var/run/oozie/oozie.pid >/dev/null 2>&1 && ps -p `cat /var/run/oozie/oozie.pid` >/dev/null 2>&1' || test -f /usr/lib/oozie/.hashcode && test -d /usr/lib/oozie/share && [[ `cat /usr/lib/oozie/.hashcode` == 'abc123hash' ]] && test -f /usr/lib/oozie/.prepare_war_cmd && [[ `cat /usr/lib/oozie/.prepare_war_cmd` == 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war -secure' ]]",
  729. user = 'oozie',
  730. )
  731. self.assertResourceCalled('File', '/usr/lib/oozie/.hashcode',
  732. content = 'abc123hash',
  733. mode = 0644,
  734. )
  735. self.assertResourceCalled('File', '/usr/lib/oozie/.prepare_war_cmd',
  736. content = 'cd /var/tmp/oozie && /usr/lib/oozie/bin/oozie-setup.sh prepare-war -secure',
  737. mode = 0644,
  738. )
  739. self.assertResourceCalled('Execute', ('chown', '-R', 'oozie:hadoop', '/var/lib/oozie/oozie-server'),
  740. sudo = True,
  741. )
  742. def test_configure_default_hdp22(self):
  743. config_file = "stacks/2.0.6/configs/default.json"
  744. with open(config_file, "r") as f:
  745. default_json = json.load(f)
  746. default_json['hostLevelParams']['stack_version']= '2.2'
  747. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  748. classname = "OozieServer",
  749. command = "configure",
  750. config_file="default.json",
  751. hdp_stack_version = self.STACK_VERSION,
  752. target = RMFTestCase.TARGET_COMMON_SERVICES
  753. )
  754. self.assert_configure_default()
  755. self.assertResourceCalled('Directory', '/etc/oozie/conf/action-conf/hive',
  756. owner = 'oozie',
  757. group = 'hadoop',
  758. recursive = True
  759. )
  760. self.assertResourceCalled('XmlConfig', 'hive-site',
  761. owner = 'oozie',
  762. group = 'hadoop',
  763. mode = 0664,
  764. conf_dir = '/etc/oozie/conf/action-conf/hive',
  765. configurations = self.getConfig()['configurations']['hive-site'],
  766. configuration_attributes = self.getConfig()['configuration_attributes']['hive-site']
  767. )
  768. self.assertResourceCalled('XmlConfig', 'tez-site',
  769. owner = 'oozie',
  770. group = 'hadoop',
  771. mode = 0664,
  772. conf_dir = '/etc/oozie/conf/action-conf/hive',
  773. configurations = self.getConfig()['configurations']['tez-site'],
  774. configuration_attributes = self.getConfig()['configuration_attributes']['tez-site']
  775. )
  776. self.assertNoMoreResources()
  777. @patch("resource_management.libraries.functions.security_commons.build_expectations")
  778. @patch("resource_management.libraries.functions.security_commons.get_params_from_filesystem")
  779. @patch("resource_management.libraries.functions.security_commons.validate_security_config_properties")
  780. @patch("resource_management.libraries.functions.security_commons.cached_kinit_executor")
  781. @patch("resource_management.libraries.script.Script.put_structured_out")
  782. def test_security_status(self, put_structured_out_mock, cached_kinit_executor_mock, validate_security_config_mock, get_params_mock, build_exp_mock):
  783. # Test that function works when is called with correct parameters
  784. security_params = {
  785. "oozie-site": {
  786. "oozie.authentication.type": "kerberos",
  787. "oozie.service.AuthorizationService.security.enabled": "true",
  788. "oozie.service.HadoopAccessorService.kerberos.enabled": "true",
  789. "local.realm": "EXAMPLE.COM",
  790. "oozie.authentication.kerberos.principal": "principal",
  791. "oozie.authentication.kerberos.keytab": "/path/to_keytab",
  792. "oozie.service.HadoopAccessorService.kerberos.principal": "principal",
  793. "oozie.service.HadoopAccessorService.keytab.file": "/path/to_keytab"}
  794. }
  795. result_issues = []
  796. props_value_check = {"oozie.authentication.type": "kerberos",
  797. "oozie.service.AuthorizationService.security.enabled": "true",
  798. "oozie.service.HadoopAccessorService.kerberos.enabled": "true"}
  799. props_empty_check = [ "local.realm",
  800. "oozie.authentication.kerberos.principal",
  801. "oozie.authentication.kerberos.keytab",
  802. "oozie.service.HadoopAccessorService.kerberos.principal",
  803. "oozie.service.HadoopAccessorService.keytab.file"]
  804. props_read_check = None
  805. get_params_mock.return_value = security_params
  806. validate_security_config_mock.return_value = result_issues
  807. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  808. classname = "OozieServer",
  809. command = "security_status",
  810. config_file="secured.json",
  811. hdp_stack_version = self.STACK_VERSION,
  812. target = RMFTestCase.TARGET_COMMON_SERVICES
  813. )
  814. get_params_mock.assert_called_with("/etc/oozie/conf", {'oozie-site.xml': 'XML'})
  815. build_exp_mock.assert_called_with('oozie-site', props_value_check, props_empty_check, props_read_check)
  816. put_structured_out_mock.assert_called_with({"securityState": "SECURED_KERBEROS"})
  817. self.assertTrue(cached_kinit_executor_mock.call_count, 2)
  818. cached_kinit_executor_mock.assert_called_with('/usr/bin/kinit',
  819. self.config_dict['configurations']['oozie-env']['oozie_user'],
  820. security_params['oozie-site']['oozie.service.HadoopAccessorService.keytab.file'],
  821. security_params['oozie-site']['oozie.service.HadoopAccessorService.kerberos.principal'],
  822. self.config_dict['hostname'],
  823. '/tmp')
  824. # Testing that the exception throw by cached_executor is caught
  825. cached_kinit_executor_mock.reset_mock()
  826. cached_kinit_executor_mock.side_effect = Exception("Invalid command")
  827. try:
  828. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  829. classname = "OozieServer",
  830. command = "security_status",
  831. config_file="secured.json",
  832. hdp_stack_version = self.STACK_VERSION,
  833. target = RMFTestCase.TARGET_COMMON_SERVICES
  834. )
  835. except:
  836. self.assertTrue(True)
  837. # Testing with a security_params which doesn't contains oozie-site
  838. empty_security_params = {}
  839. cached_kinit_executor_mock.reset_mock()
  840. get_params_mock.reset_mock()
  841. put_structured_out_mock.reset_mock()
  842. get_params_mock.return_value = empty_security_params
  843. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  844. classname = "OozieServer",
  845. command = "security_status",
  846. config_file="secured.json",
  847. hdp_stack_version = self.STACK_VERSION,
  848. target = RMFTestCase.TARGET_COMMON_SERVICES
  849. )
  850. put_structured_out_mock.assert_called_with({"securityIssuesFound": "Keytab file or principal are not set property."})
  851. # Testing with not empty result_issues
  852. result_issues_with_params = {
  853. 'oozie-site': "Something bad happened"
  854. }
  855. validate_security_config_mock.reset_mock()
  856. get_params_mock.reset_mock()
  857. validate_security_config_mock.return_value = result_issues_with_params
  858. get_params_mock.return_value = security_params
  859. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  860. classname = "OozieServer",
  861. command = "security_status",
  862. config_file="secured.json",
  863. hdp_stack_version = self.STACK_VERSION,
  864. target = RMFTestCase.TARGET_COMMON_SERVICES
  865. )
  866. put_structured_out_mock.assert_called_with({"securityState": "UNSECURED"})
  867. # Testing with security_enable = false
  868. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  869. classname = "OozieServer",
  870. command = "security_status",
  871. config_file="default.json",
  872. hdp_stack_version = self.STACK_VERSION,
  873. target = RMFTestCase.TARGET_COMMON_SERVICES
  874. )
  875. put_structured_out_mock.assert_called_with({"securityState": "UNSECURED"})
  876. @patch("os.path.isdir")
  877. @patch("os.path.exists")
  878. @patch("os.path.isfile")
  879. @patch("os.remove")
  880. @patch("shutil.rmtree", new = MagicMock())
  881. @patch("glob.iglob")
  882. @patch("shutil.copy2", new = MagicMock())
  883. def test_upgrade(self, glob_mock, remove_mock,
  884. isfile_mock, exists_mock, isdir_mock):
  885. def exists_mock_side_effect(path):
  886. if path == '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar':
  887. return True
  888. return False
  889. exists_mock.side_effect = exists_mock_side_effect
  890. isdir_mock.return_value = True
  891. isfile_mock.return_value = True
  892. glob_mock.return_value = ["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]
  893. prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
  894. New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
  895. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  896. classname = "OozieServer", command = "pre_rolling_restart", config_file = "oozie-upgrade.json",
  897. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  898. target = RMFTestCase.TARGET_COMMON_SERVICES,
  899. call_mocks = [(0, prepare_war_stdout)])
  900. self.assertTrue(isfile_mock.called)
  901. self.assertEqual(isfile_mock.call_count,3)
  902. isfile_mock.assert_called_with('/usr/share/HDP-oozie/ext-2.2.zip')
  903. self.assertTrue(glob_mock.called)
  904. self.assertEqual(glob_mock.call_count,1)
  905. glob_mock.assert_called_with('/usr/hdp/2.2.1.0-2135/hadoop/lib/hadoop-lzo*.jar')
  906. self.assertResourceCalled('Execute',
  907. ('tar', '-zcvhf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '/usr/hdp/current/oozie-server/conf/'),
  908. sudo = True)
  909. self.assertResourceCalled('Execute', ('hdp-select', 'set', 'oozie-server', u'2.2.1.0-2135'),
  910. sudo = True )
  911. self.assertResourceCalled('Execute',
  912. ('tar', '-xvf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '-C', '/usr/hdp/current/oozie-server/conf//'),
  913. sudo = True)
  914. self.assertResourceCalled('Directory', '/tmp/oozie-upgrade-backup', action = ['delete'])
  915. self.assertResourceCalled('Directory', '/usr/hdp/current/oozie-server/libext', mode = 0777)
  916. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/hdp/current/oozie-server/libext'), sudo=True)
  917. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip'), sudo=True)
  918. self.assertNoMoreResources()
  919. @patch("os.path.isdir")
  920. @patch("os.path.exists")
  921. @patch("os.path.isfile")
  922. @patch("os.remove")
  923. @patch("shutil.rmtree", new = MagicMock())
  924. @patch("glob.iglob")
  925. @patch("shutil.copy2", new = MagicMock())
  926. def test_upgrade_23(self, glob_mock, remove_mock,
  927. isfile_mock, exists_mock, isdir_mock):
  928. def exists_mock_side_effect(path):
  929. if path == '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar':
  930. return True
  931. return False
  932. isdir_mock.return_value = True
  933. exists_mock.side_effect = exists_mock_side_effect
  934. isfile_mock.return_value = True
  935. glob_mock.return_value = ["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]
  936. prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
  937. New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
  938. config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json"
  939. with open(config_file, "r") as f:
  940. json_content = json.load(f)
  941. version = '2.3.0.0-1234'
  942. json_content['commandParams']['version'] = version
  943. mocks_dict = {}
  944. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  945. classname = "OozieServer", command = "pre_rolling_restart", config_dict = json_content,
  946. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  947. target = RMFTestCase.TARGET_COMMON_SERVICES,
  948. call_mocks = [(0, None), (0, prepare_war_stdout)],
  949. mocks_dict = mocks_dict)
  950. self.assertTrue(isfile_mock.called)
  951. self.assertEqual(isfile_mock.call_count,3)
  952. isfile_mock.assert_called_with('/usr/share/HDP-oozie/ext-2.2.zip')
  953. self.assertTrue(glob_mock.called)
  954. self.assertEqual(glob_mock.call_count,1)
  955. glob_mock.assert_called_with('/usr/hdp/2.3.0.0-1234/hadoop/lib/hadoop-lzo*.jar')
  956. self.assertResourceCalled('Execute',
  957. ('tar', '-zcvhf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '/usr/hdp/current/oozie-server/conf/'),
  958. sudo = True)
  959. self.assertResourceCalled('Execute', ('hdp-select', 'set', 'oozie-server', '2.3.0.0-1234'), sudo = True)
  960. self.assertResourceCalled('Execute',
  961. ('tar', '-xvf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '-C', '/usr/hdp/current/oozie-server/conf//'),
  962. sudo = True)
  963. self.assertResourceCalled('Directory', '/tmp/oozie-upgrade-backup', action = ['delete'])
  964. self.assertResourceCalled('Directory', '/usr/hdp/current/oozie-server/libext', mode = 0777)
  965. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/hdp/current/oozie-server/libext'), sudo=True)
  966. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip'), sudo=True)
  967. self.assertNoMoreResources()
  968. self.assertEquals(1, mocks_dict['call'].call_count)
  969. self.assertEquals(2, mocks_dict['checked_call'].call_count)
  970. self.assertEquals(
  971. ('conf-select', 'set-conf-dir', '--package', 'oozie', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  972. mocks_dict['checked_call'].call_args_list[0][0][0])
  973. self.assertEquals(
  974. ('conf-select', 'create-conf-dir', '--package', 'oozie', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  975. mocks_dict['call'].call_args_list[0][0][0])
  976. @patch("os.path.isdir")
  977. @patch("os.path.exists")
  978. @patch("os.path.isfile")
  979. @patch("os.remove")
  980. @patch("shutil.rmtree", new = MagicMock())
  981. @patch("shutil.copy2", new = MagicMock())
  982. def test_downgrade_no_compression_library_copy(self, remove_mock,
  983. isfile_mock, exists_mock, isdir_mock):
  984. isdir_mock.return_value = True
  985. exists_mock.return_value = False
  986. isfile_mock.return_value = True
  987. prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
  988. New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
  989. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  990. classname = "OozieServer", command = "pre_rolling_restart", config_file = "oozie-downgrade.json",
  991. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  992. target = RMFTestCase.TARGET_COMMON_SERVICES,
  993. call_mocks = [(0, prepare_war_stdout)])
  994. self.assertTrue(isfile_mock.called)
  995. self.assertEqual(isfile_mock.call_count,2)
  996. isfile_mock.assert_called_with('/usr/share/HDP-oozie/ext-2.2.zip')
  997. self.assertResourceCalled('Execute',
  998. ('tar', '-zcvhf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '/usr/hdp/current/oozie-server/conf/'),
  999. sudo = True)
  1000. self.assertResourceCalled('Execute', ('hdp-select', 'set', 'oozie-server', u'2.2.0.0-0000'), sudo = True)
  1001. self.assertResourceCalled('Execute',
  1002. ('tar', '-xvf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '-C', '/usr/hdp/current/oozie-server/conf//'),
  1003. sudo = True)
  1004. self.assertResourceCalled('Directory', '/tmp/oozie-upgrade-backup', action = ['delete'])
  1005. self.assertResourceCalled('Directory', '/usr/hdp/current/oozie-server/libext',mode = 0777)
  1006. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/hdp/current/oozie-server/libext'), sudo=True)
  1007. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip'), sudo=True)
  1008. self.assertNoMoreResources()
  1009. def test_upgrade_database_sharelib(self):
  1010. """
  1011. Tests that the upgrade script runs the proper commands before the
  1012. actual upgrade begins.
  1013. :return:
  1014. """
  1015. config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json"
  1016. with open(config_file, "r") as f:
  1017. json_content = json.load(f)
  1018. version = '2.3.0.0-1234'
  1019. json_content['commandParams']['version'] = version
  1020. json_content['hostLevelParams']['stack_name'] = "HDP"
  1021. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server_upgrade.py",
  1022. classname = "OozieUpgrade", command = "upgrade_oozie_database_and_sharelib",
  1023. config_dict = json_content,
  1024. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  1025. target = RMFTestCase.TARGET_COMMON_SERVICES )
  1026. self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/ooziedb.sh upgrade -run',
  1027. user = 'oozie', logoutput = True )
  1028. self.assertResourceCalled('HdfsResource', '/user/oozie/share',
  1029. security_enabled = False,
  1030. hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin',
  1031. keytab = UnknownConfigurationMock(),
  1032. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  1033. user = 'hdfs',
  1034. hdfs_site = UnknownConfigurationMock(),
  1035. kinit_path_local = '/usr/bin/kinit',
  1036. principal_name = UnknownConfigurationMock(),
  1037. recursive_chmod = True,
  1038. owner = 'oozie',
  1039. group = 'hadoop',
  1040. hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf',
  1041. type = 'directory',
  1042. action = ['create_on_execute'],
  1043. mode = 0755 )
  1044. self.assertResourceCalled('HdfsResource', None,
  1045. security_enabled = False,
  1046. hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin',
  1047. keytab = UnknownConfigurationMock(),
  1048. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  1049. hdfs_site = UnknownConfigurationMock(),
  1050. kinit_path_local = '/usr/bin/kinit',
  1051. principal_name = UnknownConfigurationMock(),
  1052. user = 'hdfs',
  1053. action = ['execute'],
  1054. hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf' )
  1055. self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/oozie-setup.sh sharelib create -fs hdfs://c6401.ambari.apache.org:8020',
  1056. user='oozie', logoutput = True)
  1057. def test_upgrade_database_sharelib_existing_mysql(self):
  1058. """
  1059. Tests that the upgrade script runs the proper commands before the
  1060. actual upgrade begins when Oozie is using and external database. This
  1061. should ensure that the JDBC JAR is copied.
  1062. :return:
  1063. """
  1064. config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json"
  1065. with open(config_file, "r") as f:
  1066. json_content = json.load(f)
  1067. version = '2.3.0.0-1234'
  1068. json_content['commandParams']['version'] = version
  1069. json_content['hostLevelParams']['stack_name'] = "HDP"
  1070. # use mysql external database
  1071. json_content['configurations']['oozie-site']['oozie.service.JPAService.jdbc.driver'] = "com.mysql.jdbc.Driver"
  1072. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server_upgrade.py",
  1073. classname = "OozieUpgrade", command = "upgrade_oozie_database_and_sharelib",
  1074. config_dict = json_content,
  1075. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  1076. target = RMFTestCase.TARGET_COMMON_SERVICES )
  1077. self.assertResourceCalled('File', '/tmp/mysql-connector-java.jar',
  1078. content = DownloadSource('http://c6401.ambari.apache.org:8080/resources//mysql-jdbc-driver.jar') )
  1079. self.assertResourceCalled('Execute', ('cp', '--remove-destination', '/tmp/mysql-connector-java.jar',
  1080. '/usr/hdp/2.3.0.0-1234/oozie/libext/mysql-connector-java.jar'),
  1081. path = ['/bin', '/usr/bin/'], sudo = True)
  1082. self.assertResourceCalled('File', '/usr/hdp/2.3.0.0-1234/oozie/libext/mysql-connector-java.jar',
  1083. owner = 'oozie', group = 'hadoop' )
  1084. self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/ooziedb.sh upgrade -run',
  1085. user = 'oozie', logoutput = True )
  1086. self.assertResourceCalled('HdfsResource', '/user/oozie/share',
  1087. security_enabled = False,
  1088. hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin',
  1089. keytab = UnknownConfigurationMock(),
  1090. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  1091. user = 'hdfs',
  1092. hdfs_site = UnknownConfigurationMock(),
  1093. kinit_path_local = '/usr/bin/kinit',
  1094. principal_name = UnknownConfigurationMock(),
  1095. recursive_chmod = True,
  1096. owner = 'oozie',
  1097. group = 'hadoop',
  1098. hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf',
  1099. type = 'directory',
  1100. action = ['create_on_execute'],
  1101. mode = 0755 )
  1102. self.assertResourceCalled('HdfsResource', None,
  1103. security_enabled = False,
  1104. hadoop_bin_dir = '/usr/hdp/2.3.0.0-1234/hadoop/bin',
  1105. keytab = UnknownConfigurationMock(),
  1106. default_fs = 'hdfs://c6401.ambari.apache.org:8020',
  1107. hdfs_site = UnknownConfigurationMock(),
  1108. kinit_path_local = '/usr/bin/kinit',
  1109. principal_name = UnknownConfigurationMock(),
  1110. user = 'hdfs',
  1111. action = ['execute'],
  1112. hadoop_conf_dir = '/usr/hdp/current/hadoop-client/conf' )
  1113. self.assertResourceCalled('Execute', '/usr/hdp/2.3.0.0-1234/oozie/bin/oozie-setup.sh sharelib create -fs hdfs://c6401.ambari.apache.org:8020',
  1114. user='oozie', logoutput = True)
  1115. @patch("os.path.isdir")
  1116. @patch("os.path.exists")
  1117. @patch("os.path.isfile")
  1118. @patch("os.remove")
  1119. @patch("shutil.rmtree", new = MagicMock())
  1120. @patch("glob.iglob")
  1121. @patch("shutil.copy2", new = MagicMock())
  1122. def test_upgrade_23_ensure_falcon_copied(self, glob_mock, remove_mock,
  1123. isfile_mock, exists_mock, isdir_mock):
  1124. def exists_mock_side_effect(path):
  1125. if path == '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar':
  1126. return True
  1127. return False
  1128. isdir_mock.return_value = True
  1129. exists_mock.side_effect = exists_mock_side_effect
  1130. isfile_mock.return_value = True
  1131. glob_mock.return_value = ["/usr/hdp/2.2.1.0-2187/hadoop/lib/hadoop-lzo-0.6.0.2.2.1.0-2187.jar"]
  1132. prepare_war_stdout = """INFO: Adding extension: libext/mysql-connector-java.jar
  1133. New Oozie WAR file with added 'JARs' at /var/lib/oozie/oozie-server/webapps/oozie.war"""
  1134. config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/oozie-upgrade.json"
  1135. with open(config_file, "r") as f:
  1136. json_content = json.load(f)
  1137. version = '2.3.0.0-1234'
  1138. json_content['commandParams']['version'] = version
  1139. json_content['clusterHostInfo']['falcon_server_hosts'] = ['c6401.ambari.apache.org']
  1140. mocks_dict = {}
  1141. self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/oozie_server.py",
  1142. classname = "OozieServer", command = "pre_rolling_restart", config_dict = json_content,
  1143. hdp_stack_version = self.UPGRADE_STACK_VERSION,
  1144. target = RMFTestCase.TARGET_COMMON_SERVICES,
  1145. call_mocks = [(0, None), (0, prepare_war_stdout)],
  1146. mocks_dict = mocks_dict)
  1147. self.assertTrue(isfile_mock.called)
  1148. self.assertEqual(isfile_mock.call_count,3)
  1149. isfile_mock.assert_called_with('/usr/share/HDP-oozie/ext-2.2.zip')
  1150. self.assertTrue(glob_mock.called)
  1151. self.assertEqual(glob_mock.call_count,1)
  1152. glob_mock.assert_called_with('/usr/hdp/2.3.0.0-1234/hadoop/lib/hadoop-lzo*.jar')
  1153. self.assertResourceCalled('Execute',
  1154. ('tar', '-zcvhf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '/usr/hdp/current/oozie-server/conf/'),
  1155. sudo = True)
  1156. self.assertResourceCalled('Execute', ('hdp-select', 'set', 'oozie-server', '2.3.0.0-1234'), sudo = True)
  1157. self.assertResourceCalled('Execute',
  1158. ('tar', '-xvf', '/tmp/oozie-upgrade-backup/oozie-conf-backup.tar', '-C', '/usr/hdp/current/oozie-server/conf//'),
  1159. sudo = True)
  1160. self.assertResourceCalled('Directory', '/tmp/oozie-upgrade-backup', action = ['delete'])
  1161. self.assertResourceCalled('Directory', '/usr/hdp/current/oozie-server/libext', mode = 0777)
  1162. self.assertResourceCalled('Execute', ('cp', '/usr/share/HDP-oozie/ext-2.2.zip', '/usr/hdp/current/oozie-server/libext'), sudo=True)
  1163. self.assertResourceCalled('Execute', ('chown', 'oozie:hadoop', '/usr/hdp/current/oozie-server/libext/ext-2.2.zip'), sudo=True)
  1164. self.assertResourceCalled('Execute', 'ambari-sudo.sh cp /usr/hdp/2.3.0.0-1234/falcon/oozie/ext/falcon-oozie-el-extension-*.jar /usr/hdp/current/oozie-server/libext')
  1165. self.assertResourceCalled('Execute', 'ambari-sudo.sh chown oozie:hadoop /usr/hdp/current/oozie-server/libext/falcon-oozie-el-extension-*.jar')
  1166. self.assertNoMoreResources()
  1167. self.assertEquals(1, mocks_dict['call'].call_count)
  1168. self.assertEquals(2, mocks_dict['checked_call'].call_count)
  1169. self.assertEquals(
  1170. ('conf-select', 'set-conf-dir', '--package', 'oozie', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  1171. mocks_dict['checked_call'].call_args_list[0][0][0])
  1172. self.assertEquals(
  1173. ('conf-select', 'create-conf-dir', '--package', 'oozie', '--stack-version', '2.3.0.0-1234', '--conf-version', '0'),
  1174. mocks_dict['call'].call_args_list[0][0][0])