rig 0.4.3 → 0.4.4
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.
- data/.rvmrc +1 -0
- data/Gemfile +2 -0
- data/lib/rig/command/database.rb +43 -0
- data/lib/rig/command.rb +1 -0
- data/lib/rig/model/connection.rb +6 -0
- data/lib/rig/model/database/base.rb +11 -0
- data/lib/rig/model/database/mongodb.rb +70 -0
- data/lib/rig/model/database/mysql.rb +12 -0
- data/lib/rig/model/database.rb +23 -0
- data/lib/rig/version.rb +1 -1
- metadata +8 -2
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm ruby-1.9.3-p125
|
data/Gemfile
CHANGED
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'mongo'
|
2
|
+
require 'awesome_print'
|
3
|
+
|
4
|
+
module Rig
|
5
|
+
module Command
|
6
|
+
module Database
|
7
|
+
class List < Abstract
|
8
|
+
def execute
|
9
|
+
db = Rig::Connection.database
|
10
|
+
|
11
|
+
list = db.all.sort
|
12
|
+
print_table(%w{Database Size}, list)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Create < Abstract
|
17
|
+
parameter "NAME", "name of the database"
|
18
|
+
parameter "[USER]", "user to add to database", :default => Rig::Connection.database.user
|
19
|
+
parameter "[PASS]", "password of user to add to database", :default => Rig::Connection.database.pass
|
20
|
+
def execute
|
21
|
+
db = Rig::Connection.database
|
22
|
+
db.create_database(name, user, pass) unless test?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Destroy < Abstract
|
27
|
+
parameter "NAME", "name of the database"
|
28
|
+
def execute
|
29
|
+
db = Rig::Connection.database
|
30
|
+
db.destroy_database(name) unless test?
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
class Main < Abstract
|
35
|
+
subcommand "list", "list all databases", List
|
36
|
+
subcommand "create", "create a database", Create
|
37
|
+
subcommand "destroy", "destroy a database", Destroy
|
38
|
+
self.default_subcommand = "list"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
Rig::Command::Main.subcommand "database", "manage mongodb or mysql databases", Rig::Command::Database::Main
|
data/lib/rig/command.rb
CHANGED
data/lib/rig/model/connection.rb
CHANGED
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'mongo'
|
3
|
+
require 'bson'
|
4
|
+
|
5
|
+
module Rig
|
6
|
+
module Model
|
7
|
+
module Database
|
8
|
+
class MongoDB
|
9
|
+
|
10
|
+
def initialize(opts)
|
11
|
+
@options = {
|
12
|
+
:host => "localhost",
|
13
|
+
:port => 27017,
|
14
|
+
:user => nil,
|
15
|
+
:pass => nil,
|
16
|
+
:admin_user => nil,
|
17
|
+
:admin_pass => nil
|
18
|
+
}.merge(opts)
|
19
|
+
connect
|
20
|
+
end
|
21
|
+
|
22
|
+
# accessors
|
23
|
+
def user; @options[:user]; end
|
24
|
+
def host; @options[:host]; end
|
25
|
+
def port; @options[:port]; end
|
26
|
+
def pass; @options[:pass]; end
|
27
|
+
def password; @options[:pass]; end
|
28
|
+
def admin_user; @options[:admin_user]; end
|
29
|
+
def admin_pass; @options[:admin_pass]; end
|
30
|
+
def admin_password; @options[:admin_pass]; end
|
31
|
+
|
32
|
+
def connect
|
33
|
+
@cxn ||= begin
|
34
|
+
Mongo::Connection.new(@options[:host], @options[:port])
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def auth_admin
|
39
|
+
db = @cxn.db("admin")
|
40
|
+
db.authenticate(@options[:admin_user], @options[:admin_pass])
|
41
|
+
end
|
42
|
+
|
43
|
+
def all
|
44
|
+
begin
|
45
|
+
connect.database_info
|
46
|
+
rescue Mongo::OperationFailure => e
|
47
|
+
raise unless e.message =~ /need to login/
|
48
|
+
raise unless auth_admin
|
49
|
+
connect.database_info
|
50
|
+
rescue => e
|
51
|
+
puts "exception: <#{e.class}> #{e.message} at #{e.backtrace.first}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def create_database(name, user, pass)
|
56
|
+
db = connect.db("admin")
|
57
|
+
raise "failed to authenticate" unless db.authenticate(@options[:admin_user], @options[:admin_pass])
|
58
|
+
newdb = connect.db(name)
|
59
|
+
newdb.add_user(user, pass)
|
60
|
+
end
|
61
|
+
|
62
|
+
def destroy_database(name)
|
63
|
+
db = connect.db("admin")
|
64
|
+
raise "failed to authenticate" unless db.authenticate(@options[:admin_user], @options[:admin_pass])
|
65
|
+
connect.drop_database(name)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'rig/model/database/base'
|
2
|
+
require 'rig/model/database/mongodb'
|
3
|
+
require 'rig/model/database/mysql'
|
4
|
+
|
5
|
+
module Rig
|
6
|
+
module Model
|
7
|
+
module Database
|
8
|
+
class << self
|
9
|
+
def new(opts)
|
10
|
+
provider = opts.delete(:provider)
|
11
|
+
case provider.downcase
|
12
|
+
when 'mongodb'
|
13
|
+
Rig::Model::Database::MongoDB.new(opts)
|
14
|
+
when 'mysql'
|
15
|
+
Rig::Model::Database::MySQL.new(opts)
|
16
|
+
else
|
17
|
+
raise "unknown database #{provider.inspect}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/rig/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: clamp
|
@@ -116,6 +116,7 @@ extensions: []
|
|
116
116
|
extra_rdoc_files: []
|
117
117
|
files:
|
118
118
|
- .gitignore
|
119
|
+
- .rvmrc
|
119
120
|
- Gemfile
|
120
121
|
- LICENSE
|
121
122
|
- README.md
|
@@ -137,6 +138,7 @@ files:
|
|
137
138
|
- lib/rig/command/balancer/main.rb
|
138
139
|
- lib/rig/command/balancer/view.rb
|
139
140
|
- lib/rig/command/config.rb
|
141
|
+
- lib/rig/command/database.rb
|
140
142
|
- lib/rig/command/dns/create.rb
|
141
143
|
- lib/rig/command/dns/destroy.rb
|
142
144
|
- lib/rig/command/dns/edit.rb
|
@@ -166,6 +168,10 @@ files:
|
|
166
168
|
- lib/rig/model/account.rb
|
167
169
|
- lib/rig/model/balancer.rb
|
168
170
|
- lib/rig/model/connection.rb
|
171
|
+
- lib/rig/model/database.rb
|
172
|
+
- lib/rig/model/database/base.rb
|
173
|
+
- lib/rig/model/database/mongodb.rb
|
174
|
+
- lib/rig/model/database/mysql.rb
|
169
175
|
- lib/rig/model/dns.rb
|
170
176
|
- lib/rig/model/environment.rb
|
171
177
|
- lib/rig/model/instance.rb
|