environment-manager 0.1.2 → 0.2.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/environment_manager/api.rb +55 -22
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1a7616fe50db69b1126c7554583c5694e9476d58
4
- data.tar.gz: 6b97e6b74244a35df981507ba7c4c1585aff0a28
3
+ metadata.gz: 5c891db666b68e9496cba114013f475ed907f943
4
+ data.tar.gz: a4c92f862e061ef98181cbb949863d9f05146bca
5
5
  SHA512:
6
- metadata.gz: dd31fe45e0a7a865a350626a3df69b68c8c7472108968f6486e7160561e29834de8381bac2945bc8fd771f14927152ba0f89394e498947a46f8d3ca0d2b41dcb
7
- data.tar.gz: 3ff450c7d58fb864370b6f4d773bf8de6c333791ca43df11bbbc51590061ba2df9b3a1382af15988a4eb3b93b3a20d417815f5a7e9468d052c9aa6ce03b147da
6
+ metadata.gz: d2f1fa9c6aeec590f5a83e48b0d492eb20aec9f410316bcf75b59ab8c7e56a42c26e1f00c36764b4f91c5811284d17191a2f1d1b4c98ee36ba25c9b12de94b85
7
+ data.tar.gz: 76a9a591be2bb04a88d051bb2ed3972b25ee3d0f0f95e6f9b5382974223577e7fe6302c6a09f747c9292ff2d9692403ff4b32aab7c23f0de30d211a1192dca4a
@@ -13,6 +13,8 @@ module EnvironmentManager
13
13
  @user = user
14
14
  @password = password
15
15
  @retries = retries
16
+ @token = nil
17
+
16
18
  # Sanitise input
17
19
  if server.empty? or user.empty? or password.empty?
18
20
  raise(IndexError, "API(server: SERVERNAME, user: USERNAME, password: PASSWORD, [retries: N])")
@@ -43,6 +45,7 @@ module EnvironmentManager
43
45
  sleep 2
44
46
  end
45
47
  retries += 1
48
+ sleep 2
46
49
  end
47
50
  if not token.to_s.strip.empty?
48
51
  token_bearer = "Bearer #{token}"
@@ -52,6 +55,19 @@ module EnvironmentManager
52
55
  end
53
56
  end
54
57
 
58
+ private
59
+ def get_token
60
+ if @token.nil?
61
+ @token = api_auth()
62
+ end
63
+ return @token
64
+ end
65
+
66
+ private
67
+ def renew_token
68
+ @token = api_auth()
69
+ end
70
+
55
71
  private
56
72
  def query(query_endpoint, data=nil, query_type="get", headers={}, retries=5, backoff=2)
57
73
  # Sanitise input
@@ -66,7 +82,7 @@ module EnvironmentManager
66
82
  retry_num = 0
67
83
  while retry_num < retries
68
84
  retry_num += 1
69
- token = api_auth()
85
+ token = get_token()
70
86
  base_url = "https://#{@server}"
71
87
  request_url = "#{base_url}#{query_endpoint}"
72
88
  query_headers = {"Accept" => "application/json", "Content-Type" => "application/json", "Authorization" => token}
@@ -74,25 +90,32 @@ module EnvironmentManager
74
90
  query_headers.merge!(header)
75
91
  end
76
92
  # Add any extra headers
77
- if query_type.downcase == "get"
78
- request = RestClient::Request.execute(url: request_url, method: :get, headers: query_headers, verify_ssl: false, open_timeout: 10)
79
- elsif query_type.downcase == "post"
80
- request = RestClient::Request.execute(url: request_url, method: :post, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
81
- elsif query_type.downcase == "put"
82
- request = RestClient::Request.execute(url: request_url, method: :put, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
83
- elsif query_type.downcase == "patch"
84
- request = RestClient::Request.execute(url: request_url, method: :patch, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
85
- elsif query_type.downcase == "delete"
86
- request = RestClient::Request.execute(url: request_url, method: :delete, headers: query_headers, verify_ssl: false, open_timeout: 10)
87
- else
88
- raise("Cannot process query type #{query_type}")
89
- end
90
- if request.code.to_s[0].to_i == 2
91
- return JSON.parse(request.body)
92
- elsif request.code.to_s[0].to_i == 2 or request.code.to_s[0].to_i == 5
93
- raise(request)
94
- else
95
- sleep backoff
93
+ begin
94
+ if query_type.downcase == "get"
95
+ request = RestClient::Request.execute(url: request_url, method: :get, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
96
+ elsif query_type.downcase == "post"
97
+ request = RestClient::Request.execute(url: request_url, method: :post, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
98
+ elsif query_type.downcase == "put"
99
+ request = RestClient::Request.execute(url: request_url, method: :put, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
100
+ elsif query_type.downcase == "patch"
101
+ request = RestClient::Request.execute(url: request_url, method: :patch, payload: data, headers: query_headers, verify_ssl: false, open_timeout: 10)
102
+ elsif query_type.downcase == "delete"
103
+ request = RestClient::Request.execute(url: request_url, method: :delete, headers: query_headers, verify_ssl: false, open_timeout: 10)
104
+ else
105
+ raise("Cannot process query type #{query_type}")
106
+ end
107
+ status_type = request.code.to_s[0].to_i
108
+ if status_type == 2 or status_type == 3
109
+ return JSON.parse(request.body)
110
+ elsif request.code == 401
111
+ renew_token()
112
+ elsif status_type == 4
113
+ raise(request)
114
+ else
115
+ sleep backoff
116
+ end
117
+ rescue
118
+ renew_token()
96
119
  end
97
120
  end
98
121
  raise("Max number of retries (#{retry_num}) querying Environment Manager, last http code is #{request.code}, will abort for now")
@@ -680,9 +703,19 @@ module EnvironmentManager
680
703
 
681
704
  ## Instance
682
705
  public
683
- def get_instances()
706
+ def get_instances(environment=nil, cluster=nil)
684
707
  # Get all instances matching the given criteria
685
708
  request_endpoint = "/api/v1/instances"
709
+ queries = Array.new()
710
+ if environment != nil
711
+ queries.push("environment=#{environment}")
712
+ end
713
+ if cluster != nil
714
+ queries.push("cluster=#{cluster}")
715
+ end
716
+ if queries.size > 0
717
+ request_endpoint << '?%s' % queries.join("&")
718
+ end
686
719
  return query(request_endpoint, query_type: "GET")
687
720
  end
688
721
 
@@ -723,7 +756,7 @@ module EnvironmentManager
723
756
  if id.nil?
724
757
  raise("Load Balancer ID has not been specified")
725
758
  end
726
- request_endpoint = "/api/v1/config/load-balancer/#{id}"
759
+ request_endpoint = "/api/v1/load-balancer/#{id}"
727
760
  return query(request_endpoint, query_type: "GET")
728
761
  end
729
762
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: environment-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Marc Cluet
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-16 00:00:00.000000000 Z
11
+ date: 2017-04-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -62,7 +62,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
62
62
  version: '0'
63
63
  requirements: []
64
64
  rubyforge_project:
65
- rubygems_version: 2.6.10
65
+ rubygems_version: 2.6.11
66
66
  signing_key:
67
67
  specification_version: 4
68
68
  summary: Ruby client for Environment Manager