netscaler 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/VERSION +1 -1
- data/lib/netscaler/adapter.rb +14 -4
- data/lib/netscaler/connection.rb +8 -0
- data/lib/netscaler/http_adapter.rb +28 -8
- data/lib/netscaler/lb/vserver.rb +0 -4
- data/lib/netscaler/mock_adapter.rb +1 -1
- data/lib/netscaler/netscaler_service.rb +1 -0
- data/lib/netscaler/server.rb +33 -7
- data/lib/netscaler/service.rb +0 -66
- data/lib/netscaler/servicegroup.rb +30 -76
- data/netscaler.gemspec +4 -4
- data/spec/server_spec.rb +47 -8
- data/spec/servicegroup_spec.rb +65 -33
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MDAxODcxZGY0ZWZmNmRmYzdhYWRmZjkxMTRjMjEwOTcwYjA3NzcyMg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YzUxNDE2M2E1MGYyOTdlYWQ2ZTg3YTVkNmI4OTgwY2RkOTNiYmY4Mg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDFlMDViZGVkZGVhMTk5YjBjODQ2NzY0Y2ZiN2UyMjUwNTVlMzFlZjBhZTYz
|
10
|
+
YTM0NzMzNzlmOTdiMzg5ZWI5YjgxYzc1MjVjNWM4MThhZTExYzUxYTc1Y2Nl
|
11
|
+
NWVmY2QwY2EyZjAxNmJkZmEzMDMzY2JkMzcxMGM3ZDU3YmQ3NDA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
OTY3MGI4MTg2ZWU4ZmFmNDBlYWIyY2JkOTkwZWI5MmMwZmFkMDE3ZjVhMWVh
|
14
|
+
Y2NlZjlmMzNkNWQ5Mzk4MGUwOGNkN2FhMmYxMDJlZjI0YTJiYmM0ZmQzNzFm
|
15
|
+
ODIwNTRjZjExMjQ1NzFhMTU1MDdkYmZlMTFjNjhmZGZjNDc0ZWI=
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.4.0
|
data/lib/netscaler/adapter.rb
CHANGED
@@ -7,6 +7,15 @@ module Netscaler
|
|
7
7
|
@session = value
|
8
8
|
end
|
9
9
|
|
10
|
+
class FailedRequest < StandardError
|
11
|
+
attr_reader :payload
|
12
|
+
|
13
|
+
def initialize(message, payload, rest_client_exception=nil)
|
14
|
+
super(message)
|
15
|
+
@payload = payload
|
16
|
+
@rest_client_exception = rest_client_exception
|
17
|
+
end
|
18
|
+
end
|
10
19
|
|
11
20
|
:protected
|
12
21
|
|
@@ -28,24 +37,25 @@ module Netscaler
|
|
28
37
|
end
|
29
38
|
options[:accept] = :json
|
30
39
|
options[:params] = args[:params] if args.has_key?(:params)
|
40
|
+
|
31
41
|
return options
|
32
42
|
end
|
33
43
|
|
34
44
|
def check_error(payload)
|
35
45
|
if payload['errorcode'] != 0
|
36
|
-
|
46
|
+
e = FailedRequest.new("ErrorCode #{payload['errorcode']} -> #{payload['message']}", payload)
|
47
|
+
raise e
|
37
48
|
end
|
38
49
|
end
|
39
50
|
|
40
51
|
def process_result(result, response)
|
41
|
-
#status_code = result.code.to_i
|
42
|
-
|
43
52
|
if result.header['content-type'] =~ /application\/json/
|
44
53
|
payload = JSON.parse(response)
|
45
54
|
check_error(payload)
|
46
55
|
return payload
|
47
56
|
else
|
48
|
-
|
57
|
+
e = FailedRequest.new("Unexpected Content Type Header #{result.header['content-type']}", response)
|
58
|
+
raise e
|
49
59
|
end
|
50
60
|
end
|
51
61
|
|
data/lib/netscaler/connection.rb
CHANGED
@@ -51,6 +51,10 @@ module Netscaler
|
|
51
51
|
return @servicegroups
|
52
52
|
end
|
53
53
|
|
54
|
+
def servicegroup
|
55
|
+
return @servicegroups
|
56
|
+
end
|
57
|
+
|
54
58
|
def load_balancing
|
55
59
|
return @load_balancing
|
56
60
|
end
|
@@ -67,6 +71,10 @@ module Netscaler
|
|
67
71
|
return @servers
|
68
72
|
end
|
69
73
|
|
74
|
+
def server
|
75
|
+
return @servers
|
76
|
+
end
|
77
|
+
|
70
78
|
def session
|
71
79
|
return @adapter.session
|
72
80
|
end
|
@@ -18,7 +18,12 @@ module Netscaler
|
|
18
18
|
options[:content_type] = 'application/x-www-form-urlencoded'
|
19
19
|
|
20
20
|
post_data = prepare_payload(data)
|
21
|
-
|
21
|
+
begin
|
22
|
+
@site[url].post post_data, options
|
23
|
+
rescue RestClient::Exception => e
|
24
|
+
fr = Netscaler::Adapter::FailedRequest.new "Bad request", e.response , e
|
25
|
+
raise fr
|
26
|
+
end
|
22
27
|
end
|
23
28
|
|
24
29
|
def post(part, data, args={})
|
@@ -27,8 +32,13 @@ module Netscaler
|
|
27
32
|
options[:content_type] = 'application/x-www-form-urlencoded'
|
28
33
|
|
29
34
|
post_data = prepare_payload(data)
|
30
|
-
|
31
|
-
|
35
|
+
begin
|
36
|
+
@site[url].post post_data, options do |response, request, result|
|
37
|
+
return process_result(result, response)
|
38
|
+
end
|
39
|
+
rescue RestClient::Exception => e
|
40
|
+
fr = Netscaler::Adapter::FailedRequest.new "Bad request", e.response , e
|
41
|
+
raise fr
|
32
42
|
end
|
33
43
|
end
|
34
44
|
|
@@ -36,8 +46,13 @@ module Netscaler
|
|
36
46
|
url = get_uri(part)
|
37
47
|
options = prepare_options(args)
|
38
48
|
|
39
|
-
|
40
|
-
|
49
|
+
begin
|
50
|
+
@site[url].get options do |response, request, result|
|
51
|
+
return process_result(result, response)
|
52
|
+
end
|
53
|
+
rescue RestClient::Exception => e
|
54
|
+
fr = Netscaler::Adapter::FailedRequest.new "Bad request", e.response , e
|
55
|
+
raise fr
|
41
56
|
end
|
42
57
|
end
|
43
58
|
|
@@ -45,10 +60,15 @@ module Netscaler
|
|
45
60
|
url = get_uri(part)
|
46
61
|
options = prepare_options(args)
|
47
62
|
|
48
|
-
|
49
|
-
|
63
|
+
begin
|
64
|
+
@site[url].delete options do |response, request, result|
|
65
|
+
return process_result(result, response)
|
66
|
+
end
|
67
|
+
rescue RestClient::Exception => e
|
68
|
+
fr = Netscaler::Adapter::FailedRequest.new "Bad request", e.response , e
|
69
|
+
raise fr
|
50
70
|
end
|
51
71
|
end
|
52
72
|
|
53
73
|
end
|
54
|
-
end
|
74
|
+
end
|
data/lib/netscaler/lb/vserver.rb
CHANGED
@@ -20,28 +20,24 @@ module Netscaler
|
|
20
20
|
|
21
21
|
def show_binding(payload)
|
22
22
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
23
|
-
payload = Netscaler.hash_hack(payload)
|
24
23
|
validate_payload(payload, [:name])
|
25
24
|
return @netscaler.adapter.get("config/lbvserver_binding/#{payload[:name]}")
|
26
25
|
end
|
27
26
|
|
28
27
|
def remove(payload) # :args: :name
|
29
28
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
30
|
-
payload = Netscaler.hash_hack(payload)
|
31
29
|
validate_payload(payload, [:name])
|
32
30
|
return @netscaler.adapter.delete("config/lbvserver/#{payload[:name]}")
|
33
31
|
end
|
34
32
|
|
35
33
|
def add(payload)
|
36
34
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
37
|
-
payload = Netscaler.hash_hack(payload)
|
38
35
|
validate_payload(payload, [:name, :serviceType, :ipv46, :port])
|
39
36
|
return @netscaler.adapter.post_no_body('config/lbvserver/', {'lbvserver' => payload})
|
40
37
|
end
|
41
38
|
|
42
39
|
def stat(payload)
|
43
40
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
44
|
-
payload = Netscaler.hash_hack(payload)
|
45
41
|
validate_payload(payload, [:name])
|
46
42
|
return @netscaler.adapter.get("stat/lbvserver/#{payload[:name]}")
|
47
43
|
end
|
@@ -26,7 +26,7 @@ module Netscaler
|
|
26
26
|
options = prepare_options(args)
|
27
27
|
options[:content_type] = :json#'application/json'
|
28
28
|
post_data = prepare_payload(data)
|
29
|
-
puts "POST /#{url}\n#{post_data}"
|
29
|
+
#puts "POST /#{url}\n#{post_data}"
|
30
30
|
|
31
31
|
return process_result(@result, @response)
|
32
32
|
|
data/lib/netscaler/server.rb
CHANGED
@@ -10,7 +10,6 @@ module Netscaler
|
|
10
10
|
# method #add requires arg :name but :ipaddress and :domain are optional but requires one of them.
|
11
11
|
def add(server) # :args: :name => 'foo', :ipaddress => '192.168.1.10', :domain => 'bar.com'
|
12
12
|
raise ArgumentError, 'server cannot be null' if server.nil?
|
13
|
-
server = Netscaler.hash_hack(server)
|
14
13
|
if server[:domain] != nil then
|
15
14
|
validate_payload(server, [:name, :domain])
|
16
15
|
else
|
@@ -22,17 +21,44 @@ module Netscaler
|
|
22
21
|
|
23
22
|
def remove(payload) # :args: :server
|
24
23
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
25
|
-
payload = Netscaler.hash_hack(payload)
|
26
24
|
validate_payload(payload, [:server])
|
27
25
|
return @netscaler.adapter.delete("config/server/#{payload[:server]}")
|
28
26
|
end
|
29
27
|
|
28
|
+
def enable(payload) # :args: :server, :service_group
|
29
|
+
toggle('enable', payload)
|
30
|
+
end
|
31
|
+
|
32
|
+
def disable(payload) # :args: :server, :service_group
|
33
|
+
toggle('disable', payload)
|
34
|
+
end
|
35
|
+
|
36
|
+
def show_bindings(payload) # :args: :server => 'foo'
|
37
|
+
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
38
|
+
validate_payload(payload, [:server])
|
39
|
+
return @netscaler.adapter.get("config/server_binding/#{payload[:server]}")
|
40
|
+
end
|
41
|
+
|
30
42
|
##
|
31
|
-
# :
|
32
|
-
#
|
33
|
-
def
|
34
|
-
|
35
|
-
|
43
|
+
# :server is optional, if omitted it will return all servers
|
44
|
+
# configured on the Netscaler.
|
45
|
+
def show(payload = {}) # :args: :server => 'foo'
|
46
|
+
if payload[:server] != nil then
|
47
|
+
validate_payload(payload, [:server])
|
48
|
+
return @netscaler.adapter.get("config/server/#{payload[:server]}")
|
49
|
+
elsif payload == {} then
|
50
|
+
return @netscaler.adapter.get('config/server/')
|
51
|
+
else
|
52
|
+
raise ArgumentError, 'payload supplied must have been missing :server'
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
private
|
57
|
+
def toggle(toggle_action, payload)
|
58
|
+
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
59
|
+
#validate_payload(payload, [:server, :service_group])
|
60
|
+
validate_payload(payload, [:server])
|
61
|
+
return @netscaler.adapter.post('config/', {"params" => {"action" => toggle_action}, "server" => {"name" => payload[:server]}})
|
36
62
|
end
|
37
63
|
end
|
38
64
|
end
|
data/lib/netscaler/service.rb
CHANGED
@@ -14,25 +14,15 @@ module Netscaler
|
|
14
14
|
# or if it is already configured on the netscaler.
|
15
15
|
def add(payload) # :args: :name, :serverName, :serviceType, :port
|
16
16
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
17
|
-
payload = Netscaler.hash_hack(payload)
|
18
17
|
validate_payload(payload, [:name, :serverName, :serviceType, :port])
|
19
18
|
return @netscaler.adapter.post_no_body('config/service/', {'service' => payload})
|
20
19
|
end
|
21
20
|
|
22
|
-
##
|
23
|
-
# :category: Deprecated Methods
|
24
|
-
# DEPRECATED: Please use #add instead=.
|
25
|
-
def add_service(payload)
|
26
|
-
warn '[DEPRECATION] "add_service" is deprecated. Please use "#add" instead.'
|
27
|
-
self.add(payload)
|
28
|
-
end
|
29
|
-
|
30
21
|
##
|
31
22
|
# :serverName is optional, if omitted it will return all services
|
32
23
|
# configured on the Netscaler.
|
33
24
|
def show(payload={}) # :args: :serverName => 'foo'
|
34
25
|
if payload[:serviceName] != nil then
|
35
|
-
payload = Netscaler.hash_hack(payload)
|
36
26
|
validate_payload(payload, [:serviceName])
|
37
27
|
return @netscaler.adapter.get("config/service/#{payload[:serviceName]}")
|
38
28
|
elsif payload == {} then
|
@@ -42,73 +32,17 @@ module Netscaler
|
|
42
32
|
end
|
43
33
|
end
|
44
34
|
|
45
|
-
##
|
46
|
-
# :category: Deprecated Methods
|
47
|
-
# DEPRECATED: Please use #show instead=.
|
48
|
-
def get_service(payload)
|
49
|
-
warn '[DEPRECATION] "get_service" is deprecated. Please use "#show" instead.'
|
50
|
-
self.show(payload)
|
51
|
-
end
|
52
|
-
|
53
|
-
##
|
54
|
-
# :category: Deprecated Methods
|
55
|
-
# DEPRECATED: Please use #show instead=.
|
56
|
-
def get_services(args={})
|
57
|
-
warn '[DEPRECATION] "get_services" is deprecated. Please use "#show" instead.'
|
58
|
-
return @netscaler.adapter.get('config/service/', args)
|
59
|
-
end
|
60
|
-
|
61
35
|
def enable(payload) # :args: :name => 'foo'
|
62
36
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
63
|
-
payload = Netscaler.hash_hack(payload)
|
64
37
|
validate_payload(payload, [:name])
|
65
38
|
return @netscaler.adapter.post_no_body('config/service/', {'params' => {'action' => 'enable'}, 'service' => payload})
|
66
39
|
end
|
67
40
|
|
68
|
-
##
|
69
|
-
# :category: Deprecated Methods
|
70
|
-
# DEPRECATED: Please use #enable instead=.
|
71
|
-
def enable_service(payload)
|
72
|
-
warn '[DEPRECATION] "enable_service" is deprecated. Please use "#enable" instead.'
|
73
|
-
self.enable(payload)
|
74
|
-
end
|
75
|
-
|
76
41
|
def disable(payload) # :args: :name => 'foo'
|
77
42
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
78
|
-
payload = Netscaler.hash_hack(payload)
|
79
43
|
validate_payload(payload, [:name])
|
80
44
|
return @netscaler.adapter.post_no_body('config/service/', {'params' => {'action' => 'disable'}, 'service' => payload})
|
81
45
|
end
|
82
46
|
|
83
|
-
##
|
84
|
-
# :category: Deprecated Methods
|
85
|
-
# DEPRECATED: Please use #disable instead=.
|
86
|
-
def disable_service(payload)
|
87
|
-
warn '[DEPRECATION] "disable_service" is deprecated. Please use "#disable" instead.'
|
88
|
-
self.disable(payload)
|
89
|
-
end
|
90
|
-
|
91
|
-
##
|
92
|
-
# :category: Deprecated Methods
|
93
|
-
# DEPRECATED: Please use Netscaler::Lb::Monitor.bind instead=.
|
94
|
-
def lbmonitor_service_binding(payload)
|
95
|
-
warn '[DEPRECATION] "lbmonitor_service_binding" is deprecated. Please use "Netscaler::Lb::Monitor.bind" instead.'
|
96
|
-
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
97
|
-
payload = Netscaler.hash_hack(payload)
|
98
|
-
validate_payload(payload, [:serviceName, :monitorName])
|
99
|
-
return @netscaler.adapter.post_no_body("config/lbmonitor_service_binding/#{payload[:monitorName]}?action=bind", {'params' => {'action' => 'bind'}, 'lbmonitor_service_binding' => payload})
|
100
|
-
end
|
101
|
-
|
102
|
-
##
|
103
|
-
# :category: Deprecated Methods
|
104
|
-
# DEPRECATED: Please use Netscaler::Lb::Monitor.unbind instead=.
|
105
|
-
def lbmonitor_service_unbinding(payload)
|
106
|
-
warn '[DEPRECATION] "lbmonitor_service_binding" is deprecated. Please use "Netscaler::Lb::Monitor.bind" instead.'
|
107
|
-
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
108
|
-
payload = Netscaler.hash_hack(payload)
|
109
|
-
validate_payload(payload, [:serviceName, :monitorName])
|
110
|
-
return @netscaler.adapter.post_no_body("config/lbmonitor_service_binding/#{payload[:monitorName]}?action=unbind", {'params' => {'action' => 'unbind'}, 'lbmonitor_service_binding' => payload})
|
111
|
-
end
|
112
|
-
|
113
47
|
end
|
114
48
|
end
|
@@ -8,120 +8,74 @@ module Netscaler
|
|
8
8
|
|
9
9
|
def add(payload) # :args: :serviceGroupName => 'foo', :serviceType => 'HTTP'
|
10
10
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
11
|
-
payload = Netscaler.hash_hack(payload)
|
12
11
|
validate_payload(payload, [:serviceGroupName, :serviceType])
|
13
12
|
return @netscaler.adapter.post_no_body("config/servicegroup/", "servicegroup" => payload)
|
14
13
|
end
|
15
14
|
|
16
|
-
##
|
17
|
-
# :category: Deprecated Methods
|
18
|
-
# DEPRECATED: Please use #add instead=.
|
19
|
-
def add_servicegroup(payload)
|
20
|
-
warn '[DEPRECATION] "add_servicegroup" is deprecated. Please use "#add" instead.'
|
21
|
-
self.add(payload)
|
22
|
-
end
|
23
|
-
|
24
15
|
def remove(payload) # :arg: serviceGroupName
|
25
16
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
26
|
-
payload = Netscaler.hash_hack(payload)
|
27
17
|
validate_payload(payload, [:serviceGroupName])
|
28
18
|
return @netscaler.adapter.delete("config/servicegroup/#{payload[:serviceGroupName]}")
|
29
19
|
end
|
30
20
|
|
31
|
-
##
|
32
|
-
# :category: Deprecated Methods
|
33
|
-
# DEPRECATED: Please use #remove instead=.
|
34
|
-
def remove_servicegroup(payload)
|
35
|
-
warn '[DEPRECATION] "remove_servicegroup" is deprecated. Please use "#remove" instead.'
|
36
|
-
self.remove(payload)
|
37
|
-
end
|
38
|
-
|
39
21
|
##
|
40
22
|
# argument is optional, if left empty it will return all servicegroups
|
41
|
-
def show(payload) # :arg: servicegroupname
|
42
|
-
return @netscaler.adapter.get("config/servicegroup/"
|
23
|
+
def show(payload={}) # :arg: servicegroupname
|
24
|
+
return @netscaler.adapter.get("config/servicegroup/") if payload = {}
|
43
25
|
return @netscaler.adapter.get("config/servicegroup/#{payload}")
|
44
26
|
end
|
45
27
|
|
46
|
-
|
47
|
-
|
48
|
-
# DEPRECATED: Please use #show instead=.
|
49
|
-
def get_servicegroup(payload)
|
50
|
-
warn '[DEPRECATION] "get_servicegroup" is deprecated. Please use "#show" instead.'
|
51
|
-
self.show(payload)
|
28
|
+
def enable(payload) # :arg: service_group
|
29
|
+
toggle('enable', payload)
|
52
30
|
end
|
53
31
|
|
54
|
-
|
55
|
-
|
56
|
-
# DEPRECATED: Please use #show instead=.
|
57
|
-
def get_servicegroups(payload)
|
58
|
-
warn '[DEPRECATION] "get_servicegroup" is deprecated. Please use "#show" instead.'
|
59
|
-
self.show(payload)
|
60
|
-
end
|
61
|
-
|
62
|
-
def show_bindings(payload) # :args: servicegroupname
|
63
|
-
return @netscaler.adapter.get("config/servicegroup_servicegroupmember_binding/#{payload}")
|
32
|
+
def disable(payload) # :arg: service_group
|
33
|
+
toggle('disable', payload)
|
64
34
|
end
|
65
35
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
36
|
+
def enable_server(payload) # :arg: service_group, serverName, port
|
37
|
+
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
38
|
+
validate_payload(payload, [:serviceGroupName, :serverName, :port])
|
39
|
+
return @netscaler.adapter.post('config/', {"params" =>
|
40
|
+
{"action" => "enable"},
|
41
|
+
"servicegroup" =>
|
42
|
+
{"servicegroupname" => payload[:serviceGroupName],
|
43
|
+
"serverName" => payload[:serverName],
|
44
|
+
"port" => payload[:port] }})
|
72
45
|
end
|
73
46
|
|
74
|
-
|
75
|
-
# :category: Deprecated Methods
|
76
|
-
# DEPRECATED: Please use Netscaler::Lb::Monitor.bind instead=.
|
77
|
-
def lbmonitor_servicegroup_binding(payload)
|
78
|
-
warn '[DEPRECATION] "lbmonitor_servicegroup_binding" is deprecated. Please use "Netscaler::Lb::Monitor.bind" instead.'
|
47
|
+
def disable_server(payload) # :arg: service_group, servername, port
|
79
48
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
80
|
-
payload
|
81
|
-
|
82
|
-
|
49
|
+
validate_payload(payload, [:serviceGroupName, :serverName, :port])
|
50
|
+
return @netscaler.adapter.post('config/', {"params" =>
|
51
|
+
{"action" => "disable"},
|
52
|
+
"servicegroup" =>
|
53
|
+
{"servicegroupname" => payload[:serviceGroupName],
|
54
|
+
"serverName" => payload[:serverName],
|
55
|
+
"port" => payload[:port] }})
|
83
56
|
end
|
84
57
|
|
85
|
-
|
86
|
-
|
87
|
-
# DEPRECATED: Please use Netscaler::Lb::Monitor.unbind instead=.
|
88
|
-
def lbmonitor_servicegroup_unbinding(payload)
|
89
|
-
warn '[DEPRECATION] "lbmonitor_servicegroup_unbinding" is deprecated. Please use "Netscaler::Lb::Monitor.unbind" instead.'
|
90
|
-
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
91
|
-
payload = Netscaler.hash_hack(payload)
|
92
|
-
validate_payload(payload, [:serviceGroupName, :monitorName])
|
93
|
-
return @netscaler.adapter.post_no_body("config/lbmonitor_servicegroup_binding/#{payload[:monitorName]}?action=unbind", {'params' => {'action' => 'unbind'}, 'lbmonitor_servicegroup_binding' => payload})
|
58
|
+
def show_bindings(payload) # :args: servicegroupname
|
59
|
+
return @netscaler.adapter.get("config/servicegroup_servicegroupmember_binding/#{payload}")
|
94
60
|
end
|
95
61
|
|
96
62
|
def bind(payload) # :args: :serviceGroupName => 'foo', :port => '80', :serverName => 'bar'
|
97
63
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
98
|
-
payload = Netscaler.hash_hack(payload)
|
99
64
|
validate_payload(payload, [:serviceGroupName, :port, :serverName])
|
100
65
|
return @netscaler.adapter.post_no_body("config/servicegroup_servicegroupmember_binding/#{payload['serviceGroupName']}?action=bind", {'params' => {'action' => 'bind'}, 'servicegroup_servicegroupmember_binding' => payload})
|
101
66
|
end
|
102
67
|
|
103
|
-
|
104
|
-
##
|
105
|
-
# :category: Deprecated Methods
|
106
|
-
# DEPRECATED: Please use #bind instead=.
|
107
|
-
def bind_servicegroup_servicegroupmember(payload)
|
108
|
-
warn '[DEPRECATION] "bind_servicegroup_servicegroupmember" is deprecated. Please use #bind instead.'
|
109
|
-
self.bind(payload)
|
110
|
-
end
|
111
|
-
|
112
68
|
def unbind(payload) # :args: :serviceGroupName => 'foo', :port => '80', :serverName => 'bar'
|
113
69
|
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
114
|
-
payload = Netscaler.hash_hack(payload)
|
115
70
|
validate_payload(payload, [:serviceGroupName, :port, :serverName])
|
116
71
|
return @netscaler.adapter.post_no_body("config/servicegroup_servicegroupmember_binding/#{payload['serviceGroupName']}?action=unbind", {'params' => {'action' => 'unbind'}, 'servicegroup_servicegroupmember_binding' => payload})
|
117
72
|
end
|
118
73
|
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
self.unbind(payload)
|
74
|
+
private
|
75
|
+
def toggle(toggle_action, payload)
|
76
|
+
raise ArgumentError, 'payload cannot be null' if payload.nil?
|
77
|
+
validate_payload(payload, [:serviceGroupName])
|
78
|
+
return @netscaler.adapter.post('config/', {"params" => {"action" => toggle_action}, "servicegroup" => {"servicegroupname" => payload[:service_group]}})
|
125
79
|
end
|
126
80
|
|
127
81
|
end
|
data/netscaler.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: netscaler 0.
|
5
|
+
# stub: netscaler 0.4.0 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "netscaler"
|
9
|
-
s.version = "0.
|
9
|
+
s.version = "0.4.0"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Jeremy Custenborder", "David Andrew", "Jarrett Irons"]
|
14
|
-
s.date = "2014-
|
14
|
+
s.date = "2014-12-20"
|
15
15
|
s.description = "Netscaler api working against the Citrix Nitro api. Currently supports Nitro 9.3. Hope to add support for 10.X. Currently has support for som basics such as adding servers/services/servicegroups."
|
16
16
|
s.email = ["jeremy@scarcemedia.com", "david.andrew@webtrends.com", "jarrett.irons@gmail.com"]
|
17
17
|
s.extra_rdoc_files = [
|
@@ -56,7 +56,7 @@ Gem::Specification.new do |s|
|
|
56
56
|
]
|
57
57
|
s.homepage = "http://github.com/GravityLabs/netscaler"
|
58
58
|
s.licenses = ["MIT"]
|
59
|
-
s.rubygems_version = "2.
|
59
|
+
s.rubygems_version = "2.4.5"
|
60
60
|
s.summary = "Netscaler api working against the Citrix Nitro api."
|
61
61
|
|
62
62
|
if s.respond_to? :specification_version then
|
data/spec/server_spec.rb
CHANGED
@@ -8,20 +8,12 @@ describe Netscaler::Server do
|
|
8
8
|
|
9
9
|
context 'when adding a new server' do
|
10
10
|
it 'a name is required' do
|
11
|
-
expect {
|
12
|
-
connection.servers.add_server({'ipaddress'=>'123.123.123.123'})
|
13
|
-
}.should raise_error(ArgumentError, /name/)
|
14
|
-
|
15
11
|
expect {
|
16
12
|
connection.servers.add({'ipaddress'=>'123.123.123.123'})
|
17
13
|
}.should raise_error(ArgumentError, /name/)
|
18
14
|
end
|
19
15
|
|
20
16
|
it 'an ipaddress is required' do
|
21
|
-
expect {
|
22
|
-
connection.servers.add_server({'name'=>'hostname'})
|
23
|
-
}.should raise_error(ArgumentError, /ipaddress/)
|
24
|
-
|
25
17
|
expect {
|
26
18
|
connection.servers.add({'name'=>'hostname'})
|
27
19
|
}.should raise_error(ArgumentError, /ipaddress/)
|
@@ -46,4 +38,51 @@ describe Netscaler::Server do
|
|
46
38
|
end
|
47
39
|
end
|
48
40
|
|
41
|
+
%w(enable disable).each do |toggle_action|
|
42
|
+
context "when running server.#{toggle_action}" do
|
43
|
+
|
44
|
+
it ':server is required' do
|
45
|
+
expect {
|
46
|
+
connection.servers.send(toggle_action, nil)
|
47
|
+
}.should raise_error(ArgumentError, /null/)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'returns a hash if all necesssary args are supplied' do
|
51
|
+
result = connection.servers.send(toggle_action, :server => 'foo')
|
52
|
+
result.should be_kind_of(Hash)
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when showing bindings for a server' do
|
59
|
+
it ':server is required' do
|
60
|
+
expect {
|
61
|
+
connection.servers.show_bindings({})
|
62
|
+
}.should raise_error(ArgumentError, /server/)
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'returns a Hash object if all necessary args are supplied' do
|
66
|
+
result = connection.servers.show_bindings :server => 'foo'
|
67
|
+
result.should be_kind_of(Hash)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context 'when showing a server or servers' do
|
72
|
+
it ':server is required if arguments are specified' do
|
73
|
+
expect {
|
74
|
+
connection.servers.show_bindings({something: 'notcool'})
|
75
|
+
}.should raise_error(ArgumentError, /server/)
|
76
|
+
end
|
77
|
+
|
78
|
+
it 'returns a Hash object if server arg supplied' do
|
79
|
+
result = connection.servers.show_bindings :server => 'foo'
|
80
|
+
result.should be_kind_of(Hash)
|
81
|
+
end
|
82
|
+
|
83
|
+
it 'returns a Hash object if no args supplied since it then returns all servers' do
|
84
|
+
result = connection.servers.show_bindings :server => 'foo'
|
85
|
+
result.should be_kind_of(Hash)
|
86
|
+
end
|
87
|
+
end
|
49
88
|
end
|
data/spec/servicegroup_spec.rb
CHANGED
@@ -5,74 +5,60 @@ require 'netscaler/mock_adapter'
|
|
5
5
|
describe Netscaler::ServiceGroup do
|
6
6
|
|
7
7
|
connection = Netscaler::Connection.new 'hostname' => 'foo', 'password' => 'bar', 'username' => 'bar'
|
8
|
+
connection.adapter = Netscaler::MockAdapter.new :body => '{ "errorcode": 0, "message": "Done" }'
|
8
9
|
|
9
10
|
context 'when adding a new servicegroup' do
|
10
11
|
|
11
12
|
it 'a name is required' do
|
12
|
-
#netscaler.adapter = Netscaler::MockAdapter.new :status_code=>400, :body => '{ "errorcode": 1095, "message": "Required argument missing [name]", "severity": "ERROR" }',
|
13
|
-
|
14
13
|
expect {
|
15
|
-
connection.servicegroups.
|
14
|
+
connection.servicegroups.add({ 'serviceType' => 'tcp' })
|
16
15
|
}.should raise_error(ArgumentError, /serviceGroupName/)
|
17
16
|
end
|
18
17
|
|
19
18
|
it 'a service type is required' do
|
20
19
|
expect {
|
21
|
-
connection.servicegroups.
|
20
|
+
connection.servicegroups.add({ 'serviceGroupName' => 'test-serviceGroup' })
|
22
21
|
}.should raise_error(ArgumentError, /serviceType/)
|
23
22
|
end
|
24
23
|
|
25
24
|
end
|
26
25
|
|
27
|
-
context 'when
|
26
|
+
context 'when removing a servicegroup' do
|
28
27
|
|
29
|
-
it '
|
28
|
+
it 'has to require a serviceGroupName' do
|
30
29
|
expect {
|
31
|
-
connection.servicegroups.
|
30
|
+
connection.servicegroups.remove()
|
31
|
+
}.should raise_error(ArgumentError, /wrong number of arguments/)
|
32
|
+
expect {
|
33
|
+
connection.servicegroups.remove(:foo => 'bar')
|
32
34
|
}.should raise_error(ArgumentError, /serviceGroupName/)
|
33
35
|
end
|
34
36
|
|
35
|
-
it 'a
|
36
|
-
|
37
|
-
|
38
|
-
}.should raise_error(ArgumentError, /monitorName/)
|
37
|
+
it 'returns a Hash object if all necessary args are supplied' do
|
38
|
+
result = connection.servicegroups.show_bindings :serviceGroupName => 'foo'
|
39
|
+
result.should be_kind_of(Hash)
|
39
40
|
end
|
40
41
|
|
41
42
|
end
|
42
43
|
|
43
|
-
context 'when unbinding a lbmonitor from servicegroup' do
|
44
44
|
|
45
|
-
it 'a Service group name is required' do
|
46
|
-
expect {
|
47
|
-
connection.servicegroups.lbmonitor_servicegroup_binding({ 'monitorName' => 'TCP' })
|
48
|
-
}.should raise_error(ArgumentError, /serviceGroupName/)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'a lbmonitor name is required' do
|
52
|
-
expect {
|
53
|
-
connection.servicegroups.lbmonitor_servicegroup_binding({ 'serviceGroupName' => 'test-serviceGroup' })
|
54
|
-
}.should raise_error(ArgumentError, /monitorName/)
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
45
|
context 'when binding a new server to servicegroup' do
|
60
46
|
|
61
47
|
it 'a Service group name is required' do
|
62
48
|
expect {
|
63
|
-
connection.servicegroups.
|
49
|
+
connection.servicegroups.bind({ 'port'=> '8080', 'ip' => '199.199.199.199' })
|
64
50
|
}.should raise_error(ArgumentError, /serviceGroupName/)
|
65
51
|
end
|
66
52
|
|
67
53
|
it 'a server entity is required' do
|
68
54
|
expect {
|
69
|
-
connection.servicegroups.
|
55
|
+
connection.servicegroups.bind({ 'serviceGroupName' => 'test-serviceGroup', 'port' => '8080' })
|
70
56
|
}.should raise_error(ArgumentError, /serverName/)
|
71
57
|
end
|
72
58
|
|
73
59
|
it 'a port is required' do
|
74
60
|
expect {
|
75
|
-
connection.servicegroups.
|
61
|
+
connection.servicegroups.bind({ 'serviceGroupName' => 'test-serviceGroup', 'ip' => '199.199.199.199' })
|
76
62
|
}.should raise_error(ArgumentError, /port/)
|
77
63
|
end
|
78
64
|
|
@@ -82,22 +68,68 @@ describe Netscaler::ServiceGroup do
|
|
82
68
|
|
83
69
|
it 'a Service group name is required' do
|
84
70
|
expect {
|
85
|
-
connection.servicegroups.
|
71
|
+
connection.servicegroups.unbind({ 'port' => '8080', 'ip' => '199.199.199.199' })
|
86
72
|
}.should raise_error(ArgumentError, /serviceGroupName/)
|
87
73
|
end
|
88
74
|
|
89
75
|
it 'a server entity is required' do
|
90
76
|
expect {
|
91
|
-
connection.servicegroups.
|
77
|
+
connection.servicegroups.unbind({ 'serviceGroupName' => 'test-serviceGroup', 'port' => '8080' })
|
92
78
|
}.should raise_error(ArgumentError, /serverName/)
|
93
79
|
end
|
94
80
|
|
95
81
|
it 'a port is required' do
|
96
82
|
expect {
|
97
|
-
connection.servicegroups.
|
83
|
+
connection.servicegroups.unbind({ 'serviceGroupName' => 'test-serviceGroup', 'ip' => '199.199.199.199' })
|
98
84
|
}.should raise_error(ArgumentError, /port/)
|
99
85
|
end
|
100
86
|
|
101
87
|
end
|
102
|
-
|
88
|
+
|
89
|
+
%w(enable disable).each do |toggle_action|
|
90
|
+
context "when running servicegroup.#{toggle_action}" do
|
91
|
+
|
92
|
+
it ':serviceGroupName is required' do
|
93
|
+
expect {
|
94
|
+
connection.servicegroups.send(toggle_action, {})
|
95
|
+
}.should raise_error(ArgumentError, /serviceGroupName/)
|
96
|
+
end
|
97
|
+
|
98
|
+
it 'returns a hash if all necesssary args are supplied' do
|
99
|
+
result = connection.servicegroups.send(toggle_action, :serviceGroupName => 'foo')
|
100
|
+
result.should be_kind_of(Hash)
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when #{toggle_action} a server in servicegroup" do
|
106
|
+
|
107
|
+
it ':serviceGroupName is required' do
|
108
|
+
expect {
|
109
|
+
connection.servicegroups.send("#{toggle_action}_server", {:serverName => 'foo', :port => '80'})
|
110
|
+
}.should raise_error(ArgumentError, /serviceGroupName/)
|
111
|
+
end
|
112
|
+
|
113
|
+
it ':serviceGroupName is required' do
|
114
|
+
expect {
|
115
|
+
connection.servicegroups.send("#{toggle_action}_server", {:serviceGroupName => 'foo', :port => '80'})
|
116
|
+
}.should raise_error(ArgumentError, /serverName/)
|
117
|
+
end
|
118
|
+
|
119
|
+
it ':serviceGroupName is required' do
|
120
|
+
expect {
|
121
|
+
connection.servicegroups.send("#{toggle_action}_server", {:serviceGroupName => 'bar', :serverName => 'foo'})
|
122
|
+
}.should raise_error(ArgumentError, /port/)
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'should return a Hash if all args are returned' do
|
126
|
+
result = connection.servicegroups.send("#{toggle_action}_server", {:serviceGroupName => 'bar', :serverName => 'foo', :port => '80'})
|
127
|
+
result.should be_kind_of(Hash)
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
end
|
134
|
+
|
103
135
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: netscaler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Custenborder
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-12-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rest-client
|
@@ -191,7 +191,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
191
191
|
version: '0'
|
192
192
|
requirements: []
|
193
193
|
rubyforge_project:
|
194
|
-
rubygems_version: 2.
|
194
|
+
rubygems_version: 2.4.5
|
195
195
|
signing_key:
|
196
196
|
specification_version: 4
|
197
197
|
summary: Netscaler api working against the Citrix Nitro api.
|