MCPcopy
hub / github.com/scality/cloudserver / bucketPutLogging

Function bucketPutLogging

lib/api/bucketPutLogging.js:13–89  ·  view source on GitHub ↗
(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

11 'The owner for the bucket to be logged and the target bucket must be the same.';
12
13function bucketPutLogging(authInfo, request, log, callback) {
14 log.debug('processing request', { method: 'bucketPutLogging' });
15
16 if (!config.serverAccessLogs || config.serverAccessLogs.mode !== serverAccessLogsModes.ENABLED) {
17 return callback(errorInstances.NotImplemented);
18 }
19
20 const bucketName = request.bucketName;
21 const parsed = BucketLoggingStatus.fromXML(request.post);
22 if (parsed.error) {
23 log.trace('error processing request', { error: parsed.error, method: 'bucketPutLogging' });
24 monitoring.promMetrics('PUT', bucketName, parsed.error.arsenalError, 'bucketPutLogging');
25 return callback(parsed.error.arsenalError);
26 }
27
28 const metadataValParams = {
29 authInfo,
30 bucketName,
31 requestType: request.apiMethods || 'bucketPutLogging',
32 request,
33 };
34
35 return waterfall([
36 next => standardMetadataValidateBucket(metadataValParams, request.actionImplicitDenies, log, (err, bucket) => {
37 if (err) {
38 return next(err);
39 }
40
41 return next(null, bucket);
42 }),
43 (bucket, next) => {
44 const loggingEnabled = parsed.res.getLoggingEnabled();
45 if (!loggingEnabled) {
46 return next(null, bucket);
47 }
48
49 return metadata.getBucket(loggingEnabled.TargetBucket, log, (err, targetBucket) => {
50 if (err) {
51 return next(errorInstances.InvalidTargetBucketForLogging.customizeDescription(err.description));
52 }
53
54 if (targetBucket.getOwner() !== bucket.getOwner()) {
55 return next(errorInstances.InvalidTargetBucketForLogging
56 .customizeDescription(ERROR_MSG_SOURCE_TARGET_BUCKET_OWNER_MISMATCH));
57 }
58
59 return next(null, bucket);
60 });
61 },
62 (bucket, next) => checkExpectedBucketOwner(request.headers, bucket, log, err => {
63 if (err) {
64 return next(err);
65 }
66
67 return next(null, bucket);
68 }),
69 (bucket, next) => {
70 bucket.setBucketLoggingStatus(parsed.res);

Callers 2

Calls 5

checkExpectedBucketOwnerFunction · 0.85
debugMethod · 0.80
traceMethod · 0.80
getOwnerMethod · 0.80

Tested by

no test coverage detected