faastruby 0.2.5 → 0.2.6

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,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
  - - ">="