leofs_manager_client 0.2.16 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ODBjNTNiNmU3MDRkZjc0NmI2MWFjNzk2Y2MyMzc0OTc0MGY1MGVjMg==
5
+ data.tar.gz: !binary |-
6
+ NjRkODI0YmJjNWZjNjFiMGMzOTkwMmIxZjEyNDEwOTQ5ODVkYjkxNA==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ ZWVhZWU3YmU3MTFiN2M1OWU4NzA0NjY1M2FlYzhiMDAxN2U3OTk1ZTg5ZTNk
10
+ YzI4Y2IyMWQwYTljNDQyMjM0YmY4MGMyZGUyYzAxY2MwYWJmZWI3NjdiMTU0
11
+ NDZiMWI5NWU3ZjRhYWM4M2FhOWRmNDFhNzdhNmI4OWNkZjkwOGY=
12
+ data.tar.gz: !binary |-
13
+ NzQyMDI3NTA4YWQyNmU4NTEyMGQ4ODY2OTYwNDI5Yzc3YjE0ZTM0YzZjZWFl
14
+ MTk5MzcxNGE1ZGFhNTg1MDFmMTE5ZGY4MDFiMDk2YTU3YzllOTkzODk0NDEy
15
+ MTQ2ZGE5OTUyMGZlYTk3MDE5ZGY1YjQzMjhmMjMwMTZkOWY4ZmE=
@@ -20,7 +20,10 @@
20
20
  #
21
21
  # ======================================================================
22
22
  module LeoFSManager
23
+
24
+ # ==========================
23
25
  # System Information Model
26
+ # ==========================
24
27
  class Status
25
28
  # Node
26
29
  attr_reader :node_stat
@@ -93,7 +96,9 @@ module LeoFSManager
93
96
  end
94
97
  end
95
98
 
99
+ # ==========================
96
100
  # Assigned file info Model
101
+ # ==========================
97
102
  class AssignedFile
98
103
  attr_reader :node, :vnode_id, :size, :clock, :checksum, :timestamp, :delete, :num_of_chunks
99
104
 
@@ -110,7 +115,9 @@ module LeoFSManager
110
115
  end
111
116
  end
112
117
 
118
+ # ==========================
113
119
  # Storage Status Model
120
+ # ==========================
114
121
  class StorageStat
115
122
  attr_reader :active_num_of_objects, :total_num_of_objects,
116
123
  :active_size_of_objects, :total_size_of_objects,
@@ -123,15 +130,9 @@ module LeoFSManager
123
130
  @total_num_of_objects = h[:total_num_of_objects]
124
131
  @active_size_of_objects = h[:active_size_of_objects]
125
132
  @total_size_of_objects = h[:total_size_of_objects]
126
-
127
- last_compaction_start = h[:last_compaction_start]
128
- if last_compaction_start && last_compaction_start != "____-_-__- __:__:__"
129
- @last_compaction_start = Time.parse(h[:last_compaction_start])
130
- end
131
- last_compaction_end = h[:last_compaction_end]
132
- if last_compaction_end && last_compaction_end != "____-_-__- __:__:__"
133
- @last_compaction_end = Time.parse(h[:last_compaction_end])
134
- end
133
+ @ratio_of_active_size = h[:ratio_of_active_size]
134
+ @last_compaction_start = h[:last_compaction_start]
135
+ @last_compaction_end = h[:last_compaction_end]
135
136
  end
136
137
 
137
138
  def file_size
@@ -139,7 +140,9 @@ module LeoFSManager
139
140
  end
140
141
  end
141
142
 
142
- # S3 Credential
143
+ # ==========================
144
+ # S3 Credential Model
145
+ # ==========================
143
146
  class Credential
144
147
  # AWS_ACCESS_KEY_ID
145
148
  attr_reader :access_key_id
@@ -152,6 +155,9 @@ module LeoFSManager
152
155
  end
153
156
  end
154
157
 
158
+ # ==========================
159
+ # Login Info Model
160
+ # ==========================
155
161
  RoleDef = {
156
162
  1 => :general,
157
163
  9 => :admin
@@ -176,6 +182,9 @@ module LeoFSManager
176
182
  end
177
183
  end
178
184
 
185
+ # ==========================
186
+ # User Info Model
187
+ # ==========================
179
188
  class User
180
189
  attr_reader :user_id, :role_id, :access_key_id, :created_at
181
190
 
@@ -191,7 +200,9 @@ module LeoFSManager
191
200
  end
192
201
  end
193
202
 
194
- # Endpoint
203
+ # ==========================
204
+ # Endpoint Model
205
+ # ==========================
195
206
  class Endpoint
196
207
  # host of the endpoint
197
208
  attr_reader :endpoint
@@ -204,7 +215,9 @@ module LeoFSManager
204
215
  end
205
216
  end
206
217
 
218
+ # ==========================
207
219
  # S3-Bucket Model
220
+ # ==========================
208
221
  class Bucket
209
222
  # name of bucket
210
223
  attr_reader :name
@@ -219,4 +232,25 @@ module LeoFSManager
219
232
  @created_at = Time.parse(h[:created_at])
220
233
  end
221
234
  end
235
+
236
+ # ==========================
237
+ # Compaction Status Model
238
+ # ==========================
239
+ class CompactionStatus
240
+ attr_reader :status
241
+ attr_reader :last_compaction_start
242
+ attr_reader :total_targets
243
+ attr_reader :num_of_pending_targets
244
+ attr_reader :num_of_ongoing_targets
245
+ attr_reader :num_of_out_of_targets
246
+
247
+ def initialize(h)
248
+ @status = h[:status]
249
+ @last_compaction_start = h[:last_compaction_start]
250
+ @total_targets = h[:total_targets]
251
+ @num_of_pending_targets = h[:num_of_pending_targets]
252
+ @num_of_ongoing_targets = h[:num_of_ongoing_targets]
253
+ @num_of_out_of_targets = h[:num_of_out_of_targets]
254
+ end
255
+ end
222
256
  end
@@ -26,7 +26,7 @@ require "time"
26
26
  require_relative "leofs_manager_client/leofs_manager_models"
27
27
 
28
28
  module LeoFSManager
29
- VERSION = "0.2.16"
29
+ VERSION = "0.4.0"
30
30
 
31
31
  class Client
32
32
  CMD_VERSION = "version"
@@ -39,7 +39,10 @@ module LeoFSManager
39
39
  CMD_REBALANCE = "rebalance"
40
40
  CMD_WHEREIS = "whereis %s"
41
41
  CMD_DU = "du %s"
42
- CMD_COMPACT = "compact %s"
42
+ CMD_COMPACT_START = "compact start %s %s %s"
43
+ CMD_COMPACT_SUSPEND = "compact suspend %s"
44
+ CMD_COMPACT_RESUME = "compact resume %s"
45
+ CMD_COMPACT_STATUS = "compact status %s"
43
46
  CMD_PURGE = "purge %s"
44
47
  CMD_CRE_USER = "create-user %s %s"
45
48
  CMD_UPD_USER_ROLE = "update-user-role %s %s"
@@ -66,7 +69,7 @@ module LeoFSManager
66
69
  connect
67
70
  end
68
71
 
69
- # servers to connect
72
+ # servers to connect
70
73
  attr_reader :servers
71
74
  # the server currently connected
72
75
  attr_reader :current_server
@@ -81,7 +84,7 @@ module LeoFSManager
81
84
 
82
85
  # Retrieve LeoFS's system status from LeoFS Manager
83
86
  # Return::
84
- # Status
87
+ # Status
85
88
  def status(node=nil)
86
89
  Status.new(sender(CMD_STATUS % node))
87
90
  end
@@ -148,14 +151,38 @@ module LeoFSManager
148
151
  StorageStat.new(sender(CMD_DU % node))
149
152
  end
150
153
 
151
- # Execute 'compaction'
154
+ # Execute 'compact start'
152
155
  # Return::
153
156
  # _nil_
154
- def compact(node)
155
- sender(CMD_COMPACT % node)
157
+ def compact_start(node, num_of_targets, num_of_concurrents)
158
+ sender(CMD_COMPACT_START % [node, num_of_targets, num_of_concurrents])
156
159
  nil
157
160
  end
158
161
 
162
+ # Execute 'compact suspend'
163
+ # Return::
164
+ # _nil_
165
+ def compact_suspend(node)
166
+ sender(CMD_COMPACT_SUSPEND % node)
167
+ nil
168
+ end
169
+
170
+ # Execute 'compact suspend'
171
+ # Return::
172
+ # _nil_
173
+ def compact_resume(node)
174
+ sender(CMD_COMPACT_RESUME % node)
175
+ nil
176
+ end
177
+
178
+ # Execute 'compact status'
179
+ # Return::
180
+ # _nil_
181
+ def compact_status(node)
182
+ compaction = sender(CMD_COMPACT_STATUS % node)[:compaction_status]
183
+ CompactionStatus.new(compaction)
184
+ end
185
+
159
186
  # Purge a cache in gateways
160
187
  # Return::
161
188
  # _nil_
@@ -341,4 +368,6 @@ if __FILE__ == $PROGRAM_NAME
341
368
  p m.status("storage_0@127.0.0.1")
342
369
  p m.get_buckets()
343
370
  p m.whereis("photo/hawaii-0.jpg")
371
+ p m.du("storage_0@127.0.0.1")
372
+ p m.compact_status("storage_0@127.0.0.1")
344
373
  end
@@ -1,23 +1,23 @@
1
1
  # ======================================================================
2
- #
2
+ #
3
3
  # LeoFS Manager Client
4
- #
4
+ #
5
5
  # Copyright (c) 2012 Rakuten, Inc.
6
- #
6
+ #
7
7
  # This file is provided to you under the Apache License,
8
8
  # Version 2.0 (the "License"); you may not use this file
9
9
  # except in compliance with the License. You may obtain
10
10
  # a copy of the License at
11
- #
11
+ #
12
12
  # http://www.apache.org/licenses/LICENSE-2.0
13
- #
13
+ #
14
14
  # Unless required by applicable law or agreed to in writing,
15
15
  # software distributed under the License is distributed on an
16
16
  # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
17
  # KIND, either express or implied. See the License for the
18
18
  # specific language governing permissions and limitations
19
19
  # under the License.
20
- #
20
+ #
21
21
  # ======================================================================
22
22
 
23
23
  require "socket"
@@ -65,7 +65,7 @@ module Dummy
65
65
 
66
66
  Whereis = {
67
67
  :assigned_info => [
68
- {
68
+ {
69
69
  :node => "storage_0@127.0.0.1",
70
70
  :vnode_id => "",
71
71
  :size => "",
@@ -78,35 +78,23 @@ module Dummy
78
78
  ]
79
79
  }.to_json
80
80
 
81
- GetEndpoints = {
82
- :endpoints => [
83
- {:endpoint => "s3.amazonaws.com", :created_at=>"2012-09-21 15:08:11 +0900"},
84
- {:endpoint => "localhost", :created_at=>"2012-09-21 15:08:11 +0900"},
85
- {:endpoint => "foo", :created_at=>"2012-09-21 18:51:08 +0900"},
86
- {:endpoint => "leofs.org", :created_at=>"2012-09-21 15:08:11 +0900"}
87
- ]
88
- }.to_json
81
+ GetEndpoints = {:endpoints => [{:endpoint => "s3.amazonaws.com", :created_at=>"2012-09-21 15:08:11 +0900"},
82
+ {:endpoint => "localhost", :created_at=>"2012-09-21 15:08:11 +0900"},
83
+ {:endpoint => "foo", :created_at=>"2012-09-21 18:51:08 +0900"},
84
+ {:endpoint => "leofs.org", :created_at=>"2012-09-21 15:08:11 +0900"}
85
+ ]}.to_json
86
+ GetBuckets = {:buckets => [{:bucket => "test",
87
+ :owner => "test",
88
+ :created_at => "2012-09-24 15:38:49 +0900"
89
+ }]}.to_json
89
90
 
90
- GetBuckets = {
91
- :buckets => [
92
- {
93
- :bucket => "test",
94
- :owner => "test",
95
- :created_at => "2012-09-24 15:38:49 +0900"
96
- }
97
- ]
98
- }.to_json
91
+ GetUsers = {:users => [{:access_key_id => "05236",
92
+ :user_id => "_test_leofs_",
93
+ :role_id => 1,
94
+ :created_at => "2012-11-20 15:13:20 +0900"}]}.to_json
99
95
 
100
- GetUsers = {
101
- :users => [
102
- { :access_key_id => "05236", :user_id => "_test_leofs_", :role_id => 1, :created_at => "2012-11-20 15:13:20 +0900" }
103
- ]
104
- }.to_json
105
-
106
- CreateUser = {
107
- :access_key_id => "xxxxxxxxxxxxxxxxxxxx",
108
- :secret_access_key => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
109
- }.to_json
96
+ CreateUser = {:access_key_id => "xxxxxxxxxxxxxxxxxxxx",
97
+ :secret_access_key => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}.to_json
110
98
  end
111
99
 
112
100
  Argument = "arg" # passed to command which requires some arguments.
@@ -1,23 +1,23 @@
1
1
  # ======================================================================
2
- #
2
+ #
3
3
  # LeoFS Manager Client
4
- #
4
+ #
5
5
  # Copyright (c) 2012 Rakuten, Inc.
6
- #
6
+ #
7
7
  # This file is provided to you under the Apache License,
8
8
  # Version 2.0 (the "License"); you may not use this file
9
9
  # except in compliance with the License. You may obtain
10
10
  # a copy of the License at
11
- #
11
+ #
12
12
  # http://www.apache.org/licenses/LICENSE-2.0
13
- #
13
+ #
14
14
  # Unless required by applicable law or agreed to in writing,
15
15
  # software distributed under the License is distributed on an
16
16
  # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17
17
  # KIND, either express or implied. See the License for the
18
18
  # specific language governing permissions and limitations
19
19
  # under the License.
20
- #
20
+ #
21
21
  # ======================================================================
22
22
 
23
23
  require "json"
@@ -31,13 +31,13 @@ $DEBUG = false
31
31
 
32
32
  # key: api_name, value: num of args
33
33
  NoResultAPIs = {
34
- :start => 0,
35
- :detach => 1,
36
- :rebalance => 0,
37
- :compact => 1,
34
+ :start => 0,
35
+ :detach => 1,
36
+ :rebalance => 0,
37
+ :compact => 1,
38
38
  :purge => 1,
39
- :set_endpoint => 1,
40
- :del_endpoint => 1,
39
+ :set_endpoint => 1,
40
+ :del_endpoint => 1,
41
41
  :add_bucket => 2
42
42
  }
43
43
 
@@ -54,14 +54,14 @@ describe LeoFSManager do
54
54
 
55
55
  context "there is no last compaction" do
56
56
  subject do
57
- StorageStat.new(
58
- :active_num_of_objects => 0,
59
- :total_num_of_objects => 0,
60
- :active_size_of_objects => 0,
61
- :total_size_of_objects => 0,
62
- :last_compaction_start => "____-_-__- __:__:__",
63
- :last_compaction_end => "____-_-__- __:__:__"
64
- )
57
+ StorageStat.new(:active_num_of_objects => 0,
58
+ :total_num_of_objects => 0,
59
+ :active_size_of_objects => 0,
60
+ :total_size_of_objects => 0,
61
+ :ratio_of_active_size => "0.0%"
62
+ :last_compaction_start => "____-_-__- __:__:__",
63
+ :last_compaction_end => "____-_-__- __:__:__"
64
+ )
65
65
  end
66
66
 
67
67
  it_behaves_like StorageStat
@@ -83,7 +83,7 @@ describe LeoFSManager do
83
83
  :last_compaction_end => time_str
84
84
  )
85
85
  end
86
-
86
+
87
87
  it_behaves_like StorageStat
88
88
 
89
89
  its(:last_compaction_start) { subject.to_s == time_str }
@@ -128,7 +128,7 @@ describe LeoFSManager do
128
128
  where_info.should be_a AssignedFile
129
129
  where_info.num_of_chunks.should be_a Integer
130
130
  end
131
- end
131
+ end
132
132
  end
133
133
 
134
134
  describe "#du" do
@@ -140,7 +140,7 @@ describe LeoFSManager do
140
140
  describe "#create_user" do
141
141
  it "returns Credential" do
142
142
  subject.create_user("user_id", "password").should be_a Credential
143
- end
143
+ end
144
144
 
145
145
  it "goes with only user_id" do
146
146
  subject.create_user("user_id").should be_a Credential
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: leofs_manager_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.16
5
- prerelease:
4
+ version: 0.4.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Masaki Matsushita
@@ -10,7 +9,7 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-02-21 00:00:00.000000000 Z
12
+ date: 2013-03-12 00:00:00.000000000 Z
14
13
  dependencies: []
15
14
  description: Client for LeoFS Manager
16
15
  email:
@@ -31,27 +30,26 @@ files:
31
30
  - spec/leofs_manager_client_spec.rb
32
31
  homepage: ''
33
32
  licenses: []
33
+ metadata: {}
34
34
  post_install_message:
35
35
  rdoc_options: []
36
36
  require_paths:
37
37
  - lib
38
38
  required_ruby_version: !ruby/object:Gem::Requirement
39
- none: false
40
39
  requirements:
41
40
  - - ! '>='
42
41
  - !ruby/object:Gem::Version
43
42
  version: '0'
44
43
  required_rubygems_version: !ruby/object:Gem::Requirement
45
- none: false
46
44
  requirements:
47
45
  - - ! '>='
48
46
  - !ruby/object:Gem::Version
49
47
  version: '0'
50
48
  requirements: []
51
49
  rubyforge_project:
52
- rubygems_version: 1.8.25
50
+ rubygems_version: 2.0.2
53
51
  signing_key:
54
- specification_version: 3
52
+ specification_version: 4
55
53
  summary: Client for LeoFS Manager
56
54
  test_files:
57
55
  - spec/dummy_tcp_server.rb