morpheus-cli 7.0.2 → 7.0.3
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/lib/morpheus/cli/commands/email_templates_command.rb +1 -1
- 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: 44eb4962dacc18e8a073e0472202fcb811dc0e00f300eac02da1608f4abb7a91
|
4
|
+
data.tar.gz: babba8e15b2712ad3075504e76ca144b7ce9fd714c1c45f1cc2e195bd09d1575
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a3ef0604371d19cb597e57e38b457152d36282e74737d3fbe3838d0878b1f16f7a006b873fb09ac7a48898961d6cb217b3f85366735cbebc985df70fbe4e3291
|
7
|
+
data.tar.gz: e71942de507284bac1c9d8f02a95999d4c508350ccdfd7cf81025c1fa37dadeb5c34cefd50dadf5cd1ce81827076fbfbf328a367798fa02dbcaa0c89bf548143
|
data/Dockerfile
CHANGED
@@ -3,7 +3,7 @@ require 'morpheus/cli/cli_command'
|
|
3
3
|
class Morpheus::Cli::EmailTemplates
|
4
4
|
include Morpheus::Cli::CliCommand
|
5
5
|
|
6
|
-
register_subcommands :list, :get, :add, :update, :remove
|
6
|
+
register_subcommands :list, :get, :add, :update, :remove
|
7
7
|
|
8
8
|
def connect(opts)
|
9
9
|
@api_client = establish_remote_appliance_connection(opts)
|
@@ -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
|
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
|