Andrey Smirnov
5ce6bf8718
Enable vetshadow linter
2017-05-04 23:00:13 +03:00
Andrey Smirnov
186bb2dff0
Add flag to disable/enable support for legacy pool paths
...
Legacy pool paths are enabled by default, but for new aptly installations
(when aptly config is first generated), it would be disabled explicitly.
2017-04-26 23:37:31 +03:00
Andrey Smirnov
3ce8227122
Add baseName to LinkFromPool as explicit argument
2017-04-26 23:17:04 +03:00
Andrey Smirnov
0bc3f71d27
Use SHA256 as main checksum in the pool
2017-04-26 23:17:04 +03:00
Andrey Smirnov
8078f3b588
We should remove file only when checksums are calculated
2017-04-26 23:17:04 +03:00
Andrey Smirnov
cc34a021ce
Fix misspellings
2017-04-26 23:17:04 +03:00
Andrey Smirnov
10c096fbb6
Update all other pieces for the CheckumStorage and Verify
2017-04-26 23:17:04 +03:00
Andrey Smirnov
a85d8b6f90
Mock for ChecksumStorage
2017-04-26 23:17:04 +03:00
Andrey Smirnov
5566111a7b
New ChecksumStorage and new PackagePool interfaces
2017-04-26 23:17:04 +03:00
Andrey Smirnov
1f3cb2db5d
When downloading/importing packages, enforce all checksums
2017-04-26 23:17:04 +03:00
Andrey Smirnov
bc7903f86e
Rework mirror update (download packages) implementation
...
`PackageDownloadTask` is just a reference to file now. Whole process
was rewritten to follow pattern: download to temp location inside the pool,
verify/update checksums, import into pool as final step.
This removes a lot of edge cases when aptly internal state might be broken
if updating from rogue mirror.
Also this changes whole memory model: package list/files are kept in memory
now during the duration of `mirror update` command and saved to disk
only in the end.
2017-04-26 23:17:03 +03:00
Andrey Smirnov
72d233b587
Final round of updates, everything except mirror download should be ready
2017-04-26 23:17:03 +03:00
Andrey Smirnov
f4ff8d957f
Fix S3 published storage to use new PackagePool interface
...
Change PackagePool to return Seeker interface from Open call.
2017-04-26 23:17:03 +03:00
Andrey Smirnov
7bad358408
Local package pool and local publishing rewritten with new constraints
...
Local package pool now implements more generic package pool API.
The base idea is to never expose full paths to files, so that other
kinds of package pools (e.g. package pool in S3) could be used to implement
the same interface.
Files get into the pool only using `Import` method. `Import` method is
now more smart, it supports moving files into the pool, it can detect if
files reside on the same filesystem and use hardlinking instead of copying.
This will make direct mirror downloads still as fast as they were with previous
version which was performing download directly to package pool.
New package pool doesn't have two things implemented yet:
1. New file placement according to SHA256 or other configured hash
2. Calculate at least SHA256/MD5 for each imported files.
MD5 would be required for S3/Swift publishing
2017-04-26 23:17:03 +03:00
Clemens Rabe
25f9c29f00
Implemented filesystem endpoint with support for hardlinks, symlinks and copy.
2017-04-13 20:25:40 +02:00
Andrey Smirnov
50cf2b49bd
Refactoring: use checksums instead of MD5 for pool/published
...
This is related to #506
As a first step, don't pass MD5 explicitly, pass checksum info object,
so that as a next step we can choose which hash to use.
There should be no functional changes so far.
Next step: stop returning explicit paths from public package pool.
2017-04-01 00:12:31 +03:00
Andrey Smirnov
516dd7b044
Switch to gometalinter
...
Only small amount of required checks is enabled,
plan is to enable more linters as issues are fixed in the code.
2017-03-23 01:51:08 +03:00
Benoit Foucher
7f5a7323a6
Fixed mkdir mode from 755 to 777
2016-03-18 09:37:18 +00:00
Andrey Smirnov
8fcfedf708
Lock down package pool to make sure that we have no concurrent access. #116
2015-02-28 22:10:21 +03:00
Andrey Smirnov
903d4cefba
gofmt -s
2015-02-22 14:29:09 +03:00
Chris Read
daf887e54f
Upgrade gocheck
2014-11-05 13:27:15 -06:00
Andrey Smirnov
2a9871e2e9
We should never ever overwrite files in package pool. #127
2014-10-17 00:54:15 +04:00
Simon Aquino
2173d3ab65
Fix file truncation bug
...
This commix prevents files from being truncated when attempting to add
a hard-linked package which already exists inside the pool directory.
2014-10-16 15:01:36 +01:00
Andrey Smirnov
e07bcf8e51
Fix style and add comments. #90
2014-08-05 14:50:15 +04:00
Andrey Smirnov
da6d5b7cf8
Add 'force' to LinkFromPool method: overwrite file even if exists and different content. #90
2014-08-05 14:50:06 +04:00
Andrey Smirnov
96e878a2e0
Separate out LocalPublishedStorage interface. #15
2014-07-18 17:44:54 +04:00
Andrey Smirnov
b260b0010a
Refactoring: add MD5 to LinkFromPool. #15
2014-07-17 18:04:56 +04:00
Andrey Smirnov
fbf1bc14b7
Refactoring PublishedStorage interface: leave operations suitable for S3. #15
2014-07-17 00:54:44 +04:00
Andrey Smirnov
7e5b2ae8f5
Bugfix: unit-test was creating dirs in source directory.
2014-07-10 21:31:12 +04:00
Andrey Smirnov
ebc47f7d5d
Add unit-test. #65
2014-06-11 20:32:45 +04:00
Andrey Smirnov
082fda62b5
Add unit-test. #66
2014-06-11 20:28:56 +04:00
Andrey Smirnov
3199fd85fb
Fix publish updating (switching) for empty -> empty scenario. #66
2014-06-11 20:27:49 +04:00
Andrey Smirnov
0c6951fcd2
When linking, check that inode file matches if linking to same file. #65
...
Otherwise files from conflicting packages might override each other in the published
pool. This is explicitly POSIX-only.
2014-06-11 20:03:34 +04:00
Andrey Smirnov
8963cd8027
Use progress when printing. #8
2014-04-22 17:19:10 +04:00
Andrey Smirnov
d69eaeff4e
New methods for public root: Filelist and Remove. #8
2014-04-22 17:05:32 +04:00
Andrey Smirnov
1bac201687
Refactoring: build pool path in Package. #8
2014-04-22 16:20:51 +04:00
Andrey Smirnov
c70c196420
Renaming files in public area. #8
2014-04-22 10:40:17 +04:00
Andrey Smirnov
e0cb43fbd3
Style fixes.
2014-02-25 14:25:14 +04:00
Andrey Smirnov
65c790b6cf
Importing files to package pool.
2014-02-24 23:45:17 +04:00
Andrey Smirnov
bd119dbfed
Style fixes.
2014-02-19 12:54:19 +04:00
Andrey Smirnov
d1e16a0ef0
Refactor Repository: split into PackagePool and PublishedStorage.
2014-02-19 12:03:01 +04:00