netscaler-cli 0.3.1 → 0.3.2
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.
- data/etc/Version +1 -1
- data/lib/netscaler/baseexecutor.rb +2 -0
- data/lib/netscaler/clitemplate.rb +17 -6
- data/lib/netscaler/server/cli.rb +19 -1
- data/lib/netscaler/server/executor.rb +54 -14
- data/lib/netscaler/vserver/cli.rb +18 -1
- data/lib/netscaler/vserver/executor.rb +53 -18
- metadata +3 -3
data/etc/Version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.3.
|
1
|
+
0.3.2
|
@@ -96,14 +96,25 @@ module Netscaler
|
|
96
96
|
opts.separator ""
|
97
97
|
end
|
98
98
|
|
99
|
+
def requires_argument?
|
100
|
+
true
|
101
|
+
end
|
102
|
+
|
103
|
+
def validate_noargs
|
104
|
+
end
|
105
|
+
|
99
106
|
def validate_args(args)
|
100
|
-
if
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
107
|
+
if requires_argument?
|
108
|
+
if args.length == 0
|
109
|
+
raise Netscaler::ConfigurationError.new("No hosts specified to act on.")
|
110
|
+
elsif args.length != 1
|
111
|
+
raise Netscaler::ConfigurationError.new("Only one #{cli_type} can be acted on at a time.")
|
112
|
+
end
|
105
113
|
|
106
|
-
|
114
|
+
@host = args[0]
|
115
|
+
else
|
116
|
+
validate_noargs
|
117
|
+
end
|
107
118
|
|
108
119
|
if options[:action].empty?
|
109
120
|
options[:action] << :status
|
data/lib/netscaler/server/cli.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'netscaler/clitemplate'
|
2
|
+
require 'netscaler/errors'
|
2
3
|
require 'netscaler/server/executor'
|
3
4
|
|
4
5
|
module Netscaler::Server
|
@@ -12,7 +13,7 @@ module Netscaler::Server
|
|
12
13
|
end
|
13
14
|
|
14
15
|
def interface_header(opts)
|
15
|
-
opts.banner = "Usage: #{File.basename($0)} [OPTIONS] SERVER"
|
16
|
+
opts.banner = "Usage: #{File.basename($0)} [OPTIONS] [SERVER]"
|
16
17
|
opts.separator <<DESC
|
17
18
|
Description:
|
18
19
|
This is a tool for enabling and disabling a server in a Netscaler
|
@@ -22,10 +23,23 @@ Description:
|
|
22
23
|
By default, this script will tell you what its current status of the
|
23
24
|
server is.
|
24
25
|
|
26
|
+
If you want to list all of the services, use the --list flag with no
|
27
|
+
server argument.
|
28
|
+
|
25
29
|
Options:
|
26
30
|
DESC
|
27
31
|
end
|
28
32
|
|
33
|
+
def requires_argument?
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
def validate_noargs
|
38
|
+
if !options[:action].include?(:list)
|
39
|
+
raise Netscaler::ConfigurationError.new("No hosts specified to act on.")
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
29
43
|
def interface_actions(opts)
|
30
44
|
opts.separator " Actions: "
|
31
45
|
opts.on('-e', '--enable',
|
@@ -36,6 +50,10 @@ DESC
|
|
36
50
|
"Disables the given server.") do |d|
|
37
51
|
options[:action] << :disable
|
38
52
|
end
|
53
|
+
opts.on('-l', '--list',
|
54
|
+
"Lists all of the servers in the environment") do |l|
|
55
|
+
options[:action] << :list
|
56
|
+
end
|
39
57
|
opts.separator ""
|
40
58
|
end
|
41
59
|
end # CLI
|
@@ -15,9 +15,32 @@ module Netscaler::Server
|
|
15
15
|
send_request('disableserver', @params)
|
16
16
|
end
|
17
17
|
|
18
|
+
def list(options)
|
19
|
+
send_request('getserver', {:empty => :ok}) do |response|
|
20
|
+
puts "[" if options[:json]
|
21
|
+
|
22
|
+
servers = response[:return][:list][:item]
|
23
|
+
servers.each_with_index do |server, i|
|
24
|
+
resp = Response.new(server)
|
25
|
+
if options[:json]
|
26
|
+
if i == servers.length - 1
|
27
|
+
puts " #{resp.to_json}"
|
28
|
+
else
|
29
|
+
puts " #{resp.to_json},"
|
30
|
+
end
|
31
|
+
else
|
32
|
+
puts resp.to_s
|
33
|
+
puts
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
puts "]"if options[:json]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
18
41
|
def status(options)
|
19
42
|
send_request('getserver', @params) do |response|
|
20
|
-
resp = Response.new(response)
|
43
|
+
resp = Response.new(response[:return][:list][:item])
|
21
44
|
if options[:json]
|
22
45
|
puts resp.to_json
|
23
46
|
else
|
@@ -28,11 +51,10 @@ module Netscaler::Server
|
|
28
51
|
end
|
29
52
|
|
30
53
|
class Response
|
31
|
-
attr_reader :
|
54
|
+
attr_reader :info
|
32
55
|
|
33
56
|
def initialize(raw_response)
|
34
|
-
@
|
35
|
-
@info = raw_response[:return][:list][:item]
|
57
|
+
@info = raw_response
|
36
58
|
end
|
37
59
|
|
38
60
|
def name
|
@@ -48,28 +70,46 @@ module Netscaler::Server
|
|
48
70
|
end
|
49
71
|
|
50
72
|
def services
|
51
|
-
info[:servicename]
|
73
|
+
if info[:servicename]
|
74
|
+
info[:servicename][:item]
|
75
|
+
else
|
76
|
+
[]
|
77
|
+
end
|
52
78
|
end
|
53
79
|
|
54
80
|
def to_s
|
55
|
-
base = "Name:\t#{name}\nIP
|
56
|
-
|
57
|
-
|
81
|
+
base = "Name:\t#{name}\nIP:\t#{ip_address}\nState:\t#{state}"
|
82
|
+
|
83
|
+
if !services.empty?
|
84
|
+
base << "\nServices:\n"
|
85
|
+
services.each do |service|
|
86
|
+
base << "\t#{service}\n"
|
87
|
+
end
|
88
|
+
base
|
58
89
|
end
|
90
|
+
|
59
91
|
base
|
60
92
|
end
|
61
93
|
|
62
94
|
def to_json
|
63
|
-
base = "{ 'name': '#{name}', 'ip_address': '#{ip_address}', 'state': '#{state}'
|
95
|
+
base = "{ 'name': '#{name}', 'ip_address': '#{ip_address}', 'state': '#{state}'"
|
96
|
+
|
97
|
+
if services.empty?
|
98
|
+
base << " }"
|
99
|
+
else
|
100
|
+
base << ", 'services': ["
|
64
101
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
102
|
+
services.each_with_index do |service, i|
|
103
|
+
base << "'#{service}'"
|
104
|
+
if i != services.length - 1
|
105
|
+
base << ", "
|
106
|
+
end
|
69
107
|
end
|
108
|
+
|
109
|
+
base << "] }"
|
70
110
|
end
|
71
111
|
|
72
|
-
base
|
112
|
+
base
|
73
113
|
end
|
74
114
|
end
|
75
115
|
end
|
@@ -12,7 +12,7 @@ module Netscaler::VServer
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def interface_header(opts)
|
15
|
-
opts.banner = "Usage: #{File.basename($0)} [OPTIONS] VSERVER"
|
15
|
+
opts.banner = "Usage: #{File.basename($0)} [OPTIONS] [VSERVER]"
|
16
16
|
opts.separator <<DESC
|
17
17
|
Description:
|
18
18
|
This is a tool for enabling and disabling a virtual server in a Netscaler
|
@@ -22,6 +22,9 @@ Description:
|
|
22
22
|
By default, this script will tell you what its current status of the
|
23
23
|
virtual server is.
|
24
24
|
|
25
|
+
If you want to list all of the virtual servers, use the --list flag with no
|
26
|
+
server argument.
|
27
|
+
|
25
28
|
Options:
|
26
29
|
DESC
|
27
30
|
end
|
@@ -53,9 +56,23 @@ DESC
|
|
53
56
|
options[:action] << :unbind
|
54
57
|
options[:policy_name] = u
|
55
58
|
end
|
59
|
+
opts.on('-l', '--list',
|
60
|
+
"List all of the virtual servers in the environment.") do |l|
|
61
|
+
options[:action] << :list
|
62
|
+
end
|
56
63
|
opts.separator ""
|
57
64
|
end
|
58
65
|
|
66
|
+
def requires_argument?
|
67
|
+
false
|
68
|
+
end
|
69
|
+
|
70
|
+
def validate_noargs
|
71
|
+
if !options[:action].include?(:list)
|
72
|
+
raise Netscaler::ConfigurationError.new("No hosts specified to act on.")
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
59
76
|
def validate_args(args)
|
60
77
|
super(args)
|
61
78
|
|
@@ -18,10 +18,33 @@ module Netscaler::VServer
|
|
18
18
|
send_request('disablelbvserver', @params)
|
19
19
|
end
|
20
20
|
|
21
|
+
def list(options)
|
22
|
+
send_request('getlbvserver', {:empty => :ok}) do |response|
|
23
|
+
puts "[" if options[:json]
|
24
|
+
|
25
|
+
vservers = response[:return][:list][:item]
|
26
|
+
vservers.each_with_index do |vserver, i|
|
27
|
+
resp = Response.new(vserver)
|
28
|
+
if options[:json]
|
29
|
+
if i == vservers.length - 1
|
30
|
+
puts " #{resp.to_json}"
|
31
|
+
else
|
32
|
+
puts " #{resp.to_json},"
|
33
|
+
end
|
34
|
+
else
|
35
|
+
puts resp.to_s
|
36
|
+
puts
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
puts "]"if options[:json]
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
21
44
|
def status(options)
|
22
45
|
send_request('getlbvserver', @params) do |response|
|
23
46
|
begin
|
24
|
-
resp = Response.new(response)
|
47
|
+
resp = Response.new(response[:return][:list][:item])
|
25
48
|
if options[:json]
|
26
49
|
puts resp.to_json
|
27
50
|
else
|
@@ -58,11 +81,10 @@ module Netscaler::VServer
|
|
58
81
|
end
|
59
82
|
|
60
83
|
class Response
|
61
|
-
attr_reader :
|
84
|
+
attr_reader :info
|
62
85
|
|
63
86
|
def initialize(raw_response)
|
64
|
-
@
|
65
|
-
@info = raw_response[:return][:list][:item]
|
87
|
+
@info = raw_response
|
66
88
|
end
|
67
89
|
|
68
90
|
def name
|
@@ -91,7 +113,7 @@ module Netscaler::VServer
|
|
91
113
|
|
92
114
|
def servers
|
93
115
|
@parsed_servers ||= []
|
94
|
-
if !@parsed_servers.empty?
|
116
|
+
if !@parsed_servers.empty? || info[:servicename].nil?
|
95
117
|
return @parsed_servers
|
96
118
|
end
|
97
119
|
|
@@ -121,27 +143,40 @@ module Netscaler::VServer
|
|
121
143
|
end
|
122
144
|
|
123
145
|
def to_s
|
124
|
-
base = "Name:\t#{name}\nIP:\t#{ip_address}\nState:\t#{state}\nPort:\t#{port}\nType:\t#{type}
|
125
|
-
|
126
|
-
|
127
|
-
base << "\n
|
146
|
+
base = "Name:\t#{name}\nIP:\t#{ip_address}\nState:\t#{state}\nPort:\t#{port}\nType:\t#{type}"
|
147
|
+
|
148
|
+
if !servers.empty?
|
149
|
+
base << "\nServers:\n"
|
150
|
+
servers.each do |server|
|
151
|
+
base << server.to_s
|
152
|
+
base << "\n\n"
|
153
|
+
end
|
128
154
|
end
|
155
|
+
|
129
156
|
base
|
130
157
|
end
|
131
158
|
|
132
159
|
def to_json
|
133
|
-
base = "{ 'name': '#{name}', 'ip_address': '#{ip_address}', 'state': '#{state}', 'port':
|
134
|
-
|
135
|
-
servers.
|
136
|
-
base <<
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
160
|
+
base = "{ 'name': '#{name}', 'ip_address': '#{ip_address}', 'state': '#{state}', 'port': #{port}, 'type': '#{type}'"
|
161
|
+
|
162
|
+
if servers.empty?
|
163
|
+
base << " }"
|
164
|
+
else
|
165
|
+
base << ", 'servers': [\n "
|
166
|
+
|
167
|
+
servers.each_with_index do |server, i|
|
168
|
+
base << server.to_json
|
169
|
+
if i != servers.length - 1
|
170
|
+
base << ",\n "
|
171
|
+
else
|
172
|
+
base << "\n"
|
173
|
+
end
|
141
174
|
end
|
175
|
+
|
176
|
+
base << "] }"
|
142
177
|
end
|
143
178
|
|
144
|
-
base
|
179
|
+
base
|
145
180
|
end
|
146
181
|
end
|
147
182
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netscaler-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 3
|
9
|
-
-
|
10
|
-
version: 0.3.
|
9
|
+
- 2
|
10
|
+
version: 0.3.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Gabe McArthur
|