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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmJlMDU2YzgzMDQ4OTdmMGFjN2RlNzdiNGVlZDk0MWIxOTg2ZTY1NA==
4
+ MDAxODcxZGY0ZWZmNmRmYzdhYWRmZjkxMTRjMjEwOTcwYjA3NzcyMg==
5
5
  data.tar.gz: !binary |-
6
- NzEyOTdiMDgxODc2MzhmMTVjYmY2ODQyZDg5NDkzOTZiY2Y0ODEwOA==
6
+ YzUxNDE2M2E1MGYyOTdlYWQ2ZTg3YTVkNmI4OTgwY2RkOTNiYmY4Mg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- N2I0ODQyMjA5MzQyNDhjMDBmY2QwODdkMmI5YjQwMTQwYjJiY2E3ODUxYjA4
10
- ZTk4YzYwYzFmNjIzN2MxOWNiNDk5M2E1ZTk3OGNjYTRmNzA4MjE4N2MwYmM4
11
- Y2U2YzQ1OTY3ZDU0YzVmNzA3MGEyNDQwMjI5ZTdhNGU3ODY4Zjc=
9
+ NDFlMDViZGVkZGVhMTk5YjBjODQ2NzY0Y2ZiN2UyMjUwNTVlMzFlZjBhZTYz
10
+ YTM0NzMzNzlmOTdiMzg5ZWI5YjgxYzc1MjVjNWM4MThhZTExYzUxYTc1Y2Nl
11
+ NWVmY2QwY2EyZjAxNmJkZmEzMDMzY2JkMzcxMGM3ZDU3YmQ3NDA=
12
12
  data.tar.gz: !binary |-
13
- YzgzNTU0OTFkNTc2OGZmN2QzOGZkMDFmMmExYTAxZmI3NmU4OWY1YTY2OGIx
14
- OWQ1YTM1NTNjMzIxNzMzMjY0MDg1MTgzOGNmZDFjYTBkMjViMGZlMGE5NDIw
15
- NGRmZmIzYWEyZmRkY2Y3NTg2YTUzMjlmNDUyZjA1MWUxMTNiODM=
13
+ OTY3MGI4MTg2ZWU4ZmFmNDBlYWIyY2JkOTkwZWI5MmMwZmFkMDE3ZjVhMWVh
14
+ Y2NlZjlmMzNkNWQ5Mzk4MGUwOGNkN2FhMmYxMDJlZjI0YTJiYmM0ZmQzNzFm
15
+ ODIwNTRjZjExMjQ1NzFhMTU1MDdkYmZlMTFjNjhmZGZjNDc0ZWI=
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.0
@@ -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
- raise Exception, "ErrorCode #{payload['errorcode']} -> #{payload['message']}"
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
- raise Exception, 'Shit is broke'
57
+ e = FailedRequest.new("Unexpected Content Type Header #{result.header['content-type']}", response)
58
+ raise e
49
59
  end
50
60
  end
51
61
 
@@ -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
- @site[url].post post_data, options
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
- @site[url].post post_data, options do |response, request, result|
31
- return process_result(result, response)
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
- @site[url].get options do |response, request, result|
40
- return process_result(result, response)
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
- @site[url].delete options do |response, request, result|
49
- return process_result(result, response)
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
@@ -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
 
@@ -1,6 +1,7 @@
1
1
  module Netscaler
2
2
  class NetscalerService
3
3
  def validate_payload(payload, required_args)
4
+ payload = Netscaler.hash_hack(payload)
4
5
  raise ArgumentError, 'payload must be a hash.' unless payload.is_a?(Hash)
5
6
  missing_args=[]
6
7
  required_args.each do |arg|
@@ -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
- # :category: Deprecated Methods
32
- # DEPRECATED: Please use #add instead=.
33
- def add_server(server)
34
- warn '[DEPRECATION] "add_server" is deprecated. Please use "#add" instead.'
35
- self.add server
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
@@ -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/", args) if payload.nil?
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
- # :category: Deprecated Methods
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
- # :category: Deprecated Methods
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
- # :category: Deprecated Methods
68
- # DEPRECATED: Please use #show_bindings instead=.
69
- def get_servicegroup_servicegroupmember_bindings(payload)
70
- warn '[DEPRECATION] "get_servicegroup_servicegroupmember_bindings" is deprecated. Please use "#show_bindings" instead.'
71
- self.show_bindings(payload)
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 = Netscaler.hash_hack(payload)
81
- validate_payload(payload, [:serviceGroupName, :monitorName])
82
- return @netscaler.adapter.post_no_body("config/lbmonitor_servicegroup_binding/#{payload[:monitorName]}?action=bind", {'params' => {'action' => 'bind'}, 'lbmonitor_servicegroup_binding' => payload})
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
- # :category: Deprecated Methods
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
- # :category: Deprecated Methods
121
- # DEPRECATED: Please use #unbind instead=.
122
- def unbind_servicegroup_servicegroupmember(payload)
123
- warn '[DEPRECATION] "unbind_servicegroup_servicegroupmember" is deprecated. Please use #unbind instead.'
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.3.2 ruby lib
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.3.2"
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-11-09"
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.2.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
@@ -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.add_servicegroup({ 'serviceType' => 'tcp' })
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.add_servicegroup({ 'serviceGroupName' => 'test-serviceGroup' })
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 binding a new lbmonitor to servicegroup' do
26
+ context 'when removing a servicegroup' do
28
27
 
29
- it 'a Service group name is required' do
28
+ it 'has to require a serviceGroupName' do
30
29
  expect {
31
- connection.servicegroups.lbmonitor_servicegroup_binding({ 'monitorName' => 'TCP' })
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 lbmonitor name is required' do
36
- expect {
37
- connection.servicegroups.lbmonitor_servicegroup_binding({ 'serviceGroupName' => 'test-serviceGroup' })
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.bind_servicegroup_servicegroupmember({ 'port'=> '8080', 'ip' => '199.199.199.199' })
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.bind_servicegroup_servicegroupmember({ 'serviceGroupName' => 'test-serviceGroup', 'port' => '8080' })
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.bind_servicegroup_servicegroupmember({ 'serviceGroupName' => 'test-serviceGroup', 'ip' => '199.199.199.199' })
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.unbind_servicegroup_servicegroupmember({ 'port' => '8080', 'ip' => '199.199.199.199' })
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.unbind_servicegroup_servicegroupmember({ 'serviceGroupName' => 'test-serviceGroup', 'port' => '8080' })
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.unbind_servicegroup_servicegroupmember({ 'serviceGroupName' => 'test-serviceGroup', 'ip' => '199.199.199.199' })
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.3.2
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-11-09 00:00:00.000000000 Z
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.2.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.