hammer_cli_foreman 0.1.4 → 0.2.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 (85) hide show
  1. checksums.yaml +4 -4
  2. data/config/foreman.yml +16 -0
  3. data/doc/host_create.md +102 -54
  4. data/doc/release_notes.md +20 -0
  5. data/lib/hammer_cli_foreman.rb +8 -0
  6. data/lib/hammer_cli_foreman/commands.rb +33 -9
  7. data/lib/hammer_cli_foreman/compute_resource.rb +13 -2
  8. data/lib/hammer_cli_foreman/domain.rb +24 -1
  9. data/lib/hammer_cli_foreman/environment.rb +1 -2
  10. data/lib/hammer_cli_foreman/host.rb +131 -73
  11. data/lib/hammer_cli_foreman/hostgroup.rb +18 -8
  12. data/lib/hammer_cli_foreman/i18n.rb +2 -6
  13. data/lib/hammer_cli_foreman/id_resolver.rb +41 -6
  14. data/lib/hammer_cli_foreman/interface.rb +165 -0
  15. data/lib/hammer_cli_foreman/output/fields.rb +7 -0
  16. data/lib/hammer_cli_foreman/output/formatters.rb +3 -5
  17. data/lib/hammer_cli_foreman/puppet_class.rb +16 -2
  18. data/lib/hammer_cli_foreman/settings.rb +37 -0
  19. data/lib/hammer_cli_foreman/smart_class_parameter.rb +75 -11
  20. data/lib/hammer_cli_foreman/smart_variable.rb +146 -0
  21. data/lib/hammer_cli_foreman/user.rb +9 -3
  22. data/lib/hammer_cli_foreman/version.rb +1 -1
  23. data/locale/Makefile +9 -17
  24. data/locale/de/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  25. data/locale/de/hammer-cli-foreman.edit.po +2403 -0
  26. data/locale/de/hammer-cli-foreman.po +302 -355
  27. data/locale/de/hammer-cli-foreman.po.time_stamp +0 -0
  28. data/locale/en/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  29. data/locale/en/hammer-cli-foreman.edit.po +2260 -0
  30. data/locale/en/hammer-cli-foreman.po +946 -823
  31. data/locale/en/hammer-cli-foreman.po.time_stamp +0 -0
  32. data/locale/en_GB/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  33. data/locale/en_GB/hammer-cli-foreman.edit.po +2267 -0
  34. data/locale/en_GB/hammer-cli-foreman.po +297 -351
  35. data/locale/en_GB/hammer-cli-foreman.po.time_stamp +0 -0
  36. data/locale/es/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  37. data/locale/es/hammer-cli-foreman.edit.po +2427 -0
  38. data/locale/es/hammer-cli-foreman.po +301 -354
  39. data/locale/es/hammer-cli-foreman.po.time_stamp +0 -0
  40. data/locale/fr/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  41. data/locale/fr/hammer-cli-foreman.edit.po +2427 -0
  42. data/locale/fr/hammer-cli-foreman.po +299 -353
  43. data/locale/fr/hammer-cli-foreman.po.time_stamp +0 -0
  44. data/locale/hammer-cli-foreman.pot +1413 -1112
  45. data/locale/it/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  46. data/locale/it/hammer-cli-foreman.edit.po +2402 -0
  47. data/locale/it/hammer-cli-foreman.po +299 -353
  48. data/locale/it/hammer-cli-foreman.po.time_stamp +0 -0
  49. data/locale/ja/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  50. data/locale/ja/hammer-cli-foreman.edit.po +2401 -0
  51. data/locale/ja/hammer-cli-foreman.po +338 -391
  52. data/locale/ja/hammer-cli-foreman.po.time_stamp +0 -0
  53. data/locale/ko/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  54. data/locale/ko/hammer-cli-foreman.edit.po +2401 -0
  55. data/locale/ko/hammer-cli-foreman.po +299 -353
  56. data/locale/ko/hammer-cli-foreman.po.time_stamp +0 -0
  57. data/locale/pt_BR/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  58. data/locale/pt_BR/hammer-cli-foreman.edit.po +2417 -0
  59. data/locale/pt_BR/hammer-cli-foreman.po +312 -365
  60. data/locale/pt_BR/hammer-cli-foreman.po.time_stamp +0 -0
  61. data/locale/ru/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  62. data/locale/ru/hammer-cli-foreman.edit.po +2401 -0
  63. data/locale/ru/hammer-cli-foreman.po +300 -354
  64. data/locale/ru/hammer-cli-foreman.po.time_stamp +0 -0
  65. data/locale/zh_CN/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  66. data/locale/zh_CN/hammer-cli-foreman.edit.po +2400 -0
  67. data/locale/zh_CN/hammer-cli-foreman.po +299 -353
  68. data/locale/zh_CN/hammer-cli-foreman.po.time_stamp +0 -0
  69. data/locale/zh_TW/LC_MESSAGES/hammer-cli-foreman.mo +0 -0
  70. data/locale/zh_TW/hammer-cli-foreman.edit.po +2400 -0
  71. data/locale/zh_TW/hammer-cli-foreman.po +299 -353
  72. data/locale/zh_TW/hammer-cli-foreman.po.time_stamp +0 -0
  73. data/test/unit/apipie_resource_mock.rb +7 -0
  74. data/test/unit/commands_test.rb +42 -0
  75. data/test/unit/data/1.7/foreman_api.json +1 -0
  76. data/test/unit/dependency_resolver_test.rb +4 -2
  77. data/test/unit/environment_test.rb +2 -2
  78. data/test/unit/host_test.rb +50 -27
  79. data/test/unit/hostgroup_test.rb +19 -3
  80. data/test/unit/media_test.rb +2 -2
  81. data/test/unit/puppet_class_test.rb +17 -2
  82. data/test/unit/smart_class_parameter_test.rb +26 -2
  83. data/test/unit/smart_variable_test.rb +134 -0
  84. data/test/unit/test_helper.rb +1 -1
  85. metadata +36 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7c465b8794294776b0e5c79cad51f615097d8731
4
- data.tar.gz: f5fb6f3c7d7bc2a30d3aefdcff70b7f53697225d
3
+ metadata.gz: 6b196146a134afe8482c703b560288d0e8cb2206
4
+ data.tar.gz: 15eab89eccbcd3cd909194ddba493797dce136eb
5
5
  SHA512:
6
- metadata.gz: 65664eb6db87d9aad63d1b02474e5511bd45824e07f65f648e27bbc5d6092c4c7a53a56f5775cb2f19587a477e73e7771119304e74f1d588eb9d6c7ba09aa9a2
7
- data.tar.gz: 386f80dc7f518c543c863228bdc0b73cdaa1ad1b128cbf4b72aa2413ce69d9f91e5a1c9fc1149f935d772042cdd29702d9ed9ad2bf9b3822fbd853638b6fdea6
6
+ metadata.gz: beb620540ca30ef2cf3b17c9ca29b6e1ae781a3dd7bc1d173de3e9d6854cc4426872cf494fc5f65437b8aa81a59a67569b51081637005785b0549c93f072988c
7
+ data.tar.gz: 2225626548fe1c23627620b3a7d82806d32637ecec5fee683ab3726a8be613074027f243866c6cdc708a1e764013006da648dcab105e7a051318d985edf494a4
@@ -0,0 +1,16 @@
1
+ :foreman:
2
+ # Enable/disable foreman commands
3
+ :enable_module: true
4
+
5
+ # Your foreman server address
6
+ :host: 'https://localhost/'
7
+
8
+ # Credentials. You'll be asked for them interactively if you leave them blank here
9
+ :username: 'admin'
10
+ #:password: 'example'
11
+
12
+ # Check API documentation cache status on each request
13
+ #:refresh_cache: false
14
+
15
+ # API request timeout. Set to -1 for no timeout
16
+ #:request_timeout: 120 #seconds
data/doc/host_create.md CHANGED
@@ -10,43 +10,72 @@ Usage:
10
10
  hammer host create [OPTIONS]
11
11
 
12
12
  Options:
13
- --name NAME
14
- --ip IP Not required if using a subnet with dhcp proxy.
15
- --mac MAC Not required if it's a virtual machine.
16
- --puppet-class-ids PUPPET_CLASS_IDS Comma separated list of values.
17
- --medium-id MEDIUM_ID
18
- --subnet-id SUBNET_ID
19
- --sp-subnet-id SP_SUBNET_ID
20
- --model-id MODEL_ID
21
- --hostgroup-id HOSTGROUP_ID
22
- --owner-id OWNER_ID
23
- --puppet-ca-proxy-id PUPPET_CA_PROXY_ID
24
- --security-groups SECURITY_GROUPS
25
- --environment-id ENVIRONMENT_ID
26
- --architecture-id ARCHITECTURE_ID
27
- --domain-id DOMAIN_ID
28
- --puppet-proxy-id PUPPET_PROXY_ID
29
- --operatingsystem-id OPERATINGSYSTEM_ID
30
- --partition-table-id PARTITION_TABLE_ID
31
- --compute-resource-id COMPUTE_RESOURCE
32
- --partition-table-id PARTITION_TABLE
33
- --build BUILD One of true/false, yes/no, 1/0.
34
- Default: "true"
35
- --managed MANAGED One of true/false, yes/no, 1/0.
36
- Default: "true"
37
- --enabled ENABLED One of true/false, yes/no, 1/0.
38
- Default: "true"
39
- --parameters PARAMS Host parameters.
40
- Comma-separated list of key=value.
41
- --compute-attributes COMPUTE_ATTRS Compute resource attributes.
42
- Comma-separated list of key=value.
43
- --volume VOLUME Volume parameters
44
- Comma-separated list of key=value.
45
- Can be specified multiple times.
46
- --interface INTERFACE Interface parameters.
47
- Comma-separated list of key=value.
48
- Can be specified multiple times.
49
- -h, --help print help
13
+ --architecture ARCHITECTURE_NAME Architecture name
14
+ --architecture-id ARCHITECTURE_ID
15
+ --ask-root-password ASK_ROOT_PW One of true/false, yes/no, 1/0.
16
+ --build BUILD One of true/false, yes/no, 1/0.
17
+ Default: "true"
18
+ --comment COMMENT Additional information about this host
19
+ --compute-attributes COMPUTE_ATTRS Compute resource attributes.
20
+ Comma-separated list of key=value.
21
+ --compute-profile COMPUTE_PROFILE_NAME Name to search by
22
+ --compute-profile-id COMPUTE_PROFILE_ID
23
+ --compute-resource COMPUTE_RESOURCE_NAME Compute resource name
24
+ --compute-resource-id COMPUTE_RESOURCE_ID
25
+ --domain DOMAIN_NAME Domain name
26
+ --domain-id DOMAIN_ID Numerical ID or domain name
27
+ --enabled ENABLED One of true/false, yes/no, 1/0.
28
+ Default: "true"
29
+ --environment ENVIRONMENT_NAME Environment name
30
+ --environment-id ENVIRONMENT_ID
31
+ --hostgroup HOSTGROUP_NAME Hostgroup name
32
+ --hostgroup-id HOSTGROUP_ID
33
+ --hostgroup-title HOSTGROUP_TITLE Hostgroup title
34
+ --image IMAGE_NAME Name to search by
35
+ --image-id IMAGE_ID
36
+ --interface INTERFACE Interface parameters.
37
+ Comma-separated list of key=value.
38
+ Can be specified multiple times.
39
+ --ip IP not required if using a subnet with DHCP proxy
40
+ --location LOCATION_NAME Location name
41
+ --location-id LOCATION_ID
42
+ --mac MAC required for managed host that is bare metal, not required if it’s a virtual machine
43
+ --managed MANAGED One of true/false, yes/no, 1/0.
44
+ Default: "true"
45
+ --medium MEDIUM_NAME Medium name
46
+ --medium-id MEDIUM_ID
47
+ --model MODEL_NAME Model name
48
+ --model-id MODEL_ID
49
+ --name NAME
50
+ --operatingsystem OPERATINGSYSTEM_TITLE Operating system title
51
+ --operatingsystem-id OPERATINGSYSTEM_ID
52
+ --organization ORGANIZATION_NAME Organization name
53
+ --organization-id ORGANIZATION_ID
54
+ --owner OWNER_LOGIN Login of the owner
55
+ --owner-id OWNER_ID ID of the owner
56
+ --owner-type OWNER_TYPE Host’s owner type
57
+ --parameters PARAMS Host parameters.
58
+ Comma-separated list of key=value.
59
+ --partition-table PARTITION_TABLE_NAME Partition table name
60
+ --partition-table-id PARTITION_TABLE_ID
61
+ --progress-report-id PROGRESS_REPORT_ID UUID to track orchestration tasks status, GET /api/orchestration/:UUID/tasks
62
+ --provision-method METHOD One of 'build', 'image'
63
+ --puppet-ca-proxy PUPPET_CA_PROXY_NAME
64
+ --puppet-ca-proxy-id PUPPET_CA_PROXY_ID
65
+ --puppet-class-ids PUPPET_CLASS_IDS Comma separated list of values.
66
+ --puppet-classes PUPPET_CLASS_NAMES Comma separated list of values.
67
+ --puppet-proxy PUPPET_PROXY_NAME
68
+ --puppet-proxy-id PUPPET_PROXY_ID
69
+ --realm REALM_NAME Name to search by
70
+ --realm-id REALM_ID Numerical ID or realm name
71
+ --root-pass ROOT_PASS required if host is managed and value is not inherited from host group or default password in settings
72
+ --root-password ROOT_PW
73
+ --subnet SUBNET_NAME Subnet name
74
+ --subnet-id SUBNET_ID
75
+ --volume VOLUME Volume parameters
76
+ Comma-separated list of key=value.
77
+ Can be specified multiple times.
78
+ -h, --help print help
50
79
  ```
51
80
 
52
81
  Example
@@ -56,36 +85,55 @@ An example command for creating a host with 2 volumes (5GB raw + 10 GB qcow2) us
56
85
  a default network interface on a libvirt provider can look like this:
57
86
  ```bash
58
87
  hammer host create
59
- --hostgroup-id=4 # most of the settings is done in the hostgroup
60
- --compute-resource-id=1 # set the libvirt provider
88
+ --hostgroup=my_hostgroup # most of the settings is done in the hostgroup
89
+ --compute-resource=libvirt # set the libvirt provider
61
90
  --compute-attributes="cpus=2" # specify the provider specific options, see the list below
62
- --interface="type=network,network=default" # add a network interface, can be passed multiple times
91
+ --interface="primary=true,compute_type=network,compute_network=default" # add a network interface, can be passed multiple times
63
92
  --volume="capacity=5G" # add a volume, can be passed multiple times
64
93
  --volume="capacity=10G,format_type=qcow2" # add another volume with different size and type
65
94
  --name="test-host"
66
- --ip="1.2.3.4"
67
95
  ```
68
96
 
69
97
  See the list of all possible option keys below.
70
98
 
71
99
 
72
- Provider specific options
100
+ Common interface settings
73
101
  =========================
74
102
 
75
- ## Bare Metal
103
+ Please note that managed hosts need to have one primary interface. Always set `primary=true` for one of your interfaces.
104
+
76
105
  Available keys for `--interface`:
77
106
  ```
78
- type # one of Nic::Managed, Nic::BMC
79
107
  mac
108
+ ip
109
+ type # One of interface, bmc, bond
80
110
  name
81
- domain_id
82
111
  subnet_id
83
- ip
112
+ domain_id
113
+ identifier
114
+ managed # true/false
115
+ primary # true/false, each managed hosts needs to have one primary interface.
116
+ provision # true/false
117
+ virtual # true/false
118
+
119
+ # for virtual interfaces:
120
+ tag # VLAN tag, this attribute has precedence over the subnet VLAN ID. Only for virtual interfaces.
121
+ attached_to # Identifier of the interface to which this interface belongs, e.g. eth1.
122
+
123
+ # for bonds:
124
+ mode # One of balance-rr, active-backup, balance-xor, broadcast, 802.3ad, balance-tlb, balance-alb
125
+ attached_devices # Identifiers of slave interfaces, e.g. [eth1,eth2].
126
+ bond_options
127
+
128
+ # for BMCs:
84
129
  provider # always IPMI
85
- username # BMC only
86
- password # BMC only
130
+ username
131
+ password
87
132
  ```
88
133
 
134
+ Provider specific options
135
+ =========================
136
+
89
137
  ## EC2
90
138
  Available keys for `--compute-attributes`:
91
139
  ```
@@ -115,9 +163,9 @@ start # boolean, whether to start the machine or not
115
163
 
116
164
  Available keys for `--interface`:
117
165
  ```
118
- type # one of [:bridge, :network]
119
- network / :bridge # name of interface according to type
120
- model # one of [virtio, rtl8139, ne2k_pci, pcnet, e1000]
166
+ compute_type # one of [:bridge, :network]
167
+ compute_network / compute_bridge # name of interface according to type
168
+ compute_model # one of [virtio, rtl8139, ne2k_pci, pcnet, e1000]
121
169
  ```
122
170
 
123
171
  Available keys for `--volume`:
@@ -149,8 +197,8 @@ start # boolean, whether to start the machine or not
149
197
 
150
198
  Available keys for `--interface`:
151
199
  ```
152
- name # eg. eth0
153
- network # select one of available networks for a cluster
200
+ compute_name # eg. eth0
201
+ compute_network # select one of available networks for a cluster
154
202
  ```
155
203
 
156
204
  Available keys for `--volume`:
@@ -178,7 +226,7 @@ path
178
226
 
179
227
  Available keys for `--interface`:
180
228
  ```
181
- network
229
+ compute_network
182
230
  ```
183
231
 
184
232
  Available keys for `--volume`:
data/doc/release_notes.md CHANGED
@@ -1,6 +1,26 @@
1
1
  Release notes
2
2
  =============
3
3
 
4
+ ### 0.2.0 (2015-04-23)
5
+ * Adding default org and loc to user info ([#10251](http://projects.theforeman.org/issues/10251))
6
+ * Host update resets some attributes ([#10215](http://projects.theforeman.org/issues/10215))
7
+ * Improve handling of id search errors ([#9971](http://projects.theforeman.org/issues/9971))
8
+ * Commands for managing host's interfaces ([#3849](http://projects.theforeman.org/issues/3849))
9
+ * Support for smart variables and override values ([#2928](http://projects.theforeman.org/issues/2928))
10
+ * Can't convert nil into Array in compute resouce info ([#7699](http://projects.theforeman.org/issues/7699))
11
+ * Use correct domain for system locales, only load one domain ([#9648](http://projects.theforeman.org/issues/9648))
12
+ * Allow disablement of record_to_common_format ([#8227](http://projects.theforeman.org/issues/8227))
13
+ * Puppet-classes in host and hostgroup returns without an error ([#7473](http://projects.theforeman.org/issues/7473))
14
+ * Does not resolve a nested host group to id when updating a host ([#9318](http://projects.theforeman.org/issues/9318))
15
+ * User info doesn't display timezone and locale ([#9114](http://projects.theforeman.org/issues/9114))
16
+ * Update to gettext 3.x ([#8980](http://projects.theforeman.org/issues/8980))
17
+ * Commands for settings ([#2918](http://projects.theforeman.org/issues/2918))
18
+ * Adds dns name association to domain cli ([#3630](http://projects.theforeman.org/issues/3630))
19
+ * List of host facts is shown correctly ([#7187](http://projects.theforeman.org/issues/7187))
20
+ * Add config directory to gemspec ([#8829](http://projects.theforeman.org/issues/8829))
21
+ * List commands should not be interactive for csv output ([#3898](http://projects.theforeman.org/issues/3898))
22
+
23
+
4
24
  ### 0.1.4 (2014-12-11)
5
25
  * sending puppet class ids ([#8651](http://projects.theforeman.org/issues/8651))
6
26
  * setting --puppet-class-ids on host create/update throws api exception ([#8642](http://projects.theforeman.org/issues/8642))
@@ -107,10 +107,18 @@ module HammerCLIForeman
107
107
  'HammerCLIForeman::SmartClassParameter', 'hammer_cli_foreman/smart_class_parameter'
108
108
  )
109
109
 
110
+ HammerCLI::MainCommand.lazy_subcommand('smart-variable', _("Manipulate smart variables."),
111
+ 'HammerCLIForeman::SmartVariable', 'hammer_cli_foreman/smart_variable'
112
+ )
113
+
110
114
  HammerCLI::MainCommand.lazy_subcommand('proxy', _("Manipulate smart proxies."),
111
115
  'HammerCLIForeman::SmartProxy', 'hammer_cli_foreman/smart_proxy'
112
116
  )
113
117
 
118
+ HammerCLI::MainCommand.lazy_subcommand('settings', _("Change server settings."),
119
+ 'HammerCLIForeman::Settings', 'hammer_cli_foreman/settings'
120
+ )
121
+
114
122
  HammerCLI::MainCommand.lazy_subcommand('subnet', _("Manipulate subnets."),
115
123
  'HammerCLIForeman::Subnet', 'hammer_cli_foreman/subnet'
116
124
  )
@@ -148,7 +148,10 @@ module HammerCLIForeman
148
148
  begin
149
149
  resolver.send("#{resource.singular_name}_id", opts)
150
150
  rescue HammerCLIForeman::MissingSeachOptions => e
151
- raise e unless (options[:required] == false)
151
+ if (options[:required] == true || resource_search_requested(resource, opts))
152
+ logger.info "Error occured while searching for #{resource.singular_name}"
153
+ raise e
154
+ end
152
155
  end
153
156
  end
154
157
 
@@ -157,7 +160,10 @@ module HammerCLIForeman
157
160
  begin
158
161
  resolver.send("#{resource.singular_name}_ids", opts)
159
162
  rescue HammerCLIForeman::MissingSeachOptions => e
160
- raise e unless (options[:required] == false)
163
+ if (options[:required] == true || resource_search_requested(resource, opts, true))
164
+ logger.info "Error occured while searching for #{resource.name}"
165
+ raise e
166
+ end
161
167
  end
162
168
  end
163
169
 
@@ -176,7 +182,7 @@ module HammerCLIForeman
176
182
  end
177
183
 
178
184
  def send_request
179
- HammerCLIForeman.record_to_common_format(super)
185
+ transform_format(super)
180
186
  rescue HammerCLIForeman::MissingSeachOptions => e
181
187
 
182
188
  switches = self.class.find_options(:referenced_resource => e.resource.singular_name).map(&:long_switch)
@@ -198,6 +204,10 @@ module HammerCLIForeman
198
204
  )
199
205
  end
200
206
 
207
+ def transform_format(data)
208
+ HammerCLIForeman.record_to_common_format(data)
209
+ end
210
+
201
211
  def customized_options
202
212
  params = options
203
213
  # resolve all '<resource_name>_id' parameters if they are defined as options
@@ -235,6 +245,18 @@ module HammerCLIForeman
235
245
  params_pruned['id'] = params[id_option_name] if params[id_option_name]
236
246
  params_pruned
237
247
  end
248
+
249
+ private
250
+
251
+ def resource_search_requested(resource, options, plural=false)
252
+ # check if any searchable for given resource is set
253
+ filed_options = Hash[options.select { |opt, value| !value.nil? }].keys
254
+ searchable_options = searchables.for(resource).map do |o|
255
+ HammerCLI.option_accessor_name(plural ? o.plural_name : o.name)
256
+ end
257
+ !(filed_options & searchable_options).empty?
258
+ end
259
+
238
260
  end
239
261
 
240
262
 
@@ -245,16 +267,19 @@ module HammerCLIForeman
245
267
  DEFAULT_PER_PAGE = 20
246
268
 
247
269
  def adapter
248
- :table
270
+ @context[:adapter] || :table
249
271
  end
250
272
 
251
273
  def send_request
252
- data = super
253
- set = HammerCLIForeman.collection_to_common_format(data)
274
+ set = super
254
275
  set.map! { |r| extend_data(r) }
255
276
  set
256
277
  end
257
278
 
279
+ def transform_format(data)
280
+ HammerCLIForeman.collection_to_common_format(data)
281
+ end
282
+
258
283
  def extend_data(record)
259
284
  record
260
285
  end
@@ -284,7 +309,7 @@ module HammerCLIForeman
284
309
  while list_next do
285
310
  d = retrieve_and_print
286
311
 
287
- if (d.size >= self.option_per_page.to_i) && interactive?
312
+ if (d.size >= self.option_per_page.to_i) && interactive? && adapter != :csv
288
313
  answer = ask(_("List next page? (%s): ") % 'Y/n').downcase
289
314
  list_next = (answer == 'y' || answer == '')
290
315
  self.option_page += 1
@@ -347,8 +372,7 @@ module HammerCLIForeman
347
372
  end
348
373
 
349
374
  def send_request
350
- data = super
351
- record = HammerCLIForeman.record_to_common_format(data)
375
+ record = super
352
376
  extend_data(record)
353
377
  end
354
378
 
@@ -5,12 +5,21 @@ module HammerCLIForeman
5
5
  class ComputeResource < HammerCLIForeman::Command
6
6
  resource :compute_resources
7
7
 
8
+ module ProviderNameLegacy
9
+ def extend_data(data)
10
+ # api used to return provider_friendly_name as a provider
11
+ data['provider_friendly_name'] ||= data['provider']
12
+ data
13
+ end
14
+ end
15
+
8
16
  class ListCommand < HammerCLIForeman::ListCommand
17
+ include ProviderNameLegacy
9
18
 
10
19
  output do
11
20
  field :id, _("Id")
12
21
  field :name, _("Name")
13
- field :provider, _("Provider")
22
+ field :provider_friendly_name, _("Provider")
14
23
  end
15
24
 
16
25
  build_options
@@ -18,6 +27,8 @@ module HammerCLIForeman
18
27
 
19
28
 
20
29
  class InfoCommand < HammerCLIForeman::InfoCommand
30
+ include ProviderNameLegacy
31
+
21
32
  PROVIDER_SPECIFIC_FIELDS = {
22
33
  'ovirt' => [
23
34
  Fields::Field.new(:label => _('UUID'), :path => ["compute_resource", "uuid"])
@@ -49,7 +60,7 @@ module HammerCLIForeman
49
60
 
50
61
  def print_data(data)
51
62
  provider = data["provider"].downcase
52
- output_definition.fields.concat PROVIDER_SPECIFIC_FIELDS[provider]
63
+ output_definition.fields.concat(PROVIDER_SPECIFIC_FIELDS[provider] || [])
53
64
  super(data)
54
65
  end
55
66
 
@@ -1,5 +1,26 @@
1
1
  module HammerCLIForeman
2
2
 
3
+ module DomainUpdateCreateCommons
4
+
5
+ def self.included(base)
6
+ base.option "--dns-id", "DNS_ID", _("ID of DNS proxy to use within this domain")
7
+ base.option "--dns", "DNS_NAME", _("Name of DNS proxy to use within this domain")
8
+ end
9
+
10
+ def request_params
11
+ params = super
12
+ params['domain']["dns_id"] = option_dns_id || dns_id(option_dns)
13
+ params
14
+ end
15
+
16
+ private
17
+
18
+ def dns_id(name)
19
+ resolver.smart_proxy_id('option_name' => name) if name
20
+ end
21
+
22
+ end
23
+
3
24
  class Domain < HammerCLIForeman::Command
4
25
 
5
26
  resource :domains
@@ -31,16 +52,18 @@ module HammerCLIForeman
31
52
 
32
53
 
33
54
  class CreateCommand < HammerCLIForeman::CreateCommand
55
+ include DomainUpdateCreateCommons
34
56
 
35
57
  success_message _("Domain [%{name}] created")
36
58
  failure_message _("Could not create the domain")
37
59
 
38
60
  option "--description", "DESC", _("Full name describing the domain"), :attribute_name => :option_fullname
39
- build_options :without => [:domain_parameters_attributes, :fullname]
61
+ build_options :without => [:domain_parameters_attributes, :fullname, :dns_id]
40
62
  end
41
63
 
42
64
 
43
65
  class UpdateCommand < HammerCLIForeman::UpdateCommand
66
+ include DomainUpdateCreateCommons
44
67
 
45
68
  success_message _("Domain [%{name}] updated")
46
69
  failure_message _("Could not update the domain")