Skip to content

Commit e0d0520

Browse files
committed
fix lifecycle rule names
Issue: BB-516
1 parent 8587955 commit e0d0520

File tree

3 files changed

+56
-38
lines changed

3 files changed

+56
-38
lines changed

extensions/lifecycle/bucketProcessor/LifecycleBucketProcessor.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,10 @@ const safeJsonParse = require('../util/safeJsonParse');
1414
const ClientManager = require('../../../lib/clients/ClientManager');
1515
const { authTypeAssumeRole } = require('../../../lib/constants');
1616
const LocationStatusStream = require('../../utils/LocationStatusStream');
17-
const { getFormattedSupportedLifecycleRules } = require('../util/rules');
17+
const {
18+
getFormattedSupportedLifecycleRules,
19+
isExpirationRule
20+
} = require('../util/rules');
1821
const {
1922
updateCircuitBreakerConfigForImplicitOutputQueue,
2023
} = require('../../../lib/CircuitBreaker');
@@ -225,18 +228,21 @@ class LifecycleBucketProcessor {
225228
* @return {Boolean} Whether the config should be processed
226229
*/
227230
_shouldProcessConfig(config) {
228-
const rulesEnabled = config.Rules.some(rule => {
231+
return config.Rules.some(rule => {
229232
if (rule.Status === 'Disabled') {
230233
return false;
231234
}
232235
return Object.keys(rule).some(key => {
233236
if (!this._supportedRules.includes(key)) {
234237
return false;
235238
}
236-
return !rule[key].StorageClass || !this._pausedLocations.has(rule[key].StorageClass);
239+
if (isExpirationRule(key)) {
240+
return true;
241+
}
242+
return rule[key].some(transitionRule =>
243+
!this._pausedLocations.has(transitionRule.StorageClass));
237244
});
238245
});
239-
return rulesEnabled;
240246
}
241247

242248
/**

extensions/lifecycle/util/rules.js

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -202,14 +202,26 @@ function rulesToParams(versioningStatus, currentDate, bucketLCRules, bucketData,
202202
*/
203203
function getFormattedSupportedLifecycleRules() {
204204
return supportedLifecycleRules.map(rule => {
205-
if (rule === 'transitions') {
206-
return 'Transition';
205+
if (rule === 'noncurrentVersionTransition') {
206+
return 'NoncurrentVersionTransitions';
207207
}
208208
return rule.charAt(0).toUpperCase() + rule.slice(1);
209209
});
210210
}
211211

212+
/**
213+
* Check if ruleName is an expiration rule
214+
* @param {string} ruleName lifecycle rule name
215+
* @returns {bool} true if ruleName is an expiration rule
216+
*/
217+
function isExpirationRule(ruleName) {
218+
return ruleName === 'Expiration' ||
219+
ruleName === 'NoncurrentVersionExpiration' ||
220+
ruleName === 'AbortIncompleteMultipartUpload';
221+
}
222+
212223
module.exports = {
213224
rulesToParams,
214225
getFormattedSupportedLifecycleRules,
226+
isExpirationRule,
215227
};

tests/unit/lifecycle/LifecycleBucketProcessor.spec.js

Lines changed: 32 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,10 @@ describe('Lifecycle Bucket Processor', () => {
4848
},
4949
supportedRules: [
5050
'Expiration',
51-
'Noncurrentversionexpiration',
52-
'AbortincompletemultipartUpload',
53-
'Transition',
54-
'Noncurrentversiontransition',
51+
'NoncurrentVersionExpiration',
52+
'AbortIncompleteMultipartUpload',
53+
'Transitions',
54+
'NoncurrentVersionTransitions',
5555
],
5656
pauseLocations: [],
5757
expected: false,
@@ -74,20 +74,20 @@ describe('Lifecycle Bucket Processor', () => {
7474
},
7575
{
7676
Status: 'Disabled',
77-
Transition: {
77+
Transitions: [{
7878
Days: 10,
7979
StorageClass: 'azure'
80-
},
80+
}],
8181
ID: 'dac36d89-0005-4c78-8e00-7e9ace06a9c4'
8282
}
8383
],
8484
},
8585
supportedRules: [
8686
'Expiration',
87-
'Noncurrentversionexpiration',
88-
'AbortincompletemultipartUpload',
89-
'Transition',
90-
'Noncurrentversiontransition',
87+
'NoncurrentVersionExpiration',
88+
'AbortIncompleteMultipartUpload',
89+
'Transitions',
90+
'NoncurrentVersionTransitions',
9191
],
9292
pauseLocations: [],
9393
expected: false,
@@ -104,20 +104,20 @@ describe('Lifecycle Bucket Processor', () => {
104104
},
105105
{
106106
Status: 'Enabled',
107-
Transition: {
107+
Transitions: [{
108108
Days: 10,
109109
StorageClass: 'azure'
110-
},
110+
}],
111111
ID: 'dac36d89-0005-4c78-8e00-7e9ace06a9c4'
112112
}
113113
],
114114
},
115115
supportedRules: [
116116
'Expiration',
117-
'Noncurrentversionexpiration',
118-
'AbortincompletemultipartUpload',
119-
'Transition',
120-
'Noncurrentversiontransition',
117+
'NoncurrentVersionExpiration',
118+
'AbortIncompleteMultipartUpload',
119+
'Transitions',
120+
'NoncurrentVersionTransitions',
121121
],
122122
pauseLocations: [],
123123
expected: true,
@@ -127,20 +127,20 @@ describe('Lifecycle Bucket Processor', () => {
127127
Rules: [
128128
{
129129
Status: 'Enabled',
130-
Transition: {
130+
Transitions: [{
131131
Days: 10,
132132
StorageClass: 'azure'
133-
},
133+
}],
134134
ID: 'dac36d89-0005-4c78-8e00-7e9ace06a9c4'
135135
}
136136
],
137137
},
138138
supportedRules: [
139139
'Expiration',
140-
'Noncurrentversionexpiration',
141-
'AbortincompletemultipartUpload',
142-
'Transition',
143-
'Noncurrentversiontransition',
140+
'NoncurrentVersionExpiration',
141+
'AbortIncompleteMultipartUpload',
142+
'Transitions',
143+
'NoncurrentVersionTransitions',
144144
],
145145
pauseLocations: ['azure'],
146146
expected: false,
@@ -150,20 +150,20 @@ describe('Lifecycle Bucket Processor', () => {
150150
Rules: [
151151
{
152152
Status: 'Enabled',
153-
NoncurrentVersionTransition: {
153+
NoncurrentVersionTransitions: [{
154154
NoncurrentDays: 10,
155155
StorageClass: 'azure'
156-
},
156+
}],
157157
ID: 'dac36d89-0005-4c78-8e00-7e9ace06a9c4'
158158
}
159159
],
160160
},
161161
supportedRules: [
162162
'Expiration',
163-
'Noncurrentversionexpiration',
164-
'AbortincompletemultipartUpload',
165-
'Transition',
166-
'Noncurrentversiontransition',
163+
'NoncurrentVersionExpiration',
164+
'AbortIncompleteMultipartUpload',
165+
'Transitions',
166+
'NoncurrentVersionTransitions',
167167
],
168168
pauseLocations: ['azure'],
169169
expected: false,
@@ -173,18 +173,18 @@ describe('Lifecycle Bucket Processor', () => {
173173
Rules: [
174174
{
175175
Status: 'Enabled',
176-
Transition: {
176+
Transitions: [{
177177
Days: 10,
178178
StorageClass: 'azure'
179-
},
179+
}],
180180
ID: 'dac36d89-0005-4c78-8e00-7e9ace06a9c4'
181181
}
182182
],
183183
},
184184
supportedRules: [
185185
'Expiration',
186-
'Noncurrentversionexpiration',
187-
'AbortincompletemultipartUpload',
186+
'NoncurrentVersionExpiration',
187+
'AbortIncompleteMultipartUpload',
188188
],
189189
pauseLocations: [],
190190
expected: false,

0 commit comments

Comments
 (0)