faastruby 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6923262dc376ee5d45aecf773ab79effc56ac3c41be86f32e543a088d4482301
4
- data.tar.gz: f5fdbb23a2b0b40392d520ef46adb0849949d622145f2fc0e4f05b822acb24d5
3
+ metadata.gz: 7fd64fdf16d7eaccea051a5d101f1376c7276285b8ae68f31320dc9dafe4d348
4
+ data.tar.gz: 3277f48a6095471b033ce8b730532255c092935437b30d72a9a851ccd1a0be21
5
5
  SHA512:
6
- metadata.gz: 32b98888ae961eade9329627bafb2ddfd834966b6a0676316735a2619d06faa5942c1c5016c0e395315d70e6ca211ed7a0d481b4b009805f37ec5f857bf3495f
7
- data.tar.gz: 8fbda1fd86bb74e58fb34f7a22789b28f78061174fbb5ff769dd3a64c3a15fc20fac89d48d7c5d707b14add1116c9634624be7688f3e605ec2c0594acb37beae
6
+ metadata.gz: 4342ed171a03f6dd3ad3bb1d9ee6b0f0d5cbb81de042a64e2e6fa884bf52c6f7ebf0146b4d25d5c8338b88ebf2126b15774c92aa904a5c677a8bcb8a3cf6689b
7
+ data.tar.gz: 6a4ed4b25c093aac6f968c82932a1194ef0f6d2d172b99b7cc96a1072d77bd29f3ee1351d5439948ea362bcfcda15ee8c4d5d961c78f9c1c14a6e08b861b31ed
data/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.6 - Nov 20 2018
4
+ - Change Ruby minimum version to 2.5.0
5
+ - Disable timeout on HTTP requests.
6
+ - Handle CTRL+C interruptions gracefully
7
+ - Add `--region` to help
8
+
3
9
  ## 0.2.5 - Nov 18 2018
4
10
  - Support for multiple regions with `faastruby --region [REGION] ...`
5
11
 
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- faastruby (0.2.4)
4
+ faastruby (0.2.6)
5
5
  colorize (~> 0.8)
6
6
  oj (~> 3.6)
7
7
  rest-client (~> 2.0)
@@ -29,7 +29,7 @@ GEM
29
29
  mime-types-data (3.2018.0812)
30
30
  necromancer (0.4.0)
31
31
  netrc (0.11.0)
32
- oj (3.7.0)
32
+ oj (3.7.1)
33
33
  pastel (0.7.2)
34
34
  equatable (~> 0.5.0)
35
35
  tty-color (~> 0.4.0)
data/exe/faastruby CHANGED
@@ -1,6 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'faastruby'
3
3
  require 'faastruby/cli'
4
+ trap "SIGINT" do
5
+ puts "Exiting"
6
+ exit 130
7
+ end
4
8
  if ARGV[0] == '--region'
5
9
  ARGV.shift
6
10
  ENV['FAASTRUBY_REGION'] = ARGV.shift
data/faastruby.gemspec CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.version = FaaStRuby::VERSION
8
8
  spec.authors = ["Paulo Arruda"]
9
9
  spec.email = ["parrudaj@gmail.com"]
10
- spec.required_ruby_version = '>= 2.4.0'
10
+ spec.required_ruby_version = '>= 2.5.0'
11
11
  spec.summary = %q{FaaStRuby CLI - Manage workspaces and functions hosted at faastruby.io.}
12
12
  spec.homepage = "https://faastruby.io"
13
13
  spec.license = "MIT"
data/lib/faastruby/api.rb CHANGED
@@ -9,6 +9,7 @@ module FaaStRuby
9
9
  @credentials = {'API-KEY' => FaaStRuby.api_key, 'API-SECRET' => FaaStRuby.api_secret}
10
10
  @headers = {content_type: 'application/json', accept: 'application/json'}.merge(@credentials)
11
11
  @struct = Struct.new(:response, :body, :errors, :code)
12
+ @timeout = nil # disable request timeouts
12
13
  end
13
14
 
14
15
  def create_workspace(workspace_name:, email: nil, provider: nil)
@@ -16,12 +17,26 @@ module FaaStRuby
16
17
  payload = {'name' => workspace_name}
17
18
  payload['email'] = email if email
18
19
  payload['provider'] = provider if provider
19
- parse RestClient.post(url, Oj.dump(payload), @headers){|response, request, result| response }
20
+ parse RestClient::Request.execute(method: :post, timeout: @timeout, url: url, payload: Oj.dump(payload), headers: @headers)
21
+ rescue RestClient::ExceptionWithResponse => err
22
+ case err.http_code
23
+ when 301, 302, 307
24
+ err.response.follow_redirection
25
+ else
26
+ parse err.response
27
+ end
20
28
  end
21
29
 
22
30
  def destroy_workspace(workspace_name)
23
31
  url = "#{@api_url}/workspaces/#{workspace_name}"
24
- parse RestClient.delete(url, @headers){|response, request, result| response }
32
+ parse RestClient::Request.execute(method: :delete, timeout: @timeout, url: url, headers: @headers)
33
+ rescue RestClient::ExceptionWithResponse => err
34
+ case err.http_code
35
+ when 301, 302, 307
36
+ err.response.follow_redirection
37
+ else
38
+ parse err.response
39
+ end
25
40
  end
26
41
 
27
42
  # def update_workspace(workspace_name, payload)
@@ -31,24 +46,52 @@ module FaaStRuby
31
46
 
32
47
  def get_workspace_info(workspace_name)
33
48
  url = "#{@api_url}/workspaces/#{workspace_name}"
34
- parse RestClient.get(url, @headers){|response, request, result| response }
49
+ parse RestClient::Request.execute(method: :get, timeout: @timeout, url: url, headers: @headers)
50
+ rescue RestClient::ExceptionWithResponse => err
51
+ case err.http_code
52
+ when 301, 302, 307
53
+ err.response.follow_redirection
54
+ else
55
+ parse err.response
56
+ end
35
57
  end
36
58
 
37
59
  def refresh_credentials(workspace_name)
38
60
  url = "#{@api_url}/workspaces/#{workspace_name}/credentials"
39
61
  payload = {}
40
- parse RestClient.put(url, payload, @credentials){|response, request, result| response }
62
+ parse RestClient::Request.execute(method: :put, timeout: @timeout, url: url, payload: payload, headers: @credentials)
63
+ rescue RestClient::ExceptionWithResponse => err
64
+ case err.http_code
65
+ when 301, 302, 307
66
+ err.response.follow_redirection
67
+ else
68
+ parse err.response
69
+ end
41
70
  end
42
71
 
43
72
  def deploy(workspace_name:, package:)
44
73
  url = "#{@api_url}/workspaces/#{workspace_name}/deploy"
45
74
  payload = {package: File.new(package, 'rb')}
46
- parse RestClient.post(url, payload, @credentials){|response, request, result| response }
75
+ parse RestClient::Request.execute(method: :post, timeout: @timeout, url: url, payload: payload, headers: @credentials)
76
+ rescue RestClient::ExceptionWithResponse => err
77
+ case err.http_code
78
+ when 301, 302, 307
79
+ err.response.follow_redirection
80
+ else
81
+ parse err.response
82
+ end
47
83
  end
48
84
 
49
85
  def delete_from_workspace(function_name:, workspace_name:)
50
86
  url = "#{@api_url}/workspaces/#{workspace_name}/functions/#{function_name}"
51
- parse RestClient.delete(url, @headers){|response, request, result| response }
87
+ parse RestClient::Request.execute(method: :delete, timeout: @timeout, url: url, headers: @headers)
88
+ rescue RestClient::ExceptionWithResponse => err
89
+ case err.http_code
90
+ when 301, 302, 307
91
+ err.response.follow_redirection
92
+ else
93
+ parse err.response
94
+ end
52
95
  end
53
96
 
54
97
  # def list_workspace_functions(workspace_name)
@@ -60,16 +103,31 @@ module FaaStRuby
60
103
  url = "#{FaaStRuby.api_host}/#{workspace_name}/#{function_name}#{query}"
61
104
  headers['Benchmark'] = true if time
62
105
  if method == 'get'
63
- RestClient.public_send(method, url, headers){|response, request, result| response }
106
+ RestClient::Request.execute(method: :get, timeout: @timeout, url: url, headers: headers)
64
107
  else
65
- RestClient.public_send(method, url, payload, headers){|response, request, result| response }
108
+ RestClient::Request.execute(method: method.to_sym, timeout: @timeout, url: url, payload: payload, headers: headers)
109
+ end
110
+ rescue RestClient::ExceptionWithResponse => err
111
+ case err.http_code
112
+ when 301, 302, 307
113
+ err.response.follow_redirection
114
+ else
115
+ return err.response
66
116
  end
67
117
  end
68
118
 
69
119
  def update_function_context(function_name:, workspace_name:, payload:)
70
120
  # payload is a string
71
121
  url = "#{@api_url}/workspaces/#{workspace_name}/functions/#{function_name}"
72
- parse RestClient.patch(url, Oj.dump(payload), @headers){|response, request, result| response }
122
+ parse RestClient::Request.execute(method: :patch, timeout: @timeout, url: url, payload: Oj.dump(payload), headers: @headers)
123
+ # parse RestClient.patch(url, Oj.dump(payload), @headers){|response, request, result| response }
124
+ rescue RestClient::ExceptionWithResponse => err
125
+ case err.http_code
126
+ when 301, 302, 307
127
+ err.response.follow_redirection
128
+ else
129
+ parse err.response
130
+ end
73
131
  end
74
132
 
75
133
  def parse(response)
@@ -8,8 +8,11 @@ module FaaStRuby
8
8
  def run
9
9
  puts "FaaStRuby CLI - Manage workspaces and functions hosted at faastruby.io"
10
10
  puts
11
+ puts "Usage: faastruby [--region REGION, -h, -v] COMMAND ARGS"
12
+ puts
11
13
  puts 'help, -h, --help # Displays this help'
12
14
  puts '-v # Print version and exit'
15
+ puts '--region tor1|sfo2 # Specify a region'
13
16
  puts
14
17
  workspaces = ["Workspaces:"]
15
18
  functions = ["Functions:"]
@@ -33,4 +36,4 @@ module FaaStRuby
33
36
  end
34
37
  end
35
38
  end
36
- end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module FaaStRuby
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faastruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Paulo Arruda
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-11-19 00:00:00.000000000 Z
11
+ date: 2018-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -221,7 +221,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
221
221
  requirements:
222
222
  - - ">="
223
223
  - !ruby/object:Gem::Version
224
- version: 2.4.0
224
+ version: 2.5.0
225
225
  required_rubygems_version: !ruby/object:Gem::Requirement
226
226
  requirements:
227
227
  - - ">="