morpheus-cli 5.5.2.2 → 5.5.3.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 (132) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -1
  3. data/Dockerfile +1 -1
  4. data/README.md +57 -4
  5. data/Rakefile +9 -0
  6. data/bin/morpheus +4 -4
  7. data/lib/morpheus/api/api_client.rb +20 -2
  8. data/lib/morpheus/api/appliance_settings_interface.rb +15 -0
  9. data/lib/morpheus/api/archive_buckets_interface.rb +1 -1
  10. data/lib/morpheus/api/archive_files_interface.rb +3 -3
  11. data/lib/morpheus/api/clients_interface.rb +2 -2
  12. data/lib/morpheus/api/clusters_interface.rb +8 -1
  13. data/lib/morpheus/api/containers_interface.rb +29 -16
  14. data/lib/morpheus/api/custom_instance_types_interface.rb +0 -2
  15. data/lib/morpheus/api/cypher_interface.rb +1 -2
  16. data/lib/morpheus/api/doc_interface.rb +8 -6
  17. data/lib/morpheus/api/file_copy_request_interface.rb +1 -1
  18. data/lib/morpheus/api/guidance_settings_interface.rb +17 -0
  19. data/lib/morpheus/api/health_interface.rb +1 -1
  20. data/lib/morpheus/api/image_builder_interface.rb +3 -3
  21. data/lib/morpheus/api/instances_interface.rb +25 -0
  22. data/lib/morpheus/api/logs_interface.rb +2 -4
  23. data/lib/morpheus/api/monitoring_interface.rb +6 -6
  24. data/lib/morpheus/api/monitoring_settings_interface.rb +25 -0
  25. data/lib/morpheus/api/network_server_groups_interface.rb +7 -0
  26. data/lib/morpheus/api/packages_interface.rb +1 -1
  27. data/lib/morpheus/api/reports_interface.rb +1 -1
  28. data/lib/morpheus/api/servers_interface.rb +9 -1
  29. data/lib/morpheus/api/storage_providers_interface.rb +2 -2
  30. data/lib/morpheus/api/virtual_images_interface.rb +1 -1
  31. data/lib/morpheus/api.rb +2 -0
  32. data/lib/morpheus/benchmarking.rb +1 -1
  33. data/lib/morpheus/cli/cli_command.rb +79 -37
  34. data/lib/morpheus/cli/cli_registry.rb +19 -10
  35. data/lib/morpheus/cli/commands/access_token_command.rb +1 -1
  36. data/lib/morpheus/cli/commands/appliance_settings_command.rb +57 -2
  37. data/lib/morpheus/cli/commands/apps.rb +1 -1
  38. data/lib/morpheus/cli/commands/archives_command.rb +25 -33
  39. data/lib/morpheus/cli/commands/backup_settings_command.rb +1 -1
  40. data/lib/morpheus/cli/commands/blueprints_command.rb +10 -21
  41. data/lib/morpheus/cli/commands/boot_scripts_command.rb +2 -2
  42. data/lib/morpheus/cli/commands/cat_command.rb +1 -1
  43. data/lib/morpheus/cli/commands/catalog_item_types_command.rb +18 -13
  44. data/lib/morpheus/cli/commands/clouds.rb +3 -3
  45. data/lib/morpheus/cli/commands/clusters.rb +154 -3
  46. data/lib/morpheus/cli/commands/containers_command.rb +398 -253
  47. data/lib/morpheus/cli/commands/cypher_command.rb +3 -0
  48. data/lib/morpheus/cli/commands/deployments.rb +1 -1
  49. data/lib/morpheus/cli/commands/deploys.rb +9 -9
  50. data/lib/morpheus/cli/commands/doc.rb +15 -16
  51. data/lib/morpheus/cli/commands/execution_request_command.rb +2 -2
  52. data/lib/morpheus/cli/commands/file_copy_request_command.rb +5 -5
  53. data/lib/morpheus/cli/commands/groups.rb +2 -2
  54. data/lib/morpheus/cli/commands/guidance_command.rb +2 -2
  55. data/lib/morpheus/cli/commands/guidance_settings.rb +148 -0
  56. data/lib/morpheus/cli/commands/health_command.rb +4 -4
  57. data/lib/morpheus/cli/commands/hosts.rb +43 -5
  58. data/lib/morpheus/cli/commands/image_builder_command.rb +1 -1
  59. data/lib/morpheus/cli/commands/instances.rb +419 -148
  60. data/lib/morpheus/cli/commands/integrations_command.rb +22 -20
  61. data/lib/morpheus/cli/commands/key_pairs.rb +2 -2
  62. data/lib/morpheus/cli/commands/library_container_scripts_command.rb +2 -2
  63. data/lib/morpheus/cli/commands/library_container_templates_command.rb +2 -2
  64. data/lib/morpheus/cli/commands/library_instance_types_command.rb +3 -3
  65. data/lib/morpheus/cli/commands/library_spec_templates_command.rb +2 -2
  66. data/lib/morpheus/cli/commands/log_settings_command.rb +1 -1
  67. data/lib/morpheus/cli/commands/login.rb +1 -1
  68. data/lib/morpheus/cli/commands/man_command.rb +32 -18
  69. data/lib/morpheus/cli/commands/monitoring_settings.rb +228 -0
  70. data/lib/morpheus/cli/commands/network_server_groups_command.rb +222 -0
  71. data/lib/morpheus/cli/commands/packages_command.rb +11 -11
  72. data/lib/morpheus/cli/commands/plugins.rb +1 -1
  73. data/lib/morpheus/cli/commands/policies_command.rb +4 -4
  74. data/lib/morpheus/cli/commands/preseed_scripts_command.rb +2 -2
  75. data/lib/morpheus/cli/commands/provisioning_settings_command.rb +1 -1
  76. data/lib/morpheus/cli/commands/remote.rb +1 -1
  77. data/lib/morpheus/cli/commands/reports_command.rb +13 -3
  78. data/lib/morpheus/cli/commands/security_groups.rb +1 -1
  79. data/lib/morpheus/cli/commands/shell.rb +40 -62
  80. data/lib/morpheus/cli/commands/snapshots.rb +3 -5
  81. data/lib/morpheus/cli/commands/source_command.rb +8 -16
  82. data/lib/morpheus/cli/commands/storage_providers_command.rb +7 -7
  83. data/lib/morpheus/cli/commands/tasks.rb +2 -2
  84. data/lib/morpheus/cli/commands/vdi_pools_command.rb +6 -6
  85. data/lib/morpheus/cli/commands/view.rb +5 -1
  86. data/lib/morpheus/cli/commands/whitelabel_settings_command.rb +5 -5
  87. data/lib/morpheus/cli/commands/whoami.rb +2 -2
  88. data/lib/morpheus/cli/credentials.rb +30 -8
  89. data/lib/morpheus/cli/dot_file.rb +8 -15
  90. data/lib/morpheus/cli/error_handler.rb +16 -0
  91. data/lib/morpheus/cli/errors.rb +8 -1
  92. data/lib/morpheus/cli/mixins/print_helper.rb +17 -13
  93. data/lib/morpheus/cli/mixins/provisioning_helper.rb +14 -12
  94. data/lib/morpheus/cli/mixins/rest_command.rb +23 -19
  95. data/lib/morpheus/cli/mixins/secondary_rest_command.rb +47 -24
  96. data/lib/morpheus/cli/option_parser.rb +5 -1
  97. data/lib/morpheus/cli/option_types.rb +59 -12
  98. data/lib/morpheus/cli/version.rb +1 -1
  99. data/lib/morpheus/cli.rb +26 -16
  100. data/lib/morpheus/ext/rest_client.rb +3 -2
  101. data/lib/morpheus/ext/string.rb +6 -4
  102. data/lib/morpheus/formatters.rb +1 -1
  103. data/lib/morpheus/logging.rb +4 -4
  104. data/lib/morpheus/morpkg.rb +4 -4
  105. data/lib/morpheus/rest_client.rb +2 -2
  106. data/lib/morpheus/routes.rb +41 -9
  107. data/lib/morpheus/terminal.rb +65 -16
  108. data/lib/morpheus.rb +1 -1
  109. data/morpheus-cli.gemspec +1 -0
  110. data/test/api/containers_interface_test.rb +68 -0
  111. data/test/api/doc_interface_test.rb +35 -0
  112. data/test/api/instances_interface_test.rb +22 -0
  113. data/test/api/whoami_interface_test.rb +14 -0
  114. data/test/cli/access_token_test.rb +36 -0
  115. data/test/cli/auth_test.rb +82 -0
  116. data/test/cli/cli_test.rb +48 -0
  117. data/test/cli/containers_test.rb +92 -0
  118. data/test/cli/doc_test.rb +35 -0
  119. data/test/cli/help_test.rb +25 -0
  120. data/test/cli/instances_test.rb +36 -0
  121. data/test/cli/man_test.rb +14 -0
  122. data/test/cli/remote_test.rb +89 -0
  123. data/test/cli/roles_test.rb +34 -0
  124. data/test/cli/shell_test.rb +81 -0
  125. data/test/cli/version_test.rb +23 -0
  126. data/test/cli/view_test.rb +55 -0
  127. data/test/cli/whoami_test.rb +17 -0
  128. data/test/morpheus_test.rb +16 -0
  129. data/test/test_case.rb +338 -0
  130. data/test/test_config.rb +137 -0
  131. data/test/test_data_helper.rb +97 -0
  132. metadata +67 -3
@@ -0,0 +1,97 @@
1
+ module MorpheusTest
2
+
3
+ # Mixin to provide loading test data / fixtures for tests
4
+ module TestDataHelper
5
+
6
+ def self.included(base)
7
+ #base.extend ClassMethods
8
+ #todo: load test/fixtures/*yaml
9
+ end
10
+
11
+ protected
12
+
13
+ ## Instances
14
+
15
+ def find_first_instance_id()
16
+ instance_id = client.instances.list({})['instances'].collect {|it| it['id'] }.first
17
+ assert_not_nil instance_id, "Failed to find an instance to test with"
18
+ return instance_id
19
+ end
20
+
21
+ def find_many_instance_ids()
22
+ instance_ids = client.instances.list({})['instances'].collect {|it| it['id'] }.first(5)
23
+ assert instance_ids.size > 1, "Failed to find many instances to test with"
24
+ return instance_ids
25
+ end
26
+
27
+ # populates test with the following data as instance variables
28
+ # @container - Container
29
+ # @id - Container id
30
+ #todo: create a container instead...
31
+ # maybe just warn and omit the test, but it asserts and fails now...
32
+ # instead of env, have a test/fixtures/test-instance-payload.json or
33
+ # or maybe put it in the test_config.yaml under fixtures.
34
+ def load_instance_test_data()
35
+ # todo: cache this , maybe Thread.current for now...
36
+ @id = nil
37
+
38
+ test_instance_id = ENV['TEST_INSTANCE_ID']
39
+ if test_instance_id
40
+ # use the first container in our test instance
41
+ @instance = client.instances.get(test_instance_id.to_i)['instance']
42
+ # rescue ::RestClient::Exception => e on 404
43
+ assert_not_nil @instance, "Test instance #{test_instance_id} was not found!"
44
+ @container = client.containers.get(@instance['containers'].first)['container']
45
+ @id = @instance['id']
46
+ end
47
+ assert_not_nil @id, "A test instance must be specified to run this test.\nTry setting environment variable TEST_CONTAINER_ID=42 or TEST_INSTANCE_ID=99"
48
+ end
49
+
50
+ ## Containers
51
+
52
+ def find_first_container_id()
53
+ container_id = client.instances.list({})['instances'].collect {|it| it['containers'] }.flatten.uniq.first
54
+ assert_not_nil container_id, "Failed to find a container to test with"
55
+ return container_id
56
+ end
57
+
58
+ def find_many_container_ids()
59
+ container_ids = client.instances.list({})['instances'].collect {|it| it['containers'] }.flatten.uniq.first(5)
60
+ assert container_ids.size > 1, "Failed to find many containers to test with"
61
+ return container_ids
62
+ end
63
+
64
+ # populates test with the following data as instance variables
65
+ # @container - Container
66
+ # @id - Container id
67
+ #todo: create a container instead...
68
+ # maybe just warn and omit the test, but it asserts and fails now...
69
+ # instead of env, have a test/fixtures/test-instance-payload.json or
70
+ # or maybe put it in the test_config.yaml under fixtures.
71
+ def load_container_test_data()
72
+ # todo: cache this , maybe Thread.current for now...
73
+ @id = nil
74
+ test_container_id = ENV['TEST_CONTAINER_ID']
75
+ test_instance_id = ENV['TEST_INSTANCE_ID']
76
+ if test_container_id
77
+ # use our test container
78
+ @container = client.containers.get(test_container_id)['container']
79
+ # rescue ::RestClient::Exception => e on 404
80
+ assert_not_nil @container, "Container #{test_container_id} was not found"
81
+ @id = @container['id']
82
+ elsif test_instance_id
83
+ # use the first container in our test instance
84
+ @instance = client.instances.get(test_instance_id.to_i)['instance']
85
+ # rescue ::RestClient::Exception => e on 404
86
+ assert_not_nil @instance, "Test instance #{test_instance_id} was not found!"
87
+ assert_not_nil @instance['containers'].first, "Instance #{@instance['id']} does not have any containers\nTry setting environment variable TEST_CONTAINER_ID=42"
88
+ @container = client.containers.get(@instance['containers'].first)['container']
89
+ assert_not_nil @container, "Container #{@instance['containers'].first} was not found"
90
+ @id = @container['id']
91
+ end
92
+ assert_not_nil @id, "A test container must be specified to run this test.\nTry setting environment variable TEST_CONTAINER_ID=42 or TEST_INSTANCE_ID=99"
93
+ end
94
+
95
+ end
96
+
97
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: morpheus-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.2.2
4
+ version: 5.5.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Estes
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2022-12-01 00:00:00.000000000 Z
14
+ date: 2023-01-19 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -153,6 +153,20 @@ dependencies:
153
153
  - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
+ - !ruby/object:Gem::Dependency
157
+ name: test-unit
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ type: :runtime
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
156
170
  description: Infrastructure agnostic cloud application management & orchestration
157
171
  CLI for Morpheus. Easily manage and orchestrate VMS on private or public infrastructure
158
172
  and containerized architectures.
@@ -221,6 +235,7 @@ files:
221
235
  - lib/morpheus/api/group_policies_interface.rb
222
236
  - lib/morpheus/api/groups_interface.rb
223
237
  - lib/morpheus/api/guidance_interface.rb
238
+ - lib/morpheus/api/guidance_settings_interface.rb
224
239
  - lib/morpheus/api/health_interface.rb
225
240
  - lib/morpheus/api/image_builder_boot_scripts_interface.rb
226
241
  - lib/morpheus/api/image_builder_image_builds_interface.rb
@@ -259,6 +274,7 @@ files:
259
274
  - lib/morpheus/api/monitoring_groups_interface.rb
260
275
  - lib/morpheus/api/monitoring_incidents_interface.rb
261
276
  - lib/morpheus/api/monitoring_interface.rb
277
+ - lib/morpheus/api/monitoring_settings_interface.rb
262
278
  - lib/morpheus/api/network_dhcp_relays_interface.rb
263
279
  - lib/morpheus/api/network_dhcp_servers_interface.rb
264
280
  - lib/morpheus/api/network_domain_records_interface.rb
@@ -272,6 +288,7 @@ files:
272
288
  - lib/morpheus/api/network_proxies_interface.rb
273
289
  - lib/morpheus/api/network_routers_interface.rb
274
290
  - lib/morpheus/api/network_security_servers_interface.rb
291
+ - lib/morpheus/api/network_server_groups_interface.rb
275
292
  - lib/morpheus/api/network_servers_interface.rb
276
293
  - lib/morpheus/api/network_services_interface.rb
277
294
  - lib/morpheus/api/network_static_routes_interface.rb
@@ -392,6 +409,7 @@ files:
392
409
  - lib/morpheus/cli/commands/get_prompt_command.rb
393
410
  - lib/morpheus/cli/commands/groups.rb
394
411
  - lib/morpheus/cli/commands/guidance_command.rb
412
+ - lib/morpheus/cli/commands/guidance_settings.rb
395
413
  - lib/morpheus/cli/commands/health_command.rb
396
414
  - lib/morpheus/cli/commands/history_command.rb
397
415
  - lib/morpheus/cli/commands/hosts.rb
@@ -431,6 +449,7 @@ files:
431
449
  - lib/morpheus/cli/commands/monitoring_contacts_command.rb
432
450
  - lib/morpheus/cli/commands/monitoring_groups_command.rb
433
451
  - lib/morpheus/cli/commands/monitoring_incidents_command.rb
452
+ - lib/morpheus/cli/commands/monitoring_settings.rb
434
453
  - lib/morpheus/cli/commands/network_dhcp_relays_command.rb
435
454
  - lib/morpheus/cli/commands/network_dhcp_servers_command.rb
436
455
  - lib/morpheus/cli/commands/network_domains_command.rb
@@ -442,6 +461,7 @@ files:
442
461
  - lib/morpheus/cli/commands/network_pools_command.rb
443
462
  - lib/morpheus/cli/commands/network_proxies_command.rb
444
463
  - lib/morpheus/cli/commands/network_routers_command.rb
464
+ - lib/morpheus/cli/commands/network_server_groups_command.rb
445
465
  - lib/morpheus/cli/commands/network_services_command.rb
446
466
  - lib/morpheus/cli/commands/network_static_routes_command.rb
447
467
  - lib/morpheus/cli/commands/network_transport_zones_command.rb
@@ -550,6 +570,28 @@ files:
550
570
  - lib/morpheus/terminal.rb
551
571
  - lib/morpheus/util.rb
552
572
  - morpheus-cli.gemspec
573
+ - test/api/containers_interface_test.rb
574
+ - test/api/doc_interface_test.rb
575
+ - test/api/instances_interface_test.rb
576
+ - test/api/whoami_interface_test.rb
577
+ - test/cli/access_token_test.rb
578
+ - test/cli/auth_test.rb
579
+ - test/cli/cli_test.rb
580
+ - test/cli/containers_test.rb
581
+ - test/cli/doc_test.rb
582
+ - test/cli/help_test.rb
583
+ - test/cli/instances_test.rb
584
+ - test/cli/man_test.rb
585
+ - test/cli/remote_test.rb
586
+ - test/cli/roles_test.rb
587
+ - test/cli/shell_test.rb
588
+ - test/cli/version_test.rb
589
+ - test/cli/view_test.rb
590
+ - test/cli/whoami_test.rb
591
+ - test/morpheus_test.rb
592
+ - test/test_case.rb
593
+ - test/test_config.rb
594
+ - test/test_data_helper.rb
553
595
  homepage:
554
596
  licenses:
555
597
  - MIT
@@ -573,4 +615,26 @@ rubygems_version: 3.1.6
573
615
  signing_key:
574
616
  specification_version: 4
575
617
  summary: Provides CLI Interface to the Morpheus Public/Private Cloud Appliance
576
- test_files: []
618
+ test_files:
619
+ - test/api/containers_interface_test.rb
620
+ - test/api/doc_interface_test.rb
621
+ - test/api/instances_interface_test.rb
622
+ - test/api/whoami_interface_test.rb
623
+ - test/cli/access_token_test.rb
624
+ - test/cli/auth_test.rb
625
+ - test/cli/cli_test.rb
626
+ - test/cli/containers_test.rb
627
+ - test/cli/doc_test.rb
628
+ - test/cli/help_test.rb
629
+ - test/cli/instances_test.rb
630
+ - test/cli/man_test.rb
631
+ - test/cli/remote_test.rb
632
+ - test/cli/roles_test.rb
633
+ - test/cli/shell_test.rb
634
+ - test/cli/version_test.rb
635
+ - test/cli/view_test.rb
636
+ - test/cli/whoami_test.rb
637
+ - test/morpheus_test.rb
638
+ - test/test_case.rb
639
+ - test/test_config.rb
640
+ - test/test_data_helper.rb