hammer_cli_foreman 0.11.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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