morpheus-cli 7.0.2.1 → 7.0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Dockerfile +1 -1
- data/Gemfile +3 -0
- data/lib/morpheus/cli/commands/network_routers_command.rb +48 -53
- data/lib/morpheus/cli/version.rb +1 -1
- data/test/api/network_routers_interface_test.rb +22 -0
- data/test/cli/network_routers_test.rb +62 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ead512fdae517fed412d18d73ff0428279f729ac1111592e09a990264e62293
|
4
|
+
data.tar.gz: d00ebb9667fa30c8e98c60ab392f78c65de6a79817323ada29e903c88ea3a150
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb1ead9e4902ca43b05cd23aa4366a8653e7bad81ec5b1412068b2c1ad43f71e5ab8128bae96c826836fb6167f3e30c8eeff4ea3ad45a3cec2effefc2634fef3
|
7
|
+
data.tar.gz: 5525b5dfe3d52caa554ca64dc5d424c0debc9950f05ed72228f0e99481b069e4d47e7b9ce41d6f645cc119918db64ce157fed5fcf20ae4478128d706ea8eca29
|
data/Dockerfile
CHANGED
data/Gemfile
CHANGED
@@ -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
|
-
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
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
|
-
|
1050
|
-
|
1051
|
-
|
1052
|
-
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
1056
|
-
|
1057
|
-
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
1062
|
-
|
1063
|
-
|
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
|
1064
|
+
print_red_alert "Firewall rule #{rule_id} not found for router #{router['name']}"
|
1069
1065
|
end
|
1070
|
-
|
1071
|
-
|
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)
|
data/lib/morpheus/cli/version.rb
CHANGED
@@ -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.
|
4
|
+
version: 7.0.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: 2024-
|
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
|