netscaler 0.3.2 → 0.4.0
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.
- 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.
|