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 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.