mongo-db-utils 0.1.5 → 0.1.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 +4 -4
- data/.gitignore +4 -2
- data/lib/mongo-db-utils/tools/commands.rb +27 -13
- data/lib/mongo-db-utils/version.rb +1 -1
- data/spec/mongo_tools_cmd_spec.rb +47 -13
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 415c2d49fcbcad5aa3e835eb0b5fe88c880e8cfe
|
4
|
+
data.tar.gz: 93218696727910919cd569d0658fa1f2fe8f6a65
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d6b92ba1baa0e548c2f845370e2a909602897ff216e6bb6366803c7535f286a22783be2cc9557a6816751bc9e74da2ebc137f3320214a4538bc5d9c91100ea49
|
7
|
+
data.tar.gz: a56d22c2bc234e4e9c9c2cadab2a27b019228a4ac577b620a1462e2cfd584ac6f3848f59ab4e8cd1447c8446102edc75cd923923a22e561ac1446faebbb326ba
|
data/.gitignore
CHANGED
@@ -15,21 +15,31 @@ module MongoDbUtils
|
|
15
15
|
class BaseCmd
|
16
16
|
|
17
17
|
def initialize(cmd_name, host_and_port, db, username = "", password = "")
|
18
|
-
@
|
18
|
+
@unsafeOptions = build_base_options(host_and_port, db, username, password)
|
19
|
+
@optionsWithoutCredentials = build_base_options(host_and_port, db, username.empty? ? '':'****', password.empty? ? '':'****')
|
19
20
|
@cmd_name = cmd_name
|
20
21
|
end
|
21
22
|
|
22
23
|
def run
|
23
24
|
puts "[#{self.class}] run: #{cmd}"
|
24
|
-
output = `#{
|
25
|
+
output = `#{executableCmd}`
|
25
26
|
raise ToolsException.new("#{cmd}", output) unless $?.to_i == 0
|
26
27
|
end
|
27
28
|
|
28
29
|
def cmd
|
29
|
-
"#{@cmd_name} #{options_string(@
|
30
|
+
"#{@cmd_name} #{options_string(@optionsWithoutCredentials)}"
|
31
|
+
end
|
32
|
+
|
33
|
+
def executableCmd
|
34
|
+
"#{@cmd_name} #{options_string(@unsafeOptions)}"
|
30
35
|
end
|
31
36
|
|
32
37
|
private
|
38
|
+
|
39
|
+
def addOption(option)
|
40
|
+
@unsafeOptions << option
|
41
|
+
@optionsWithoutCredentials << option
|
42
|
+
end
|
33
43
|
|
34
44
|
def o(key,value)
|
35
45
|
Option.new(key,value)
|
@@ -55,29 +65,33 @@ module MongoDbUtils
|
|
55
65
|
class Dump < BaseCmd
|
56
66
|
def initialize(host_and_port,db,output,username = "", password = "")
|
57
67
|
super("mongodump", host_and_port, db, username, password)
|
58
|
-
|
68
|
+
addOption(o("-o", output))
|
59
69
|
end
|
60
70
|
end
|
61
71
|
|
62
72
|
class Restore < BaseCmd
|
63
73
|
def initialize(host_and_port,db,source_folder,username = "", password = "")
|
64
74
|
super("mongorestore", host_and_port, db, username, password)
|
65
|
-
|
75
|
+
addOption("--drop")
|
66
76
|
@source_folder = source_folder
|
67
77
|
end
|
68
78
|
|
69
79
|
def cmd
|
70
80
|
"#{super} #{@source_folder}"
|
71
81
|
end
|
82
|
+
|
83
|
+
def executableCmd
|
84
|
+
"#{super} #{@source_folder}"
|
85
|
+
end
|
72
86
|
end
|
73
87
|
|
74
88
|
class Import < BaseCmd
|
75
89
|
def initialize(host_and_port, db, collection, file, username = "", password = "", opts = {})
|
76
90
|
super("mongoimport", host_and_port, db, username, password)
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
91
|
+
addOption(o("-c", collection))
|
92
|
+
addOption(o("--file", file))
|
93
|
+
addOption("--jsonArray") if opts[:json_array]
|
94
|
+
addOption("--drop") if opts[:drop]
|
81
95
|
end
|
82
96
|
end
|
83
97
|
|
@@ -85,10 +99,10 @@ module MongoDbUtils
|
|
85
99
|
|
86
100
|
def initialize(host_and_port, db, collection, query, output, username = "", password = "", opts = {})
|
87
101
|
super("mongoexport", host_and_port, db, username, password)
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
102
|
+
addOption(o("-c", collection))
|
103
|
+
addOption(o("-o", output))
|
104
|
+
addOption(o("--query", "'#{query}'"))
|
105
|
+
addOption("--jsonArray") if opts[:json_array]
|
92
106
|
end
|
93
107
|
end
|
94
108
|
|
@@ -4,64 +4,98 @@ include MongoDbUtils::Tools
|
|
4
4
|
|
5
5
|
describe Dump do
|
6
6
|
|
7
|
+
it "should safely work with single uris" do
|
8
|
+
Dump.new("host:port", "db", "out", "user", "pass").cmd.should eql "mongodump -h host:port -db db -u **** -p **** -o out"
|
9
|
+
end
|
10
|
+
|
7
11
|
it "should work with single uris" do
|
8
|
-
Dump.new("host:port", "db", "out", "user", "pass").
|
12
|
+
Dump.new("host:port", "db", "out", "user", "pass").executableCmd.should eql "mongodump -h host:port -db db -u user -p pass -o out"
|
9
13
|
end
|
14
|
+
|
10
15
|
it "should work with single uris - no user/pass" do
|
11
|
-
Dump.new("host:port", "db", "out").
|
16
|
+
Dump.new("host:port", "db", "out").executableCmd.should eql "mongodump -h host:port -db db -o out"
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should safely work with replica set uris" do
|
20
|
+
expected = "mongodump -h setname/host1:port1,host2:port2 -db db -u **** -p **** -o out"
|
21
|
+
Dump.new("setname/host1:port1,host2:port2","db", "out", "user", "pass").cmd.should eql expected
|
12
22
|
end
|
13
23
|
|
14
24
|
it "should work with replica set uris" do
|
15
25
|
expected = "mongodump -h setname/host1:port1,host2:port2 -db db -u user -p pass -o out"
|
16
|
-
Dump.new("setname/host1:port1,host2:port2","db", "out", "user", "pass").
|
26
|
+
Dump.new("setname/host1:port1,host2:port2","db", "out", "user", "pass").executableCmd.should eql expected
|
17
27
|
end
|
28
|
+
|
18
29
|
end
|
19
30
|
|
20
31
|
describe Restore do
|
21
32
|
|
22
|
-
it "should work with single uris" do
|
23
|
-
Restore.new("host:port", "db", "source", "user", "pass").cmd.should eql "mongorestore -h host:port -db db -u
|
33
|
+
it "should safely work with single uris" do
|
34
|
+
Restore.new("host:port", "db", "source", "user", "pass").cmd.should eql "mongorestore -h host:port -db db -u **** -p **** --drop source"
|
24
35
|
end
|
25
36
|
|
26
37
|
it "should work with single uris" do
|
27
|
-
Restore.new("host:port", "db", "source").
|
38
|
+
Restore.new("host:port", "db", "source", "user", "pass").executableCmd.should eql "mongorestore -h host:port -db db -u user -p pass --drop source"
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should safely work with replica set uris" do
|
42
|
+
expected = "mongorestore -h setname/host1:port1,host2:port2 -db db -u **** -p **** --drop source"
|
43
|
+
Restore.new("setname/host1:port1,host2:port2","db", "source", "user", "pass").cmd.should eql expected
|
28
44
|
end
|
29
45
|
|
30
46
|
it "should work with replica set uris" do
|
31
47
|
expected = "mongorestore -h setname/host1:port1,host2:port2 -db db -u user -p pass --drop source"
|
32
|
-
Restore.new("setname/host1:port1,host2:port2","db", "source", "user", "pass").
|
48
|
+
Restore.new("setname/host1:port1,host2:port2","db", "source", "user", "pass").executableCmd.should eql expected
|
33
49
|
end
|
34
50
|
end
|
35
51
|
|
36
52
|
describe Import do
|
37
53
|
|
54
|
+
it "should safely work with single uris - with user/pass" do
|
55
|
+
Import.new("host:port", "db", "coll", "myfile.json", "user", "pass").cmd.should eql "mongoimport -h host:port -db db -u **** -p **** -c coll --file myfile.json"
|
56
|
+
end
|
57
|
+
|
38
58
|
it "should work with single uris - with user/pass" do
|
39
|
-
Import.new("host:port", "db", "coll", "myfile.json", "user", "pass").
|
59
|
+
Import.new("host:port", "db", "coll", "myfile.json", "user", "pass").executableCmd.should eql "mongoimport -h host:port -db db -u user -p pass -c coll --file myfile.json"
|
40
60
|
end
|
41
61
|
|
42
62
|
it "should work with single uris - no user/pass" do
|
43
|
-
Import.new("host:port", "db", "coll", "myfile.json").
|
63
|
+
Import.new("host:port", "db", "coll", "myfile.json").executableCmd.should eql "mongoimport -h host:port -db db -c coll --file myfile.json"
|
64
|
+
end
|
65
|
+
|
66
|
+
it "should safely work with replica set uris" do
|
67
|
+
expected = "mongoimport -h setname/host1:port1,host2:port2 -db db -u **** -p **** -c coll --file myfile.json --jsonArray"
|
68
|
+
Import.new("setname/host1:port1,host2:port2","db", "coll", "myfile.json", "user", "pass", { :json_array => true} ).cmd.should eql expected
|
44
69
|
end
|
45
70
|
|
46
71
|
it "should work with replica set uris" do
|
47
72
|
expected = "mongoimport -h setname/host1:port1,host2:port2 -db db -u user -p pass -c coll --file myfile.json --jsonArray"
|
48
|
-
Import.new("setname/host1:port1,host2:port2","db", "coll", "myfile.json", "user", "pass", { :json_array => true} ).
|
73
|
+
Import.new("setname/host1:port1,host2:port2","db", "coll", "myfile.json", "user", "pass", { :json_array => true} ).executableCmd.should eql expected
|
49
74
|
end
|
50
75
|
end
|
51
76
|
|
52
77
|
describe Export do
|
53
78
|
|
79
|
+
it "should safely work with single uris - with user/pass" do
|
80
|
+
Export.new("host:port", "db", "coll", "{query}", "myfile.json", "user", "pass").cmd.should eql "mongoexport -h host:port -db db -u **** -p **** -c coll -o myfile.json --query '{query}'"
|
81
|
+
end
|
82
|
+
|
54
83
|
it "should work with single uris - with user/pass" do
|
55
|
-
Export.new("host:port", "db", "coll", "{query}", "myfile.json", "user", "pass").
|
84
|
+
Export.new("host:port", "db", "coll", "{query}", "myfile.json", "user", "pass").executableCmd.should eql "mongoexport -h host:port -db db -u user -p pass -c coll -o myfile.json --query '{query}'"
|
56
85
|
end
|
57
86
|
|
58
87
|
it "should work with single uris - no user/pass" do
|
59
|
-
Export.new("host:port", "db", "coll", "{query}", "myfile.json").
|
88
|
+
Export.new("host:port", "db", "coll", "{query}", "myfile.json").executableCmd.should eql "mongoexport -h host:port -db db -c coll -o myfile.json --query '{query}'"
|
89
|
+
end
|
90
|
+
|
91
|
+
it "should safely work with replica set uris" do
|
92
|
+
expected = "mongoexport -h setname/host1:port1,host2:port2 -db db -u **** -p **** -c coll -o myfile.json --query '{query}' --jsonArray"
|
93
|
+
Export.new("setname/host1:port1,host2:port2","db", "coll", "{query}", "myfile.json", "user", "pass", { :json_array => true} ).cmd.should eql expected
|
60
94
|
end
|
61
95
|
|
62
96
|
it "should work with replica set uris" do
|
63
97
|
expected = "mongoexport -h setname/host1:port1,host2:port2 -db db -u user -p pass -c coll -o myfile.json --query '{query}' --jsonArray"
|
64
|
-
Export.new("setname/host1:port1,host2:port2","db", "coll", "{query}", "myfile.json", "user", "pass", { :json_array => true} ).
|
98
|
+
Export.new("setname/host1:port1,host2:port2","db", "coll", "{query}", "myfile.json", "user", "pass", { :json_array => true} ).executableCmd.should eql expected
|
65
99
|
end
|
66
100
|
end
|
67
101
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongo-db-utils
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- edeustace
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-09-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|