lita-digitalocean 1.0.0 → 2.0.0
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 +4 -4
- data/lib/lita/handlers/digitalocean.rb +2 -4
- data/lib/lita/handlers/digitalocean/base.rb +1 -4
- data/lib/lita/handlers/digitalocean/domain.rb +2 -0
- data/lib/lita/handlers/digitalocean/domain_record.rb +2 -0
- data/lib/lita/handlers/digitalocean/droplet.rb +2 -0
- data/lib/lita/handlers/digitalocean/image.rb +2 -0
- data/lib/lita/handlers/digitalocean/region.rb +2 -0
- data/lib/lita/handlers/digitalocean/size.rb +2 -0
- data/lib/lita/handlers/digitalocean/ssh_key.rb +2 -0
- data/lita-digitalocean.gemspec +3 -3
- data/spec/lita/handlers/digitalocean/base_spec.rb +3 -15
- data/spec/lita/handlers/digitalocean/domain_record_spec.rb +7 -11
- data/spec/lita/handlers/digitalocean/domain_spec.rb +6 -10
- data/spec/lita/handlers/digitalocean/droplet_spec.rb +17 -21
- data/spec/lita/handlers/digitalocean/image_spec.rb +6 -10
- data/spec/lita/handlers/digitalocean/region_spec.rb +3 -7
- data/spec/lita/handlers/digitalocean/size_spec.rb +3 -7
- data/spec/lita/handlers/digitalocean/ssh_key_spec.rb +7 -11
- data/spec/spec_helper.rb +8 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 897834e48fba0df1715fc70d3b6ae15a5fea915e
|
4
|
+
data.tar.gz: 9c478b4e84b69afd2d306fae75d079ddefea192c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: aac5a9f7feccc0bccce84bc9449686b394386b357d826f46cb6dde08622b75a67068a4c39a4d600d4f280972f3851efc03e21f40a57e0e6d62929f9e5c4ab376
|
7
|
+
data.tar.gz: e2240a4b0be9966fb88f0abe68e408553e48c35d8963b2dcb47756280bfd5bf5b3c869f6303235579e55b4976641725ce3a5f6da57034ead7b4c26b9a433ee5a
|
@@ -1,10 +1,8 @@
|
|
1
1
|
module Lita
|
2
2
|
module Handlers
|
3
3
|
class Digitalocean < Handler
|
4
|
-
|
5
|
-
|
6
|
-
config.api_key = nil
|
7
|
-
end
|
4
|
+
config :client_id, type: String, required: true
|
5
|
+
config :api_key, type: String, required: true
|
8
6
|
end
|
9
7
|
|
10
8
|
Lita.register_handler(Digitalocean)
|
@@ -2,6 +2,8 @@ module Lita
|
|
2
2
|
module Handlers
|
3
3
|
class Digitalocean < Handler
|
4
4
|
class DomainRecord < Base
|
5
|
+
namespace "digitalocean"
|
6
|
+
|
5
7
|
do_route /^do\s+domain\s+records?\s+create\s(?:[^\s]+\s+){2}[^\s]/i, :create, {
|
6
8
|
t("help.domain_records.create_key") => t("help.domain_records.create_value")
|
7
9
|
}, {
|
data/lita-digitalocean.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |spec|
|
2
2
|
spec.name = "lita-digitalocean"
|
3
|
-
spec.version = "
|
3
|
+
spec.version = "2.0.0"
|
4
4
|
spec.authors = ["Jimmy Cuadra"]
|
5
5
|
spec.email = ["jimmy@jimmycuadra.com"]
|
6
6
|
spec.description = %q{A Lita handler for managing DigitalOcean services.}
|
@@ -14,13 +14,13 @@ Gem::Specification.new do |spec|
|
|
14
14
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
15
|
spec.require_paths = ["lib"]
|
16
16
|
|
17
|
-
spec.add_runtime_dependency "lita", ">=
|
17
|
+
spec.add_runtime_dependency "lita", ">= 4.0"
|
18
18
|
spec.add_runtime_dependency "lita-keyword-arguments"
|
19
19
|
spec.add_runtime_dependency "digital_ocean", ">= 1.5.0"
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "rspec", ">= 3.0.0
|
23
|
+
spec.add_development_dependency "rspec", ">= 3.0.0"
|
24
24
|
spec.add_development_dependency "simplecov"
|
25
25
|
spec.add_development_dependency "coveralls"
|
26
26
|
end
|
@@ -1,10 +1,9 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
handler_class = Class.new(Lita::Handlers::Digitalocean::Base) do
|
4
|
-
|
4
|
+
namespace "digitalocean"
|
5
5
|
|
6
|
-
|
7
|
-
end
|
6
|
+
route /do droplets list/, :list, command: true
|
8
7
|
|
9
8
|
def list(response)
|
10
9
|
do_call(response) do |client|
|
@@ -15,19 +14,8 @@ end
|
|
15
14
|
|
16
15
|
describe handler_class, lita_handler: true do
|
17
16
|
describe "#do_call" do
|
18
|
-
it "responds with an error if the DigitalOcean API key is not set" do
|
19
|
-
send_command("do droplets list")
|
20
|
-
expect(replies.last).to include("client_id and api_key must be set")
|
21
|
-
end
|
22
|
-
|
23
|
-
it "responds with an error if the DigitalOcean client ID is not set" do
|
24
|
-
Lita.config.handlers.digitalocean.api_key = "secret"
|
25
|
-
send_command("do droplets list")
|
26
|
-
expect(replies.last).to include("client_id and api_key must be set")
|
27
|
-
end
|
28
|
-
|
29
17
|
it "responds with an error if the DigitalOcean API responds with an error" do
|
30
|
-
|
18
|
+
registry.config.handlers.digitalocean.tap do |config|
|
31
19
|
config.api_key = "secret"
|
32
20
|
config.client_id = "secret"
|
33
21
|
end
|
@@ -2,33 +2,29 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::DomainRecord, lita_handler: true do
|
4
4
|
it do
|
5
|
-
|
5
|
+
is_expected.to route_command(
|
6
6
|
"do domain records create example.com txt 'some value' --name example.com"
|
7
7
|
).to(:create)
|
8
8
|
end
|
9
|
-
it {
|
9
|
+
it { is_expected.to route_command("do domain records delete example.com 123").to(:delete) }
|
10
10
|
it do
|
11
|
-
|
11
|
+
is_expected.to route_command(
|
12
12
|
"do domain records edit example.com 123 txt 'some value' name=example.com"
|
13
13
|
).to(:edit)
|
14
14
|
end
|
15
|
-
it {
|
16
|
-
it {
|
15
|
+
it { is_expected.to route_command("do domain records list example.com").to(:list) }
|
16
|
+
it { is_expected.to route_command("do domain records show example.com 123").to(:show) }
|
17
17
|
|
18
18
|
let(:client) { instance_double("::DigitalOcean::API", domains: client_domains) }
|
19
19
|
let(:client_domains) { instance_double("::DigitalOcean::Resource::Domain") }
|
20
20
|
|
21
21
|
before do
|
22
|
-
|
23
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
22
|
+
registry.config.handlers.digitalocean.tap do |config|
|
24
23
|
config.client_id = "CLIENT_ID"
|
25
24
|
config.api_key = "API_KEY"
|
26
25
|
end
|
27
26
|
|
28
|
-
|
29
|
-
user,
|
30
|
-
:digitalocean_admins
|
31
|
-
).and_return(true)
|
27
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
32
28
|
|
33
29
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
34
30
|
end
|
@@ -1,25 +1,21 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::Domain, lita_handler: true do
|
4
|
-
it {
|
5
|
-
it {
|
6
|
-
it {
|
7
|
-
it {
|
4
|
+
it { is_expected.to route_command("do domains create example.com 10.10.10.10").to(:create) }
|
5
|
+
it { is_expected.to route_command("do domains delete example.com").to(:delete) }
|
6
|
+
it { is_expected.to route_command("do domains list").to(:list) }
|
7
|
+
it { is_expected.to route_command("do domains show example.com").to(:show) }
|
8
8
|
|
9
9
|
let(:client) { instance_double("::DigitalOcean::API", domains: client_domains) }
|
10
10
|
let(:client_domains) { instance_double("::DigitalOcean::Resource::Domain") }
|
11
11
|
|
12
12
|
before do
|
13
|
-
|
14
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
13
|
+
registry.config.handlers.digitalocean.tap do |config|
|
15
14
|
config.client_id = "CLIENT_ID"
|
16
15
|
config.api_key = "API_KEY"
|
17
16
|
end
|
18
17
|
|
19
|
-
|
20
|
-
user,
|
21
|
-
:digitalocean_admins
|
22
|
-
).and_return(true)
|
18
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
23
19
|
|
24
20
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
25
21
|
end
|
@@ -2,24 +2,24 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::Droplet, lita_handler: true do
|
4
4
|
it do
|
5
|
-
|
5
|
+
is_expected.to route_command(
|
6
6
|
"do droplets create example.com 512mb centos-5-8-x64 nyc1"
|
7
7
|
).to(:create)
|
8
8
|
end
|
9
|
-
it {
|
10
|
-
it {
|
11
|
-
it {
|
12
|
-
it {
|
13
|
-
it {
|
14
|
-
it {
|
15
|
-
it {
|
16
|
-
it {
|
17
|
-
it {
|
18
|
-
it {
|
19
|
-
it {
|
20
|
-
it {
|
21
|
-
it {
|
22
|
-
it {
|
9
|
+
it { is_expected.to route_command("do droplets delete 123").to(:delete) }
|
10
|
+
it { is_expected.to route_command("do droplets delete 123 --scrub").to(:delete) }
|
11
|
+
it { is_expected.to route_command("do droplets list").to(:list) }
|
12
|
+
it { is_expected.to route_command("do droplets password reset 123").to(:password_reset) }
|
13
|
+
it { is_expected.to route_command("do droplets power cycle 123").to(:power_cycle) }
|
14
|
+
it { is_expected.to route_command("do droplets power off 123").to(:power_off) }
|
15
|
+
it { is_expected.to route_command("do droplets power on 123").to(:power_on) }
|
16
|
+
it { is_expected.to route_command("do droplets reboot 123").to(:reboot) }
|
17
|
+
it { is_expected.to route_command("do droplets rebuild 123 456").to(:rebuild) }
|
18
|
+
it { is_expected.to route_command("do droplets resize 123 1gb").to(:resize) }
|
19
|
+
it { is_expected.to route_command("do droplets restore 123 456").to(:restore) }
|
20
|
+
it { is_expected.to route_command("do droplets show 123").to(:show) }
|
21
|
+
it { is_expected.to route_command("do droplets shutdown 123").to(:shutdown) }
|
22
|
+
it { is_expected.to route_command("do droplets snapshot 123 'My Snapshot'").to(:snapshot) }
|
23
23
|
|
24
24
|
let(:client) { instance_double("::DigitalOcean::API", droplets: client_droplets) }
|
25
25
|
let(:client_droplets) { instance_double("::DigitalOcean::Resource::Droplet") }
|
@@ -27,16 +27,12 @@ describe Lita::Handlers::Digitalocean::Droplet, lita_handler: true do
|
|
27
27
|
let(:do_ok) { { status: "OK" } }
|
28
28
|
|
29
29
|
before do
|
30
|
-
|
31
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
30
|
+
registry.config.handlers.digitalocean.tap do |config|
|
32
31
|
config.client_id = "CLIENT_ID"
|
33
32
|
config.api_key = "API_KEY"
|
34
33
|
end
|
35
34
|
|
36
|
-
|
37
|
-
user,
|
38
|
-
:digitalocean_admins
|
39
|
-
).and_return(true)
|
35
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
40
36
|
|
41
37
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
42
38
|
end
|
@@ -1,25 +1,21 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::Image, lita_handler: true do
|
4
|
-
it {
|
5
|
-
it {
|
6
|
-
it {
|
7
|
-
it {
|
4
|
+
it { is_expected.to route_command("do images delete 123").to(:delete) }
|
5
|
+
it { is_expected.to route_command("do images list").to(:list) }
|
6
|
+
it { is_expected.to route_command("do images list filter").to(:list) }
|
7
|
+
it { is_expected.to route_command("do images show 123").to(:show) }
|
8
8
|
|
9
9
|
let(:client) { instance_double("::DigitalOcean::API", images: client_images) }
|
10
10
|
let(:client_images) { instance_double("::DigitalOcean::Resource::Image") }
|
11
11
|
|
12
12
|
before do
|
13
|
-
|
14
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
13
|
+
registry.config.handlers.digitalocean.tap do |config|
|
15
14
|
config.client_id = "CLIENT_ID"
|
16
15
|
config.api_key = "API_KEY"
|
17
16
|
end
|
18
17
|
|
19
|
-
|
20
|
-
user,
|
21
|
-
:digitalocean_admins
|
22
|
-
).and_return(true)
|
18
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
23
19
|
|
24
20
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
25
21
|
end
|
@@ -1,22 +1,18 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::Region, lita_handler: true do
|
4
|
-
it {
|
4
|
+
it { is_expected.to route_command("do regions list").to(:list) }
|
5
5
|
|
6
6
|
let(:client) { instance_double("::DigitalOcean::API", regions: client_regions) }
|
7
7
|
let(:client_regions) { instance_double("::DigitalOcean::Resource::Region") }
|
8
8
|
|
9
9
|
before do
|
10
|
-
|
11
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
10
|
+
registry.config.handlers.digitalocean.tap do |config|
|
12
11
|
config.client_id = "CLIENT_ID"
|
13
12
|
config.api_key = "API_KEY"
|
14
13
|
end
|
15
14
|
|
16
|
-
|
17
|
-
user,
|
18
|
-
:digitalocean_admins
|
19
|
-
).and_return(true)
|
15
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
20
16
|
|
21
17
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
22
18
|
end
|
@@ -1,22 +1,18 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::Size, lita_handler: true do
|
4
|
-
it {
|
4
|
+
it { is_expected.to route_command("do sizes list").to(:list) }
|
5
5
|
|
6
6
|
let(:client) { instance_double( "::DigitalOcean::API", sizes: client_sizes) }
|
7
7
|
let(:client_sizes) { instance_double("::DigitalOcean::Resource::Size") }
|
8
8
|
|
9
9
|
before do
|
10
|
-
|
11
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
10
|
+
registry.config.handlers.digitalocean.tap do |config|
|
12
11
|
config.client_id = "CLIENT_ID"
|
13
12
|
config.api_key = "API_KEY"
|
14
13
|
end
|
15
14
|
|
16
|
-
|
17
|
-
user,
|
18
|
-
:digitalocean_admins
|
19
|
-
).and_return(true)
|
15
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
20
16
|
|
21
17
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
22
18
|
end
|
@@ -1,30 +1,26 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe Lita::Handlers::Digitalocean::SSHKey, lita_handler: true do
|
4
|
-
it {
|
5
|
-
it {
|
4
|
+
it { is_expected.to route_command("do ssh keys add 'foo bar' 'ssh-rsa abcdefg'").to(:add) }
|
5
|
+
it { is_expected.to route_command("do ssh keys delete 123").to(:delete) }
|
6
6
|
it do
|
7
|
-
|
7
|
+
is_expected.to route_command(
|
8
8
|
"do ssh keys edit 123 --name foo --public-key 'ssh-rsa changed'"
|
9
9
|
).to(:edit)
|
10
10
|
end
|
11
|
-
it {
|
12
|
-
it {
|
11
|
+
it { is_expected.to route_command("do ssh keys list").to(:list) }
|
12
|
+
it { is_expected.to route_command("do ssh keys show 123").to(:show) }
|
13
13
|
|
14
14
|
let(:client) { instance_double("::DigitalOcean::API", ssh_keys: client_ssh_keys) }
|
15
15
|
let(:client_ssh_keys) { instance_double("::DigitalOcean::Resource::SSHKey") }
|
16
16
|
|
17
17
|
before do
|
18
|
-
|
19
|
-
Lita.config.handlers.digitalocean.tap do |config|
|
18
|
+
registry.config.handlers.digitalocean.tap do |config|
|
20
19
|
config.client_id = "CLIENT_ID"
|
21
20
|
config.api_key = "API_KEY"
|
22
21
|
end
|
23
22
|
|
24
|
-
|
25
|
-
user,
|
26
|
-
:digitalocean_admins
|
27
|
-
).and_return(true)
|
23
|
+
robot.auth.add_user_to_group!(user, :digitalocean_admins)
|
28
24
|
|
29
25
|
allow(::DigitalOcean::API).to receive(:new).and_return(client)
|
30
26
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -8,3 +8,11 @@ SimpleCov.start { add_filter "/spec/" }
|
|
8
8
|
|
9
9
|
require "lita-digitalocean"
|
10
10
|
require "lita/rspec"
|
11
|
+
|
12
|
+
Lita.version_3_compatibility_mode = false
|
13
|
+
|
14
|
+
RSpec.configure do |config|
|
15
|
+
config.before do
|
16
|
+
registry.register_hook(:trigger_route, Lita::Extensions::KeywordArguments)
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lita-digitalocean
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jimmy Cuadra
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lita
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '4.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '4.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: lita-keyword-arguments
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ">="
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 3.0.0
|
89
|
+
version: 3.0.0
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 3.0.0
|
96
|
+
version: 3.0.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: simplecov
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|