hammer_cli_foreman 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (325) hide show
  1. checksums.yaml +4 -4
  2. data/doc/configuration.md +2 -2
  3. data/doc/name_id_resolution.md +26 -1
  4. data/doc/release_notes.md +24 -0
  5. data/lib/hammer_cli_foreman.rb +30 -29
  6. data/lib/hammer_cli_foreman/api/connection.rb +1 -1
  7. data/lib/hammer_cli_foreman/api/interactive_basic_auth.rb +3 -3
  8. data/lib/hammer_cli_foreman/api/session_authenticator_wrapper.rb +9 -8
  9. data/lib/hammer_cli_foreman/api/void_auth.rb +7 -0
  10. data/lib/hammer_cli_foreman/architecture.rb +3 -5
  11. data/lib/hammer_cli_foreman/associating_commands.rb +32 -32
  12. data/lib/hammer_cli_foreman/auth.rb +2 -2
  13. data/lib/hammer_cli_foreman/auth_source_ldap.rb +4 -4
  14. data/lib/hammer_cli_foreman/commands.rb +23 -55
  15. data/lib/hammer_cli_foreman/common_parameter.rb +5 -5
  16. data/lib/hammer_cli_foreman/compute_resource.rb +17 -7
  17. data/lib/hammer_cli_foreman/config_group.rb +3 -3
  18. data/lib/hammer_cli_foreman/domain.rb +6 -8
  19. data/lib/hammer_cli_foreman/environment.rb +3 -3
  20. data/lib/hammer_cli_foreman/exception_handler.rb +27 -4
  21. data/lib/hammer_cli_foreman/external_usergroup.rb +3 -4
  22. data/lib/hammer_cli_foreman/filter.rb +20 -21
  23. data/lib/hammer_cli_foreman/host.rb +43 -18
  24. data/lib/hammer_cli_foreman/hostgroup.rb +24 -19
  25. data/lib/hammer_cli_foreman/hosts/common_update_options.rb +4 -6
  26. data/lib/hammer_cli_foreman/id_resolver.rb +86 -50
  27. data/lib/hammer_cli_foreman/image.rb +3 -4
  28. data/lib/hammer_cli_foreman/interface.rb +7 -9
  29. data/lib/hammer_cli_foreman/location.rb +6 -9
  30. data/lib/hammer_cli_foreman/media.rb +3 -6
  31. data/lib/hammer_cli_foreman/model.rb +3 -6
  32. data/lib/hammer_cli_foreman/operating_system.rb +11 -12
  33. data/lib/hammer_cli_foreman/option_sources.rb +4 -0
  34. data/lib/hammer_cli_foreman/option_sources/id_params.rb +51 -0
  35. data/lib/hammer_cli_foreman/option_sources/ids_params.rb +30 -0
  36. data/lib/hammer_cli_foreman/option_sources/self_param.rb +16 -0
  37. data/lib/hammer_cli_foreman/option_sources/user_params.rb +59 -0
  38. data/lib/hammer_cli_foreman/organization.rb +6 -9
  39. data/lib/hammer_cli_foreman/output/formatters.rb +1 -1
  40. data/lib/hammer_cli_foreman/parameter.rb +3 -5
  41. data/lib/hammer_cli_foreman/partition_table.rb +5 -6
  42. data/lib/hammer_cli_foreman/realm.rb +3 -3
  43. data/lib/hammer_cli_foreman/report.rb +1 -4
  44. data/lib/hammer_cli_foreman/role.rb +4 -7
  45. data/lib/hammer_cli_foreman/settings.rb +1 -1
  46. data/lib/hammer_cli_foreman/smart_class_parameter.rb +24 -14
  47. data/lib/hammer_cli_foreman/smart_proxy.rb +5 -7
  48. data/lib/hammer_cli_foreman/smart_variable.rb +24 -12
  49. data/lib/hammer_cli_foreman/ssh_keys.rb +56 -0
  50. data/lib/hammer_cli_foreman/subnet.rb +6 -9
  51. data/lib/hammer_cli_foreman/template.rb +16 -9
  52. data/lib/hammer_cli_foreman/user.rb +10 -52
  53. data/lib/hammer_cli_foreman/usergroup.rb +3 -3
  54. data/lib/hammer_cli_foreman/version.rb +1 -1
  55. data/test/data/1.15/foreman_api.json +1 -1
  56. data/test/data/1.16/foreman_api.json +1 -0
  57. data/test/functional/compute_resource_test.rb +117 -0
  58. data/test/functional/filter_test.rb +2 -2
  59. data/test/functional/host_test.rb +61 -10
  60. data/test/functional/location_test.rb +5 -5
  61. data/test/functional/organization_test.rb +7 -7
  62. data/test/functional/role_test.rb +3 -3
  63. data/test/functional/smart_class_parameter_test.rb +5 -5
  64. data/test/functional/smart_variable_test.rb +1 -1
  65. data/test/functional/ssh_keys_test.rb +105 -0
  66. data/test/functional/template_test.rb +30 -4
  67. data/test/functional/user_test.rb +5 -5
  68. data/test/reports/TEST-HammerCLIForeman-Architecture-CreateCommand-parameters.xml +11 -0
  69. data/test/reports/TEST-HammerCLIForeman-Architecture-CreateCommand.xml +7 -0
  70. data/test/reports/TEST-HammerCLIForeman-Architecture-DeleteCommand-parameters.xml +13 -0
  71. data/test/reports/TEST-HammerCLIForeman-Architecture-DeleteCommand.xml +7 -0
  72. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand-output.xml +13 -0
  73. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand-parameters.xml +13 -0
  74. data/test/reports/TEST-HammerCLIForeman-Architecture-InfoCommand.xml +7 -0
  75. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand-output.xml +13 -0
  76. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand-parameters.xml +17 -0
  77. data/test/reports/TEST-HammerCLIForeman-Architecture-ListCommand.xml +7 -0
  78. data/test/reports/TEST-HammerCLIForeman-Architecture-UpdateCommand-parameters.xml +15 -0
  79. data/test/reports/TEST-HammerCLIForeman-Architecture-UpdateCommand.xml +7 -0
  80. data/test/reports/TEST-HammerCLIForeman-Architecture.xml +7 -0
  81. data/test/reports/TEST-HammerCLIForeman-CommonParameter-DeleteCommand-parameters.xml +11 -0
  82. data/test/reports/TEST-HammerCLIForeman-CommonParameter-DeleteCommand.xml +7 -0
  83. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand-output.xml +13 -0
  84. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand-parameters.xml +17 -0
  85. data/test/reports/TEST-HammerCLIForeman-CommonParameter-ListCommand.xml +7 -0
  86. data/test/reports/TEST-HammerCLIForeman-CommonParameter-SetCommand-parameters.xml +13 -0
  87. data/test/reports/TEST-HammerCLIForeman-CommonParameter-SetCommand.xml +7 -0
  88. data/test/reports/TEST-HammerCLIForeman-CommonParameter.xml +7 -0
  89. data/test/reports/TEST-HammerCLIForeman-ComputeResource-CreateCommand-parameters.xml +15 -0
  90. data/test/reports/TEST-HammerCLIForeman-ComputeResource-CreateCommand.xml +7 -0
  91. data/test/reports/TEST-HammerCLIForeman-ComputeResource-DeleteCommand-parameters.xml +13 -0
  92. data/test/reports/TEST-HammerCLIForeman-ComputeResource-DeleteCommand.xml +7 -0
  93. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand-output.xml +17 -0
  94. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand-parameters.xml +13 -0
  95. data/test/reports/TEST-HammerCLIForeman-ComputeResource-InfoCommand.xml +7 -0
  96. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand-output.xml +15 -0
  97. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand-parameters.xml +17 -0
  98. data/test/reports/TEST-HammerCLIForeman-ComputeResource-ListCommand.xml +7 -0
  99. data/test/reports/TEST-HammerCLIForeman-ComputeResource-UpdateCommand-parameters.xml +15 -0
  100. data/test/reports/TEST-HammerCLIForeman-ComputeResource-UpdateCommand.xml +7 -0
  101. data/test/reports/TEST-HammerCLIForeman-ComputeResource.xml +7 -0
  102. data/test/reports/TEST-HammerCLIForeman-Domain-CreateCommand-parameters.xml +11 -0
  103. data/test/reports/TEST-HammerCLIForeman-Domain-CreateCommand.xml +7 -0
  104. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteCommand-parameters.xml +13 -0
  105. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteCommand.xml +7 -0
  106. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteParameterCommand-parameters.xml +15 -0
  107. data/test/reports/TEST-HammerCLIForeman-Domain-DeleteParameterCommand.xml +7 -0
  108. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand-output.xml +21 -0
  109. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand-parameters.xml +13 -0
  110. data/test/reports/TEST-HammerCLIForeman-Domain-InfoCommand.xml +7 -0
  111. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand-output.xml +13 -0
  112. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand-parameters.xml +17 -0
  113. data/test/reports/TEST-HammerCLIForeman-Domain-ListCommand.xml +7 -0
  114. data/test/reports/TEST-HammerCLIForeman-Domain-SetParameterCommand-parameters.xml +17 -0
  115. data/test/reports/TEST-HammerCLIForeman-Domain-SetParameterCommand.xml +7 -0
  116. data/test/reports/TEST-HammerCLIForeman-Domain-UpdateCommand-parameters.xml +15 -0
  117. data/test/reports/TEST-HammerCLIForeman-Domain-UpdateCommand.xml +7 -0
  118. data/test/reports/TEST-HammerCLIForeman-Domain.xml +7 -0
  119. data/test/reports/TEST-HammerCLIForeman-Environment-CreateCommand-parameters.xml +11 -0
  120. data/test/reports/TEST-HammerCLIForeman-Environment-CreateCommand.xml +7 -0
  121. data/test/reports/TEST-HammerCLIForeman-Environment-DeleteCommand-parameters.xml +13 -0
  122. data/test/reports/TEST-HammerCLIForeman-Environment-DeleteCommand.xml +7 -0
  123. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand-output.xml +17 -0
  124. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand-parameters.xml +13 -0
  125. data/test/reports/TEST-HammerCLIForeman-Environment-InfoCommand.xml +7 -0
  126. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand-output.xml +13 -0
  127. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand-parameters.xml +17 -0
  128. data/test/reports/TEST-HammerCLIForeman-Environment-ListCommand.xml +7 -0
  129. data/test/reports/TEST-HammerCLIForeman-Environment-UpdateCommand-parameters.xml +15 -0
  130. data/test/reports/TEST-HammerCLIForeman-Environment-UpdateCommand.xml +7 -0
  131. data/test/reports/TEST-HammerCLIForeman-Environment.xml +7 -0
  132. data/test/reports/TEST-HammerCLIForeman-ExceptionHandler.xml +13 -0
  133. data/test/reports/TEST-HammerCLIForeman-Host-CreateCommand-parameters.xml +46 -0
  134. data/test/reports/TEST-HammerCLIForeman-Host-CreateCommand.xml +7 -0
  135. data/test/reports/TEST-HammerCLIForeman-Host-DeleteCommand-parameters.xml +13 -0
  136. data/test/reports/TEST-HammerCLIForeman-Host-DeleteCommand.xml +7 -0
  137. data/test/reports/TEST-HammerCLIForeman-Host-DeleteParameterCommand-parameters.xml +15 -0
  138. data/test/reports/TEST-HammerCLIForeman-Host-DeleteParameterCommand.xml +7 -0
  139. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand-output.xml +85 -0
  140. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand-parameters.xml +13 -0
  141. data/test/reports/TEST-HammerCLIForeman-Host-InfoCommand.xml +7 -0
  142. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand-output.xml +21 -0
  143. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand-parameters.xml +17 -0
  144. data/test/reports/TEST-HammerCLIForeman-Host-ListCommand.xml +7 -0
  145. data/test/reports/TEST-HammerCLIForeman-Host-PuppetRunCommand-output.xml +9 -0
  146. data/test/reports/TEST-HammerCLIForeman-Host-PuppetRunCommand.xml +7 -0
  147. data/test/reports/TEST-HammerCLIForeman-Host-SetParameterCommand-parameters.xml +17 -0
  148. data/test/reports/TEST-HammerCLIForeman-Host-SetParameterCommand.xml +7 -0
  149. data/test/reports/TEST-HammerCLIForeman-Host-StatusCommand-output.xml +9 -0
  150. data/test/reports/TEST-HammerCLIForeman-Host-StatusCommand.xml +7 -0
  151. data/test/reports/TEST-HammerCLIForeman-Host-UpdateCommand-parameters.xml +40 -0
  152. data/test/reports/TEST-HammerCLIForeman-Host-UpdateCommand.xml +7 -0
  153. data/test/reports/TEST-HammerCLIForeman-Host.xml +7 -0
  154. data/test/reports/TEST-HammerCLIForeman-Hostgroup-CreateCommand-parameters.xml +11 -0
  155. data/test/reports/TEST-HammerCLIForeman-Hostgroup-CreateCommand.xml +7 -0
  156. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteCommand-parameters.xml +11 -0
  157. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteCommand.xml +7 -0
  158. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteParameterCommand-parameters.xml +13 -0
  159. data/test/reports/TEST-HammerCLIForeman-Hostgroup-DeleteParameterCommand.xml +7 -0
  160. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand-output.xml +29 -0
  161. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand-parameters.xml +11 -0
  162. data/test/reports/TEST-HammerCLIForeman-Hostgroup-InfoCommand.xml +7 -0
  163. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand-output.xml +27 -0
  164. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand-parameters.xml +17 -0
  165. data/test/reports/TEST-HammerCLIForeman-Hostgroup-ListCommand.xml +7 -0
  166. data/test/reports/TEST-HammerCLIForeman-Hostgroup-SetParameterCommand-parameters.xml +15 -0
  167. data/test/reports/TEST-HammerCLIForeman-Hostgroup-SetParameterCommand.xml +7 -0
  168. data/test/reports/TEST-HammerCLIForeman-Hostgroup-UpdateCommand-parameters.xml +13 -0
  169. data/test/reports/TEST-HammerCLIForeman-Hostgroup-UpdateCommand.xml +7 -0
  170. data/test/reports/TEST-HammerCLIForeman-Hostgroup.xml +7 -0
  171. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand-parameters.xml +11 -0
  172. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand-resource-disabled.xml +11 -0
  173. data/test/reports/TEST-HammerCLIForeman-Location-CreateCommand.xml +7 -0
  174. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand-parameters.xml +13 -0
  175. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand-resource-disabled.xml +11 -0
  176. data/test/reports/TEST-HammerCLIForeman-Location-DeleteCommand.xml +7 -0
  177. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-output.xml +17 -0
  178. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-parameters.xml +13 -0
  179. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand-resource-disabled.xml +11 -0
  180. data/test/reports/TEST-HammerCLIForeman-Location-InfoCommand.xml +7 -0
  181. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-output.xml +13 -0
  182. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-parameters.xml +17 -0
  183. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand-resource-disabled.xml +11 -0
  184. data/test/reports/TEST-HammerCLIForeman-Location-ListCommand.xml +7 -0
  185. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand-parameters.xml +15 -0
  186. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand-resource-disabled.xml +11 -0
  187. data/test/reports/TEST-HammerCLIForeman-Location-UpdateCommand.xml +7 -0
  188. data/test/reports/TEST-HammerCLIForeman-Location.xml +7 -0
  189. data/test/reports/TEST-HammerCLIForeman-Medium-CreateCommand-parameters.xml +13 -0
  190. data/test/reports/TEST-HammerCLIForeman-Medium-CreateCommand.xml +7 -0
  191. data/test/reports/TEST-HammerCLIForeman-Medium-DeleteCommand-parameters.xml +13 -0
  192. data/test/reports/TEST-HammerCLIForeman-Medium-DeleteCommand.xml +7 -0
  193. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand-output.xml +23 -0
  194. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand-parameters.xml +13 -0
  195. data/test/reports/TEST-HammerCLIForeman-Medium-InfoCommand.xml +7 -0
  196. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand-output.xml +15 -0
  197. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand-parameters.xml +17 -0
  198. data/test/reports/TEST-HammerCLIForeman-Medium-ListCommand.xml +7 -0
  199. data/test/reports/TEST-HammerCLIForeman-Medium-UpdateCommand-parameters.xml +17 -0
  200. data/test/reports/TEST-HammerCLIForeman-Medium-UpdateCommand.xml +7 -0
  201. data/test/reports/TEST-HammerCLIForeman-Medium.xml +7 -0
  202. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-CreateCommand-parameters.xml +11 -0
  203. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-CreateCommand.xml +7 -0
  204. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteCommand-parameters.xml +13 -0
  205. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteCommand.xml +7 -0
  206. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteParameterCommand-parameters.xml +13 -0
  207. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-DeleteParameterCommand.xml +7 -0
  208. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand-output.xml +27 -0
  209. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand-parameters.xml +13 -0
  210. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-InfoCommand.xml +7 -0
  211. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand-output.xml +17 -0
  212. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand-parameters.xml +17 -0
  213. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-ListCommand.xml +7 -0
  214. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-SetParameterCommand-parameters.xml +15 -0
  215. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-SetParameterCommand.xml +7 -0
  216. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-UpdateCommand-parameters.xml +17 -0
  217. data/test/reports/TEST-HammerCLIForeman-OperatingSystem-UpdateCommand.xml +7 -0
  218. data/test/reports/TEST-HammerCLIForeman-OperatingSystem.xml +7 -0
  219. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand-parameters.xml +11 -0
  220. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand-resource-disabled.xml +11 -0
  221. data/test/reports/TEST-HammerCLIForeman-Organization-CreateCommand.xml +7 -0
  222. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand-parameters.xml +13 -0
  223. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand-resource-disabled.xml +11 -0
  224. data/test/reports/TEST-HammerCLIForeman-Organization-DeleteCommand.xml +7 -0
  225. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-output.xml +17 -0
  226. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-parameters.xml +13 -0
  227. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand-resource-disabled.xml +11 -0
  228. data/test/reports/TEST-HammerCLIForeman-Organization-InfoCommand.xml +7 -0
  229. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-output.xml +13 -0
  230. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-parameters.xml +17 -0
  231. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand-resource-disabled.xml +11 -0
  232. data/test/reports/TEST-HammerCLIForeman-Organization-ListCommand.xml +7 -0
  233. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand-parameters.xml +15 -0
  234. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand-resource-disabled.xml +11 -0
  235. data/test/reports/TEST-HammerCLIForeman-Organization-UpdateCommand.xml +7 -0
  236. data/test/reports/TEST-HammerCLIForeman-Organization.xml +7 -0
  237. data/test/reports/TEST-HammerCLIForeman-PartitionTable-CreateCommand-parameters.xml +13 -0
  238. data/test/reports/TEST-HammerCLIForeman-PartitionTable-CreateCommand.xml +7 -0
  239. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DeleteCommand-parameters.xml +13 -0
  240. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DeleteCommand.xml +7 -0
  241. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DumpCommand-parameters.xml +15 -0
  242. data/test/reports/TEST-HammerCLIForeman-PartitionTable-DumpCommand.xml +7 -0
  243. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand-output.xml +19 -0
  244. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand-parameters.xml +13 -0
  245. data/test/reports/TEST-HammerCLIForeman-PartitionTable-InfoCommand.xml +7 -0
  246. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand-output.xml +15 -0
  247. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand-parameters.xml +17 -0
  248. data/test/reports/TEST-HammerCLIForeman-PartitionTable-ListCommand.xml +7 -0
  249. data/test/reports/TEST-HammerCLIForeman-PartitionTable-UpdateCommand-parameters.xml +13 -0
  250. data/test/reports/TEST-HammerCLIForeman-PartitionTable-UpdateCommand.xml +7 -0
  251. data/test/reports/TEST-HammerCLIForeman-PartitionTable.xml +7 -0
  252. data/test/reports/TEST-HammerCLIForeman-SmartProxy-CreateCommand-parameters.xml +13 -0
  253. data/test/reports/TEST-HammerCLIForeman-SmartProxy-CreateCommand.xml +7 -0
  254. data/test/reports/TEST-HammerCLIForeman-SmartProxy-DeleteCommand-parameters.xml +13 -0
  255. data/test/reports/TEST-HammerCLIForeman-SmartProxy-DeleteCommand.xml +7 -0
  256. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand-output.xml +21 -0
  257. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand-parameters.xml +13 -0
  258. data/test/reports/TEST-HammerCLIForeman-SmartProxy-InfoCommand.xml +7 -0
  259. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand-output.xml +15 -0
  260. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand-parameters.xml +11 -0
  261. data/test/reports/TEST-HammerCLIForeman-SmartProxy-ListCommand.xml +7 -0
  262. data/test/reports/TEST-HammerCLIForeman-SmartProxy-UpdateCommand-parameters.xml +15 -0
  263. data/test/reports/TEST-HammerCLIForeman-SmartProxy-UpdateCommand.xml +7 -0
  264. data/test/reports/TEST-HammerCLIForeman-SmartProxy.xml +7 -0
  265. data/test/reports/TEST-HammerCLIForeman-Subnet-CreateCommand-parameters.xml +15 -0
  266. data/test/reports/TEST-HammerCLIForeman-Subnet-CreateCommand.xml +7 -0
  267. data/test/reports/TEST-HammerCLIForeman-Subnet-DeleteCommand-parameters.xml +13 -0
  268. data/test/reports/TEST-HammerCLIForeman-Subnet-DeleteCommand.xml +7 -0
  269. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand-output.xml +43 -0
  270. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand-parameters.xml +13 -0
  271. data/test/reports/TEST-HammerCLIForeman-Subnet-InfoCommand.xml +7 -0
  272. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand-output.xml +17 -0
  273. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand-parameters.xml +17 -0
  274. data/test/reports/TEST-HammerCLIForeman-Subnet-ListCommand.xml +7 -0
  275. data/test/reports/TEST-HammerCLIForeman-Subnet-UpdateCommand-parameters.xml +15 -0
  276. data/test/reports/TEST-HammerCLIForeman-Subnet-UpdateCommand.xml +7 -0
  277. data/test/reports/TEST-HammerCLIForeman-Subnet.xml +7 -0
  278. data/test/reports/TEST-HammerCLIForeman-Template-CreateCommand-parameters.xml +15 -0
  279. data/test/reports/TEST-HammerCLIForeman-Template-CreateCommand.xml +7 -0
  280. data/test/reports/TEST-HammerCLIForeman-Template-DeleteCommand-parameters.xml +11 -0
  281. data/test/reports/TEST-HammerCLIForeman-Template-DeleteCommand.xml +7 -0
  282. data/test/reports/TEST-HammerCLIForeman-Template-DumpCommand-parameters.xml +12 -0
  283. data/test/reports/TEST-HammerCLIForeman-Template-DumpCommand.xml +7 -0
  284. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand-output.xml +17 -0
  285. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand-parameters.xml +11 -0
  286. data/test/reports/TEST-HammerCLIForeman-Template-InfoCommand.xml +7 -0
  287. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand-output.xml +15 -0
  288. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand-parameters.xml +17 -0
  289. data/test/reports/TEST-HammerCLIForeman-Template-ListCommand.xml +7 -0
  290. data/test/reports/TEST-HammerCLIForeman-Template-ListKindsCommand-parameters.xml +9 -0
  291. data/test/reports/TEST-HammerCLIForeman-Template-ListKindsCommand.xml +7 -0
  292. data/test/reports/TEST-HammerCLIForeman-Template-UpdateCommand-parameters.xml +11 -0
  293. data/test/reports/TEST-HammerCLIForeman-Template-UpdateCommand.xml +7 -0
  294. data/test/reports/TEST-HammerCLIForeman-Template.xml +7 -0
  295. data/test/reports/TEST-HammerCLIForeman-User-CreateCommand-parameters.xml +19 -0
  296. data/test/reports/TEST-HammerCLIForeman-User-CreateCommand.xml +7 -0
  297. data/test/reports/TEST-HammerCLIForeman-User-DeleteCommand-parameters.xml +11 -0
  298. data/test/reports/TEST-HammerCLIForeman-User-DeleteCommand.xml +7 -0
  299. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand-output.xml +23 -0
  300. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand-parameters.xml +11 -0
  301. data/test/reports/TEST-HammerCLIForeman-User-InfoCommand.xml +7 -0
  302. data/test/reports/TEST-HammerCLIForeman-User-ListCommand-output.xml +17 -0
  303. data/test/reports/TEST-HammerCLIForeman-User-ListCommand-parameters.xml +17 -0
  304. data/test/reports/TEST-HammerCLIForeman-User-ListCommand.xml +7 -0
  305. data/test/reports/TEST-HammerCLIForeman-User-UpdateCommand-parameters.xml +11 -0
  306. data/test/reports/TEST-HammerCLIForeman-User-UpdateCommand.xml +7 -0
  307. data/test/reports/TEST-HammerCLIForeman-User.xml +7 -0
  308. data/test/reports/TEST-MiniTest-Spec.xml +7 -0
  309. data/test/unit/api/interactive_basic_auth_test.rb +20 -1
  310. data/test/unit/api/session_authenticator_wrapper_test.rb +23 -8
  311. data/test/unit/api/void_auth_test.rb +11 -0
  312. data/test/unit/commands_test.rb +1 -1
  313. data/test/unit/exception_handler_test.rb +24 -3
  314. data/test/unit/helpers/command.rb +6 -2
  315. data/test/unit/host_test.rb +2 -2
  316. data/test/unit/hostgroup_test.rb +5 -3
  317. data/test/unit/id_resolver_test.rb +53 -5
  318. data/test/unit/media_test.rb +2 -2
  319. data/test/unit/option_sources/id_params_test.rb +30 -0
  320. data/test/unit/option_sources/ids_params_test.rb +30 -0
  321. data/test/unit/output/formatters_test.rb +4 -0
  322. data/test/unit/smart_class_parameter_test.rb +4 -4
  323. data/test/unit/smart_variable_test.rb +2 -2
  324. data/test/unit/user_test.rb +1 -2
  325. metadata +569 -69
@@ -54,7 +54,7 @@ module HammerCLIForeman
54
54
 
55
55
 
56
56
  class CreateCommand < HammerCLIForeman::CreateCommand
57
- success_message _("External user group created")
57
+ success_message _("External user group created.")
58
58
  failure_message _("Could not create external user group")
59
59
 
60
60
  build_options
@@ -62,7 +62,7 @@ module HammerCLIForeman
62
62
 
63
63
 
64
64
  class UpdateCommand < HammerCLIForeman::UpdateCommand
65
- success_message _("External user group updated")
65
+ success_message _("External user group updated.")
66
66
  failure_message _("Could not update external user group")
67
67
 
68
68
  build_options
@@ -70,7 +70,7 @@ module HammerCLIForeman
70
70
 
71
71
 
72
72
  class DeleteCommand < HammerCLIForeman::DeleteCommand
73
- success_message _("External user group deleted")
73
+ success_message _("External user group deleted.")
74
74
  failure_message _("Could not delete the external user group")
75
75
 
76
76
  build_options
@@ -80,4 +80,3 @@ module HammerCLIForeman
80
80
  end
81
81
 
82
82
  end
83
-
@@ -43,23 +43,28 @@ module HammerCLIForeman
43
43
 
44
44
 
45
45
  module TaxonomyCheck
46
- def taxonomy_options?
47
- option_location_names || option_location_ids || option_organization_names || option_organization_ids
48
- end
49
-
50
- def signal_override_usage_error
51
- signal_usage_error _('Organizations and locations can be set only for overriding filters')
52
- end
53
46
 
54
47
  def self.included(base)
48
+ def taxonomy_options?
49
+ opt_names = ['location_ids', 'organization_ids']
50
+ opt_names += resolver.searchables(:locations).map { |s| 'location_' + s.plural_name }
51
+ opt_names += resolver.searchables(:organizations).map { |s| 'organization_' + s.plural_name }
52
+ opt_names.any? { |opt| send(HammerCLI.option_accessor_name(opt)) }
53
+ end
54
+
55
+ def signal_override_usage_error
56
+ signal_usage_error _('Organizations and locations can be set only for overriding filters.')
57
+ end
58
+
55
59
  base.extend_help do |h|
56
- h.section('Overriding organizations and locations') do
60
+ h.section(_('Overriding organizations and locations')) do
57
61
  override_condition = "--override=true"
58
62
  org_opts = '--organization[s|-ids]'
59
63
  loc_opts = '--location[s|-ids]'
60
64
 
61
- h.text(_("Filters inherit organizations and locations from its role by default. This behavior can be changed by setting %{condition}\n"+
65
+ h.text(_("Filters inherit organizations and locations from its role by default. This behavior can be changed by setting %{condition}.%{wsp}" +
62
66
  "Therefore options %{org_opts} and %{loc_opts} are applicable only when the override flag is set.") % {
67
+ :wsp => "\n",
63
68
  :org_opts => org_opts,
64
69
  :loc_opts => loc_opts,
65
70
  :condition => override_condition
@@ -73,12 +78,11 @@ module HammerCLIForeman
73
78
  class CreateCommand < HammerCLIForeman::CreateCommand
74
79
  include TaxonomyCheck
75
80
 
76
- success_message _("Permission filter for [%<resource_type>s] created")
81
+ success_message _("Permission filter for [%<resource_type>s] created.")
77
82
  failure_message _("Could not create the permission filter")
78
83
 
79
- def execute
84
+ def validate_options
80
85
  signal_override_usage_error if !option_override && taxonomy_options?
81
- super
82
86
  end
83
87
 
84
88
  build_options
@@ -88,7 +92,7 @@ module HammerCLIForeman
88
92
  class UpdateCommand < HammerCLIForeman::UpdateCommand
89
93
  include TaxonomyCheck
90
94
 
91
- success_message _("Permission filter for [%<resource_type>s] updated")
95
+ success_message _("Permission filter for [%<resource_type>s] updated.")
92
96
  failure_message _("Could not update the permission filter")
93
97
 
94
98
  def request_params
@@ -101,9 +105,8 @@ module HammerCLIForeman
101
105
  params
102
106
  end
103
107
 
104
- def execute
108
+ def validate_options
105
109
  signal_override_usage_error if !override? && taxonomy_options?
106
- super
107
110
  end
108
111
 
109
112
  def override?
@@ -115,7 +118,7 @@ module HammerCLIForeman
115
118
  end
116
119
 
117
120
  def filter
118
- @filter ||= HammerCLIForeman.foreman_resource!(:filters).action(:show).call({ :id => option_id }, request_headers, request_options)
121
+ @filter ||= HammerCLIForeman.foreman_resource!(:filters).action(:show).call({ :id => get_identifier }, request_headers, request_options)
119
122
  end
120
123
 
121
124
  build_options
@@ -123,7 +126,7 @@ module HammerCLIForeman
123
126
 
124
127
 
125
128
  class DeleteCommand < HammerCLIForeman::DeleteCommand
126
- success_message _("Permission filter deleted")
129
+ success_message _("Permission filter deleted.")
127
130
  failure_message _("Could not delete the permission filter")
128
131
 
129
132
  build_options
@@ -161,8 +164,4 @@ module HammerCLIForeman
161
164
 
162
165
  autoload_subcommands
163
166
  end
164
-
165
167
  end
166
-
167
-
168
-
@@ -35,7 +35,7 @@ module HammerCLIForeman
35
35
  field :mac, _("MAC")
36
36
  end
37
37
 
38
- build_options
38
+ build_options :without => [:include, :thin]
39
39
  end
40
40
 
41
41
 
@@ -61,9 +61,9 @@ module HammerCLIForeman
61
61
  field nil, _("Host Group"), Fields::SingleReference, :key => :hostgroup, :display_field => 'title'
62
62
  field nil, _("Compute Resource"), Fields::SingleReference, :key => :compute_resource
63
63
  field nil, _("Compute Profile"), Fields::SingleReference, :key => :compute_profile, :hide_blank => true
64
- field nil, _("Environment"), Fields::SingleReference, :key => :environment
65
- field :puppet_ca_proxy_id, _("Puppet CA Id")
66
- field :puppet_proxy_id, _("Puppet Master Id")
64
+ field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
65
+ field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
66
+ field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
67
67
  field :certname, _("Cert name")
68
68
  field :managed, _("Managed"), Fields::Boolean
69
69
 
@@ -71,9 +71,11 @@ module HammerCLIForeman
71
71
  field :last_report, _("Last report"), Fields::Date
72
72
 
73
73
  label _("Network") do
74
- field :ip, _("IP")
74
+ field :ip, _("IPv4 address"), Fields::Field, :hide_blank => true
75
+ field :ip6, _("IPv6 address"), Fields::Field, :hide_blank => true
75
76
  field :mac, _("MAC")
76
- field nil, _("Subnet"), Fields::SingleReference, :key => :subnet
77
+ field nil, _("Subnet ipv4"), Fields::SingleReference, :key => :subnet
78
+ field nil, _("Subnet ipv6"), Fields::SingleReference, :key => :subnet6
77
79
  field nil, _("Domain"), Fields::SingleReference, :key => :domain
78
80
  field nil, _("Service provider"), Fields::Label, :hide_blank => true do
79
81
  field :sp_name, _("SP Name"), Fields::Field, :hide_blank => true
@@ -88,7 +90,8 @@ module HammerCLIForeman
88
90
  field :identifier, _('Identifier')
89
91
  field :_type, _('Type')
90
92
  field :mac, _('MAC address')
91
- field :ip, _('IP address')
93
+ field :ip, _('IPv4 address'), Fields::Field, :hide_blank => true
94
+ field :ip6, _('IPv6 address'), Fields::Field, :hide_blank => true
92
95
  field :fqdn, _('FQDN')
93
96
  end
94
97
 
@@ -100,6 +103,7 @@ module HammerCLIForeman
100
103
  field :build, _("Build"), Fields::Boolean
101
104
  field nil, _("Medium"), Fields::SingleReference, :key => :medium
102
105
  field nil, _("Partition Table"), Fields::SingleReference, :key => :ptable
106
+ field :pxe_loader, _("PXE Loader"), Fields::Field, :hide_blank => true
103
107
  field :disk, _("Custom partition table"), Fields::LongText
104
108
  # image
105
109
  # for image based
@@ -113,7 +117,7 @@ module HammerCLIForeman
113
117
 
114
118
  # additional info
115
119
  label _("Additional info") do
116
- field :owner_id, _("Owner Id")
120
+ field nil, _("Owner"), Fields::SingleReference, :key => :owner
117
121
  field :owner_type, _("Owner Type")
118
122
  field :enabled, _("Enabled"), Fields::Boolean
119
123
  field nil, _("Model"), Fields::SingleReference, :key => :model, :hide_blank => true
@@ -209,18 +213,39 @@ module HammerCLIForeman
209
213
  end
210
214
 
211
215
 
212
- class ReportsCommand < HammerCLIForeman::AssociatedResourceListCommand
216
+ class ReportsCommand < HammerCLIForeman::ListCommand
213
217
  command_name "reports"
214
218
  resource :reports, :index
215
- parent_resource :hosts
219
+
220
+ option('--id', "ID", _('Host id'), :referenced_resource => 'host')
221
+ option('--name', "NAME", _('Host name'))
216
222
 
217
223
  output HammerCLIForeman::Report::ListCommand.output_definition
218
224
 
225
+ def validate_options
226
+ validator.any(:option_name, :option_id).required
227
+ end
228
+
229
+ def request_params
230
+ params = super
231
+ search = []
232
+ search << params['search'] if params['search']
233
+
234
+ hostname = get_option_value('name')
235
+ search << %Q(host="#{hostname}") if hostname
236
+
237
+ host_id = get_option_value('id')
238
+ search << "host_id=#{host_id}" if host_id
239
+
240
+ params['search'] = search.join(' and ') unless search.empty?
241
+ params
242
+ end
243
+
219
244
  build_options
220
245
  end
221
246
 
222
247
  class CreateCommand < HammerCLIForeman::CreateCommand
223
- success_message _("Host created")
248
+ success_message _("Host created.")
224
249
  failure_message _("Could not create the host")
225
250
 
226
251
  include HammerCLIForeman::Hosts::CommonUpdateOptions
@@ -241,7 +266,7 @@ module HammerCLIForeman
241
266
  end
242
267
 
243
268
  class UpdateCommand < HammerCLIForeman::UpdateCommand
244
- success_message _("Host updated")
269
+ success_message _("Host updated.")
245
270
  failure_message _("Could not update the host")
246
271
 
247
272
  include HammerCLIForeman::Hosts::CommonUpdateOptions
@@ -250,7 +275,7 @@ module HammerCLIForeman
250
275
 
251
276
 
252
277
  class DeleteCommand < HammerCLIForeman::DeleteCommand
253
- success_message _("Host deleted")
278
+ success_message _("Host deleted.")
254
279
  failure_message _("Could not delete the host")
255
280
 
256
281
  build_options
@@ -258,7 +283,7 @@ module HammerCLIForeman
258
283
 
259
284
 
260
285
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
261
- desc _("Create or update parameter for a host.")
286
+ desc _("Create or update parameter for a host")
262
287
 
263
288
  success_message_for :update, _("Host parameter updated")
264
289
  success_message_for :create, _("New host parameter created")
@@ -274,9 +299,9 @@ module HammerCLIForeman
274
299
 
275
300
 
276
301
  class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
277
- desc _("Delete parameter for a host.")
302
+ desc _("Delete parameter for a host")
278
303
 
279
- success_message _("Host parameter deleted")
304
+ success_message _("Host parameter deleted.")
280
305
 
281
306
  def validate_options
282
307
  super
@@ -326,9 +351,9 @@ module HammerCLIForeman
326
351
 
327
352
  def success_message
328
353
  if option_force?
329
- _("Power off forced.")
354
+ _("Power off forced")
330
355
  else
331
- _("Powering the host off.")
356
+ _("Powering the host off")
332
357
  end
333
358
  end
334
359
 
@@ -61,11 +61,11 @@ module HammerCLIForeman
61
61
  field :name, _("Name")
62
62
  field :title, _("Title")
63
63
  field nil, _("Operating System"), Fields::SingleReference, :key => :operatingsystem
64
- field nil, _("Environment"), Fields::SingleReference, :key => :environment
64
+ field nil, _("Puppet Environment"), Fields::SingleReference, :key => :environment
65
65
  field nil, _("Model"), Fields::SingleReference, :key => :model
66
66
  end
67
67
 
68
- build_options
68
+ build_options :without => :include
69
69
  end
70
70
 
71
71
 
@@ -73,19 +73,26 @@ module HammerCLIForeman
73
73
 
74
74
  output ListCommand.output_definition do
75
75
  field :description, _("Description"), Fields::LongText, :hide_blank => true
76
- field nil, _("Subnet"), Fields::SingleReference, :key => :subnet
77
-
78
- field nil, _("Domain"), Fields::SingleReference, :key => :domain
79
- field nil, _("Architecture"), Fields::SingleReference, :key => :architecture
80
- field nil, _("Partition Table"), Fields::SingleReference, :key => :ptable
81
- field nil, _("Medium"), Fields::SingleReference, :key => :medium
82
- field :puppet_ca_proxy_id, _("Puppet CA Proxy Id")
83
- field :puppet_proxy_id, _("Puppet Master Proxy Id")
76
+ field nil, _("Parent"), Fields::SingleReference, :key => :parent, :hide_blank => true
77
+ field nil, _("Puppet CA Proxy"), Fields::SingleReference, :key => :puppet_ca_proxy
78
+ field nil, _("Puppet Master Proxy"), Fields::SingleReference, :key => :puppet_proxy
84
79
  field nil, _("ComputeProfile"), Fields::SingleReference, :key => :compute_profile
80
+ label _('Network') do
81
+ field nil, _("Subnet ipv4"), Fields::SingleReference, :key => :subnet
82
+ field nil, _("Subnet ipv6"), Fields::SingleReference, :key => :subnet6
83
+ field nil, _("Realm"), Fields::SingleReference, :key => :realm
84
+ field nil, _("Domain"), Fields::SingleReference, :key => :domain
85
+ end
86
+ label _('Operating system') do
87
+ field nil, _("Architecture"), Fields::SingleReference, :key => :architecture
88
+ field nil, _("Operating System"), Fields::SingleReference, :key => :operatingsystem
89
+ field nil, _("Medium"), Fields::SingleReference, :key => :medium
90
+ field nil, _("Partition Table"), Fields::SingleReference, :key => :ptable
91
+ field :pxe_loader, _("PXE Loader"), Fields::Field, :hide_blank => true
92
+ end
85
93
  HammerCLIForeman::References.puppetclasses(self)
86
94
  HammerCLIForeman::References.parameters(self)
87
95
  HammerCLIForeman::References.taxonomies(self)
88
- field :ancestry, _("Parent Id")
89
96
  end
90
97
 
91
98
  build_options
@@ -95,7 +102,7 @@ module HammerCLIForeman
95
102
  class CreateCommand < HammerCLIForeman::CreateCommand
96
103
  include HostgroupUpdateCreateCommons
97
104
 
98
- success_message _("Hostgroup created")
105
+ success_message _("Hostgroup created.")
99
106
  failure_message _("Could not create the hostgroup")
100
107
 
101
108
  build_options
@@ -105,7 +112,7 @@ module HammerCLIForeman
105
112
  class UpdateCommand < HammerCLIForeman::UpdateCommand
106
113
  include HostgroupUpdateCreateCommons
107
114
 
108
- success_message _("Hostgroup updated")
115
+ success_message _("Hostgroup updated.")
109
116
  failure_message _("Could not update the hostgroup")
110
117
 
111
118
  build_options
@@ -113,7 +120,7 @@ module HammerCLIForeman
113
120
 
114
121
 
115
122
  class DeleteCommand < HammerCLIForeman::DeleteCommand
116
- success_message _("Hostgroup deleted")
123
+ success_message _("Hostgroup deleted.")
117
124
  failure_message _("Could not delete the hostgroup")
118
125
 
119
126
  build_options
@@ -138,7 +145,7 @@ module HammerCLIForeman
138
145
 
139
146
 
140
147
  class SetParameterCommand < HammerCLIForeman::Parameter::SetCommand
141
- desc _("Create or update parameter for a hostgroup.")
148
+ desc _("Create or update parameter for a hostgroup")
142
149
 
143
150
  success_message_for :update, _("Hostgroup parameter updated")
144
151
  success_message_for :create, _("New hostgroup parameter created")
@@ -149,9 +156,9 @@ module HammerCLIForeman
149
156
 
150
157
 
151
158
  class DeleteParameterCommand < HammerCLIForeman::Parameter::DeleteCommand
152
- desc _("Delete parameter for a hostgroup.")
159
+ desc _("Delete parameter for a hostgroup")
153
160
 
154
- success_message _("Hostgroup parameter deleted")
161
+ success_message _("Hostgroup parameter deleted.")
155
162
 
156
163
  build_options
157
164
  end
@@ -178,5 +185,3 @@ module HammerCLIForeman
178
185
  end
179
186
 
180
187
  end
181
-
182
-
@@ -35,20 +35,18 @@ module HammerCLIForeman
35
35
  bme_options[:format] = HammerCLI::Options::Normalizers::Bool.new
36
36
  base.option "--overwrite", "OVERWRITE", " ", bme_options
37
37
 
38
- base.option "--parameters", "PARAMS", _("Host parameters."),
38
+ base.option "--parameters", "PARAMS", _("Host parameters"),
39
39
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
40
- base.option "--compute-attributes", "COMPUTE_ATTRS", _("Compute resource attributes."),
40
+ base.option "--compute-attributes", "COMPUTE_ATTRS", _("Compute resource attributes"),
41
41
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
42
42
  base.option "--volume", "VOLUME", _("Volume parameters"), :multivalued => true,
43
43
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
44
- base.option "--interface", "INTERFACE", _("Interface parameters."), :multivalued => true,
44
+ base.option "--interface", "INTERFACE", _("Interface parameters"), :multivalued => true,
45
45
  :format => HammerCLI::Options::Normalizers::KeyValueList.new
46
- base.option "--provision-method", "METHOD", " ",
47
- :format => HammerCLI::Options::Normalizers::Enum.new(['build', 'image'])
48
46
 
49
47
  base.build_options :without => [
50
48
  # - temporarily disabled params that will be removed from the api ------------------
51
- :provision_method, :capabilities, :flavour_ref, :image_ref, :start,
49
+ :capabilities, :flavour_ref, :image_ref, :start,
52
50
  :network, :cpus, :memory, :provider, :type, :tenant_id, :image_id,
53
51
  # ----------------------------------------------------------------------------------
54
52
  :puppet_class_ids, :host_parameters_attributes, :interfaces_attributes, :root_pass]
@@ -52,7 +52,7 @@ module HammerCLIForeman
52
52
  :ptable => [ s_name(_("Partition table name")) ],
53
53
  :proxy => [ s_name(_("Proxy name")) ],
54
54
  :puppetclass => [ s_name(_("Puppet class name")) ],
55
- :report => [ s_name(_("Report name")) ],
55
+ :report => [],
56
56
  :role => [ s_name(_("User role name")) ],
57
57
  :setting => [ s_name(_("Setting name"), :editable => false) ],
58
58
  :subnet => [ s_name(_("Subnet name")) ],
@@ -82,15 +82,22 @@ module HammerCLIForeman
82
82
  define_id_finders
83
83
  end
84
84
 
85
- def scoped_options(scope, options)
85
+ # @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
86
+ def scoped_options(scope, options, mode = nil)
86
87
  scoped_options = options.dup
87
88
 
88
89
  resource = HammerCLIForeman.param_to_resource(scope)
89
90
  return scoped_options unless resource
90
91
 
91
- option_names = searchables(resource).map { |s| s.name }
92
- option_names += searchables(resource).map { |s| s.plural_name }
93
- option_names << "id"
92
+ option_names = []
93
+ if (mode.nil? || mode == :single)
94
+ option_names << "id"
95
+ option_names += searchables(resource).map { |s| s.name }
96
+ end
97
+ if (mode.nil? || mode == :multi)
98
+ option_names << "ids"
99
+ option_names += searchables(resource).map { |s| s.plural_name }
100
+ end
94
101
 
95
102
  option_names.each do |name|
96
103
  option = HammerCLI.option_accessor_name(name)
@@ -106,22 +113,15 @@ module HammerCLIForeman
106
113
  scoped_options
107
114
  end
108
115
 
109
-
110
- def puppetclass_id(options)
111
- if options[HammerCLI.option_accessor_name("id")]
112
- return options[HammerCLI.option_accessor_name("id")]
113
- else
114
- resource = @api.resource(:puppetclasses)
115
- results = resolved_call(:puppetclasses, :index, options)[0]
116
- results = results.values.flatten
117
- return pick_result(results, resource)['id']
118
- end
119
- end
120
-
121
116
  def puppetclass_ids(options)
122
117
  options[HammerCLI.option_accessor_name("ids")] || find_puppetclasses(options).collect { |c| c['id'] }
123
118
  end
124
119
 
120
+ def searchables(resource)
121
+ resource = @api.resource(resource) if resource.is_a? Symbol
122
+ @searchables.for(resource)
123
+ end
124
+
125
125
  protected
126
126
 
127
127
  def define_id_finders
@@ -140,23 +140,39 @@ module HammerCLIForeman
140
140
  end
141
141
 
142
142
  def get_id(resource_name, options)
143
- options[HammerCLI.option_accessor_name("id")] || find_resource(resource_name, options)['id']
143
+ options[HammerCLI.option_accessor_name("id")] ||
144
+ nil_from_searchables(resource_name, options) ||
145
+ find_resource(resource_name, options)['id']
144
146
  end
145
147
 
146
148
  def get_ids(resource_name, options)
147
149
  if (ids = options[HammerCLI.option_accessor_name("ids")])
148
150
  ids
149
- elsif !options_empty?(@api.resource(resource_name), options)
150
- find_resources(resource_name, options).map{|r| r['id']}
151
- else
151
+ elsif (ids = nil_from_searchables(resource_name, options, :plural => true))
152
+ ids
153
+ elsif options_not_set?(@api.resource(resource_name), options)
154
+ resource = @api.resource(resource_name)
155
+ raise MissingSearchOptions.new(_("Missing options to search %s") % resource.name, resource)
156
+ elsif options_empty?(@api.resource(resource_name), options)
152
157
  []
158
+ else
159
+ find_resources(resource_name, options).map{|r| r['id']}
160
+ end
161
+ end
162
+
163
+ def nil_from_searchables(resource_name, options, plural = false)
164
+ resource = @api.resource(resource_name)
165
+ searchables(resource).each do |s|
166
+ option_name = plural ? s.plural_name.to_s : s.name.to_s
167
+ return HammerCLI::NilValue if options[HammerCLI.option_accessor_name(option_name)] == HammerCLI::NilValue
153
168
  end
169
+ nil
154
170
  end
155
171
 
156
172
  def find_resources(resource_name, options)
157
173
  resource = @api.resource(resource_name)
158
- results = resolved_call(resource_name, :index, options)
159
- raise ResolverError.new(_("one of %s not found") % resource.name, resource) if results.count < expected_record_count(options, resource)
174
+ results = resolved_call(resource_name, :index, options, :multi)
175
+ raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource)
160
176
  results
161
177
  end
162
178
 
@@ -167,8 +183,8 @@ module HammerCLIForeman
167
183
  if (ids = options[HammerCLI.option_accessor_name("ids")])
168
184
  ids
169
185
  elsif !options_empty?(resource, options)
170
- results = resolved_call(resource_name, :index, options).first.values.flatten
171
- raise ResolverError.new(_("one of %s not found") % resource.name, resource) if results.count < expected_record_count(options, resource)
186
+ results = resolved_call(resource_name, :index, options, :multi).first.values.flatten
187
+ raise ResolverError.new(_("one of %s not found.") % resource.name, resource) if results.count < expected_record_count(options, resource)
172
188
  results
173
189
  else
174
190
  []
@@ -182,17 +198,20 @@ module HammerCLIForeman
182
198
  end
183
199
 
184
200
  def find_resource_raw(resource_name, options)
185
- resolved_call(resource_name, :index, options)
201
+ resolved_call(resource_name, :index, options, :single)
186
202
  end
187
203
 
188
204
 
189
- def resolved_call(resource_name, action_name, options)
205
+ # @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
206
+ def resolved_call(resource_name, action_name, options, mode = nil)
190
207
  resource = @api.resource(resource_name)
191
208
  action = resource.action(action_name)
192
209
 
193
- search_options = search_options(options, resource)
210
+ search_options = search_options(options, resource, mode)
194
211
  IdParamsFilter.new(:only_required => true).for_action(action).each do |param|
195
- search_options[param.name] ||= send(param.name, scoped_options(param.name.gsub(/_id$/, ""), options))
212
+ scoped_options_params = [param.name.gsub(/_id$/, ""), options]
213
+ scoped_options_params << mode if method(:scoped_options).arity == -3
214
+ search_options[param.name] ||= send(param.name, scoped_options(*scoped_options_params))
196
215
  end
197
216
  search_options = route_options(options, action).merge(search_options)
198
217
 
@@ -218,26 +237,35 @@ module HammerCLIForeman
218
237
  end
219
238
 
220
239
  def pick_result(results, resource)
221
- raise ResolverError.new(_("%s not found") % resource.singular_name, resource) if results.empty?
222
- raise ResolverError.new(_("found more than one %s") % resource.singular_name, resource) if results.count > 1
240
+ raise ResolverError.new(_("%s not found.") % resource.singular_name, resource) if results.empty?
241
+ raise ResolverError.new(_("Found more than one %s.") % resource.singular_name, resource) if results.count > 1
223
242
  results[0]
224
243
  end
225
244
 
226
- def search_options(options, resource)
227
- method = "create_#{resource.name}_search_options"
228
- search_options = if respond_to?(method, true)
229
- send(method, options)
230
- else
231
- create_search_options(options, resource)
232
- end
233
- raise MissingSearchOptions.new(_("Missing options to search %s") % resource.singular_name, resource) if search_options.empty?
245
+ # @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
246
+ def search_options(options, resource, mode = nil)
247
+ override_method = "create_#{resource.name}_search_options"
248
+ search_options = if respond_to?(override_method, true)
249
+ create_search_options_params = [override_method, options]
250
+ if method(override_method.to_sym).arity == -2
251
+ create_search_options_params << mode
252
+ else
253
+ warn "create_*_search_options methods (#{override_method}) without 'mode' parameter are deprecated"
254
+ end
255
+ send(*create_search_options_params)
256
+ else
257
+ create_search_options_params = [options, resource]
258
+ if method(:create_search_options).arity == -3
259
+ create_search_options_params << mode
260
+ else
261
+ warn "create_search_options methods without 'mode' parameter are deprecated"
262
+ end
263
+ create_search_options(*create_search_options_params)
264
+ end
265
+ raise MissingSearchOptions.new(_("Missing options to search %s.") % resource.singular_name, resource) if search_options.empty?
234
266
  search_options
235
267
  end
236
268
 
237
- def searchables(resource)
238
- @searchables.for(resource)
239
- end
240
-
241
269
  def expected_record_count(options, resource)
242
270
  searchables(resource).each do |s|
243
271
  value = options[HammerCLI.option_accessor_name(s.name.to_s)]
@@ -263,13 +291,20 @@ module HammerCLIForeman
263
291
  end
264
292
 
265
293
  def options_empty?(resource, options)
266
- searchables(resource).any? do |s|
294
+ searchables(resource).all? do |s|
267
295
  values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
268
- values && values.respond_to?(:empty?) && values.empty?
296
+ values.nil? || (values.respond_to?(:empty?) && values.empty?)
269
297
  end
270
298
  end
271
299
 
272
- def create_smart_class_parameters_search_options(options)
300
+ def options_not_set?(resource, options)
301
+ searchables(resource).all? do |s|
302
+ values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
303
+ values.nil?
304
+ end
305
+ end
306
+
307
+ def create_smart_class_parameters_search_options(options, mode = nil)
273
308
  search_options = {}
274
309
  value = options[HammerCLI.option_accessor_name('name')]
275
310
  search_options[:search] = "key = \"#{value}\""
@@ -277,7 +312,7 @@ module HammerCLIForeman
277
312
  search_options
278
313
  end
279
314
 
280
- def create_smart_variables_search_options(options)
315
+ def create_smart_variables_search_options(options, mode = nil)
281
316
  search_options = {}
282
317
  value = options[HammerCLI.option_accessor_name('variable')]
283
318
 
@@ -288,13 +323,14 @@ module HammerCLIForeman
288
323
  search_options
289
324
  end
290
325
 
291
- def create_search_options(options, resource)
326
+ # @param mode [Symbol] mode in which ids are searched :single, :multi, nil for old beahvior
327
+ def create_search_options(options, resource, mode = nil)
292
328
  searchables(resource).each do |s|
293
329
  value = options[HammerCLI.option_accessor_name(s.name.to_s)]
294
330
  values = options[HammerCLI.option_accessor_name(s.plural_name.to_s)]
295
- if value
331
+ if value && (mode.nil? || mode == :single)
296
332
  return {:search => "#{s.name} = \"#{value}\""}
297
- elsif values
333
+ elsif values && (mode.nil? || mode == :multi)
298
334
  query = values.map{|v| "#{s.name} = \"#{v}\"" }.join(" or ")
299
335
  return {:search => query}
300
336
  end