morpheus-cli 7.0.2.1 → 7.0.3

Sign up to get free protection for your applications and to get access to all the features.
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