sdr-replication 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/replication/replica.rb +30 -2
- data/lib/replication/sdr_object_version.rb +17 -15
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 11801a3c77b94dd4ef2c8af7992a033f8d9856c9
|
4
|
+
data.tar.gz: d8f5d7e38d26f467d6ce3304d5ddff0b8b2aff88
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44e904744f21d27d7ee036181964230b96fbcee1c3a65c21db9aac2678bf0b3e2f7c72a6b19220ba2f6411f60d0ea4a0d5f3df504c7b3b872e5095b313fc8c75
|
7
|
+
data.tar.gz: 92fe706d2524991354ef61d2b9e63580754f8dd66c33939b62eac634e83cceaae55e225f67f304ded997acfb2a783537c195b2186dbeb7ffb417268306162809
|
data/lib/replication/replica.rb
CHANGED
@@ -52,8 +52,36 @@ module Replication
|
|
52
52
|
end
|
53
53
|
|
54
54
|
# @return [Pathname] The location of the replica bag
|
55
|
-
def
|
56
|
-
|
55
|
+
def bag_pathname
|
56
|
+
@@replica_cache_pathname.join(@home_repository,@replica_id)
|
57
|
+
end
|
58
|
+
|
59
|
+
# @return [Replica] Open the replica's bag and extract its properties
|
60
|
+
def get_bag_data
|
61
|
+
bag = BagitBag.open_bag(bag_pathname)
|
62
|
+
@create_date = UtcTime.output(bag_pathname.ctime)
|
63
|
+
size_hash = bag.info_payload_size
|
64
|
+
@payload_size = size_hash[:bytes]
|
65
|
+
file_fixity_hash = bag.read_manifest_files('manifest')
|
66
|
+
tarfile_fixity = file_fixity_hash.values.first
|
67
|
+
checksums = tarfile_fixity.checksums
|
68
|
+
@payload_fixity_type = checksums.keys.last.to_s
|
69
|
+
@payload_fixity = checksums[@payload_fixity_type.to_sym]
|
70
|
+
self
|
71
|
+
end
|
72
|
+
|
73
|
+
# @return [Boolean] Update the replicas table of the Archive Catalog
|
74
|
+
def update_replica_data
|
75
|
+
replica_data = {
|
76
|
+
:replica_id => @replica_id,
|
77
|
+
:home_repository => @home_repository,
|
78
|
+
:create_date => @create_date,
|
79
|
+
:payload_size => @payload_size,
|
80
|
+
:payload_fixity_type => @payload_fixity_type,
|
81
|
+
:payload_fixity => @payload_fixity
|
82
|
+
}
|
83
|
+
ArchiveCatalog.find_or_create_item(:replicas, replica_data)
|
84
|
+
true
|
57
85
|
end
|
58
86
|
|
59
87
|
end
|
@@ -8,18 +8,19 @@ module Replication
|
|
8
8
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
9
9
|
class SdrObjectVersion < Moab::StorageObjectVersion
|
10
10
|
|
11
|
+
# @return [String] The digital object's identifier (druid)
|
11
12
|
def digital_object_id
|
12
13
|
storage_object.digital_object_id
|
13
14
|
end
|
14
15
|
|
15
16
|
# @return [Moab::FileInventory] The moab version manifest for the version
|
16
17
|
def version_inventory
|
17
|
-
|
18
|
+
file_inventory('version')
|
18
19
|
end
|
19
20
|
|
20
21
|
# @return [Moab::FileInventory] The moab version manifest for the version
|
21
22
|
def version_additions
|
22
|
-
|
23
|
+
file_inventory('additions')
|
23
24
|
end
|
24
25
|
|
25
26
|
# @return [Hash] The contents of the versionMetadata file
|
@@ -65,6 +66,7 @@ module Replication
|
|
65
66
|
metadata
|
66
67
|
end
|
67
68
|
|
69
|
+
# @return [Boolean] Update digital_objects and sdr_objects tables in Archive Catalog
|
68
70
|
def update_object_data
|
69
71
|
|
70
72
|
identity_metadata = parse_identity_metadata
|
@@ -90,10 +92,13 @@ module Replication
|
|
90
92
|
ArchiveCatalog.update_item(:sdr_objects, digital_object_id, sdr_object_data)
|
91
93
|
end
|
92
94
|
|
95
|
+
true
|
93
96
|
end
|
94
97
|
|
98
|
+
# @return [Boolean] Update sdr_object_versions and sdr_version_stats tables in Archive Catalog
|
95
99
|
def update_version_data
|
96
100
|
|
101
|
+
version_inventory = self.version_inventory
|
97
102
|
sdr_object_version_data = {
|
98
103
|
:sdr_object_id => digital_object_id,
|
99
104
|
:sdr_version_id => version_id,
|
@@ -118,6 +123,7 @@ module Replication
|
|
118
123
|
}
|
119
124
|
ArchiveCatalog.find_or_create_item(:sdr_version_stats, sdr_version_full)
|
120
125
|
|
126
|
+
version_additions = self.version_additions
|
121
127
|
content = version_additions.group('content')
|
122
128
|
metadata = version_additions.group('metadata')
|
123
129
|
sdr_version_delta = {
|
@@ -133,28 +139,24 @@ module Replication
|
|
133
139
|
}
|
134
140
|
ArchiveCatalog.find_or_create_item(:sdr_version_stats, sdr_version_delta)
|
135
141
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
# @return [String] The unique identifier for the digital object replica
|
140
|
-
def replica_id
|
141
|
-
@replica_id ||= "#{storage_object.digital_object_id.split(':').last}-#{version_name}"
|
142
|
+
true
|
142
143
|
end
|
143
144
|
|
144
145
|
# @return [Replica] The Replica of the object version that is archived to tape, etc
|
145
146
|
def replica
|
146
|
-
|
147
|
+
Replica.new(composite_key.sub(/^druid:/,''), 'sdr')
|
147
148
|
end
|
148
149
|
|
149
|
-
# @return [
|
150
|
-
def
|
151
|
-
|
152
|
-
bag = BagitBag.create_bag(
|
150
|
+
# @return [Replica] Copy the object version into a BagIt Bag in tarfile format
|
151
|
+
def create_replica
|
152
|
+
replica = self.replica
|
153
|
+
bag = BagitBag.create_bag(replica.bag_pathname)
|
153
154
|
bag.bag_checksum_types = [:sha256]
|
154
|
-
bag.add_payload_tarfile("#{replica_id}.tar",version_pathname, storage_object.object_pathname.parent)
|
155
|
+
bag.add_payload_tarfile("#{replica.replica_id}.tar",version_pathname, storage_object.object_pathname.parent)
|
155
156
|
bag.write_bag_info_txt
|
156
157
|
bag.write_manifest_checksums('tagmanifest', bag.generate_tagfile_checksums)
|
157
|
-
bag
|
158
|
+
replica.bagit_bag = bag
|
159
|
+
replica
|
158
160
|
end
|
159
161
|
|
160
162
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sdr-replication
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Richard Anderson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json_pure
|
@@ -202,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
202
|
version: 2.2.1
|
203
203
|
requirements: []
|
204
204
|
rubyforge_project:
|
205
|
-
rubygems_version: 2.
|
205
|
+
rubygems_version: 2.4.1
|
206
206
|
signing_key:
|
207
207
|
specification_version: 4
|
208
208
|
summary: Core methods for support of SDR Preservation Core replication
|