morpheus-cli 5.3.0 → 5.3.1.1

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 (190) hide show
  1. checksums.yaml +4 -4
  2. data/Dockerfile +1 -1
  3. data/README.md +1 -3
  4. data/lib/morpheus/api/account_groups_interface.rb +0 -6
  5. data/lib/morpheus/api/accounts_interface.rb +1 -7
  6. data/lib/morpheus/api/api_client.rb +155 -119
  7. data/lib/morpheus/api/appliance_settings_interface.rb +6 -9
  8. data/lib/morpheus/api/approvals_interface.rb +5 -8
  9. data/lib/morpheus/api/apps_interface.rb +0 -7
  10. data/lib/morpheus/api/archive_buckets_interface.rb +9 -16
  11. data/lib/morpheus/api/archive_files_interface.rb +0 -6
  12. data/lib/morpheus/api/auth_interface.rb +4 -4
  13. data/lib/morpheus/api/backup_settings_interface.rb +5 -8
  14. data/lib/morpheus/api/blueprints_interface.rb +1 -7
  15. data/lib/morpheus/api/budgets_interface.rb +0 -6
  16. data/lib/morpheus/api/certificate_types_interface.rb +14 -0
  17. data/lib/morpheus/api/certificates_interface.rb +9 -0
  18. data/lib/morpheus/api/cloud_datastores_interface.rb +0 -6
  19. data/lib/morpheus/api/cloud_folders_interface.rb +1 -7
  20. data/lib/morpheus/api/cloud_policies_interface.rb +0 -6
  21. data/lib/morpheus/api/cloud_resource_pools_interface.rb +0 -6
  22. data/lib/morpheus/api/clouds_interface.rb +0 -6
  23. data/lib/morpheus/api/clusters_interface.rb +39 -42
  24. data/lib/morpheus/api/containers_interface.rb +0 -6
  25. data/lib/morpheus/api/custom_instance_types_interface.rb +0 -6
  26. data/lib/morpheus/api/cypher_interface.rb +0 -6
  27. data/lib/morpheus/api/datastores_interface.rb +4 -7
  28. data/lib/morpheus/api/deploy_interface.rb +1 -6
  29. data/lib/morpheus/api/environments_interface.rb +0 -6
  30. data/lib/morpheus/api/execute_schedules_interface.rb +0 -6
  31. data/lib/morpheus/api/execution_request_interface.rb +0 -6
  32. data/lib/morpheus/api/file_copy_request_interface.rb +2 -9
  33. data/lib/morpheus/api/group_policies_interface.rb +0 -6
  34. data/lib/morpheus/api/groups_interface.rb +0 -7
  35. data/lib/morpheus/api/guidance_interface.rb +9 -12
  36. data/lib/morpheus/api/health_interface.rb +0 -6
  37. data/lib/morpheus/api/image_builder_boot_scripts_interface.rb +0 -6
  38. data/lib/morpheus/api/image_builder_image_builds_interface.rb +0 -6
  39. data/lib/morpheus/api/image_builder_interface.rb +3 -9
  40. data/lib/morpheus/api/image_builder_preseed_scripts_interface.rb +0 -6
  41. data/lib/morpheus/api/instance_types_interface.rb +0 -7
  42. data/lib/morpheus/api/instances_interface.rb +8 -19
  43. data/lib/morpheus/api/integration_types_interface.rb +14 -0
  44. data/lib/morpheus/api/integrations_interface.rb +36 -21
  45. data/lib/morpheus/api/invoice_line_items_interface.rb +4 -9
  46. data/lib/morpheus/api/jobs_interface.rb +11 -14
  47. data/lib/morpheus/api/key_pairs_interface.rb +0 -6
  48. data/lib/morpheus/api/library_cluster_layouts_interface.rb +0 -6
  49. data/lib/morpheus/api/library_container_scripts_interface.rb +0 -6
  50. data/lib/morpheus/api/library_container_templates_interface.rb +0 -6
  51. data/lib/morpheus/api/library_container_types_interface.rb +0 -6
  52. data/lib/morpheus/api/library_container_upgrades_interface.rb +0 -6
  53. data/lib/morpheus/api/library_instance_types_interface.rb +0 -6
  54. data/lib/morpheus/api/library_layouts_interface.rb +0 -6
  55. data/lib/morpheus/api/library_spec_template_types_interface.rb +0 -6
  56. data/lib/morpheus/api/library_spec_templates_interface.rb +0 -6
  57. data/lib/morpheus/api/license_interface.rb +0 -6
  58. data/lib/morpheus/api/load_balancers_interface.rb +0 -6
  59. data/lib/morpheus/api/log_settings_interface.rb +9 -12
  60. data/lib/morpheus/api/logs_interface.rb +0 -6
  61. data/lib/morpheus/api/monitoring_alerts_interface.rb +0 -6
  62. data/lib/morpheus/api/monitoring_apps_interface.rb +0 -6
  63. data/lib/morpheus/api/monitoring_checks_interface.rb +0 -6
  64. data/lib/morpheus/api/monitoring_contacts_interface.rb +0 -6
  65. data/lib/morpheus/api/monitoring_groups_interface.rb +0 -6
  66. data/lib/morpheus/api/monitoring_incidents_interface.rb +0 -6
  67. data/lib/morpheus/api/monitoring_interface.rb +6 -12
  68. data/lib/morpheus/api/network_domain_records_interface.rb +0 -6
  69. data/lib/morpheus/api/network_domains_interface.rb +0 -6
  70. data/lib/morpheus/api/network_groups_interface.rb +0 -6
  71. data/lib/morpheus/api/network_pool_ips_interface.rb +0 -6
  72. data/lib/morpheus/api/network_pool_servers_interface.rb +0 -6
  73. data/lib/morpheus/api/network_pools_interface.rb +0 -6
  74. data/lib/morpheus/api/network_proxies_interface.rb +0 -6
  75. data/lib/morpheus/api/network_routers_interface.rb +0 -6
  76. data/lib/morpheus/api/network_security_servers_interface.rb +6 -9
  77. data/lib/morpheus/api/network_services_interface.rb +14 -14
  78. data/lib/morpheus/api/network_subnets_interface.rb +0 -6
  79. data/lib/morpheus/api/network_types_interface.rb +1 -7
  80. data/lib/morpheus/api/networks_interface.rb +0 -6
  81. data/lib/morpheus/api/option_type_lists_interface.rb +0 -6
  82. data/lib/morpheus/api/option_types_interface.rb +0 -6
  83. data/lib/morpheus/api/options_interface.rb +0 -6
  84. data/lib/morpheus/api/packages_interface.rb +0 -6
  85. data/lib/morpheus/api/policies_interface.rb +1 -8
  86. data/lib/morpheus/api/power_schedules_interface.rb +0 -6
  87. data/lib/morpheus/api/price_sets_interface.rb +8 -11
  88. data/lib/morpheus/api/prices_interface.rb +12 -15
  89. data/lib/morpheus/api/processes_interface.rb +0 -6
  90. data/lib/morpheus/api/provision_types_interface.rb +0 -6
  91. data/lib/morpheus/api/provisioning_license_types_interface.rb +0 -6
  92. data/lib/morpheus/api/provisioning_licenses_interface.rb +0 -6
  93. data/lib/morpheus/api/provisioning_settings_interface.rb +6 -9
  94. data/lib/morpheus/api/read_interface.rb +23 -0
  95. data/lib/morpheus/api/reports_interface.rb +0 -6
  96. data/lib/morpheus/api/rest_interface.rb +12 -10
  97. data/lib/morpheus/api/roles_interface.rb +7 -6
  98. data/lib/morpheus/api/security_group_rules_interface.rb +0 -7
  99. data/lib/morpheus/api/security_groups_interface.rb +0 -6
  100. data/lib/morpheus/api/server_types_interface.rb +0 -6
  101. data/lib/morpheus/api/servers_interface.rb +7 -6
  102. data/lib/morpheus/api/service_plans_interface.rb +11 -14
  103. data/lib/morpheus/api/storage_providers_interface.rb +9 -16
  104. data/lib/morpheus/api/subnet_types_interface.rb +1 -7
  105. data/lib/morpheus/api/subnets_interface.rb +0 -6
  106. data/lib/morpheus/api/task_sets_interface.rb +0 -6
  107. data/lib/morpheus/api/tasks_interface.rb +0 -6
  108. data/lib/morpheus/api/user_groups_interface.rb +0 -6
  109. data/lib/morpheus/api/user_settings_interface.rb +38 -18
  110. data/lib/morpheus/api/user_sources_interface.rb +0 -6
  111. data/lib/morpheus/api/users_interface.rb +0 -6
  112. data/lib/morpheus/api/vdi_allocations_interface.rb +9 -0
  113. data/lib/morpheus/api/vdi_apps_interface.rb +9 -0
  114. data/lib/morpheus/api/vdi_gateways_interface.rb +9 -0
  115. data/lib/morpheus/api/vdi_interface.rb +28 -0
  116. data/lib/morpheus/api/vdi_pools_interface.rb +19 -0
  117. data/lib/morpheus/api/virtual_images_interface.rb +0 -6
  118. data/lib/morpheus/api/whitelabel_settings_interface.rb +8 -11
  119. data/lib/morpheus/api/wiki_interface.rb +0 -6
  120. data/lib/morpheus/cli.rb +9 -2
  121. data/lib/morpheus/cli/access_token_command.rb +1 -1
  122. data/lib/morpheus/cli/account_groups_command.rb +4 -4
  123. data/lib/morpheus/cli/apps.rb +68 -84
  124. data/lib/morpheus/cli/archives_command.rb +5 -5
  125. data/lib/morpheus/cli/blueprints_command.rb +5 -5
  126. data/lib/morpheus/cli/boot_scripts_command.rb +1 -1
  127. data/lib/morpheus/cli/catalog_item_types_command.rb +13 -13
  128. data/lib/morpheus/cli/certificates_command.rb +575 -0
  129. data/lib/morpheus/cli/change_password_command.rb +4 -4
  130. data/lib/morpheus/cli/cli_command.rb +63 -7
  131. data/lib/morpheus/cli/clouds.rb +3 -2
  132. data/lib/morpheus/cli/clusters.rb +7 -4
  133. data/lib/morpheus/cli/commands/standard/history_command.rb +4 -5
  134. data/lib/morpheus/cli/commands/standard/man_command.rb +4 -5
  135. data/lib/morpheus/cli/credentials.rb +4 -11
  136. data/lib/morpheus/cli/environments_command.rb +1 -1
  137. data/lib/morpheus/cli/execute_schedules_command.rb +3 -3
  138. data/lib/morpheus/cli/hosts.rb +253 -232
  139. data/lib/morpheus/cli/image_builder_command.rb +6 -6
  140. data/lib/morpheus/cli/instance_types.rb +1 -1
  141. data/lib/morpheus/cli/instances.rb +196 -186
  142. data/lib/morpheus/cli/integrations_command.rb +1155 -42
  143. data/lib/morpheus/cli/invoices_command.rb +75 -67
  144. data/lib/morpheus/cli/key_pairs.rb +2 -2
  145. data/lib/morpheus/cli/library_container_scripts_command.rb +1 -1
  146. data/lib/morpheus/cli/library_container_templates_command.rb +1 -1
  147. data/lib/morpheus/cli/library_container_types_command.rb +6 -6
  148. data/lib/morpheus/cli/library_instance_types_command.rb +4 -4
  149. data/lib/morpheus/cli/library_layouts_command.rb +5 -5
  150. data/lib/morpheus/cli/library_option_lists_command.rb +4 -4
  151. data/lib/morpheus/cli/library_option_types_command.rb +4 -4
  152. data/lib/morpheus/cli/library_upgrades_command.rb +6 -6
  153. data/lib/morpheus/cli/license.rb +2 -2
  154. data/lib/morpheus/cli/load_balancers.rb +1 -1
  155. data/lib/morpheus/cli/login.rb +10 -1
  156. data/lib/morpheus/cli/mixins/option_source_helper.rb +15 -16
  157. data/lib/morpheus/cli/mixins/print_helper.rb +33 -18
  158. data/lib/morpheus/cli/mixins/provisioning_helper.rb +4 -4
  159. data/lib/morpheus/cli/mixins/vdi_helper.rb +246 -0
  160. data/lib/morpheus/cli/network_domains_command.rb +2 -2
  161. data/lib/morpheus/cli/network_routers_command.rb +22 -9
  162. data/lib/morpheus/cli/networks_command.rb +2 -2
  163. data/lib/morpheus/cli/option_types.rb +39 -34
  164. data/lib/morpheus/cli/policies_command.rb +0 -1
  165. data/lib/morpheus/cli/power_schedules_command.rb +3 -3
  166. data/lib/morpheus/cli/preseed_scripts_command.rb +1 -1
  167. data/lib/morpheus/cli/remote.rb +2 -2
  168. data/lib/morpheus/cli/reports_command.rb +5 -2
  169. data/lib/morpheus/cli/roles.rb +224 -64
  170. data/lib/morpheus/cli/security_group_rules.rb +1 -1
  171. data/lib/morpheus/cli/service_plans_command.rb +4 -1
  172. data/lib/morpheus/cli/setup.rb +0 -1
  173. data/lib/morpheus/cli/subnets_command.rb +11 -2
  174. data/lib/morpheus/cli/tenants_command.rb +3 -3
  175. data/lib/morpheus/cli/user_groups_command.rb +3 -3
  176. data/lib/morpheus/cli/user_settings_command.rb +268 -57
  177. data/lib/morpheus/cli/user_sources_command.rb +3 -3
  178. data/lib/morpheus/cli/users.rb +3 -3
  179. data/lib/morpheus/cli/vdi_allocations_command.rb +159 -0
  180. data/lib/morpheus/cli/vdi_apps_command.rb +317 -0
  181. data/lib/morpheus/cli/vdi_command.rb +359 -0
  182. data/lib/morpheus/cli/vdi_gateways_command.rb +290 -0
  183. data/lib/morpheus/cli/vdi_pools_command.rb +571 -0
  184. data/lib/morpheus/cli/version.rb +1 -1
  185. data/lib/morpheus/cli/virtual_images.rb +1 -1
  186. data/lib/morpheus/cli/whoami.rb +0 -15
  187. data/lib/morpheus/cli/wiki_command.rb +1 -1
  188. data/lib/morpheus/rest_client.rb +30 -0
  189. data/lib/morpheus/terminal.rb +15 -7
  190. metadata +18 -2
@@ -31,20 +31,16 @@ class Morpheus::Cli::InvoicesCommand
31
31
  options[:show_all] = true
32
32
  options[:show_dates] = true
33
33
  options[:show_estimates] = true
34
- # options[:show_costs] = true
35
- options[:show_prices] = true
34
+ options[:show_costs] = true
36
35
  end
37
36
  opts.on('--dates', "Display Ref Start, Ref End, etc.") do |val|
38
37
  options[:show_dates] = true
39
38
  end
40
- opts.on('--estimates', '--estimates', "Display all estimated costs, from usage info: Compute, Storage, Network, Extra" ) do
41
- options[:show_estimates] = true
39
+ opts.on('--costs', '--costs', "Display Costs in addition to prices" ) do
40
+ options[:show_costs] = true
42
41
  end
43
- # opts.on('--costs', '--costs', "Display all costs: Compute, Storage, Network, Extra" ) do
44
- # options[:show_costs] = true
45
- # end
46
- opts.on('--prices', '--prices', "Display prices: Total, Compute, Storage, Network, Extra" ) do
47
- options[:show_prices] = true
42
+ opts.on('--estimates', '--estimates', "Display all estimated prices, from usage metering info: Compute, Memory, Storage, Network, Extra" ) do
43
+ options[:show_estimates] = true
48
44
  end
49
45
  opts.on('-t', '--type TYPE', "Filter by Ref Type eg. ComputeSite (Group), ComputeZone (Cloud), ComputeServer (Host), Instance, Container, User") do |val|
50
46
  params['refType'] ||= []
@@ -226,42 +222,55 @@ class Morpheus::Cli::InvoicesCommand
226
222
  # {"LAST COST DATE" => lambda {|it| format_local_dt(it['lastCostDate']) } },
227
223
  # {"LAST ACTUAL DATE" => lambda {|it| format_local_dt(it['lastActualDate']) } },
228
224
  ] : []) + [
229
- {"COMPUTE" => lambda {|it| format_money(it['computeCost'], 'usd', {sigdig:options[:sigdig]}) } },
230
- # {"MEMORY" => lambda {|it| format_money(it['memoryCost']) } },
231
- {"STORAGE" => lambda {|it| format_money(it['storageCost'], 'usd', {sigdig:options[:sigdig]}) } },
232
- {"NETWORK" => lambda {|it| format_money(it['networkCost'], 'usd', {sigdig:options[:sigdig]}) } },
233
- {"EXTRA" => lambda {|it| format_money(it['extraCost'], 'usd', {sigdig:options[:sigdig]}) } },
234
- {"MTD" => lambda {|it| format_money(it['runningCost'], 'usd', {sigdig:options[:sigdig]}) } },
235
- {"TOTAL" => lambda {|it|
236
- format_money(it['totalCost'], 'usd', {sigdig:options[:sigdig]}) + ((it['totalCost'].to_f > 0 && it['totalCost'] != it['runningCost']) ? " (Projected)" : "")
225
+ {"COMPUTE PRICE" => lambda {|it| format_money(it['computePrice'], 'usd', {sigdig:options[:sigdig]}) } },
226
+ {"MEMORY PRICE" => lambda {|it| format_money(it['memoryPrice'], 'usd', {sigdig:options[:sigdig]}) } },
227
+ {"STORAGE PRICE" => lambda {|it| format_money(it['storagePrice'], 'usd', {sigdig:options[:sigdig]}) } },
228
+ {"NETWORK PRICE" => lambda {|it| format_money(it['networkPrice'], 'usd', {sigdig:options[:sigdig]}) } },
229
+ {"EXTRA PRICE" => lambda {|it| format_money(it['extraPrice'], 'usd', {sigdig:options[:sigdig]}) } },
230
+ {"MTD PRICE" => lambda {|it| format_money(it['runningPrice'], 'usd', {sigdig:options[:sigdig]}) } },
231
+ {"TOTAL PRICE" => lambda {|it|
232
+ format_money(it['totalPrice'], 'usd', {sigdig:options[:sigdig]}) + ((it['totalCost'].to_f > 0 && it['totalCost'] != it['runningCost']) ? " (Projected)" : "")
237
233
  } }
238
234
  ]
239
235
 
240
- if options[:show_prices]
236
+ if options[:show_costs] && json_response['masterAccount'] != false
241
237
  columns += [
242
- {"COMPUTE PRICE" => lambda {|it| format_money(it['computePrice'], 'usd', {sigdig:options[:sigdig]}) } },
243
- # {"MEMORY PRICE" => lambda {|it| format_money(it['memoryPrice'], 'usd', {sigdig:options[:sigdig]}) } },
244
- {"STORAGE PRICE" => lambda {|it| format_money(it['storagePrice'], 'usd', {sigdig:options[:sigdig]}) } },
245
- {"NETWORK PRICE" => lambda {|it| format_money(it['networkPrice'], 'usd', {sigdig:options[:sigdig]}) } },
246
- {"EXTRA PRICE" => lambda {|it| format_money(it['extraPrice'], 'usd', {sigdig:options[:sigdig]}) } },
247
- {"MTD PRICE" => lambda {|it| format_money(it['runningPrice'], 'usd', {sigdig:options[:sigdig]}) } },
248
- {"TOTAL PRICE" => lambda {|it|
249
- format_money(it['totalPrice'], 'usd', {sigdig:options[:sigdig]}) + ((it['totalCost'].to_f > 0 && it['totalCost'] != it['runningCost']) ? " (Projected)" : "")
250
- } }
251
- ]
238
+ {"COMPUTE COST" => lambda {|it| format_money(it['computeCost'], 'usd', {sigdig:options[:sigdig]}) } },
239
+ {"MEMORY COST" => lambda {|it| format_money(it['memoryCost']) } },
240
+ {"STORAGE COST" => lambda {|it| format_money(it['storageCost'], 'usd', {sigdig:options[:sigdig]}) } },
241
+ {"NETWORK COST" => lambda {|it| format_money(it['networkCost'], 'usd', {sigdig:options[:sigdig]}) } },
242
+ {"EXTRA COST" => lambda {|it| format_money(it['extraCost'], 'usd', {sigdig:options[:sigdig]}) } },
243
+ {"MTD COST" => lambda {|it| format_money(it['runningCost'], 'usd', {sigdig:options[:sigdig]}) } },
244
+ {"TOTAL COST" => lambda {|it|
245
+ format_money(it['totalCost'], 'usd', {sigdig:options[:sigdig]}) + ((it['totalCost'].to_f > 0 && it['totalCost'] != it['runningCost']) ? " (Projected)" : "")
246
+ } }
247
+ ]
252
248
  end
253
249
  if options[:show_estimates]
254
250
  columns += [
255
- {"COMPUTE EST." => lambda {|it| format_money(it['estimatedComputeCost'], 'usd', {sigdig:options[:sigdig]}) } },
256
- # {"MEMORY EST." => lambda {|it| format_money(it['estimatedMemoryCost'], 'usd', {sigdig:options[:sigdig]}) } },
257
- {"STORAGE EST." => lambda {|it| format_money(it['estimatedStorageCost'], 'usd', {sigdig:options[:sigdig]}) } },
258
- {"NETWORK EST." => lambda {|it| format_money(it['estimatedNetworkCost'], 'usd', {sigdig:options[:sigdig]}) } },
259
- {"EXTRA EST." => lambda {|it| format_money(it['estimatedExtraCost'], 'usd', {sigdig:options[:sigdig]}) } },
260
- {"MTD EST." => lambda {|it| format_money(it['estimatedRunningCost'], 'usd', {sigdig:options[:sigdig]}) } },
261
- {"TOTAL EST." => lambda {|it|
262
- format_money(it['estimatedTotalCost'], 'usd', {sigdig:options[:sigdig]}) + ((it['estimatedTotalCost'].to_f > 0 && it['estimatedTotalCost'] != it['estimatedRunningCost']) ? " (Projected)" : "")
251
+ {"METERED COMPUTE PRICE" => lambda {|it| format_money(it['estimatedComputePrice'], 'usd', {sigdig:options[:sigdig]}) } },
252
+ {"METERED MEMORY PRICE" => lambda {|it| format_money(it['estimatedMemoryPrice'], 'usd', {sigdig:options[:sigdig]}) } },
253
+ {"METERED STORAGE PRICE" => lambda {|it| format_money(it['estimatedStoragePrice'], 'usd', {sigdig:options[:sigdig]}) } },
254
+ {"METERED NETWORK PRICE" => lambda {|it| format_money(it['estimatedNetworkPrice'], 'usd', {sigdig:options[:sigdig]}) } },
255
+ {"METERED EXTRA PRICE" => lambda {|it| format_money(it['estimatedExtraPrice'], 'usd', {sigdig:options[:sigdig]}) } },
256
+ {"METERED MTD PRICE" => lambda {|it| format_money(it['estimatedRunningPrice'], 'usd', {sigdig:options[:sigdig]}) } },
257
+ {"METERED TOTAL PRICE" => lambda {|it|
258
+ format_money(it['estimatedTotalPrice'], 'usd', {sigdig:options[:sigdig]}) + ((it['estimatedTotalPrice'].to_f > 0 && it['estimatedTotalPrice'] != it['estimatedRunningPrice']) ? " (Projected)" : "")
263
259
  } },
264
260
  ]
261
+ if options[:show_costs] && json_response['masterAccount'] != false
262
+ columns += [
263
+ {"METERED COMPUTE COST" => lambda {|it| format_money(it['estimatedComputeCost'], 'usd', {sigdig:options[:sigdig]}) } },
264
+ {"METERED MEMORY COST" => lambda {|it| format_money(it['estimatedMemoryCost'], 'usd', {sigdig:options[:sigdig]}) } },
265
+ {"METERED STORAGE COST" => lambda {|it| format_money(it['estimatedStorageCost'], 'usd', {sigdig:options[:sigdig]}) } },
266
+ {"METERED NETWORK COST" => lambda {|it| format_money(it['estimatedNetworkCost'], 'usd', {sigdig:options[:sigdig]}) } },
267
+ {"METERED EXTRA COST" => lambda {|it| format_money(it['estimatedExtraCost'], 'usd', {sigdig:options[:sigdig]}) } },
268
+ {"METERED MTD COST" => lambda {|it| format_money(it['estimatedRunningCost'], 'usd', {sigdig:options[:sigdig]}) } },
269
+ {"METERED TOTAL COST" => lambda {|it|
270
+ format_money(it['estimatedTotalCost'], 'usd', {sigdig:options[:sigdig]}) + ((it['estimatedTotalCost'].to_f > 0 && it['estimatedTotalCost'] != it['estimatedRunningCost']) ? " (Projected)" : "")
271
+ } },
272
+ ]
273
+ end
265
274
  end
266
275
  columns += [
267
276
  {"ESTIMATE" => lambda {|it| format_boolean(it['estimate']) } },
@@ -297,18 +306,22 @@ class Morpheus::Cli::InvoicesCommand
297
306
 
298
307
  if invoice_totals
299
308
  cost_rows = [
300
- {label: 'Cost'.upcase, compute: invoice_totals['actualComputeCost'], memory: invoice_totals['actualMemoryCost'], storage: invoice_totals['actualStorageCost'], network: invoice_totals['actualNetworkCost'], license: invoice_totals['actualLicenseCost'], extra: invoice_totals['actualExtraCost'], running: invoice_totals['actualRunningCost'], total: invoice_totals['actualTotalCost']},
309
+ {label: 'Price'.upcase, compute: invoice_totals['actualComputePrice'], memory: invoice_totals['actualMemoryPrice'], storage: invoice_totals['actualStoragePrice'], network: invoice_totals['actualNetworkPrice'], license: invoice_totals['actualLicensePrice'], extra: invoice_totals['actualExtraPrice'], running: invoice_totals['actualRunningPrice'], total: invoice_totals['actualTotalPrice']},
301
310
  ]
302
- if options[:show_prices]
311
+ if options[:show_costs]
303
312
  cost_rows += [
304
- {label: 'Price'.upcase, compute: invoice_totals['actualComputePrice'], memory: invoice_totals['actualMemoryPrice'], storage: invoice_totals['actualStoragePrice'], network: invoice_totals['actualNetworkPrice'], license: invoice_totals['actualLicensePrice'], extra: invoice_totals['actualExtraPrice'], running: invoice_totals['actualRunningPrice'], total: invoice_totals['actualTotalPrice']},
313
+ {label: 'Cost'.upcase, compute: invoice_totals['actualComputeCost'], memory: invoice_totals['actualMemoryCost'], storage: invoice_totals['actualStorageCost'], network: invoice_totals['actualNetworkCost'], license: invoice_totals['actualLicenseCost'], extra: invoice_totals['actualExtraCost'], running: invoice_totals['actualRunningCost'], total: invoice_totals['actualTotalCost']}
305
314
  ]
306
315
  end
307
316
  if options[:show_estimates]
308
317
  cost_rows += [
309
- {label: 'Metered Cost'.upcase, compute: invoice_totals['estimatedComputeCost'], memory: invoice_totals['estimatedMemoryCost'], storage: invoice_totals['estimatedStorageCost'], network: invoice_totals['estimatedNetworkCost'], license: invoice_totals['estimatedLicenseCost'], extra: invoice_totals['estimatedExtraCost'], running: invoice_totals['estimatedRunningCost'], total: invoice_totals['estimatedTotalCost']},
310
- {label: 'Metered Price'.upcase, compute: invoice_totals['estimatedComputePrice'], memory: invoice_totals['estimatedMemoryPrice'], storage: invoice_totals['estimatedStoragePrice'], network: invoice_totals['estimatedNetworkPrice'], license: invoice_totals['estimatedLicensePrice'], extra: invoice_totals['estimatedExtraPrice'], running: invoice_totals['estimatedRunningPrice'], total: invoice_totals['estimatedTotalPrice']},
318
+ {label: 'Metered Price'.upcase, compute: invoice_totals['estimatedComputePrice'], memory: invoice_totals['estimatedMemoryPrice'], storage: invoice_totals['estimatedStoragePrice'], network: invoice_totals['estimatedNetworkPrice'], license: invoice_totals['estimatedLicensePrice'], extra: invoice_totals['estimatedExtraPrice'], running: invoice_totals['estimatedRunningPrice'], total: invoice_totals['estimatedTotalPrice']}
311
319
  ]
320
+ if options[:show_costs]
321
+ cost_rows += [
322
+ {label: 'Metered Cost'.upcase, compute: invoice_totals['estimatedComputeCost'], memory: invoice_totals['estimatedMemoryCost'], storage: invoice_totals['estimatedStorageCost'], network: invoice_totals['estimatedNetworkCost'], license: invoice_totals['estimatedLicenseCost'], extra: invoice_totals['estimatedExtraCost'], running: invoice_totals['estimatedRunningCost'], total: invoice_totals['estimatedTotalCost']}
323
+ ]
324
+ end
312
325
  end
313
326
  cost_columns = {
314
327
  "" => lambda {|it| it[:label] },
@@ -351,16 +364,15 @@ class Morpheus::Cli::InvoicesCommand
351
364
  opts.banner = subcommand_usage("[id]")
352
365
  opts.on('-a', '--all', "Display all details, costs and prices." ) do
353
366
  options[:show_estimates] = true
354
- # options[:show_costs] = true
355
- options[:show_prices] = true
367
+ options[:show_costs] = true
356
368
  options[:max_line_items] = 10000
357
369
  end
358
- opts.on('--prices', '--prices', "Display prices: Total, Compute, Storage, Network, Extra" ) do
359
- options[:show_prices] = true
360
- end
361
- opts.on('--estimates', '--estimates', "Display all estimated costs, from usage info: Compute, Storage, Network, Extra" ) do
370
+ opts.on('--estimates', '--estimates', "Display all estimated prices, from usage metering info: Compute, Memory, Storage, Network, Extra" ) do
362
371
  options[:show_estimates] = true
363
372
  end
373
+ opts.on('--costs', '--costs', "Display Costs in addition to prices" ) do
374
+ options[:show_costs] = true
375
+ end
364
376
  opts.on('--no-line-items', '--no-line-items', "Do not display line items.") do |val|
365
377
  options[:hide_line_items] = true
366
378
  end
@@ -514,25 +526,25 @@ EOT
514
526
  print_results_pagination({total: line_items.size, size: paged_line_items.size}, {:label => "line item", :n_label => "line items"})
515
527
  end
516
528
 
517
- # cost_types = ["Costs"]
518
- # cost_types << "Prices" if options[:show_prices]
519
- # cost_types << "Estimates" if options[:show_estimates]
520
- # print_h2 cost_types.size == 1 ? "Totals" : "Total #{anded_list(cost_types)}"
521
529
  print_h2 "Invoice Totals"
522
530
 
523
531
  cost_rows = [
524
- {label: 'Cost'.upcase, compute: invoice['computeCost'], memory: invoice['memoryCost'], storage: invoice['storageCost'], network: invoice['networkCost'], license: invoice['licenseCost'], extra: invoice['extraCost'], running: invoice['runningCost'], total: invoice['totalCost']},
532
+ {label: 'Price'.upcase, compute: invoice['computePrice'], memory: invoice['memoryPrice'], storage: invoice['storagePrice'], network: invoice['networkPrice'], license: invoice['licensePrice'], extra: invoice['extraPrice'], running: invoice['runningPrice'], total: invoice['totalPrice']},
525
533
  ]
526
- if options[:show_prices]
534
+ if options[:show_costs] # && json_response['masterAccount'] != false
527
535
  cost_rows += [
528
- {label: 'Price'.upcase, compute: invoice['computePrice'], memory: invoice['memoryPrice'], storage: invoice['storagePrice'], network: invoice['networkPrice'], license: invoice['licensePrice'], extra: invoice['extraPrice'], running: invoice['runningPrice'], total: invoice['totalPrice']},
536
+ {label: 'Cost'.upcase, compute: invoice['computeCost'], memory: invoice['memoryCost'], storage: invoice['storageCost'], network: invoice['networkCost'], license: invoice['licenseCost'], extra: invoice['extraCost'], running: invoice['runningCost'], total: invoice['totalCost']},
529
537
  ]
530
538
  end
531
539
  if options[:show_estimates]
532
540
  cost_rows += [
533
- {label: 'Metered Cost'.upcase, compute: invoice['estimatedComputeCost'], memory: invoice['estimatedMemoryCost'], storage: invoice['estimatedStorageCost'], network: invoice['estimatedNetworkCost'], license: invoice['estimatedLicenseCost'], extra: invoice['estimatedExtraCost'], running: invoice['estimatedRunningCost'], total: invoice['estimatedTotalCost']},
534
- {label: 'Metered Price'.upcase, compute: invoice['estimatedComputePrice'], memory: invoice['estimatedMemoryPrice'], storage: invoice['estimatedStoragePrice'], network: invoice['estimatedNetworkPrice'], license: invoice['estimatedLicensePrice'], extra: invoice['estimatedExtraPrice'], running: invoice['estimatedRunningPrice'], total: invoice['estimatedTotalPrice']},
541
+ {label: 'Metered Price'.upcase, compute: invoice['estimatedComputePrice'], memory: invoice['estimatedMemoryPrice'], storage: invoice['estimatedStoragePrice'], network: invoice['estimatedNetworkPrice'], license: invoice['estimatedLicensePrice'], extra: invoice['estimatedExtraPrice'], running: invoice['estimatedRunningPrice'], total: invoice['estimatedTotalPrice']}
535
542
  ]
543
+ if options[:show_costs] # && json_response['masterAccount'] != false
544
+ cost_rows += [
545
+ {label: 'Metered Cost'.upcase, compute: invoice['estimatedComputeCost'], memory: invoice['estimatedMemoryCost'], storage: invoice['estimatedStorageCost'], network: invoice['estimatedNetworkCost'], license: invoice['estimatedLicenseCost'], extra: invoice['estimatedExtraCost'], running: invoice['estimatedRunningCost'], total: invoice['estimatedTotalCost']},
546
+ ]
547
+ end
536
548
  end
537
549
  cost_columns = {
538
550
  "" => lambda {|it| it[:label] },
@@ -694,16 +706,12 @@ EOT
694
706
  opts.on('-a', '--all', "Display all details, costs and prices." ) do
695
707
  options[:show_actual_costs] = true
696
708
  options[:show_costs] = true
697
- options[:show_prices] = true
698
709
  end
699
- # opts.on('--actuals', '--actuals', "Display all actual costs: Compute, Storage, Network, Extra" ) do
710
+ # opts.on('--actuals', '--actuals', "Display all actual costs: Compute, Memory, Storage, Network, Extra" ) do
700
711
  # options[:show_actual_costs] = true
701
712
  # end
702
- # opts.on('--costs', '--costs', "Display all costs: Compute, Storage, Network, Extra" ) do
703
- # options[:show_costs] = true
704
- # end
705
- opts.on('--prices', '--prices', "Display prices: Total, Compute, Storage, Network, Extra" ) do
706
- options[:show_prices] = true
713
+ opts.on('--costs', '--costs', "Display costs in addition to prices" ) do
714
+ options[:show_costs] = true
707
715
  end
708
716
  opts.on('--invoice-id ID', String, "Filter by Invoice ID") do |val|
709
717
  params['invoiceId'] ||= []
@@ -880,9 +888,9 @@ EOT
880
888
  {"USAGE" => lambda {|it| it['itemUsage'] } },
881
889
  {"RATE" => lambda {|it| it['itemRate'] } },
882
890
  {"UNIT" => lambda {|it| it['rateUnit'] } },
883
- {"COST" => lambda {|it| format_money(it['itemCost'], 'usd', {sigdig:options[:sigdig]}) } },
884
- ] + (options[:show_prices] ? [
885
891
  {"PRICE" => lambda {|it| format_money(it['itemPrice'], 'usd', {sigdig:options[:sigdig]}) } },
892
+ ] + (options[:show_costs] ? [
893
+ {"COST" => lambda {|it| format_money(it['itemCost'], 'usd', {sigdig:options[:sigdig]}) } },
886
894
  {"TAX" => lambda {|it| format_money(it['itemTax'], 'usd', {sigdig:options[:sigdig]}) } },
887
895
  ] : []) + [
888
896
  {"ITEM ID" => lambda {|it| truncate_string_right(it['itemId'], 65) } },
@@ -915,9 +923,9 @@ EOT
915
923
  invoice_totals_columns = [
916
924
  {"Items" => lambda {|it| format_number(json_response['meta']['total']) rescue '' } },
917
925
  #{"Usage" => lambda {|it| it['itemUsage'] } },
918
- {"Cost" => lambda {|it| format_money(it['itemCost'], 'usd', {sigdig:options[:sigdig]}) } },
919
- ] + (options[:show_prices] ? [
920
926
  {"Price" => lambda {|it| format_money(it['itemPrice'], 'usd', {sigdig:options[:sigdig]}) } },
927
+ ] + (options[:show_costs] ? [
928
+ {"Cost" => lambda {|it| format_money(it['itemCost'], 'usd', {sigdig:options[:sigdig]}) } },
921
929
  #{"Tax" => lambda {|it| format_money(it['itemTax'], 'usd', {sigdig:options[:sigdig]}) } },
922
930
 
923
931
  ] : [])
@@ -18,8 +18,8 @@ class Morpheus::Cli::KeyPairs
18
18
 
19
19
  def connect(opts)
20
20
  @api_client = establish_remote_appliance_connection(opts)
21
- @accounts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).accounts
22
- @key_pairs_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).key_pairs
21
+ @accounts_interface = @api_client.accounts
22
+ @key_pairs_interface = @api_client.key_pairs
23
23
  end
24
24
 
25
25
  def handle(args)
@@ -9,7 +9,7 @@ class Morpheus::Cli::LibraryContainerScriptsCommand
9
9
 
10
10
  def connect(opts)
11
11
  @api_client = establish_remote_appliance_connection(opts)
12
- @container_scripts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_container_scripts
12
+ @container_scripts_interface = @api_client.library_container_scripts
13
13
  end
14
14
 
15
15
  def handle(args)
@@ -11,7 +11,7 @@ class Morpheus::Cli::LibraryContainerTemplatesCommand
11
11
 
12
12
  def connect(opts)
13
13
  @api_client = establish_remote_appliance_connection(opts)
14
- @container_templates_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_container_templates
14
+ @container_templates_interface = @api_client.library_container_templates
15
15
  end
16
16
 
17
17
  def handle(args)
@@ -18,12 +18,12 @@ class Morpheus::Cli::LibraryContainerTypesCommand
18
18
 
19
19
  def connect(opts)
20
20
  @api_client = establish_remote_appliance_connection(opts)
21
- @library_container_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_container_types
22
- @library_layouts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_layouts
23
- #@library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
24
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
25
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
26
- #@option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
21
+ @library_container_types_interface = @api_client.library_container_types
22
+ @library_layouts_interface = @api_client.library_layouts
23
+ #@library_instance_types_interface = @api_client.library_instance_types
24
+ @provision_types_interface = @api_client.provision_types
25
+ @option_types_interface = @api_client.option_types
26
+ #@option_type_lists_interface = @api_client.option_type_lists
27
27
  end
28
28
 
29
29
  def handle(args)
@@ -19,10 +19,10 @@ class Morpheus::Cli::LibraryInstanceTypesCommand
19
19
 
20
20
  def connect(opts)
21
21
  @api_client = establish_remote_appliance_connection(opts)
22
- @library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
23
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
24
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
25
- @option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
22
+ @library_instance_types_interface = @api_client.library_instance_types
23
+ @provision_types_interface = @api_client.provision_types
24
+ @option_types_interface = @api_client.option_types
25
+ @option_type_lists_interface = @api_client.option_type_lists
26
26
  end
27
27
 
28
28
  def handle(args)
@@ -21,14 +21,14 @@ class Morpheus::Cli::LibraryLayoutsCommand
21
21
 
22
22
  def connect(opts)
23
23
  @api_client = establish_remote_appliance_connection(opts)
24
- @library_layouts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_layouts
25
- @library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
24
+ @library_layouts_interface = @api_client.library_layouts
25
+ @library_instance_types_interface = @api_client.library_instance_types
26
26
  @library_container_types_interface = @api_client.library_container_types
27
27
  @spec_templates_interface = @api_client.library_spec_templates
28
28
  @spec_template_types_interface = @api_client.library_spec_template_types
29
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
30
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
31
- @option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
29
+ @provision_types_interface = @api_client.provision_types
30
+ @option_types_interface = @api_client.option_types
31
+ @option_type_lists_interface = @api_client.option_type_lists
32
32
  end
33
33
 
34
34
  def handle(args)
@@ -17,10 +17,10 @@ class Morpheus::Cli::LibraryOptionListsCommand
17
17
 
18
18
  def connect(opts)
19
19
  @api_client = establish_remote_appliance_connection(opts)
20
- @library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
21
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
22
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
23
- @option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
20
+ @library_instance_types_interface = @api_client.library_instance_types
21
+ @provision_types_interface = @api_client.provision_types
22
+ @option_types_interface = @api_client.option_types
23
+ @option_type_lists_interface = @api_client.option_type_lists
24
24
  end
25
25
 
26
26
  def handle(args)
@@ -17,10 +17,10 @@ class Morpheus::Cli::LibraryOptionTypesCommand
17
17
 
18
18
  def connect(opts)
19
19
  @api_client = establish_remote_appliance_connection(opts)
20
- @library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
21
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
22
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
23
- @option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
20
+ @library_instance_types_interface = @api_client.library_instance_types
21
+ @provision_types_interface = @api_client.provision_types
22
+ @option_types_interface = @api_client.option_types
23
+ @option_type_lists_interface = @api_client.option_type_lists
24
24
  end
25
25
 
26
26
  def handle(args)
@@ -18,12 +18,12 @@ class Morpheus::Cli::LibraryUpgradesCommand
18
18
 
19
19
  def connect(opts)
20
20
  @api_client = establish_remote_appliance_connection(opts)
21
- @library_container_upgrades_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_container_upgrades
22
- @library_layouts_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_layouts
23
- @library_instance_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).library_instance_types
24
- @provision_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).provision_types
25
- @option_types_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_types
26
- @option_type_lists_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).option_type_lists
21
+ @library_container_upgrades_interface = @api_client.library_container_upgrades
22
+ @library_layouts_interface = @api_client.library_layouts
23
+ @library_instance_types_interface = @api_client.library_instance_types
24
+ @provision_types_interface = @api_client.provision_types
25
+ @option_types_interface = @api_client.option_types
26
+ @option_type_lists_interface = @api_client.option_type_lists
27
27
  end
28
28
 
29
29
  def handle(args)
@@ -20,8 +20,8 @@ class Morpheus::Cli::License
20
20
 
21
21
  def connect(opts)
22
22
  @api_client = establish_remote_appliance_connection(opts)
23
- @api_client = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url)
24
- @license_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).license
23
+ @api_client = @api_client
24
+ @license_interface = @api_client.license
25
25
  end
26
26
 
27
27
  def handle(args)
@@ -16,7 +16,7 @@ class Morpheus::Cli::LoadBalancers
16
16
 
17
17
  def connect(opts)
18
18
  @api_client = establish_remote_appliance_connection(opts)
19
- @load_balancers_interface = Morpheus::APIClient.new(@access_token,nil,nil, @appliance_url).load_balancers
19
+ @load_balancers_interface = @api_client.load_balancers
20
20
  end
21
21
 
22
22
 
@@ -36,6 +36,13 @@ class Morpheus::Cli::Login
36
36
  opts.on( '-p', '--password PASSWORD', "Password" ) do |val|
37
37
  password = val
38
38
  end
39
+ opts.on( '--password-file FILE', String, "Password File, read a file containing the password." ) do |val|
40
+ password_file = File.expand_path(val)
41
+ if !File.exists?(password_file) || !File.file?(password_file) # check readable too
42
+ raise ::OptionParser::InvalidOption.new("File not found: #{password_file}")
43
+ end
44
+ password = File.read(password_file) #.to_s.split("\n").first.strip
45
+ end
39
46
  opts.on( '-t', '--test', "Test credentials only, does not update stored credentials for the appliance." ) do
40
47
  options[:test_only] = true
41
48
  end
@@ -70,7 +77,9 @@ EOT
70
77
  # connect(options)
71
78
  @api_client = establish_remote_appliance_connection(options.merge({:no_prompt => true, :skip_verify_access_token => true, :skip_login => true}))
72
79
 
73
- if @remote_appliance[:authenticated]
80
+ if options[:test_only]
81
+ puts "Testing credentials, your current session will not be modified."
82
+ elsif @remote_appliance[:authenticated]
74
83
  puts "You will be automatically logged out of your current session as '#{@remote_appliance[:username]}'"
75
84
  end
76
85
 
@@ -178,7 +178,7 @@ module Morpheus::Cli::OptionSourceHelper
178
178
  # todo: some other common ones, accounts (tenants), etc.
179
179
  # todo: a generic set of parse and find methods like
180
180
  # like this:
181
- def parse_option_source_id_list(option_source, id_list, api_params={}, refresh=false)
181
+ def parse_option_source_id_list(option_source, id_list, api_params={}, refresh=false, allow_any_id=false)
182
182
  option_source_label = option_source.to_s # .capitalize
183
183
  option_data = load_option_source_data(option_source, api_params, refresh)
184
184
  found_ids = []
@@ -189,9 +189,8 @@ module Morpheus::Cli::OptionSourceHelper
189
189
  # never match blank nil or empty strings
190
190
  print_red_alert "#{option_source_label} cannot be not found by with a blank id!"
191
191
  return nil
192
- # elsif record_id.to_s =~ /\A\d{1,}\Z/
193
- # # always allow any ID for now..
194
- # found_ids << record_id
192
+ elsif allow_any_id && record_id.to_s =~ /\A\d{1,}\Z/
193
+ found_ids << record_id.to_i
195
194
  else
196
195
  # search with in a presedence by value, then name, then id (usually same as value)
197
196
  # exact match on value first.
@@ -228,28 +227,28 @@ module Morpheus::Cli::OptionSourceHelper
228
227
  return found_ids
229
228
  end
230
229
 
231
- def parse_cloud_id_list(id_list, api_params={}, refresh=false)
232
- parse_option_source_id_list('clouds', id_list, api_params, refresh)
230
+ def parse_cloud_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
231
+ parse_option_source_id_list('clouds', id_list, api_params, refresh, allow_any_id)
233
232
  end
234
233
 
235
- def parse_group_id_list(id_list, api_params={}, refresh=false)
236
- parse_option_source_id_list('groups', id_list, api_params, refresh)
234
+ def parse_group_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
235
+ parse_option_source_id_list('groups', id_list, api_params, refresh, allow_any_id)
237
236
  end
238
237
 
239
- def parse_user_id_list(id_list, api_params={}, refresh=false)
240
- parse_option_source_id_list('users', id_list, api_params, refresh)
238
+ def parse_user_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
239
+ parse_option_source_id_list('users', id_list, api_params, refresh, allow_any_id)
241
240
  end
242
241
 
243
- def parse_tenant_id_list(id_list, api_params={}, refresh=false)
244
- parse_option_source_id_list('allTenants', id_list, api_params, refresh)
242
+ def parse_tenant_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
243
+ parse_option_source_id_list('allTenants', id_list, api_params, refresh, allow_any_id)
245
244
  end
246
245
 
247
- # def parse_blueprints_id_list(id_list)
248
- # parse_option_source_id_list('blueprints', id_list, api_params, refresh)
246
+ # def parse_blueprints_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
247
+ # parse_option_source_id_list('blueprints', id_list, api_params, refresh, allow_any_id)
249
248
  # end
250
249
 
251
- def parse_project_id_list(id_list, api_params={}, refresh=false)
252
- parse_option_source_id_list('projects', id_list, api_params, refresh)
250
+ def parse_project_id_list(id_list, api_params={}, refresh=false, allow_any_id=false)
251
+ parse_option_source_id_list('projects', id_list, api_params, refresh, allow_any_id)
253
252
  end
254
253
 
255
254
  end