Harshavardhana
379e0abf03
cleanup: Remove old donut/xl code and erasure implementation.
...
This is a change to bring in 'klauspost/reedsolomon' library
in #1270 patch.
2016-04-02 17:30:35 -07:00
Harshavardhana
6037fe66e9
minio: Simplify for gosimple
tool complaints.
2016-04-02 17:28:54 -07:00
Harshavardhana
efc80343e3
fs: Break fs package to top-level and introduce ObjectAPI interface.
...
ObjectAPI interface brings in changes needed for XL ObjectAPI layer.
The new interface for any ObjectAPI layer is as below
```
// ObjectAPI interface.
type ObjectAPI interface {
// Bucket resource API.
DeleteBucket(bucket string) *probe.Error
ListBuckets() ([]BucketInfo, *probe.Error)
MakeBucket(bucket string) *probe.Error
GetBucketInfo(bucket string) (BucketInfo, *probe.Error)
// Bucket query API.
ListObjects(bucket, prefix, marker, delimiter string, maxKeys int) (ListObjectsResult, *probe.Error)
ListMultipartUploads(bucket string, resources BucketMultipartResourcesMetadata) (BucketMultipartResourcesMetadata, *probe.Error)
// Object resource API.
GetObject(bucket, object string, startOffset int64) (io.ReadCloser, *probe.Error)
GetObjectInfo(bucket, object string) (ObjectInfo, *probe.Error)
PutObject(bucket string, object string, size int64, data io.Reader, metadata map[string]string) (ObjectInfo, *probe.Error)
DeleteObject(bucket, object string) *probe.Error
// Object query API.
NewMultipartUpload(bucket, object string) (string, *probe.Error)
PutObjectPart(bucket, object, uploadID string, partID int, size int64, data io.Reader, md5Hex string) (string, *probe.Error)
ListObjectParts(bucket, object string, resources ObjectResourcesMetadata) (ObjectResourcesMetadata, *probe.Error)
CompleteMultipartUpload(bucket string, object string, uploadID string, parts []CompletePart) (ObjectInfo, *probe.Error)
AbortMultipartUpload(bucket, object, uploadID string) *probe.Error
}
```
2016-04-01 15:58:39 -07:00
Harshavardhana
1502e2f29f
Merge pull request #1265 from vadmeste/add_fbsd_support
...
Add simple FreeBSD support, make the minio project compilable
2016-03-26 22:28:07 -07:00
Harshavardhana
9dca46e156
signature: Use a layered approach for signature verification.
...
Signature calculation has now moved out from being a package to
top-level as a layered mechanism.
In case of payload calculation with body, go-routines are initiated
to simultaneously write and calculate shasum. Errors are sent
over the writer so that the lower layer removes the temporary files
properly.
2016-03-26 15:21:05 -07:00
Anis Elleuch
663f24064b
Add simple FreeBSD support, make the minio project compilable
2016-03-26 22:39:34 +01:00
Harshavardhana
aaf97ea02c
config/main: Re-write config files - add to new config v3
...
- New config format.
```
{
"version": "3",
"address": ":9000",
"backend": {
"type": "fs",
"disk": "/path"
},
"credential": {
"accessKey": "WLGDGYAQYIGI833EV05A",
"secretKey": "BYvgJM101sHngl2uzjXS/OBF/aMxAN06JrJ3qJlF"
},
"region": "us-east-1",
"logger": {
"file": {
"enable": false,
"fileName": "",
"level": "error"
},
"syslog": {
"enable": false,
"address": "",
"level": "debug"
},
"console": {
"enable": true,
"level": "fatal"
}
}
}
```
New command lines in lieu of supporting XL.
Minio initialize filesystem backend.
~~~
$ minio init fs <path>
~~~
Minio initialize XL backend.
~~~
$ minio init xl <url1>...<url16>
~~~
For 'fs' backend it starts the server.
~~~
$ minio server
~~~
For 'xl' backend it waits for servers to join.
~~~
$ minio server
... [PROGRESS BAR] of servers connecting
~~~
Now on other servers execute 'join' and they connect.
~~~
....
minio join <url1> -- from <url2> && minio server
minio join <url1> -- from <url3> && minio server
...
...
minio join <url1> -- from <url16> && minio server
~~~
2016-03-23 19:16:09 -07:00
Karthic Rao
c8570edaab
Issue of 'mc ls' when prefix is a directory fixed, tests added for GetObjectInfo
2016-03-23 19:42:04 +05:30
Karthic Rao
7be79b507b
Changing to empty response when prefixDir doesn't exist
2016-03-23 04:46:10 +05:30
Karthic Rao
ff41c050d5
Formatting issues fixed.
2016-03-22 15:55:29 +05:30
Karthic Rao
b55922effe
Fix for Istruncated set to true under certain conditions.
...
Optimizing List Objects by using binary sort to discard entries in cases
where prefix or marker is set.
Adding test coverage to ListObjects.
Adding benchmark to ListObjects.
2016-03-22 10:09:16 +05:30
Karthic Rao
99af0444b7
Handling maxKeys=0 case with a empty response
2016-03-18 15:16:30 +05:30
Harshavardhana
88714e7c8e
bucketpolicy: Improve bucket policy validation, avoid nested rules.
...
Bucket policy validation is more stricter now, to avoid nested
rules. The reason to do this is keep the rules simpler and more
meaningful avoiding conflicts.
This patch implements stricter checks.
Example policy to be generally avoided.
```
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:GetObject",
"s3:DeleteObject"
],
"Effect": "Allow",
"Principal": {
"AWS": [
"*"
]
},
"Resource": [
"arn:aws:s3:::jarjarbing/*"
]
},
{
"Action": [
"s3:GetObject",
"s3:DeleteObject"
],
"Effect": "Deny",
"Principal": {
"AWS": [
"*"
]
},
"Resource": [
"arn:aws:s3:::jarjarbing/restic/key/*"
]
}
]
}
```
2016-03-15 17:50:23 -07:00
Brendan Ashworth
583e4ecff6
pkg/fs: optimize GetObject syscalls for common case
...
In the common case, GetObject is called on a bucket that exists and an
object that exists and is not a directory. It should be optimized for
this case, thus error-related syscalls are pushed back until they are
necessary.
This should not impact performance negatively in the uncommon case, and
instead drops two otherwise unnecessary os.Stat's in the common case.
The race conditions around a proper error being returned were present
beforehand.
It also renames 'err' to 'e'.
2016-03-13 13:56:33 -07:00
Brendan Ashworth
b2257682e4
pkg/fs: add benchmark for GetObject
...
This commit adds a benchmark for GetObject. It doesn't leverage the I/O
as much because it uses short text for data, just 58 chars.
2016-03-13 11:13:06 -07:00
Karthic Rao
53a76439a2
test for GetBucketInfo
2016-03-12 14:31:30 +05:30
Harshavardhana
5282a79eda
cleanup: Remove unecessary packages and tests. Simplify.
2016-03-11 19:53:55 -08:00
Harshavardhana
52751d81cb
cleanup: Rename ObjectMetadata as ObjectInfo.
...
Fixes #1215
2016-03-11 16:58:08 -08:00
Karthic Rao
ec8c1d4ef6
Better structuring of fs-utils test
2016-03-11 19:19:47 +05:30
Harshavardhana
fdf3d64793
error: Add proper prefixes for s3Error codes.
...
This patch adds 'Err' prefix for all standard API
error codes and also adds a proper type for them.
2016-03-10 18:38:46 -08:00
Anand Babu (AB) Periasamy
373d335d94
Merge pull request #1214 from brendanashworth/improve-listbuckets
...
ListBuckets test & improvement, IsValid{Bucket,Object}Name fix, test, docs
2016-03-10 18:20:18 -08:00
Bala.FA
c70bc2209e
api: refactor list object handling in fs backend
...
When list object is invoked, it creates a goroutine if not available
for given parameters else uses existing goroutine. These goroutines
are alive for 15 seconds for further continuation list object request
else they exit.
Fixes #1076
2016-03-11 02:20:51 +05:30
Harshavardhana
d5057b3c51
accessPolicy: Implement Put, Get, Delete access policy.
...
This patch implements Get,Put,Delete bucket policies
Supporting - http://docs.aws.amazon.com/AmazonS3/latest/dev/access-policy-language-overview.html
Currently supports following actions.
"*": true,
"s3:*": true,
"s3:GetObject": true,
"s3:ListBucket": true,
"s3:PutObject": true,
"s3:CreateBucket": true,
"s3:GetBucketLocation": true,
"s3:DeleteBucket": true,
"s3:DeleteObject": true,
"s3:AbortMultipartUpload": true,
"s3:ListBucketMultipartUploads": true,
"s3:ListMultipartUploadParts": true,
following conditions for "StringEquals" and "StringNotEquals"
"s3:prefix", "s3:max-keys"
2016-03-08 17:44:50 -08:00
Brendan Ashworth
cd3eb63c4a
pkg/fs: test, document, and fix IsValid{Bucket,Object}Name
...
This commit improves the docs for both functions (more Go-like) and
drops an unnecessary condition in IsValidBucketName. This also drops a
condition in IsValidObjectName where "" (empty string) was a valid
object name. This has been fixed and will no longer return true.
This commit also adds tests for both functions, including a regression
test for the bug fix.
2016-03-07 19:59:24 -08:00
Brendan Ashworth
a5d0bef4e2
pkg/fs: test, bench, and drop unnecessary check in ListBuckets
...
There is now a simple test and a benchmark for ListBuckets. I also
dropped an unnecessary check that was simply repeated from above,
guaranteed to be true.
2016-03-07 19:58:33 -08:00
Brendan Ashworth
fab45aae40
pkg/fs: add bucket test and benchmarks
...
Lots of useful benchmarks and a simple test addition!
2016-03-07 00:07:11 -08:00
Brendan Ashworth
7399d8ceaa
pkg/fs: skip unnecessary os.Stat system call
2016-03-07 00:07:11 -08:00
Brendan Ashworth
0a0451a0fb
pkg/fs: DRY SetBucketMetadata
...
It had a lot of code that was the same as GetBucketMetadata, so instead
call GBM from SBM so as to reduce doing the same thing in two different
spots. Theoretically this will induce a small overhead as now at least
two calls of denormalizeBucket are made, although this shouldn't be
noticeable.
2016-03-07 00:07:11 -08:00
Brendan Ashworth
294ea814bf
pkg/fs: for locks, prefer defer and read-only ops
...
This commit prefers the use of 'defer' for fs.Unlock (and fs.RUnlock)
because it is more idiomatic Go and reduces repetition in the code,
lending to a cleaner code base.
It also switches a few uses of the lock to read-only locks, which should
improve performance of those functions dramatically in certain contexts.
2016-03-07 00:07:11 -08:00
Harshavardhana
aed62788d9
api: Implement multiple objects Delete api - fixes #956
...
This API takes input XML input in following form.
```
<?xml version="1.0" encoding="UTF-8"?>
<Delete>
<Quiet>true</Quiet>
<Object>
<Key>Key</Key>
</Object>
<Object>
<Key>Key</Key>
</Object>
...
</Delete>
```
and responds the list of successful deletes, list of errors
for all the deleted objects.
```
<?xml version="1.0" encoding="UTF-8"?>
<DeleteResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/ ">
<Deleted>
<Key>sample1.txt</Key>
</Deleted>
<Error>
<Key>sample2.txt</Key>
<Code>AccessDenied</Code>
<Message>Access Denied</Message>
</Error>
</DeleteResult>
```
2016-03-06 18:31:50 -08:00
Harshavardhana
f111997184
multipart: remove proper MD5, rather create MD5 based on parts to be s3 compatible.
...
This increases the performance phenominally.
2016-03-02 14:20:49 -08:00
Harshavardhana
17d145df3a
signature: Fix signature handling of parallel requests.
...
Signature struct should be immutable, this fixes an issue
with AWS cli not being able to do multipart put operations.
2016-03-02 11:49:50 -08:00
Karthic Rao
6651f5b368
go vet shadow error patch
2016-03-02 09:55:00 +05:30
Harshavardhana
c7021f6a95
list: Fix handling of maxKeys and prefixes.
...
This fixes a problem of requeuing the same request
and also fixes a major problem of sending truncated
for full key prefixes.
Fixes #1177
2016-03-01 17:34:31 -08:00
Harshavardhana
3ff8a1b719
api: Implement CopyObject s3 API, doing server side copy.
...
Fixes #1172
2016-02-27 19:51:59 -08:00
Harshavardhana
408aa72146
build/vet: Fix all the shadowing reports with go1.6
...
Golang 1.6 is default version for the build now.
Additionally set 'GODEBUG=cgocheck=0' for now, until
we fix the erasure coding package.
Readmore here https://tip.golang.org/doc/go1.6#cgo
2016-02-23 14:34:39 -08:00
Anand Babu (AB) Periasamy
07da31f8b8
Merge pull request #1150 from harshavardhana/signature
...
signV4: Move pkg/signature to pkg/s3/signature4
2016-02-23 12:39:28 +05:30
Harshavardhana
653ceee9ee
signV4: Move pkg/signature to pkg/s3/signature4
...
Cleanup and move this to relevant path.
2016-02-22 22:47:09 -08:00
Harshavardhana
800b19d8e5
cleanup: Remove definitions and move them to its relative places accordingly
...
- Move fs-definitions.go and break them into fs-datatypes.go, fs-bucket-acl.go
and fs-utils.go
- Move api-definitions.go to api-response.go, where they should be.
- Move web-definitions to its related handlers.
2016-02-22 10:41:27 -08:00
Harshavardhana
91a092792a
presigned: Fix a bug in presigned request verification.
...
Additionally add Docker proxy configuration.
2016-02-18 02:23:12 -08:00
Harshavardhana
dd9aaa855c
web/rpc: Merge ports with API server.
...
Fixes #1081 and #1130
2016-02-17 20:28:15 -08:00
Harshavardhana
5a9333a67b
signature: Rewrite signature handling and move it into a library.
2016-02-16 17:28:16 -08:00
Harshavardhana
9e10ee7e47
cpu: Remove pkg/cpu in favor of better klauspost/cpuid.
...
Fixes #1128
2016-02-15 13:50:33 -08:00
Anand Babu (AB) Periasamy
bbca70e13b
rewrite minio runtime checks
2016-02-15 17:56:56 +05:30
Harshavardhana
fbab7128d5
fs/multipart: Handle un-ordered creation of multiparts.
...
Fixes #1125
2016-02-14 00:39:15 -08:00
Harshavardhana
62f6ffb6db
xl: Moved to minio/minio - fixes #1112
2016-02-11 15:43:36 -08:00
Harshavardhana
6e9d73426b
pkg/ioutils: True should be true
2016-02-10 13:33:36 -08:00
Bala.FA
5e4b13f4bd
remove unused functions
2016-02-10 13:32:53 -08:00
Bala.FA
255505a83b
pkg/ioutils: remove usage of os.Lstat() in FTW()
...
As os.Readdir() is used get file entries where statinfo is already
present. This patch fixes to use statinfo provided by os.Readdir().
2016-02-10 13:32:53 -08:00
Harshavardhana
9b29af8bbe
listObjects: list objects minor optimization.
...
Minor optimization.
- Add 1000 entries buffered channel for walkerCh.
- Reset marker after the lexical order has reached and
compare only if the marker is set.
2016-02-09 21:45:19 -08:00
Harshavardhana
42fcb27308
pkg/user: Support 32bit darwin in user package.
2016-02-08 01:34:25 -08:00
Harshavardhana
99fbc0fcb3
getObject: Add support for special response headers.
...
Supports now response-content-type, response-content-disposition,
response-cache-control, response-expires.
2016-02-07 03:55:16 -08:00
Harshavardhana
f4c8120cf9
server: Remove max-buckets option and now max buckets is unlimited.
...
minio server max-buckets option removed. min-free-disk option is
now a flag.
2016-02-06 18:25:47 -08:00
Harshavardhana
4e6e78598f
multipart: Increase locked critical for CompleteMultipart.
2016-02-06 01:46:05 -08:00
Harshavardhana
8df201ef30
multipart: Multipart session map now is based on uploadID.
...
- Fixes initiating parallel uploads, and configs being quickly
re-written by another incoming request.
- Parallel uploads work smoothly now and return expected behavior.
2016-02-05 23:32:30 -08:00
Harshavardhana
69bd001c8b
multipart: Multipart resume simplify further.
2016-02-05 17:40:08 -08:00
Harshavardhana
8bf1045645
setBucketMetadata: Fix a deadlock.
2016-02-05 15:48:08 -08:00
Harshavardhana
6f80380497
fs: Use mimedb now.
2016-02-05 15:09:23 -08:00
Harshavardhana
35dcccb4cd
Merge remote-tracking branch 'abperiasamy/mimedb' into mimedb
2016-02-05 15:03:47 -08:00
Harshavardhana
a4c005ce30
multipart: Code cleanup
...
- More locking cleanup. Fix naming convention.
- Simplify concatenation and blocking calls.
2016-02-05 14:42:09 -08:00
Anand Babu (AB) Periasamy
d8abb36653
contentdb replaced by new mimedb
2016-02-05 03:49:24 -08:00
Harshavardhana
8557cbc9b7
fs: Add granular locking.
2016-02-04 20:40:58 -08:00
Harshavardhana
7a3409c309
fs: Cleanup Golang errors to be called 'e' and probe to be called as 'err'
...
- Replace the ACL checks back, remove them when bucket
policy is implemented.
- Move FTW (File Tree Walk) into ioutils package.
2016-02-04 13:43:52 -08:00
Harshavardhana
835b297ba7
fs: Fail createObject with appropriate message.
...
Fail createObject() if a file already exists and one attempts
to create a prefix/directory by same name.
Send an approriate error back to the client as 409 Conflict.
2016-02-03 21:49:36 -08:00
Harshavardhana
454d71cafa
expiry: Remove auto-expiry.
...
Move the logic outside and use scripting, cronjob to delete files.
Fixes #1019
2016-02-02 19:35:51 -08:00
Harshavardhana
81fcbd2a54
statObject: Make sure to lowercase file extensions.
2016-02-02 17:54:59 -08:00
Harshavardhana
0aedb67de0
contentType: Reply back proper contentTypes based on the file extension.
...
Currently the server would set 'application/octet-stream' for all
objects, set this value based on the file extension transparently.
This is useful in case of minio browser to facilitate displaying
proper icons for the different mime data types.
2016-02-01 12:19:58 -08:00
Harshavardhana
2469c9c591
presign: Verify query params for presign individually
...
Incoming request params in presigned can come in different order
for different implementations. Rather than verifying a full string
we should verify individual params instead.
This patch fixes an incompatibility issue with AWS SDK Java.
Fixes #1059 - Thanks to @notnoopci for reporting this problem.
2016-01-28 12:16:56 -08:00
Harshavardhana
5934a00058
listObjects: ListObjects should have idempotent behavior.
...
listObjects was returning inconsistent results, i.e missing
entries during recursive and non-recursive listing. This led
to 'mc mirror' copying contents repeatedly consisdering
these files to be missing on the destination.
This patch addresses this problem - fixes #1056
2016-01-28 03:17:40 -08:00
Harshavardhana
db387912f2
jwt: Deprecate RSA usage, use HMAC instead.
...
HMAC is a much simpler implementation, providing the same
benefits as RSA, avoids additional steps and keeps the code
simpler.
This patch also additionally
- Implements PutObjectURL API.
- GetObjectURL, PutObjectURL take TargetHost as another
argument for generating URL's for proper target destination.
- Adds experimental TLS support for JSON RPC calls.
2016-01-27 03:38:33 -08:00
Harshavardhana
9ca3372870
listObjects: Marker should be unescaped before being used internally.
...
Without this change listObjects() goes into an infinite loop for
files which have special characters i.e "++" encoded with "%2B%2B".
We have to unescape and convert them to their native representation
before being used internally.
Fixes #1052
2016-01-26 23:32:59 -08:00
Harshavardhana
5d87fdb35c
Merge pull request #1051 from harshavardhana/fix-multipart
...
multipart: NewMultipartUpload shouldn't return empty UploadID
2016-01-26 15:15:44 -08:00
Harshavardhana
2e311168ee
multipart: NewMultipartUpload shouldn't return empty UploadID
...
Existing code
```
{
if os.IsNotExist(e) {
e = os.MkdirAll(objectDir, 0700)
if e != nil {
return "", probe.NewError(e)
}
}
return "", probe.NewError(e) ---> Error was here.
}
```
For a successful 'MkdirAll' it would still return an empty uploadID,
but the 'error' would be nil. This would succeed the request but
client would fail.
Fix is to re-arrange the logic. Thanks to Alexander Neumann @fd0, for
reporting this problem.
2016-01-26 15:00:34 -08:00
Harshavardhana
18375b7794
ioutils: Add tests
2016-01-26 12:34:04 -08:00
Harshavardhana
1341fb79c3
listBuckets: Bump up the limit of max buckets to 1000.
2016-01-26 11:49:17 -08:00
Harshavardhana
f5d6be158e
listObjects: Simplify channel based changes.
2016-01-26 02:19:55 -08:00
Harshavardhana
682020ef2f
listObjects: Channel based changes.
...
Supports:
- prefixes
- marker
2016-01-25 20:39:38 -08:00
Krishna Srinivas
9e18bfa60e
listObjects: Channel based ftw - initial implementation.
2016-01-25 18:58:07 -08:00
Harshavardhana
2ec9b16667
deleteBucket: Directory not empty error on windows is "directory is not empty"
2016-01-25 17:58:43 -08:00
Harshavardhana
ae2f15c6d0
api: More cleanups at WebAPI.
...
- Fixes a bug where bucketName was not denormalized.
- Remove unneeded functions from jwt.go
2016-01-25 17:30:08 -08:00
Harshavardhana
497f13d733
api: Various fixes.
...
- limit list buckets to limit only 100 buckets, all uppercase buckets
are now lowercase and work transparently with all calls.
- Change disk.Stat to disk.GetInfo and return back disk.Info{} struct.
- Introduce new ioutils package which implements ReadDirN(path, n),
ReadDirNamesN(path, n)
2016-01-25 16:08:27 -08:00
Harshavardhana
8cdaf87c8f
signature: Add aws-cli work-around for now.
...
Golang http server strips off 'Expect' header, if the
client sent this as part of signed headers we need to
handle otherwise we would see a signature mismatch.
`aws-cli` sets this as part of signed headers which is
a bad idea since servers trying to implement AWS
Signature version '4' will all encounter this issue.
According to
http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.20
Expect header is always of form:
Expect = "Expect" ":" 1#expectation
expectation = "100-continue" | expectation-extension
So it safe to assume that '100-continue' is what would
be sent, for the time being keep this work around.
2016-01-09 10:47:59 -08:00
Harshavardhana
d955ce4123
s3cmd: Fix signature issues related to s3cmd.
...
Support regions both 'us-east-1' and 'US' (short hand for US Standard)
honored by S3.
2015-12-28 18:05:28 -08:00
Harshavardhana
1bfb490f90
pkg/user: Add pending tests.
2015-12-07 14:13:54 -08:00
Harshavardhana
4fc161ddb1
bucketName: relax bucket names, now allow numbers as starting characters.
2015-12-07 13:58:55 -08:00
Harshavardhana
836f5204af
minio: Add config-folder option.
...
Fixes #997
2015-12-07 12:34:09 -08:00
Anand Babu (AB) Periasamy
8e8538175b
fixes race in Init
2015-12-03 01:08:05 -08:00
Anand Babu (AB) Periasamy
25df427383
contentdb file.ext to content-type lookups
2015-12-02 16:55:26 -08:00
Harshavardhana
7c91a8495f
signature/region: Remove 'milkyway' and use 'us-east-1' as default.
...
Fixes #980
2015-11-23 13:40:23 -08:00
Harshavardhana
a328120e4d
fs: Filter out $multiparts properly.
...
Relax md5 requirement during complete multipart upload - ref #977
2015-11-22 01:49:57 -08:00
Harshavardhana
35b9f965f1
fs: use new atomic package - use FileCreateWithPrefix() API
2015-11-17 16:32:20 -08:00
Harshavardhana
f8e59e8399
386: Support minio server on 32bit linux.
2015-11-14 00:29:18 -08:00
Harshavardhana
d668117a99
fs: Improve upon proper lexical ordering for ListObjects()
...
Handle sorting properly making sure that we treat fs like a
flat namespace.
2015-11-11 14:52:03 -08:00
Krishna Srinivas
440bec28d9
docker: the docker image will now contain just the static binary
2015-11-06 20:44:58 -08:00
Harshavardhana
ab15f56a61
fs/bucket: Move bucket metadata into buckets.json
2015-11-01 21:25:01 -08:00
Harshavardhana
baf66988e9
Simplify bucket delete - remove only bucket directory, no need to recursively traverse
2015-10-30 16:03:18 -07:00
Krishna Srinivas
0010f0ee10
Remove empty directories while removing an oobject
2015-10-29 23:30:16 -07:00
Harshavardhana
53adfb38f4
Leverage sort Interface to provide sortUnique function
2015-10-23 15:55:41 -07:00
Harshavardhana
dbaa4d8643
Move ListObjects into its own file
2015-10-22 15:39:04 -07:00
Harshavardhana
1f66f4869b
Fix all remaining windows path issues.
2015-10-22 00:05:10 -07:00
Harshavardhana
afa27b9847
On windows translate Prefix, Marker and Delimiter for paths
2015-10-21 22:00:03 -07:00
Harshavardhana
b74852116a
Fix portability issues for arm on raspberry pi
2015-10-20 11:22:00 -07:00
Harshavardhana
dddb1650de
Add 5% cumulative reduction in total size of the disk
...
This is done due to filesystem holding additional metadata and inode space
which is unaccounted for during min-free-disk calculation.
2015-10-19 10:33:34 -07:00
Harshavardhana
179d2d7dac
Add initial cut of auto expiry of objects
2015-10-19 01:34:31 -07:00
Harshavardhana
c065be656c
Implement min-free-disk as a subcommand, deprecate flag
2015-10-19 00:59:20 -07:00
Harshavardhana
5b2fa33bdb
Implementing min-free-disk
2015-10-18 00:23:14 -07:00
Harshavardhana
a8a935f5fd
Improve disk code to return back disk StatFS{} structure
...
```
StatFS {
Total int64
Free int64
FSType string
}
```
Provides more information in a cross platform way.
2015-10-17 20:19:26 -07:00
Harshavardhana
aee0845b2e
Add disk package
...
Implements
- Stat returns total and free disk space supported across platforms
- Type returns type of the filesystem underneath
2015-10-17 16:48:24 -07:00
Harshavardhana
1256ca86d0
Add fs separator
2015-10-17 12:05:12 -07:00
Harshavardhana
2ec679a089
If directory already removed, return nil and move on
2015-10-17 00:13:46 -07:00
Harshavardhana
d534fc5a4f
Implement delete bucket properly with proper error handlings
2015-10-17 00:01:12 -07:00
Harshavardhana
c9af01d807
Enhance listing further, this time handle cases related to common prefixes
2015-10-16 23:11:41 -07:00
Harshavardhana
0eb7f078f9
Implement Bucket ACL support
2015-10-16 19:47:30 -07:00
Harshavardhana
762b798767
Migrate this project to minio micro services code
2015-10-16 11:26:08 -07:00
Harshavardhana
3318cba132
Add windows support for minhttp library
2015-10-11 01:08:16 -07:00
Harshavardhana
7fea9cb550
Add rpc signature handler
2015-10-08 22:28:11 -07:00
Harshavardhana
11048708bb
Implement GetBucketACL - fixes #893
2015-10-08 11:12:44 -07:00
Anand Babu (AB) Periasamy
bf901d3b9a
Merge pull request #895 from abperiasamy/tasker
...
new task model minio server
2015-10-08 02:23:29 -07:00
Anand Babu (AB) Periasamy
b52697e6ad
new task model minio server
2015-10-08 02:20:24 -07:00
Harshavardhana
a060b158c8
Add quick.CheckVersion() to verify config version quickly before unmarshalling the full struct
...
This is needed during migration where we would need to verify the underlying version number
in a quick way.
2015-10-07 17:44:33 -07:00
Harshavardhana
ab5ea997ab
Make erasure Encode and Decode atomic to avoid races
2015-10-06 23:05:01 -07:00
Harshavardhana
1b42398e8b
Canonicalize all the incoming input values, now PresignedPostPolicy works with minio-go
2015-10-06 10:21:28 -07:00
Harshavardhana
d5ce2f6944
Make erasure matrix type not optional choose automatically
...
Remove option of providing Technique and handling errors based on that
choose a matrix type automatically based on number of data blocks.
INTEL recommends on using cauchy for consistent invertible matrices,
while vandermonde is faster we should default to cauchy for large
data blocks.
2015-10-05 22:38:02 -07:00
Harshavardhana
4ed50a8004
Fix encoding bug in donut during encoding phase
...
Stream reading needs to check for length parameter being non zero,
after Reading() a predefined set of buffer length an EOF might be returned
with length == 0.
Erasure taking this zeroed data in might wrongly encode it as part of existing
data blocks which leads to errors while decoding even when the other contents
are intact.
2015-10-05 22:12:53 -07:00
Harshavardhana
f0a8dbecae
Add --json output formatter for server
2015-10-05 00:20:49 -07:00
Harshavardhana
c4faf47e64
First time mode for controller
...
- Upon first time invocation ``minio controller`` would create access keys and secret id
- Upon request passing 'keys' arg ``minio controller`` would provide the keys
- Add colorized notification
2015-10-04 16:42:16 -07:00
Harshavardhana
cfdb29cac0
Simplify signature handling
...
This change brings a new SignatureHandler where Presigned.
Requests without Payload are handled very early before even
going through the call.
This change simplifies Donut codebase to not have signature related
logic for all API's.
Simplification is still needed for Payload based signature eg. PUT/POST calls
, which are still part of the donut codebase, which will be done subsequently
after donut re-write.
2015-10-04 13:15:33 -07:00
Harshavardhana
c8de5bad2f
Implement presigned policy
2015-10-04 00:01:34 -07:00
Anis ELLEUCH
b5ea05d839
A better way to print prettified json syntax error msg
2015-10-03 12:25:44 -07:00
Harshavardhana
3b070dee16
Fix an important metadata getObject bug in donut
2015-10-01 10:18:03 -07:00
Harshavardhana
81cc017f91
Implement presigned signature v4 support
2015-10-01 10:17:47 -07:00
Harshavardhana
50750efb52
Reduce memory usage for memory multipart write by doing io.Pipe() streaming copy
2015-09-30 20:53:30 -07:00
Harshavardhana
8c7c5df770
Prober stringer should avoid frivolous newlines
2015-09-29 10:13:11 -07:00
Harshavardhana
cd52d7a11c
Fix Linux/Mac OS X erasure decoding failure with new Golang version 1.5.1
...
Fixes #871
2015-09-24 21:42:59 -07:00
Harshavardhana
3785489153
Disable multipart for donut backend from being used
...
Will enable it later after cleanup
2015-09-24 18:54:30 -07:00
Harshavardhana
b938e40fb5
Move atomic package to the top and simplify its tests
2015-09-20 13:51:38 -07:00
Harshavardhana
d54488f144
Move all server and controller packages into top-level
2015-09-19 01:07:42 -07:00
Anand Babu (AB) Periasamy
89a86948b5
new version format and some cleanup
2015-09-18 23:33:28 -07:00
Anand Babu (AB) Periasamy
d1f1b7ac31
new version format and some cleanup
2015-09-18 23:27:04 -07:00
Harshavardhana
778f8cd222
Add new rpc tests for Server.Add and Server.List, improve Version.Get RPC to provide more details
2015-09-18 17:44:46 -07:00
Harshavardhana
2a15dd5eab
Enhance signature handler - throw back valid error messages
2015-09-18 15:14:55 -07:00
Harshavardhana
ac93bbb41d
Merge pull request #846 from harshavardhana/new-changes
...
With new auth config changes, restructure the API code to use the new style
2015-09-18 03:45:03 -07:00
Harshavardhana
6a5e5c1826
With new auth config changes, restructure the API code to use the new style
2015-09-18 03:41:05 -07:00
Harshavardhana
b4ce1e8c1d
Add missing reply.Name and add possible failure tests
2015-09-18 03:15:19 -07:00
Harshavardhana
f8bb85aeb7
Enhance auth JSONRPC, now provides persistent output
...
Implements
- Auth.Generate("user")
- Auth.Fetch("user")
- Auth.Reset("user")
This patch also adds testing for each of these cases
2015-09-18 03:02:39 -07:00
Harshavardhana
4bcd86408b
Fix minio header in accordance with rfc2616.txt
2015-09-17 23:46:10 -07:00
Harshavardhana
7093a05ab1
Version is a package now, will be re-used across codebase.
2015-09-17 20:17:33 -07:00
Harshavardhana
1887114444
Fix all the golint complaints about newly added changes
...
Do not use func(this *server), such generic names should not be used
for writing struct methods.
2015-09-17 18:53:42 -07:00
Harshavardhana
03ef6533c8
Add more documentation for probe
2015-09-17 18:10:42 -07:00
Krishna Srinivas
c49407ced4
rename rpc/server.go -> rpc/rpc.go. rpc/server.go will accomodate ServerService
2015-09-17 15:46:51 -07:00
Harshavardhana
3f4b98ca4c
Consolidate controller, move rpc package into controller - remove dangling code in pkg/server
2015-09-15 19:38:36 -07:00
Harshavardhana
8d5f6e0b96
Merge pull request #826 from krishnasrinivas/middleware-cleanup
...
Remove unneeded functions in middleware init
2015-09-15 18:11:45 -07:00
Krishna Srinivas
b1b387b157
Remove unneeded functions in middleware init
2015-09-15 18:09:09 -07:00
Harshavardhana
45d8898019
Merge branch 'parallel-read2' of https://github.com/krishnasrinivas/minio into krishnasrinivas-parallel-read2
...
Make few more changes and rebased with current master
2015-09-15 17:33:33 -07:00
Anand Babu (AB) Periasamy
6930e4d668
logrus logger
2015-09-09 20:28:09 -07:00
Harshavardhana
1e2c010174
Avoid shadowing variables and enable checks to avoid them during build
2015-09-09 15:14:55 -07:00
Harshavardhana
b649eff3fb
Disable logging for now
2015-09-05 21:28:35 -07:00
Harshavardhana
d0f945f8e7
Simplify erasure package for OSX
2015-09-05 20:19:43 -07:00
Harshavardhana
afff3f8885
Revert "Enable controller to have CORS"
...
This reverts commit f39ac24e99
.
2015-08-31 17:15:49 -07:00
Krishna Srinivas
1e82ee1192
Add CORS support to minio s3 server
2015-08-31 16:59:52 -07:00
Harshavardhana
f39ac24e99
Enable controller to have CORS
2015-08-31 01:47:05 -07:00
Harshavardhana
dcf0c71ca3
Merge pull request #810 from harshavardhana/restructure
...
Restructure server code, controller now runs in silo
2015-08-27 17:10:54 -07:00
Harshavardhana
025f95b1d6
Restructure server code, controller now runs in silo
2015-08-27 17:07:32 -07:00
Anand Babu (AB) Periasamy
c11aa1c892
return *probe.Error for Untrace() as well.
2015-08-24 03:35:24 -07:00
Harshavardhana
988d39a5b6
Migrate to golang1.5 release with GO15VENDOREXPERIMENT=1 enabled
2015-08-22 18:35:37 -07:00
Harshavardhana
0e416ea699
Tests were running 4 times due to multiple times the TestingT{} was being called
...
Calling multiple times TestingT{} will hook up runner for Suites for that many times
which would lead to repeated running tests.
Fix it by only initializing it once for all the Suites
2015-08-20 22:32:50 -07:00
Harshavardhana
068d1d1ba9
Add a new quick.Load() function to load directly any config file provided a quick compatible struct{} is also provided
2015-08-20 20:33:49 -07:00
Anand Babu (AB) Periasamy
b49b8cdbe8
return call stack in reverse
2015-08-19 22:40:27 -07:00
Anand Babu (AB) Periasamy
826202716f
skip Env in json printinf if empty
2015-08-19 01:21:28 -07:00
Anand Babu (AB) Periasamy
76c40e075a
make tracePoint public as well
2015-08-19 01:02:39 -07:00
Harshavardhana
ac928b5092
Fix typo in probe
2015-08-18 23:42:41 -07:00
Anand Babu (AB) Periasamy
cdf93e534c
simplify probe APIs
2015-08-18 19:30:17 -07:00
Harshavardhana
e9c5a51bc6
Migrate pkg/quick from mc
2015-08-13 16:29:55 -07:00
Harshavardhana
61175ef091
Migrate to govendor to avoid limitations of godep
...
- over the course of a project history every maintainer needs to update
its dependency packages, the problem essentially with godep is manipulating
GOPATH - this manipulation leads to static objects created at different locations
which end up conflicting with the overall functionality of golang.
This also leads to broken builds. There is no easier way out of this other than
asking developers to do 'godep restore' all the time. Which perhaps as a practice
doesn't sound like a clean solution. On the other hand 'godep restore' has its own
set of problems.
- govendor is a right tool but a stop gap tool until we wait for golangs official
1.5 version which fixes this vendoring issue once and for all.
- govendor provides consistency in terms of how import paths should be handled unlike
manipulation GOPATH.
This has advantages
- no more compiled objects being referenced in GOPATH and build time GOPATH
manging which leads to conflicts.
- proper import paths referencing the exact package a project is dependent on.
govendor is simple and provides the minimal necessary tooling to achieve this.
For now this is the right solution.
2015-08-12 19:24:57 -07:00
Harshavardhana
45b59b8456
Probe revamped to provide for a new WrappedError struct to wrap probes as error interface
...
This convenience was necessary to be used for golang library functions like io.Copy and io.Pipe
where we shouldn't be writing proxies and alternatives returning *probe.Error
This change also brings more changes across code base for clear separation regarding where an error
interface should be passed encapsulating *probe.Error and where it should be used as is.
2015-08-08 00:16:38 -07:00
Harshavardhana
f8141493bd
use command not found helper
2015-08-03 18:06:19 -07:00
Harshavardhana
d09fd8b0a1
Migrate from iodine to probe
2015-08-03 16:33:44 -07:00
Harshavardhana
884e9771b2
More changes to probe to avoid nil dereferences
2015-08-03 01:47:37 -07:00
Harshavardhana
65e4aede82
Minor changes to probe
2015-08-02 20:33:49 -07:00
Anand Babu (AB) Periasamy
697009c0a1
trace on New and add read locks
2015-08-02 11:58:28 -07:00
Harshavardhana
d9493909d8
Merge pull request #788 from krishnasrinivas/open-and-openfile
...
rename disk.OpenFile to Open which will do os.Open (which will be rea…
2015-08-02 11:05:04 -07:00
Krishna Srinivas
ee4432bc40
rename disk.OpenFile to Open which will do os.Open (which will be read-only). disk.OpenFile will do os.OpenFile (which can be rw, append)
2015-08-02 17:34:29 +05:30
Anand Babu (AB) Periasamy
a728ddc027
probe package to trace & return errors
2015-08-02 02:38:08 -07:00
Harshavardhana
aabfd541e1
Merge cmd/donut into minio cmd, deprecate controller RPC request
2015-07-31 12:57:15 -07:00
Harshavardhana
2671b2dbf4
crypto/cleanup: remove unused functions
2015-07-29 13:09:55 -07:00
Krishna Srinivas
fdd2c22fa5
Do go fmt on bucket.go
2015-07-29 23:49:25 +05:30
Krishna Srinivas
ae8089c9b6
when signature is not available there is no need to compute sha256
2015-07-29 21:09:02 +05:30
Krishna Srinivas
bdc00624fd
get erros from buffered channel. Return error during object read only if we have readers < k
2015-07-29 19:36:41 +05:30
Harshavardhana
d346250f1c
Collapse GetPartialObject() into GetObject()
2015-07-28 19:33:56 -07:00
Krishna Srinivas
e1280779ed
Read from the disks in parallel during object read
2015-07-28 18:04:17 +05:30
Krishna Srinivas
1ea91d2fa2
Use missingEncodedBlocksCount directly instead of "-1" workaround in missingEncodedBlocks[]
...
Makes Code more readable
2015-07-28 16:56:06 +05:30
Harshavardhana
b0ea64a04f
Strip off quotes from ETag for verifying complete multipart upload
2015-07-25 16:10:05 -07:00
Harshavardhana
e082f26e10
Improving EncoderStream to return error only upon non io.EOF.
...
io.EOF is okay since io.ReadFull will not have read any bytes at all.
Also making error channel receive only for go routine.
2015-07-25 15:57:30 -07:00
Krishna Srinivas
bcfaa12a4d
Encoder now directly reads from the object stream. Using split.Stream() was causing lot of redundant memory operations.
2015-07-26 03:54:39 +05:30
Harshavardhana
d6a0e0cc55
Rename more
2015-07-24 18:09:53 -07:00
Harshavardhana
63c9cf0c4b
Move from Minimalist Object Storage to Minio Cloud Storage
2015-07-24 17:51:40 -07:00
Harshavardhana
43c908d5b9
ListObjects now considers multipart objects, also move to upstream check.v1
2015-07-18 15:49:41 -07:00
Harshavardhana
966786c78e
remove unnecessary updateAt()
2015-07-17 19:48:09 -07:00
Harshavardhana
c1da10a207
Donut multipart support no get, listobjects() support yet
2015-07-17 16:23:51 -07:00
Harshavardhana
86a887f9d4
Add corresponding tests
2015-07-16 17:40:19 -07:00