ruby-manta 2.0.0 → 2.0.1
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/README.md +40 -2
- data/example.rb +3 -1
- data/lib/ruby-manta/manta_client.rb +2 -2
- data/lib/ruby-manta/version.rb +1 -1
- data/test/unit/manta_client_test.rb +42 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4b636e55491d14ec82b6c9d2bb7db81b3a27e8e2
|
|
4
|
+
data.tar.gz: 13359dea81e874109311d507442f20999d6e6311
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 932ad21b320335849abdade93cc2d51fdc18a3ae3672d4ce42886c61a11a8c9b246ead95fecff4cef713f18ccfd014bfb7e30e0a8ade652ba68caf1bebcbd1ba
|
|
7
|
+
data.tar.gz: c66a383843d985524cacfa07a9660674de8dfd36cba20f0df13ef44b97b1bc0b7fb2ca069b6ab94a9c5d1ec41e32baa76310aeec38ec071cdecd4643126dfc91
|
data/README.md
CHANGED
|
@@ -76,7 +76,9 @@ hurried friend, is an example demonstrating some of ruby-manta's usage:
|
|
|
76
76
|
# only ever need a single instance of this in a program.
|
|
77
77
|
priv_key_data = File.read(priv_key)
|
|
78
78
|
client = RubyManta::MantaClient.new(host, user, priv_key_data,
|
|
79
|
-
:disable_ssl_verification => true
|
|
79
|
+
:disable_ssl_verification => true,
|
|
80
|
+
# :subuser => 'monte'
|
|
81
|
+
)
|
|
80
82
|
|
|
81
83
|
# Create an directory in Manta solely for this example run.
|
|
82
84
|
dir_path = '/' + user + '/stor/ruby-manta-example'
|
|
@@ -165,6 +167,15 @@ supports it either.
|
|
|
165
167
|
|
|
166
168
|
|
|
167
169
|
|
|
170
|
+
Changes in 2.0.0
|
|
171
|
+
----------------
|
|
172
|
+
* MantaClient was moved into the namespace RubyManta::MantaClient. Compatibility
|
|
173
|
+
with the namespaceless 1.0.0 MantaClient was maintained, but it may not be
|
|
174
|
+
there in the future, so please update your application code.
|
|
175
|
+
* Subuser support was added to the client.
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
|
|
168
179
|
Public and Private spaces
|
|
169
180
|
-------------------------
|
|
170
181
|
|
|
@@ -204,10 +215,37 @@ at the resulting objects.
|
|
|
204
215
|
|
|
205
216
|
|
|
206
217
|
|
|
218
|
+
Subusers
|
|
219
|
+
---------
|
|
220
|
+
The Joyent public cloud and Smart Data Center now support subusers - that is
|
|
221
|
+
users with their own unique ACLs who are managed by the primary account holder.
|
|
222
|
+
It may be useful to have a Manta-specific subuser so that your applications do
|
|
223
|
+
not have the primary account's credentials stored on their servers. This helps
|
|
224
|
+
mitigate the risk if a system is compromised. You can find the ACLs needed to
|
|
225
|
+
add a Manta only user on the
|
|
226
|
+
[Joyent RBAC Rules Support Page](https://docs.joyent.com/jpc/rbac/rules#mantaactions).
|
|
227
|
+
|
|
228
|
+
If you want to enable for Manta access for a single user, you will need to grant
|
|
229
|
+
them:
|
|
230
|
+
|
|
231
|
+
* putdirectory
|
|
232
|
+
* getdirectory
|
|
233
|
+
* deletedirectory
|
|
234
|
+
* putobject
|
|
235
|
+
* getobject
|
|
236
|
+
* deleteobject
|
|
237
|
+
* putlink
|
|
238
|
+
* createjob
|
|
239
|
+
* listjobs
|
|
240
|
+
* getjob
|
|
241
|
+
* managejob
|
|
242
|
+
|
|
243
|
+
|
|
244
|
+
|
|
207
245
|
The API
|
|
208
246
|
=======
|
|
209
247
|
|
|
210
|
-
A note on
|
|
248
|
+
A note on semantics
|
|
211
249
|
------------------
|
|
212
250
|
|
|
213
251
|
All methods throw exceptions upon failure. If a method doesn't throw, the
|
data/example.rb
CHANGED
|
@@ -18,7 +18,9 @@ raise 'You must specify LOCAL_DIR' unless upload_dir
|
|
|
18
18
|
# only ever need a single instance of this in a program.
|
|
19
19
|
priv_key_data = File.read(priv_key)
|
|
20
20
|
client = RubyManta::MantaClient.new(host, user, priv_key_data,
|
|
21
|
-
:disable_ssl_verification => true
|
|
21
|
+
:disable_ssl_verification => true,
|
|
22
|
+
# :subuser => 'monte',
|
|
23
|
+
)
|
|
22
24
|
|
|
23
25
|
# Create an directory in Manta solely for this example run.
|
|
24
26
|
dir_path = '/' + user + '/stor/ruby-manta-example'
|
|
@@ -334,9 +334,9 @@ module RubyManta
|
|
|
334
334
|
listing = response.first
|
|
335
335
|
|
|
336
336
|
listing.inject([]) do |memo, obj|
|
|
337
|
-
if obj['type'] == '
|
|
337
|
+
if obj['type'] == 'directory'
|
|
338
338
|
sub_dir = "#{dir_path}/#{obj['name']}"
|
|
339
|
-
sub_search = find(sub_dir, regex)
|
|
339
|
+
sub_search = find(sub_dir, regex: regex)
|
|
340
340
|
memo.push(*sub_search)
|
|
341
341
|
end
|
|
342
342
|
|
data/lib/ruby-manta/version.rb
CHANGED
|
@@ -12,7 +12,7 @@ class TestMantaClient < Minitest::Test
|
|
|
12
12
|
@@user = ENV['MANTA_USER']
|
|
13
13
|
|
|
14
14
|
unless host && key && @@user
|
|
15
|
-
$stderr.puts 'Require
|
|
15
|
+
$stderr.puts 'Require MANTA_URL, MANTA_USER and MANTA_KEY env variables to run tests.'
|
|
16
16
|
$stderr.puts 'E.g. MANTA_USER=john MANTA_KEY=~/.ssh/john MANTA_URL=https://us-east.manta.joyent.com bundle exec rake test'
|
|
17
17
|
exit
|
|
18
18
|
end
|
|
@@ -757,4 +757,45 @@ class TestMantaClient < Minitest::Test
|
|
|
757
757
|
assert headers.is_a? Hash
|
|
758
758
|
end
|
|
759
759
|
end
|
|
760
|
+
|
|
761
|
+
def test_find_subdirectory_regex
|
|
762
|
+
copies = 15
|
|
763
|
+
|
|
764
|
+
@@client.put_directory("#{@@test_dir_path}/a")
|
|
765
|
+
@@client.put_directory("#{@@test_dir_path}/b")
|
|
766
|
+
|
|
767
|
+
begin
|
|
768
|
+
copies.times do |i|
|
|
769
|
+
dir_name = i % 2 == 0 ? 'a' : 'b'
|
|
770
|
+
@@client.put_object("#{@@test_dir_path}/#{dir_name}/find_object_#{i}", 'test_find_regex')
|
|
771
|
+
end
|
|
772
|
+
|
|
773
|
+
@@client.put_object(@@test_dir_path + '/dog_biscuit', 'dont match me')
|
|
774
|
+
|
|
775
|
+
results = @@client.find(@@test_dir_path, regex: '^find_object_.*')
|
|
776
|
+
|
|
777
|
+
assert_equal copies, results.length
|
|
778
|
+
|
|
779
|
+
copies.times do |i|
|
|
780
|
+
dir_name = i % 2 == 0 ? 'a' : 'b'
|
|
781
|
+
assert results.include? "#{@@test_dir_path}/#{dir_name}/find_object_#{i}"
|
|
782
|
+
end
|
|
783
|
+
|
|
784
|
+
refute results.include? @@test_dir_path + '/dog_biscuit'
|
|
785
|
+
ensure
|
|
786
|
+
copies.times do |i|
|
|
787
|
+
dir_name = i % 2 == 0 ? 'a' : 'b'
|
|
788
|
+
result, headers = @@client.delete_object("#{@@test_dir_path}/#{dir_name}/find_object_#{i}")
|
|
789
|
+
assert_equal result, true
|
|
790
|
+
assert headers.is_a? Hash
|
|
791
|
+
end
|
|
792
|
+
|
|
793
|
+
result, headers = @@client.delete_object(@@test_dir_path + "/dog_biscuit")
|
|
794
|
+
assert_equal result, true
|
|
795
|
+
assert headers.is_a? Hash
|
|
796
|
+
|
|
797
|
+
@@client.delete_directory("#{@@test_dir_path}/a")
|
|
798
|
+
@@client.delete_directory("#{@@test_dir_path}/b")
|
|
799
|
+
end
|
|
800
|
+
end
|
|
760
801
|
end
|