vagrant-simple_cloud 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. metadata +5 -45
  3. data/.gitignore +0 -11
  4. data/Gemfile +0 -10
  5. data/LICENSE +0 -373
  6. data/Rakefile +0 -22
  7. data/lib/vagrant-simple_cloud/actions/check_state.rb +0 -19
  8. data/lib/vagrant-simple_cloud/actions/create.rb +0 -94
  9. data/lib/vagrant-simple_cloud/actions/destroy.rb +0 -30
  10. data/lib/vagrant-simple_cloud/actions/modify_provision_path.rb +0 -38
  11. data/lib/vagrant-simple_cloud/actions/power_off.rb +0 -35
  12. data/lib/vagrant-simple_cloud/actions/power_on.rb +0 -48
  13. data/lib/vagrant-simple_cloud/actions/rebuild.rb +0 -49
  14. data/lib/vagrant-simple_cloud/actions/reload.rb +0 -45
  15. data/lib/vagrant-simple_cloud/actions/setup_key.rb +0 -58
  16. data/lib/vagrant-simple_cloud/actions/setup_sudo.rb +0 -48
  17. data/lib/vagrant-simple_cloud/actions/setup_user.rb +0 -66
  18. data/lib/vagrant-simple_cloud/actions/shut_down.rb +0 -35
  19. data/lib/vagrant-simple_cloud/actions.rb +0 -164
  20. data/lib/vagrant-simple_cloud/commands/list.rb +0 -93
  21. data/lib/vagrant-simple_cloud/commands/rebuild.rb +0 -29
  22. data/lib/vagrant-simple_cloud/config.rb +0 -69
  23. data/lib/vagrant-simple_cloud/errors.rb +0 -37
  24. data/lib/vagrant-simple_cloud/helpers/client.rb +0 -106
  25. data/lib/vagrant-simple_cloud/helpers/client_service.rb +0 -81
  26. data/lib/vagrant-simple_cloud/helpers/result.rb +0 -40
  27. data/lib/vagrant-simple_cloud/plugin.rb +0 -31
  28. data/lib/vagrant-simple_cloud/provider.rb +0 -102
  29. data/lib/vagrant-simple_cloud/version.rb +0 -5
  30. data/lib/vagrant-simple_cloud.rb +0 -20
  31. data/locales/en.yml +0 -92
  32. data/test/Vagrantfile +0 -14
  33. data/test/scripts/provision.sh +0 -3
  34. data/test/test.sh +0 -10
  35. data/test/test_id_rsa +0 -27
  36. data/test/test_id_rsa.pub +0 -1
  37. data/vagrant-simple_cloud.gemspec +0 -21
@@ -1,38 +0,0 @@
1
- module VagrantPlugins
2
- module SimpleCloud
3
- module Actions
4
- class ModifyProvisionPath
5
- def initialize(app, env)
6
- @app = app
7
- @machine = env[:machine]
8
- @logger =
9
- Log4r::Logger.new('vagrant::simple_cloud::modify_provision_path')
10
- end
11
-
12
- def call(env)
13
- # check if provisioning is enabled
14
- enabled = true
15
- enabled = env[:provision_enabled] if env.has_key?(:provision_enabled)
16
- return @app.call(env) if !enabled
17
-
18
- username = @machine.ssh_info()[:username]
19
-
20
- # change ownership of the provisioning path recursively to the
21
- # ssh user
22
- #
23
- # TODO submit patch to vagrant to set appropriate permissions
24
- # based on ssh username
25
- @machine.config.vm.provisioners.each do |provisioner|
26
- cfg = provisioner.config
27
- path = cfg.upload_path if cfg.respond_to? :upload_path
28
- path = cfg.provisioning_path if cfg.respond_to? :provisioning_path
29
- @machine.communicate.sudo("chown -R #{username} #{path}",
30
- :error_check => false)
31
- end
32
-
33
- @app.call(env)
34
- end
35
- end
36
- end
37
- end
38
- end
@@ -1,35 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
- #TODO: --force
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class PowerOff
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::simple_cloud::power_off')
14
- end
15
-
16
- def call(env)
17
- # submit power off droplet request
18
- result = @client.post("/v2/vps/#{@machine.id}/actions", {
19
- :type => 'power_off'
20
- })
21
-
22
- # wait for request to complete
23
- env[:ui].info I18n.t('vagrant_simple_cloud.info.powering_off')
24
- @client.wait_for_event(env, result['action']['id'])
25
-
26
- # refresh droplet state with provider
27
- Provider.droplet(@machine, :refresh => true)
28
-
29
- @app.call(env)
30
- end
31
- end
32
- end
33
- end
34
- end
35
-
@@ -1,48 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class PowerOn
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::simple_cloud::power_on')
14
- end
15
-
16
- def call(env)
17
- # submit power on droplet request
18
- result = @client.post("/v2/vps/#{@machine.id}/actions", {
19
- :type => 'power_on'
20
- })
21
-
22
- # wait for request to complete
23
- env[:ui].info I18n.t('vagrant_simple_cloud.info.powering_on')
24
- @client.wait_for_event(env, result['action']['id'])
25
-
26
- # refresh droplet state with provider
27
- Provider.droplet(@machine, :refresh => true)
28
-
29
- # wait for ssh to be ready
30
- switch_user = @machine.provider_config.setup?
31
- user = @machine.config.ssh.username
32
- @machine.config.ssh.username = 'root' if switch_user
33
-
34
- retryable(:tries => 120, :sleep => 10) do
35
- next if env[:interrupted]
36
- raise 'not ready' if !@machine.communicate.ready?
37
- end
38
-
39
- @machine.config.ssh.username = user
40
-
41
- @app.call(env)
42
- end
43
- end
44
- end
45
- end
46
- end
47
-
48
-
@@ -1,49 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class Rebuild
7
- include Helpers::Client
8
- include Vagrant::Util::Retryable
9
-
10
- def initialize(app, env)
11
- @app = app
12
- @machine = env[:machine]
13
- @client = client
14
- @logger = Log4r::Logger.new('vagrant::simple_cloud::rebuild')
15
- end
16
-
17
- def call(env)
18
-
19
- # submit rebuild request
20
- result = @client.post("/v2/vps/#{@machine.id}/actions", {
21
- :type => 'rebuild',
22
- :image => @machine.provider_config.image
23
- })
24
-
25
- # wait for request to complete
26
- env[:ui].info I18n.t('vagrant_simple_cloud.info.rebuilding')
27
- @client.wait_for_event(env, result['action']['id'])
28
-
29
- # refresh droplet state with provider
30
- Provider.droplet(@machine, :refresh => true)
31
-
32
- # wait for ssh to be ready
33
- switch_user = @machine.provider_config.setup?
34
- user = @machine.config.ssh.username
35
- @machine.config.ssh.username = 'root' if switch_user
36
-
37
- retryable(:tries => 120, :sleep => 10) do
38
- next if env[:interrupted]
39
- raise 'not ready' if !@machine.communicate.ready?
40
- end
41
-
42
- @machine.config.ssh.username = user
43
-
44
- @app.call(env)
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,45 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class Reload
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::simple_cloud::reload')
14
- end
15
-
16
- def call(env)
17
- # submit reboot droplet request
18
- result = @client.post("/v2/vps/#{@machine.id}/actions", {
19
- :type => 'reboot'
20
- })
21
-
22
- # wait for request to complete
23
- env[:ui].info I18n.t('vagrant_simple_cloud.info.reloading')
24
- @client.wait_for_event(env, result['action']['id'])
25
-
26
- # wait for ssh to be ready
27
- switch_user = @machine.provider_config.setup?
28
- user = @machine.config.ssh.username
29
- @machine.config.ssh.username = 'root' if switch_user
30
-
31
- retryable(:tries => 120, :sleep => 10) do
32
- next if env[:interrupted]
33
- raise 'not ready' if !@machine.communicate.ready?
34
- end
35
-
36
- @machine.config.ssh.username = user
37
-
38
- @app.call(env)
39
- end
40
- end
41
- end
42
- end
43
- end
44
-
45
-
@@ -1,58 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class SetupKey
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::simple_cloud::setup_key')
14
- end
15
-
16
- # TODO check the content of the key to see if it has changed
17
- def call(env)
18
- ssh_key_name = @machine.provider_config.ssh_key_name
19
-
20
- begin
21
- # assigns existing ssh key id to env for use by other commands
22
- env[:ssh_key_id] = @client
23
- .request('/v2/account/keys')
24
- .find_id(:ssh_keys, :name => ssh_key_name)
25
-
26
- env[:ui].info I18n.t('vagrant_simple_cloud.info.using_key', {
27
- :name => ssh_key_name
28
- })
29
- rescue Errors::ResultMatchError
30
- env[:ssh_key_id] = create_ssh_key(ssh_key_name, env)
31
- end
32
-
33
- @app.call(env)
34
- end
35
-
36
- private
37
-
38
- def create_ssh_key(name, env)
39
- # assumes public key exists on the same path as private key with .pub ext
40
- path = @machine.config.ssh.private_key_path
41
- path = path[0] if path.is_a?(Array)
42
- path = File.expand_path(path, @machine.env.root_path)
43
- pub_key = SimpleCloud.public_key(path)
44
-
45
- env[:ui].info I18n.t('vagrant_simple_cloud.info.creating_key', {
46
- :name => name
47
- })
48
-
49
- result = @client.post('/v2/account/keys', {
50
- :name => name,
51
- :public_key => pub_key
52
- })
53
- result['ssh_key']['id']
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,48 +0,0 @@
1
- module VagrantPlugins
2
- module SimpleCloud
3
- module Actions
4
- class SetupSudo
5
- def initialize(app, env)
6
- @app = app
7
- @machine = env[:machine]
8
- @logger = Log4r::Logger.new('vagrant::simple_cloud::setup_sudo')
9
- end
10
-
11
- def call(env)
12
- # check if setup is enabled
13
- return @app.call(env) unless @machine.provider_config.setup?
14
-
15
- # override ssh username to root
16
- user = @machine.config.ssh.username
17
- @machine.config.ssh.username = 'root'
18
-
19
- # check for guest name available in Vagrant 1.2 first
20
- guest_name = @machine.guest.name if @machine.guest.respond_to?(:name)
21
- guest_name ||= @machine.guest.to_s.downcase
22
-
23
- case guest_name
24
- when /debian/
25
- if @machine.provider_config.image =~ /^debian-8/
26
- env[:ui].info I18n.t('vagrant_simple_cloud.info.late_sudo_install_deb8')
27
- @machine.communicate.execute(<<-'BASH')
28
- if [ ! -x /usr/bin/sudo ] ; then apt-get update -y && apt-get install -y sudo ; fi
29
- BASH
30
- end
31
- when /redhat/
32
- env[:ui].info I18n.t('vagrant_simple_cloud.info.modifying_sudo')
33
-
34
- # disable tty requirement for sudo
35
- @machine.communicate.execute(<<-'BASH')
36
- sed -i'.bk' -e 's/\(Defaults\s\+requiretty\)/# \1/' /etc/sudoers
37
- BASH
38
- end
39
-
40
- # reset ssh username
41
- @machine.config.ssh.username = user
42
-
43
- @app.call(env)
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,66 +0,0 @@
1
- module VagrantPlugins
2
- module SimpleCloud
3
- module Actions
4
- class SetupUser
5
- def initialize(app, env)
6
- @app = app
7
- @machine = env[:machine]
8
- @logger = Log4r::Logger.new('vagrant::simple_cloud::setup_user')
9
- end
10
-
11
- def call(env)
12
- # check if setup is enabled
13
- return @app.call(env) unless @machine.provider_config.setup?
14
-
15
- # check if a username has been specified
16
- return @app.call(env) unless @machine.config.ssh.username
17
-
18
- # override ssh username to root temporarily
19
- user = @machine.config.ssh.username
20
- @machine.config.ssh.username = 'root'
21
-
22
- env[:ui].info I18n.t('vagrant_simple_cloud.info.creating_user', {
23
- :user => user
24
- })
25
-
26
- # create user account
27
- @machine.communicate.execute(<<-BASH)
28
- if ! (grep ^#{user}: /etc/passwd); then
29
- useradd -m -s /bin/bash #{user};
30
- fi
31
- BASH
32
-
33
- # grant user sudo access with no password requirement
34
- @machine.communicate.execute(<<-BASH)
35
- if ! (grep #{user} /etc/sudoers); then
36
- echo "#{user} ALL=(ALL:ALL) NOPASSWD: ALL" >> /etc/sudoers;
37
- else
38
- sed -i -e "/#{user}/ s/=.*/=(ALL:ALL) NOPASSWD: ALL/" /etc/sudoers;
39
- fi
40
- BASH
41
-
42
- # create the .ssh directory in the users home
43
- @machine.communicate.execute("su #{user} -c 'mkdir -p ~/.ssh'")
44
-
45
- # add the specified key to the authorized keys file
46
- path = @machine.config.ssh.private_key_path
47
- path = path[0] if path.is_a?(Array)
48
- path = File.expand_path(path, @machine.env.root_path)
49
- pub_key = SimpleCloud.public_key(path)
50
- @machine.communicate.execute(<<-BASH)
51
- if ! grep '#{pub_key}' /home/#{user}/.ssh/authorized_keys; then
52
- echo '#{pub_key}' >> /home/#{user}/.ssh/authorized_keys;
53
- fi
54
-
55
- chown -R #{user} /home/#{user}/.ssh;
56
- BASH
57
-
58
- # reset username
59
- @machine.config.ssh.username = user
60
-
61
- @app.call(env)
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,35 +0,0 @@
1
- require 'vagrant-simple_cloud/helpers/client'
2
-
3
- module VagrantPlugins
4
- module SimpleCloud
5
- module Actions
6
- class ShutDown
7
- include Helpers::Client
8
-
9
- def initialize(app, env)
10
- @app = app
11
- @machine = env[:machine]
12
- @client = client
13
- @logger = Log4r::Logger.new('vagrant::simple_cloud::shut_down')
14
- end
15
-
16
- def call(env)
17
- # submit shutdown droplet request
18
- result = @client.post("/v2/vps/#{@machine.id}/actions", {
19
- :type => 'shutdown'
20
- })
21
-
22
- # wait for request to complete
23
- env[:ui].info I18n.t('vagrant_simple_cloud.info.shutting_down')
24
- @client.wait_for_event(env, result['action']['id'])
25
-
26
- # refresh droplet state with provider
27
- Provider.droplet(@machine, :refresh => true)
28
-
29
- @app.call(env)
30
- end
31
- end
32
- end
33
- end
34
- end
35
-
@@ -1,164 +0,0 @@
1
- require 'vagrant-simple_cloud/actions/check_state'
2
- require 'vagrant-simple_cloud/actions/create'
3
- require 'vagrant-simple_cloud/actions/destroy'
4
- require 'vagrant-simple_cloud/actions/shut_down'
5
- require 'vagrant-simple_cloud/actions/power_off'
6
- require 'vagrant-simple_cloud/actions/power_on'
7
- require 'vagrant-simple_cloud/actions/rebuild'
8
- require 'vagrant-simple_cloud/actions/reload'
9
- require 'vagrant-simple_cloud/actions/setup_user'
10
- require 'vagrant-simple_cloud/actions/setup_sudo'
11
- require 'vagrant-simple_cloud/actions/setup_key'
12
- require 'vagrant-simple_cloud/actions/modify_provision_path'
13
-
14
- module VagrantPlugins
15
- module SimpleCloud
16
- module Actions
17
- include Vagrant::Action::Builtin
18
-
19
- def self.destroy
20
- return Vagrant::Action::Builder.new.tap do |builder|
21
- builder.use ConfigValidate
22
- builder.use Call, CheckState do |env, b|
23
- case env[:machine_state]
24
- when :not_created
25
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
26
- else
27
- b.use Call, DestroyConfirm do |env2, b2|
28
- if env2[:result]
29
- b2.use Destroy
30
- b2.use ProvisionerCleanup if defined?(ProvisionerCleanup)
31
- end
32
- end
33
- end
34
- end
35
- end
36
- end
37
-
38
- def self.ssh
39
- return Vagrant::Action::Builder.new.tap do |builder|
40
- builder.use ConfigValidate
41
- builder.use Call, CheckState do |env, b|
42
- case env[:machine_state]
43
- when :active
44
- b.use SSHExec
45
- when :off
46
- env[:ui].info I18n.t('vagrant_simple_cloud.info.off')
47
- when :not_created
48
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
49
- end
50
- end
51
- end
52
- end
53
-
54
- def self.ssh_run
55
- return Vagrant::Action::Builder.new.tap do |builder|
56
- builder.use ConfigValidate
57
- builder.use Call, CheckState do |env, b|
58
- case env[:machine_state]
59
- when :active
60
- b.use SSHRun
61
- when :off
62
- env[:ui].info I18n.t('vagrant_simple_cloud.info.off')
63
- when :not_created
64
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
65
- end
66
- end
67
- end
68
- end
69
-
70
- def self.provision
71
- return Vagrant::Action::Builder.new.tap do |builder|
72
- builder.use ConfigValidate
73
- builder.use Call, CheckState do |env, b|
74
- case env[:machine_state]
75
- when :active
76
- b.use Provision
77
- b.use ModifyProvisionPath
78
- b.use SyncedFolders
79
- when :off
80
- env[:ui].info I18n.t('vagrant_simple_cloud.info.off')
81
- when :not_created
82
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
83
- end
84
- end
85
- end
86
- end
87
-
88
- def self.up
89
- return Vagrant::Action::Builder.new.tap do |builder|
90
- builder.use ConfigValidate
91
- builder.use Call, CheckState do |env, b|
92
- case env[:machine_state]
93
- when :active
94
- env[:ui].info I18n.t('vagrant_simple_cloud.info.already_active')
95
- when :off
96
- b.use PowerOn
97
- b.use provision
98
- when :not_created
99
- b.use SetupKey
100
- b.use Create
101
- b.use SetupSudo
102
- b.use SetupUser
103
- b.use provision
104
- end
105
- end
106
- end
107
- end
108
-
109
- def self.halt
110
- return Vagrant::Action::Builder.new.tap do |builder|
111
- builder.use ConfigValidate
112
- builder.use Call, CheckState do |env, b|
113
- case env[:machine_state]
114
- when :active
115
- if env[:force_halt]
116
- b.use PowerOff
117
- else
118
- b.use ShutDown
119
- end
120
- when :off
121
- env[:ui].info I18n.t('vagrant_simple_cloud.info.already_off')
122
- when :not_created
123
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
124
- end
125
- end
126
- end
127
- end
128
-
129
- def self.reload
130
- return Vagrant::Action::Builder.new.tap do |builder|
131
- builder.use ConfigValidate
132
- builder.use Call, CheckState do |env, b|
133
- case env[:machine_state]
134
- when :active
135
- b.use Reload
136
- b.use provision
137
- when :off
138
- env[:ui].info I18n.t('vagrant_simple_cloud.info.off')
139
- when :not_created
140
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
141
- end
142
- end
143
- end
144
- end
145
-
146
- def self.rebuild
147
- return Vagrant::Action::Builder.new.tap do |builder|
148
- builder.use ConfigValidate
149
- builder.use Call, CheckState do |env, b|
150
- case env[:machine_state]
151
- when :active, :off
152
- b.use Rebuild
153
- b.use SetupSudo
154
- b.use SetupUser
155
- b.use provision
156
- when :not_created
157
- env[:ui].info I18n.t('vagrant_simple_cloud.info.not_created')
158
- end
159
- end
160
- end
161
- end
162
- end
163
- end
164
- end
@@ -1,93 +0,0 @@
1
- require 'optparse'
2
- require 'vagrant-simple_cloud/helpers/client'
3
-
4
- module VagrantPlugins
5
- module SimpleCloud
6
- module Commands
7
- class List < Vagrant.plugin('2', :command)
8
- def self.synopsis
9
- "list available images and regions from SimpleCloud"
10
- end
11
-
12
- def execute
13
- @token = nil
14
-
15
- @opts = OptionParser.new do |o|
16
- o.banner = 'Usage: vagrant simplecloud-list [options] <images|regions|sizes> <token>'
17
-
18
- o.on("-r", "--[no-]regions", "show the regions when listing images") do |r|
19
- @regions = r
20
- end
21
- o.on("-h", "--help", "Displays help") do
22
- puts o
23
- return 0
24
- end
25
- end
26
-
27
- argv = parse_options(@opts)
28
- @token = argv[1]
29
-
30
- if @token.nil?
31
- usage
32
- return 1
33
- end
34
-
35
- case argv[0]
36
- when "images"
37
- result = query('/v2/images')
38
- images = Array(result["images"])
39
- if @regions
40
- images_table = images.map do |image|
41
- '%-50s %-20s %-20s %-50s' % ["#{image['distribution']} #{image['name']}", image['slug'], image['id'], image['regions'].join(', ')]
42
- end
43
- @env.ui.info I18n.t('vagrant_simple_cloud.info.images_with_regions', images: images_table.sort.join("\r\n"))
44
- else
45
- images_table = images.map do |image|
46
- '%-50s %-30s %-30s' % ["#{image['distribution']} #{image['name']}", image['slug'], image['id']]
47
- end
48
- @env.ui.info I18n.t('vagrant_simple_cloud.info.images', images: images_table.sort.join("\r\n"))
49
- end
50
- when "regions"
51
- result = query('/v2/regions')
52
- regions = Array(result["regions"])
53
- regions_table = regions.map { |region| '%-30s %-12s' % [region['name'], region['slug']] }
54
- @env.ui.info I18n.t('vagrant_simple_cloud.info.regions', regions: regions_table.sort.join("\r\n"))
55
- when "sizes"
56
- result = query('/v2/sizes')
57
- sizes = Array(result["sizes"])
58
- sizes_table = sizes.map { |size| '%-15s %-15s %-12s' % ["#{size['memory']}", size['vcpus'], size['slug']] }
59
- @env.ui.info I18n.t('vagrant_simple_cloud.info.sizes', sizes: sizes_table.sort_by{|s| s['memory']}.join("\r\n"))
60
- else
61
- usage
62
- return 1
63
- end
64
-
65
- 0
66
- rescue Faraday::Error::ConnectionFailed, RuntimeError => e
67
- @env.ui.error I18n.t('vagrant_simple_cloud.info.list_error', message: e.message)
68
- 1
69
- end
70
-
71
- def query(path)
72
- connection = Faraday.new({
73
- :url => "https://api.simplecloud.ru/"
74
- })
75
-
76
- result = connection.get(path, per_page: 100) do |req|
77
- req.headers['Authorization'] = "Bearer #{@token}"
78
- end
79
-
80
- case result.status
81
- when 200 then JSON.parse(result.body)
82
- when 401 then raise("unauthorized access — is the token correct?")
83
- else raise("call returned with status #{result.status}")
84
- end
85
- end
86
-
87
- def usage
88
- @env.ui.info(@opts)
89
- end
90
- end
91
- end
92
- end
93
- end