morpheus-cli 7.0.2.1 → 7.0.3

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b065f573767cfc129de6b434464b83827b2116963138d6f64c7b310168d1cbee
4
- data.tar.gz: 5aac7646b5d1a6a1547d843bfa59ecf09af909b9ee25d01dab5aa72244cfab8e
3
+ metadata.gz: 44eb4962dacc18e8a073e0472202fcb811dc0e00f300eac02da1608f4abb7a91
4
+ data.tar.gz: babba8e15b2712ad3075504e76ca144b7ce9fd714c1c45f1cc2e195bd09d1575
5
5
  SHA512:
6
- metadata.gz: 1d13e149f91071922ab1caa2785a47fdf9ee3db07627790868a4be0fff6c29cb0afbb796fe5503df75d7c677f4b303e01cecd8285c99cb62f53f71ede8b300c8
7
- data.tar.gz: cc7809fa5d2152759702454dd3cfa1eab88acbc0641377578736fc7e9247971594cd95f92b1cd82e830db3dfc7c5959733a771a89fe283dddb61a25ef4412b50
6
+ metadata.gz: a3ef0604371d19cb597e57e38b457152d36282e74737d3fbe3838d0878b1f16f7a006b873fb09ac7a48898961d6cb217b3f85366735cbebc985df70fbe4e3291
7
+ data.tar.gz: e71942de507284bac1c9d8f02a95999d4c508350ccdfd7cf81025c1fa37dadeb5c34cefd50dadf5cd1ce81827076fbfbf328a367798fa02dbcaa0c89bf548143
data/Dockerfile CHANGED
@@ -1,5 +1,5 @@
1
1
  FROM ruby:2.7.5
2
2
 
3
- RUN gem install morpheus-cli -v 7.0.2.1
3
+ RUN gem install morpheus-cli -v 7.0.3
4
4
 
5
5
  ENTRYPOINT ["morpheus"]
@@ -1010,68 +1010,63 @@ class Morpheus::Cli::NetworkRoutersCommand
1010
1010
  puts optparse
1011
1011
  return 1
1012
1012
  end
1013
+ @network_routers_interface.setopts(options)
1014
+ if options[:dry_run]
1015
+ if args[0].to_s =~ /\A\d{1,}\Z/
1016
+ print_dry_run @network_routers_interface.dry.get(args[0].to_i)
1017
+ else
1018
+ print_dry_run @network_routers_interface.dry.list({name:args[0]})
1019
+ end
1020
+ return
1021
+ end
1013
1022
  _firewall_rule(args[0], args[1], options)
1014
1023
  end
1015
1024
 
1016
1025
  def _firewall_rule(router_id, rule_id, options)
1017
- begin
1018
- @network_routers_interface.setopts(options)
1019
- if options[:dry_run]
1020
- if args[0].to_s =~ /\A\d{1,}\Z/
1021
- print_dry_run @network_routers_interface.dry.get(router_id.to_i)
1022
- else
1023
- print_dry_run @network_routers_interface.dry.list({name:router_id})
1024
- end
1025
- return
1026
- end
1027
- router = find_router(router_id)
1028
- if router.nil?
1029
- return 1
1030
- end
1031
-
1032
- if router['type']['hasFirewall']
1033
- rule = find_firewall_rule(router, rule_id)
1034
-
1035
- if rule
1036
- json_response = {'rule' => rule}
1037
-
1038
- if options[:json]
1039
- puts as_json(json_response, options, "rule")
1040
- return 0
1041
- elsif options[:yaml]
1042
- puts as_yaml(json_response, options, "rule")
1043
- return 0
1044
- elsif options[:csv]
1045
- puts records_as_csv([json_response['rule']], options)
1046
- return 0
1047
- end
1026
+ router = find_router(router_id)
1027
+ if router.nil?
1028
+ return 1
1029
+ end
1048
1030
 
1049
- print_h1 "Firewall Rule Details"
1050
- print cyan
1051
- description_cols = {
1052
- "ID" => lambda {|it| it['id'] },
1053
- "Enabled" => lambda {|it| format_boolean(it['enabled'])},
1054
- "Priority" => lambda {|it| it['priority']},
1055
- "Name" => lambda {|it| it['name'] },
1056
- "Type" => lambda {|it| it['ruleType'] },
1057
- "Policy" => lambda {|it| it['policy'] },
1058
- "Direction" => lambda {|it| it['direction'] || 'any' },
1059
- "Source" => lambda {|it| it['source'].kind_of?(Array) && it['source'].count > 0 ? it['source'].join(', ') : (it['source'].nil? || it['source'].empty? ? 'any' : it['source']) },
1060
- "Destination" => lambda {|it| it['destination'].kind_of?(Array) && it['destination'].count > 0 ? it['destination'].join(', ') : (it['destination'].nil? || it['destination'].empty? ? 'any' : it['destination'])},
1061
- "Application" => lambda {|it| it['applications'].count > 0 ? it['applications'][0]['name'] : "#{(it['protocol'] || 'any')} #{it['portRange'] || ''}"}
1062
- }
1063
- print_description_list(description_cols, rule)
1064
- else
1065
- print_red_alert "Firewall rule #{rule_id} not found for router #{router['name']}"
1031
+ if router['type']['hasFirewall']
1032
+ rule = find_firewall_rule(router, rule_id)
1033
+
1034
+ if rule
1035
+ json_response = {'rule' => rule}
1036
+
1037
+ if options[:json]
1038
+ puts as_json(json_response, options, "rule")
1039
+ return 0
1040
+ elsif options[:yaml]
1041
+ puts as_yaml(json_response, options, "rule")
1042
+ return 0
1043
+ elsif options[:csv]
1044
+ puts records_as_csv([json_response['rule']], options)
1045
+ return 0
1066
1046
  end
1047
+
1048
+ print_h1 "Firewall Rule Details"
1049
+ print cyan
1050
+ description_cols = {
1051
+ "ID" => lambda {|it| it['id'] },
1052
+ "Enabled" => lambda {|it| format_boolean(it['enabled'])},
1053
+ "Priority" => lambda {|it| it['priority']},
1054
+ "Name" => lambda {|it| it['name'] },
1055
+ "Type" => lambda {|it| it['ruleType'] },
1056
+ "Policy" => lambda {|it| it['policy'] },
1057
+ "Direction" => lambda {|it| it['direction'] || 'any' },
1058
+ "Source" => lambda {|it| it['source'].kind_of?(Array) && it['source'].count > 0 ? it['source'].join(', ') : (it['source'].nil? || it['source'].empty? ? 'any' : it['source']) },
1059
+ "Destination" => lambda {|it| it['destination'].kind_of?(Array) && it['destination'].count > 0 ? it['destination'].join(', ') : (it['destination'].nil? || it['destination'].empty? ? 'any' : it['destination'])},
1060
+ "Application" => lambda {|it| it['applications'].count > 0 ? it['applications'][0]['name'] : "#{(it['protocol'] || 'any')} #{it['portRange'] || ''}"}
1061
+ }
1062
+ print_description_list(description_cols, rule)
1067
1063
  else
1068
- print_red_alert "Firewall not supported for #{router['type']['name']}"
1064
+ print_red_alert "Firewall rule #{rule_id} not found for router #{router['name']}"
1069
1065
  end
1070
- println reset
1071
- rescue RestClient::Exception => e
1072
- print_rest_exception(e, options)
1073
- return 1
1066
+ else
1067
+ print_red_alert "Firewall not supported for #{router['type']['name']}"
1074
1068
  end
1069
+ println reset
1075
1070
  end
1076
1071
 
1077
1072
  def add_firewall_rule(args)
@@ -1,6 +1,6 @@
1
1
 
2
2
  module Morpheus
3
3
  module Cli
4
- VERSION = "7.0.2.1"
4
+ VERSION = "7.0.3"
5
5
  end
6
6
  end
@@ -0,0 +1,22 @@
1
+ require 'morpheus_test'
2
+
3
+ # Tests for Morpheus::InstancesInterface
4
+ class MorpheusTest::NetworkRoutersInterfaceTest < MorpheusTest::TestCase
5
+
6
+ def test_network_routers_interface
7
+ @network_routers_interface = client.network_routers
8
+ response = @network_routers_interface.list()
9
+ network_routers = response['networkRouters']
10
+ assert network_routers.is_a?(Array)
11
+ if !network_routers.empty?
12
+ response = @network_routers_interface.get(network_routers[0]['id'])
13
+ network_router = response['networkRouter']
14
+ assert network_router.is_a?(Hash)
15
+ assert_equal network_router['id'], network_routers[0]['id']
16
+ else
17
+ #puts "No network routers found in this environment"
18
+ end
19
+ #todo: create and delete
20
+ end
21
+
22
+ end
@@ -0,0 +1,62 @@
1
+ require 'morpheus_test'
2
+
3
+ # Tests for Morpheus::Cli::NetworkRouters
4
+ class MorpheusTest::NetworkRoutersTest < MorpheusTest::TestCase
5
+
6
+ def test_network_routers_list
7
+ assert_execute %(network-routers list)
8
+ end
9
+
10
+ def test_network_routers_get
11
+ network_router = client.network_routers.list({})['networkRouters'][0]
12
+ if network_router
13
+ assert_execute %(network-routers get "#{network_router['id']}")
14
+ assert_execute %(network-routers get "#{escape_arg network_router['name']}")
15
+ else
16
+ puts "No network routers found, unable to execute test `#{__method__}`"
17
+ end
18
+ end
19
+
20
+ def test_network_routers_firewall_rules
21
+ network_router = client.network_routers.list({})['networkRouters'].find {|it| it['firewall'] }
22
+ if network_router
23
+ assert_execute %(network-routers firewall-rules "#{network_router['id']}")
24
+ else
25
+ puts "No network routers found with a firewall, unable to execute test `#{__method__}`"
26
+ end
27
+ end
28
+
29
+ def test_network_routers_firewall_rules_get
30
+ network_router = client.network_routers.list({})['networkRouters'].find {|it| it['firewall'] }
31
+ if network_router
32
+ # need to get by id to get the firewall rules
33
+ network_router = client.network_routers.get(network_router['id'])['networkRouter']
34
+ rules = network_router['type']['hasFirewallGroups'] ? (network_router['firewall']['ruleGroups'] || []).collect {|it| it['rules']}.flatten : network_router['firewall']['rules']
35
+ rule = rules[0]
36
+ if rule
37
+ assert_execute %(network-routers firewall-rule "#{network_router['id']}" "#{rule['id']}")
38
+ else
39
+ puts "No network router firewall rules found, unable to execute test `#{__method__}`"
40
+ end
41
+ else
42
+ puts "No network routers found with a firewall, unable to execute test `#{__method__}`"
43
+ end
44
+ end
45
+
46
+ # def test_network_routers_add
47
+ # warn "Skipped test test_network_routers_add() because it is not implemented"
48
+ # end
49
+
50
+ # def test_network_routers_update
51
+ # warn "Skipped test test_network_routers_update() because it is not implemented"
52
+ # end
53
+
54
+ # def test_network_routers_delete
55
+ # warn "Skipped test test_network_routers_remove() because it is not implemented"
56
+ # end
57
+
58
+ # todo: many more network-routers commands to add
59
+
60
+ protected
61
+
62
+ 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: 7.0.2.1
4
+ version: 7.0.3
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: 2024-05-20 00:00:00.000000000 Z
14
+ date: 2024-06-14 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -600,6 +600,7 @@ files:
600
600
  - morpheus-cli.gemspec
601
601
  - test/api/containers_interface_test.rb
602
602
  - test/api/instances_interface_test.rb
603
+ - test/api/network_routers_interface_test.rb
603
604
  - test/api/whoami_interface_test.rb
604
605
  - test/cli/access_token_test.rb
605
606
  - test/cli/auth_test.rb
@@ -608,6 +609,7 @@ files:
608
609
  - test/cli/help_test.rb
609
610
  - test/cli/instances_test.rb
610
611
  - test/cli/man_test.rb
612
+ - test/cli/network_routers_test.rb
611
613
  - test/cli/remote_test.rb
612
614
  - test/cli/roles_test.rb
613
615
  - test/cli/shell_test.rb
@@ -644,6 +646,7 @@ summary: Provides CLI Interface to the Morpheus Public/Private Cloud Appliance
644
646
  test_files:
645
647
  - test/api/containers_interface_test.rb
646
648
  - test/api/instances_interface_test.rb
649
+ - test/api/network_routers_interface_test.rb
647
650
  - test/api/whoami_interface_test.rb
648
651
  - test/cli/access_token_test.rb
649
652
  - test/cli/auth_test.rb
@@ -652,6 +655,7 @@ test_files:
652
655
  - test/cli/help_test.rb
653
656
  - test/cli/instances_test.rb
654
657
  - test/cli/man_test.rb
658
+ - test/cli/network_routers_test.rb
655
659
  - test/cli/remote_test.rb
656
660
  - test/cli/roles_test.rb
657
661
  - test/cli/shell_test.rb