manila_355.py 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637
  1. # -*- coding: utf-8 -*-
  2. # Licensed under the Apache License, Version 2.0 (the "License");
  3. # you may not use this file except in compliance with the License.
  4. # You may obtain a copy of the License at
  5. #
  6. # http://www.apache.org/licenses/LICENSE-2.0
  7. #
  8. # Unless required by applicable law or agreed to in writing, software
  9. # distributed under the License is distributed on an "AS IS" BASIS,
  10. # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  11. # implied.
  12. # See the License for the specific language governing permissions and
  13. # limitations under the License.
  14. """
  15. Installs and configures Manila
  16. """
  17. from packstack.installer import basedefs
  18. from packstack.installer import processors
  19. from packstack.installer import validators
  20. from packstack.installer import utils
  21. from packstack.modules.documentation import update_params_usage
  22. from packstack.modules.ospluginutils import generate_ssl_cert
  23. # ------------- Manila Packstack Plugin Initialization --------------
  24. PLUGIN_NAME = "OS-Manila"
  25. PLUGIN_NAME_COLORED = utils.color_text(PLUGIN_NAME, 'blue')
  26. def initConfig(controller):
  27. conf_params = {
  28. "MANILA": [
  29. {"CMD_OPTION": "manila-db-passwd",
  30. "PROMPT": "Enter the password for the Manila DB access",
  31. "OPTION_LIST": [],
  32. "VALIDATORS": [validators.validate_not_empty],
  33. "DEFAULT_VALUE": "PW_PLACEHOLDER",
  34. "PROCESSORS": [processors.process_password],
  35. "MASK_INPUT": True,
  36. "LOOSE_VALIDATION": False,
  37. "CONF_NAME": "CONFIG_MANILA_DB_PW",
  38. "USE_DEFAULT": False,
  39. "NEED_CONFIRM": True,
  40. "CONDITION": False},
  41. {"CMD_OPTION": "manila-ks-passwd",
  42. "PROMPT": "Enter the password for the Manila Keystone access",
  43. "OPTION_LIST": [],
  44. "VALIDATORS": [validators.validate_not_empty],
  45. "DEFAULT_VALUE": "PW_PLACEHOLDER",
  46. "PROCESSORS": [processors.process_password],
  47. "MASK_INPUT": True,
  48. "LOOSE_VALIDATION": False,
  49. "CONF_NAME": "CONFIG_MANILA_KS_PW",
  50. "USE_DEFAULT": False,
  51. "NEED_CONFIRM": True,
  52. "CONDITION": False},
  53. {"CMD_OPTION": "manila-backend",
  54. "PROMPT": "Enter the Manila backend to be configured",
  55. "OPTION_LIST": ["generic", "netapp", "glusternative",
  56. "glusternfs"],
  57. "VALIDATORS": [validators.validate_options],
  58. "DEFAULT_VALUE": "generic",
  59. "MASK_INPUT": False,
  60. "LOOSE_VALIDATION": False,
  61. "CONF_NAME": "CONFIG_MANILA_BACKEND",
  62. "USE_DEFAULT": False,
  63. "NEED_CONFIRM": False,
  64. "CONDITION": False},
  65. ],
  66. "MANILANETAPP": [
  67. {"CMD_OPTION": "manila-netapp-driver-handles-share-servers",
  68. "PROMPT": ("Enter whether the driver handles share servers"),
  69. "OPTION_LIST": ["true", "false"],
  70. "VALIDATORS": [validators.validate_options],
  71. "DEFAULT_VALUE": "false",
  72. "MASK_INPUT": False,
  73. "LOOSE_VALIDATION": False,
  74. "CONF_NAME": "CONFIG_MANILA_NETAPP_DRV_HANDLES_SHARE_SERVERS",
  75. "USE_DEFAULT": False,
  76. "NEED_CONFIRM": False,
  77. "CONDITION": False},
  78. {"CMD_OPTION": "manila-netapp-transport-type",
  79. "PROMPT": ("Enter a NetApp transport type"),
  80. "OPTION_LIST": ["http", "https"],
  81. "VALIDATORS": [validators.validate_options],
  82. "DEFAULT_VALUE": "https",
  83. "MASK_INPUT": False,
  84. "LOOSE_VALIDATION": False,
  85. "CONF_NAME": "CONFIG_MANILA_NETAPP_TRANSPORT_TYPE",
  86. "USE_DEFAULT": False,
  87. "NEED_CONFIRM": False,
  88. "CONDITION": False},
  89. {"CMD_OPTION": "manila-netapp-login",
  90. "PROMPT": ("Enter a NetApp login"),
  91. "OPTION_LIST": [""],
  92. "VALIDATORS": [validators.validate_not_empty],
  93. "DEFAULT_VALUE": "admin",
  94. "MASK_INPUT": False,
  95. "LOOSE_VALIDATION": False,
  96. "CONF_NAME": "CONFIG_MANILA_NETAPP_LOGIN",
  97. "USE_DEFAULT": False,
  98. "NEED_CONFIRM": False,
  99. "CONDITION": False},
  100. {"CMD_OPTION": "manila-netapp-password",
  101. "PROMPT": ("Enter a NetApp password"),
  102. "OPTION_LIST": [""],
  103. "VALIDATORS": [validators.validate_not_empty],
  104. "DEFAULT_VALUE": "",
  105. "MASK_INPUT": True,
  106. "LOOSE_VALIDATION": False,
  107. "CONF_NAME": "CONFIG_MANILA_NETAPP_PASSWORD",
  108. "USE_DEFAULT": False,
  109. "NEED_CONFIRM": True,
  110. "CONDITION": False},
  111. {"CMD_OPTION": "manila-netapp-server-hostname",
  112. "PROMPT": ("Enter a NetApp hostname"),
  113. "OPTION_LIST": [],
  114. "VALIDATORS": [validators.validate_not_empty],
  115. "PROCESSORS": [],
  116. "DEFAULT_VALUE": "",
  117. "MASK_INPUT": False,
  118. "LOOSE_VALIDATION": False,
  119. "CONF_NAME": "CONFIG_MANILA_NETAPP_SERVER_HOSTNAME",
  120. "USE_DEFAULT": False,
  121. "NEED_CONFIRM": False,
  122. "CONDITION": False},
  123. {"CMD_OPTION": "manila-netapp-storage-family",
  124. "PROMPT": ("Enter a NetApp storage family"),
  125. "OPTION_LIST": ['ontap_cluster'],
  126. "VALIDATORS": [validators.validate_options],
  127. "PROCESSORS": [],
  128. "DEFAULT_VALUE": "ontap_cluster",
  129. "MASK_INPUT": False,
  130. "LOOSE_VALIDATION": False,
  131. "CONF_NAME": "CONFIG_MANILA_NETAPP_STORAGE_FAMILY",
  132. "USE_DEFAULT": False,
  133. "NEED_CONFIRM": False,
  134. "CONDITION": False},
  135. {"CMD_OPTION": "manila-netapp-server-port",
  136. "PROMPT": ("Enter a NetApp server port"),
  137. "OPTION_LIST": [],
  138. "VALIDATORS": [],
  139. "PROCESSORS": [],
  140. "DEFAULT_VALUE": "443",
  141. "MASK_INPUT": False,
  142. "LOOSE_VALIDATION": False,
  143. "CONF_NAME": "CONFIG_MANILA_NETAPP_SERVER_PORT",
  144. "USE_DEFAULT": False,
  145. "NEED_CONFIRM": False,
  146. "CONDITION": False},
  147. {"CMD_OPTION": "manila-netapp-aggregate-name-search-pattern",
  148. "PROMPT": ("Enter a NetApp aggregate name search pattern"),
  149. "OPTION_LIST": [],
  150. "VALIDATORS": [validators.validate_not_empty],
  151. "DEFAULT_VALUE": "(.*)",
  152. "MASK_INPUT": False,
  153. "LOOSE_VALIDATION": False,
  154. "CONF_NAME": "CONFIG_MANILA_NETAPP_AGGREGATE_NAME_SEARCH_PATTERN",
  155. "USE_DEFAULT": False,
  156. "NEED_CONFIRM": False,
  157. "CONDITION": False},
  158. ],
  159. "MANILANETAPPMULTISVM": [
  160. {"CMD_OPTION": "manila-netapp-root-volume-aggregate",
  161. "PROMPT": ("Enter a NetApp root volume aggregate"),
  162. "OPTION_LIST": [],
  163. "VALIDATORS": [validators.validate_not_empty],
  164. "DEFAULT_VALUE": "",
  165. "MASK_INPUT": False,
  166. "LOOSE_VALIDATION": False,
  167. "CONF_NAME": "CONFIG_MANILA_NETAPP_ROOT_VOLUME_AGGREGATE",
  168. "USE_DEFAULT": False,
  169. "NEED_CONFIRM": False,
  170. "CONDITION": False},
  171. {"CMD_OPTION": "manila-netapp-root-volume-name",
  172. "PROMPT": ("Enter a NetApp root volume name."),
  173. "OPTION_LIST": [],
  174. "VALIDATORS": [validators.validate_not_empty],
  175. "DEFAULT_VALUE": "root",
  176. "MASK_INPUT": False,
  177. "LOOSE_VALIDATION": False,
  178. "CONF_NAME": "CONFIG_MANILA_NETAPP_ROOT_VOLUME_NAME",
  179. "USE_DEFAULT": False,
  180. "NEED_CONFIRM": False,
  181. "CONDITION": False},
  182. ],
  183. "MANILANETAPPSINGLESVM": [
  184. {"CMD_OPTION": "manila-netapp-vserver",
  185. "PROMPT": ("Enter a NetApp Vserver"),
  186. "OPTION_LIST": [],
  187. "VALIDATORS": [validators.validate_not_empty],
  188. "PROCESSORS": [],
  189. "DEFAULT_VALUE": "",
  190. "MASK_INPUT": False,
  191. "LOOSE_VALIDATION": False,
  192. "CONF_NAME": "CONFIG_MANILA_NETAPP_VSERVER",
  193. "USE_DEFAULT": False,
  194. "NEED_CONFIRM": False,
  195. "CONDITION": False},
  196. ],
  197. "MANILAGENERIC": [
  198. {"CMD_OPTION": "manila-generic-driver-handles-share-servers",
  199. "USAGE": ("Denotes whether the driver should handle the "
  200. "responsibility of managing share servers. This must be "
  201. "set to false if the driver is to operate without "
  202. "managing share servers."),
  203. "PROMPT": ("Enter whether the driver handles share servers"),
  204. "OPTION_LIST": ["true", "false"],
  205. "VALIDATORS": [validators.validate_options],
  206. "DEFAULT_VALUE": "true",
  207. "MASK_INPUT": False,
  208. "LOOSE_VALIDATION": False,
  209. "CONF_NAME": "CONFIG_MANILA_GENERIC_DRV_HANDLES_SHARE_SERVERS",
  210. "USE_DEFAULT": False,
  211. "NEED_CONFIRM": False,
  212. "CONDITION": False},
  213. {"CMD_OPTION": "manila-generic-volume-name-template",
  214. "PROMPT": ("Enter a volume name template"),
  215. "OPTION_LIST": [],
  216. "VALIDATORS": [validators.validate_not_empty],
  217. "DEFAULT_VALUE": "manila-share-%s",
  218. "MASK_INPUT": False,
  219. "LOOSE_VALIDATION": False,
  220. "CONF_NAME": "CONFIG_MANILA_GENERIC_VOLUME_NAME_TEMPLATE",
  221. "USE_DEFAULT": False,
  222. "NEED_CONFIRM": False,
  223. "CONDITION": False},
  224. {"CMD_OPTION": "manila-generic-share-mount-path",
  225. "PROMPT": ("Enter a share mount path"),
  226. "OPTION_LIST": [],
  227. "VALIDATORS": [validators.validate_not_empty],
  228. "DEFAULT_VALUE": "/shares",
  229. "MASK_INPUT": False,
  230. "LOOSE_VALIDATION": False,
  231. "CONF_NAME": "CONFIG_MANILA_GENERIC_SHARE_MOUNT_PATH",
  232. "USE_DEFAULT": False,
  233. "NEED_CONFIRM": False,
  234. "CONDITION": False},
  235. {"CMD_OPTION": "manila-service-image-location",
  236. "PROMPT": ("Enter a service image location"),
  237. "OPTION_LIST": [],
  238. "VALIDATORS": [validators.validate_not_empty],
  239. "DEFAULT_VALUE": 'https://www.dropbox.com/s/vi5oeh10q1qkckh/'
  240. 'ubuntu_1204_nfs_cifs.qcow2',
  241. "MASK_INPUT": False,
  242. "LOOSE_VALIDATION": False,
  243. "CONF_NAME": "CONFIG_MANILA_SERVICE_IMAGE_LOCATION",
  244. "USE_DEFAULT": False,
  245. "NEED_CONFIRM": False,
  246. "CONDITION": False},
  247. {"CMD_OPTION": "manila-service-instance-user",
  248. "PROMPT": ("Enter a service instance user"),
  249. "OPTION_LIST": [],
  250. "VALIDATORS": [validators.validate_not_empty],
  251. "DEFAULT_VALUE": 'ubuntu',
  252. "MASK_INPUT": False,
  253. "LOOSE_VALIDATION": False,
  254. "CONF_NAME": "CONFIG_MANILA_SERVICE_INSTANCE_USER",
  255. "USE_DEFAULT": False,
  256. "NEED_CONFIRM": False,
  257. "CONDITION": False},
  258. {"CMD_OPTION": "manila-service-instance-password",
  259. "PROMPT": ("Enter a service instance password"),
  260. "OPTION_LIST": [],
  261. "VALIDATORS": [validators.validate_not_empty],
  262. "DEFAULT_VALUE": 'ubuntu',
  263. "MASK_INPUT": False,
  264. "LOOSE_VALIDATION": False,
  265. "CONF_NAME": "CONFIG_MANILA_SERVICE_INSTANCE_PASSWORD",
  266. "USE_DEFAULT": False,
  267. "NEED_CONFIRM": False,
  268. "CONDITION": False},
  269. ],
  270. "MANILANETWORK": [
  271. {"CMD_OPTION": "manila-network-type",
  272. "PROMPT": ("Enter a network type"),
  273. "OPTION_LIST": ['neutron', 'nova-network', 'standalone'],
  274. "VALIDATORS": [validators.validate_options],
  275. "DEFAULT_VALUE": "neutron",
  276. "MASK_INPUT": False,
  277. "LOOSE_VALIDATION": False,
  278. "CONF_NAME": "CONFIG_MANILA_NETWORK_TYPE",
  279. "USE_DEFAULT": False,
  280. "NEED_CONFIRM": False,
  281. "CONDITION": False},
  282. ],
  283. "MANILANETWORKSTANDALONE": [
  284. {"CMD_OPTION": "standalone_network_plugin_gateway",
  285. "PROMPT": ("Enter a plugin gateway"),
  286. "OPTION_LIST": [],
  287. "VALIDATORS": [validators.validate_not_empty],
  288. "DEFAULT_VALUE": "",
  289. "MASK_INPUT": False,
  290. "LOOSE_VALIDATION": False,
  291. "CONF_NAME": "CONFIG_MANILA_NETWORK_STANDALONE_GATEWAY",
  292. "USE_DEFAULT": False,
  293. "NEED_CONFIRM": False,
  294. "CONDITION": False},
  295. {"CMD_OPTION": "standalone_network_plugin_mask",
  296. "PROMPT": ("Enter a network mask"),
  297. "OPTION_LIST": [],
  298. "VALIDATORS": [validators.validate_not_empty],
  299. "DEFAULT_VALUE": "",
  300. "MASK_INPUT": False,
  301. "LOOSE_VALIDATION": False,
  302. "CONF_NAME": "CONFIG_MANILA_NETWORK_STANDALONE_NETMASK",
  303. "USE_DEFAULT": False,
  304. "NEED_CONFIRM": False,
  305. "CONDITION": False},
  306. {"CMD_OPTION": "standalone_network_plugin_segmentation_id",
  307. "PROMPT": ("Enter a segmentation ID"),
  308. "OPTION_LIST": [],
  309. "VALIDATORS": [],
  310. "DEFAULT_VALUE": "",
  311. "MASK_INPUT": False,
  312. "LOOSE_VALIDATION": False,
  313. "CONF_NAME": "CONFIG_MANILA_NETWORK_STANDALONE_SEG_ID",
  314. "USE_DEFAULT": False,
  315. "NEED_CONFIRM": False,
  316. "CONDITION": False},
  317. {"CMD_OPTION": "standalone_network_plugin_ip_range",
  318. "PROMPT": ("Enter a network mask"),
  319. "OPTION_LIST": [],
  320. "VALIDATORS": [],
  321. "DEFAULT_VALUE": "",
  322. "MASK_INPUT": False,
  323. "LOOSE_VALIDATION": False,
  324. "CONF_NAME": "CONFIG_MANILA_NETWORK_STANDALONE_IP_RANGE",
  325. "USE_DEFAULT": False,
  326. "NEED_CONFIRM": False,
  327. "CONDITION": False},
  328. {"CMD_OPTION": "standalone_network_plugin_ip_version",
  329. "PROMPT": ("Enter an IP version"),
  330. "OPTION_LIST": ['4', '6'],
  331. "VALIDATORS": [validators.validate_options],
  332. "DEFAULT_VALUE": "4",
  333. "MASK_INPUT": False,
  334. "LOOSE_VALIDATION": False,
  335. "CONF_NAME": "CONFIG_MANILA_NETWORK_STANDALONE_IP_VERSION",
  336. "USE_DEFAULT": False,
  337. "NEED_CONFIRM": False,
  338. "CONDITION": False},
  339. ],
  340. "MANILAGLUSTERNATIVE": [
  341. {"CMD_OPTION": "glusterfs-servers",
  342. "PROMPT": ("Enter GlusterFS servers"),
  343. "OPTION_LIST": [],
  344. "VALIDATORS": [validators.validate_not_empty],
  345. "DEFAULT_VALUE": "",
  346. "MASK_INPUT": False,
  347. "LOOSE_VALIDATION": False,
  348. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_SERVERS",
  349. "USE_DEFAULT": False,
  350. "NEED_CONFIRM": False,
  351. "CONDITION": False},
  352. {"CMD_OPTION": "glusterfs-native-path-to-private_key",
  353. "PROMPT": ("Enter path to the GlusterFS private key"),
  354. "OPTION_LIST": [],
  355. "VALIDATORS": [],
  356. "DEFAULT_VALUE": "",
  357. "MASK_INPUT": True,
  358. "LOOSE_VALIDATION": False,
  359. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_NATIVE_PATH_TO_PRIVATE_KEY",
  360. "USE_DEFAULT": False,
  361. "NEED_CONFIRM": False,
  362. "CONDITION": False},
  363. {"CMD_OPTION": "glusterfs-volume-pattern",
  364. "PROMPT": ("Enter volume pattern for GlusterFS"),
  365. "OPTION_LIST": [],
  366. "VALIDATORS": [],
  367. "DEFAULT_VALUE": "",
  368. "MASK_INPUT": False,
  369. "LOOSE_VALIDATION": False,
  370. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_VOLUME_PATTERN",
  371. "USE_DEFAULT": False,
  372. "NEED_CONFIRM": False,
  373. "CONDITION": False},
  374. ],
  375. "MANILAGLUSTERNFS": [
  376. {"CMD_OPTION": "glusterfs-target",
  377. "PROMPT": ("Enter GlusterFS target"),
  378. "OPTION_LIST": [],
  379. "VALIDATORS": [validators.validate_not_empty],
  380. "DEFAULT_VALUE": "",
  381. "MASK_INPUT": False,
  382. "LOOSE_VALIDATION": False,
  383. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_TARGET",
  384. "USE_DEFAULT": False,
  385. "NEED_CONFIRM": False,
  386. "CONDITION": False},
  387. {"CMD_OPTION": "glusterfs-mount-point-base",
  388. "PROMPT": ("Enter a mount point for GlusterFS mount"),
  389. "OPTION_LIST": [],
  390. "VALIDATORS": [],
  391. "DEFAULT_VALUE": "",
  392. "MASK_INPUT": False,
  393. "LOOSE_VALIDATION": False,
  394. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_MOUNT_POINT_BASE",
  395. "USE_DEFAULT": False,
  396. "NEED_CONFIRM": False,
  397. "CONDITION": False},
  398. {"CMD_OPTION": "glusterfs-nfs-server-type",
  399. "PROMPT": ("Enter NFS server type (gluster/ganesha)"),
  400. "OPTION_LIST": ['gluster', 'ganesha'],
  401. "VALIDATORS": [validators.validate_options],
  402. "DEFAULT_VALUE": "gluster",
  403. "MASK_INPUT": False,
  404. "LOOSE_VALIDATION": False,
  405. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_NFS_SERVER_TYPE",
  406. "USE_DEFAULT": False,
  407. "NEED_CONFIRM": False,
  408. "CONDITION": False},
  409. {"CMD_OPTION": "glusterfs-path-to-private-key",
  410. "PROMPT": ("Enter path to GlusterFS server private key"),
  411. "OPTION_LIST": [],
  412. "VALIDATORS": [],
  413. "DEFAULT_VALUE": "",
  414. "MASK_INPUT": False,
  415. "LOOSE_VALIDATION": False,
  416. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_PATH_TO_PRIVATE_KEY",
  417. "USE_DEFAULT": False,
  418. "NEED_CONFIRM": False,
  419. "CONDITION": False},
  420. {"CMD_OPTION": "glusterfs-ganesha-server-ip",
  421. "PROMPT": ("Enter ip address of GlusterFS ganesha server"),
  422. "OPTION_LIST": [],
  423. "VALIDATORS": [],
  424. "DEFAULT_VALUE": "",
  425. "MASK_INPUT": False,
  426. "LOOSE_VALIDATION": False,
  427. "CONF_NAME": "CONFIG_MANILA_GLUSTERFS_GANESHA_SERVER_IP",
  428. "USE_DEFAULT": False,
  429. "NEED_CONFIRM": False,
  430. "CONDITION": False},
  431. ],
  432. }
  433. update_params_usage(basedefs.PACKSTACK_DOC, conf_params)
  434. conf_groups = [
  435. {"GROUP_NAME": "MANILA",
  436. "DESCRIPTION": "Manila Config parameters",
  437. "PRE_CONDITION": "CONFIG_MANILA_INSTALL",
  438. "PRE_CONDITION_MATCH": "y",
  439. "POST_CONDITION": False,
  440. "POST_CONDITION_MATCH": True},
  441. {"GROUP_NAME": "MANILANETAPP",
  442. "DESCRIPTION": "Manila NetApp configuration",
  443. "PRE_CONDITION": check_netapp_options,
  444. "PRE_CONDITION_MATCH": True,
  445. "POST_CONDITION": False,
  446. "POST_CONDITION_MATCH": True},
  447. {"GROUP_NAME": "MANILANETAPPMULTISVM",
  448. "DESCRIPTION": "Manila NetApp multi-SVM configuration",
  449. "PRE_CONDITION": check_netapp_options_multi_svm,
  450. "PRE_CONDITION_MATCH": True,
  451. "POST_CONDITION": False,
  452. "POST_CONDITION_MATCH": True},
  453. {"GROUP_NAME": "MANILANETAPPSINGLESVM",
  454. "DESCRIPTION": "Manila NetApp single-SVM configuration",
  455. "PRE_CONDITION": check_netapp_options_single_svm,
  456. "PRE_CONDITION_MATCH": True,
  457. "POST_CONDITION": False,
  458. "POST_CONDITION_MATCH": True},
  459. {"GROUP_NAME": "MANILAGENERIC",
  460. "DESCRIPTION": "Manila generic driver configuration",
  461. "PRE_CONDITION": check_generic_options,
  462. "PRE_CONDITION_MATCH": True,
  463. "POST_CONDITION": False,
  464. "POST_CONDITION_MATCH": True},
  465. {"GROUP_NAME": "MANILANETWORK",
  466. "DESCRIPTION": "Manila general network configuration",
  467. "PRE_CONDITION": "CONFIG_MANILA_INSTALL",
  468. "PRE_CONDITION_MATCH": "y",
  469. "POST_CONDITION": False,
  470. "POST_CONDITION_MATCH": True},
  471. {"GROUP_NAME": "MANILANETWORKSTANDALONE",
  472. "DESCRIPTION": "Manila standalone network configuration",
  473. "PRE_CONDITION": check_network_standalone_options,
  474. "PRE_CONDITION_MATCH": True,
  475. "POST_CONDITION": False,
  476. "POST_CONDITION_MATCH": True},
  477. {"GROUP_NAME": "MANILAGLUSTERNATIVE",
  478. "DESCRIPTION": "Manila GlusterFS native configuration",
  479. "PRE_CONDITION": check_glusternative_options,
  480. "PRE_CONDITION_MATCH": True,
  481. "POST_CONDITION": False,
  482. "POST_CONDITION_MATCH": True},
  483. {"GROUP_NAME": "MANILAGLUSTERNFS",
  484. "DESCRIPTION": "Manila GlusterNFS configuration",
  485. "PRE_CONDITION": check_glusternfs_options,
  486. "PRE_CONDITION_MATCH": True,
  487. "POST_CONDITION": False,
  488. "POST_CONDITION_MATCH": True},
  489. ]
  490. for group in conf_groups:
  491. params = conf_params[group["GROUP_NAME"]]
  492. controller.addGroup(group, params)
  493. def initSequences(controller):
  494. config = controller.CONF
  495. if config['CONFIG_MANILA_INSTALL'] != 'y':
  496. return
  497. config['CONFIG_MANILA_BACKEND'] = (
  498. [i.strip() for i in config['CONFIG_MANILA_BACKEND'].split(',') if i]
  499. )
  500. manila_steps = [
  501. {'title': 'Preparing Manila entries',
  502. 'functions': [create_manifest]}
  503. ]
  504. controller.addSequence("Installing OpenStack Manila", [], [], manila_steps)
  505. # ------------------------- helper functions -------------------------
  506. def check_netapp_options(config):
  507. return (config['CONFIG_MANILA_INSTALL'] == 'y' and
  508. 'netapp' in config['CONFIG_MANILA_BACKEND'])
  509. def check_netapp_options_multi_svm(config):
  510. key_name = 'CONFIG_MANILA_NETAPP_DRV_HANDLES_SHARE_SERVERS'
  511. return (check_netapp_options(config) and
  512. config[key_name] == "true")
  513. def check_netapp_options_single_svm(config):
  514. key_name = 'CONFIG_MANILA_NETAPP_DRV_HANDLES_SHARE_SERVERS'
  515. return (check_netapp_options(config) and
  516. config[key_name] == "false")
  517. def check_generic_options(config):
  518. return (config['CONFIG_MANILA_INSTALL'] == 'y' and
  519. 'generic' in config['CONFIG_MANILA_BACKEND'])
  520. def check_network_standalone_options(config):
  521. return (config['CONFIG_MANILA_INSTALL'] == 'y' and
  522. config['CONFIG_MANILA_NETWORK_TYPE'] == 'standalone')
  523. def check_glusternative_options(config):
  524. return (config['CONFIG_MANILA_INSTALL'] == 'y' and
  525. 'glusternative' in config['CONFIG_MANILA_BACKEND'])
  526. def check_glusternfs_options(config):
  527. return (config['CONFIG_MANILA_INSTALL'] == 'y' and
  528. 'glusternfs' in config['CONFIG_MANILA_BACKEND'])
  529. # -------------------------- step functions --------------------------
  530. def create_manifest(config, messages):
  531. if config['CONFIG_UNSUPPORTED'] != 'y':
  532. config['CONFIG_STORAGE_HOST'] = config['CONFIG_CONTROLLER_HOST']
  533. if config['CONFIG_AMQP_ENABLE_SSL'] == 'y':
  534. ssl_host = config['CONFIG_STORAGE_HOST']
  535. ssl_cert_file = config['CONFIG_MANILA_SSL_CERT'] = (
  536. '/etc/pki/tls/certs/ssl_amqp_manila.crt'
  537. )
  538. ssl_key_file = config['CONFIG_MANILA_SSL_KEY'] = (
  539. '/etc/pki/tls/private/ssl_amqp_manila.key'
  540. )
  541. service = 'manila'
  542. generate_ssl_cert(config, ssl_host, service, ssl_key_file,
  543. ssl_cert_file)
  544. # Change these from text to Boolean values
  545. boolean_keys = ['CONFIG_MANILA_GENERIC_DRV_HANDLES_SHARE_SERVERS',
  546. 'CONFIG_MANILA_NETAPP_DRV_HANDLES_SHARE_SERVERS']
  547. for key in [k for k in boolean_keys if k in config]:
  548. if config[key].lower() == "true":
  549. config[key] = True
  550. elif config[key].lower() == "false":
  551. config[key] = False
  552. # manila API should be open for everyone
  553. fw_details = dict()
  554. key = "manila_api"
  555. fw_details.setdefault(key, {})
  556. fw_details[key]['host'] = "ALL"
  557. fw_details[key]['service_name'] = "manila-api"
  558. fw_details[key]['chain'] = "INPUT"
  559. fw_details[key]['ports'] = ['8786']
  560. fw_details[key]['proto'] = "tcp"
  561. config['FIREWALL_MANILA_API_RULES'] = fw_details