Skip to content

Commit 9c0adb2

Browse files
Jillian InapurapuJillian Inapurapu
authored andcommitted
WIP edit lifecyle rule with versions count
1 parent a06fed6 commit 9c0adb2

File tree

10 files changed

+225
-42
lines changed

10 files changed

+225
-42
lines changed

models/expiration_response.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/transition_response.go

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

models/update_bucket_lifecycle.go

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

portal-ui/src/api/consoleApi.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -880,6 +880,8 @@ export interface ExpirationResponse {
880880
delete_marker?: boolean;
881881
/** @format int64 */
882882
noncurrent_expiration_days?: number;
883+
/** @format int64 */
884+
newer_noncurrent_expiration_versions?: number;
883885
}
884886

885887
export interface TransitionResponse {
@@ -889,6 +891,8 @@ export interface TransitionResponse {
889891
days?: number;
890892
/** @format int64 */
891893
noncurrent_transition_days?: number;
894+
/** @format int64 */
895+
newer_noncurrent_transition_versions?: number;
892896
noncurrent_storage_class?: string;
893897
}
894898

@@ -996,6 +1000,18 @@ export interface UpdateBucketLifecycle {
9961000
* @default 0
9971001
*/
9981002
noncurrentversion_transition_days?: number;
1003+
/**
1004+
* Non required, can be set in case of expiration is enabled
1005+
* @format int32
1006+
* @default 0
1007+
*/
1008+
newer_noncurrentversion_expiration_versions?: number;
1009+
/**
1010+
* Non required, can be set in case of transition is enabled
1011+
* @format int32
1012+
* @default 0
1013+
*/
1014+
newer_noncurrentversion_transition_versions?: number;
9991015
/** Non required, can be set in case of transition is enabled */
10001016
noncurrentversion_transition_storage_class?: string;
10011017
}

portal-ui/src/screens/Console/Buckets/BucketDetails/BucketLifecyclePanel.tsx

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ const BucketLifecyclePanel = () => {
8686
.getBucketLifecycle(bucketName)
8787
.then((res) => {
8888
const records = get(res.data, "lifecycle", []);
89-
89+
console.log("records: ", records);
9090
setLifecycleRecords(records || []);
9191
setLoadingLifecycle(false);
9292
})
@@ -147,13 +147,19 @@ const BucketLifecyclePanel = () => {
147147
}
148148
if (
149149
el.expiration &&
150-
(el.expiration.days > 0 || el.expiration.noncurrent_expiration_days)
150+
(el.expiration.days > 0 ||
151+
el.expiration.noncurrent_expiration_days ||
152+
(el.expiration.newer_noncurrent_expiration_versions &&
153+
el.expiration.newer_noncurrent_expiration_versions > 0))
151154
) {
152155
return <span>Expiry</span>;
153156
}
154157
if (
155158
el.transition &&
156-
(el.transition.days > 0 || el.transition.noncurrent_transition_days)
159+
(el.transition.days > 0 ||
160+
el.transition.noncurrent_transition_days ||
161+
(el.transition.newer_noncurrent_transition_versions &&
162+
el.transition.newer_noncurrent_transition_versions > 0))
157163
) {
158164
return <span>Transition</span>;
159165
}
@@ -170,14 +176,20 @@ const BucketLifecyclePanel = () => {
170176
if (el.expiration) {
171177
if (el.expiration.days > 0) {
172178
return <span>Current</span>;
173-
} else if (el.expiration.noncurrent_expiration_days) {
179+
} else if (
180+
el.expiration.noncurrent_expiration_days ||
181+
el.expiration.newer_noncurrent_expiration_versions
182+
) {
174183
return <span>Non-Current</span>;
175184
}
176185
}
177186
if (el.transition) {
178187
if (el.transition.days > 0) {
179188
return <span>Current</span>;
180-
} else if (el.transition.noncurrent_transition_days) {
189+
} else if (
190+
el.transition.noncurrent_transition_days ||
191+
el.transition.newer_noncurrent_transition_versions
192+
) {
181193
return <span>Non-Current</span>;
182194
}
183195
}
@@ -205,13 +217,25 @@ const BucketLifecyclePanel = () => {
205217
return <span>{el.expiration.days} days</span>;
206218
} else if (el.expiration.noncurrent_expiration_days) {
207219
return <span>{el.expiration.noncurrent_expiration_days} days</span>;
220+
} else {
221+
return (
222+
<span>
223+
{el.expiration.newer_noncurrent_expiration_versions} versions
224+
</span>
225+
);
208226
}
209227
}
210228
if (el.transition) {
211229
if (el.transition.days > 0) {
212230
return <span>{el.transition.days} days</span>;
213231
} else if (el.transition.noncurrent_transition_days) {
214232
return <span>{el.transition.noncurrent_transition_days} days</span>;
233+
} else {
234+
return (
235+
<span>
236+
{el.transition.newer_noncurrent_transition_versions} versions
237+
</span>
238+
);
215239
}
216240
}
217241
},

portal-ui/src/screens/Console/Buckets/BucketDetails/EditLifecycleConfiguration.tsx

Lines changed: 88 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,11 @@ const EditLifecycleConfiguration = ({
6868
const [expiredObjectDM, setExpiredObjectDM] = useState<boolean>(false);
6969
const [NCExpirationDays, setNCExpirationDays] = useState<string>("0");
7070
const [NCTransitionDays, setNCTransitionDays] = useState<string>("0");
71+
72+
const [newerNCExpirationVersions, setNewerNCExpirationVersions] =
73+
useState<string>("0");
74+
const [newerNCTransitionVersions, setNewerNCTransitionVersions] =
75+
useState<string>("0");
7176
const [ilmType, setIlmType] = useState<"transition" | "expiry">("expiry");
7277
const [expiryDays, setExpiryDays] = useState<string>("0");
7378
const [transitionDays, setTransitionDays] = useState<string>("0");
@@ -133,6 +138,14 @@ const EditLifecycleConfiguration = ({
133138
setIlmType("transition");
134139
transitionMode = true;
135140
}
141+
if (
142+
lifecycleRule.transition.newer_noncurrent_transition_versions &&
143+
lifecycleRule.transition.newer_noncurrent_transition_versions > 0
144+
) {
145+
setNewerNCTransitionVersions(
146+
lifecycleRule.transition.newer_noncurrent_transition_versions.toString(),
147+
);
148+
}
136149
if (
137150
lifecycleRule.transition.noncurrent_transition_days &&
138151
lifecycleRule.transition.noncurrent_transition_days !== 0
@@ -173,7 +186,14 @@ const EditLifecycleConfiguration = ({
173186
setIlmType("expiry");
174187
transitionMode = false;
175188
}
176-
189+
if (
190+
lifecycleRule.expiration.newer_noncurrent_expiration_versions &&
191+
lifecycleRule.expiration.newer_noncurrent_expiration_versions > 0
192+
) {
193+
setNewerNCExpirationVersions(
194+
lifecycleRule.expiration.newer_noncurrent_expiration_versions.toString(),
195+
);
196+
}
177197
// Fallback to old rules by date
178198
if (
179199
lifecycleRule.expiration.date &&
@@ -240,7 +260,11 @@ const EditLifecycleConfiguration = ({
240260
expiry["noncurrentversion_expiration_days"] =
241261
parseInt(NCExpirationDays);
242262
}
243-
263+
if (lifecycleRule.expiration?.newer_noncurrent_expiration_versions) {
264+
expiry["newer_noncurrent_expiration_versions"] = parseInt(
265+
newerNCExpirationVersions,
266+
);
267+
}
244268
rules = {
245269
...expiry,
246270
};
@@ -383,18 +407,38 @@ const EditLifecycleConfiguration = ({
383407
)}
384408

385409
{ilmType === "expiry" &&
386-
lifecycleRule.expiration?.noncurrent_expiration_days && (
387-
<InputBox
388-
type="number"
389-
id="noncurrentversion_expiration_days"
390-
name="noncurrentversion_expiration_days"
391-
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
392-
setNCExpirationDays(e.target.value);
393-
}}
394-
label="Non-current Expiration Days"
395-
value={NCExpirationDays}
396-
min="0"
397-
/>
410+
(lifecycleRule.expiration?.noncurrent_expiration_days ||
411+
lifecycleRule.expiration
412+
?.newer_noncurrent_expiration_versions) && (
413+
<Fragment>
414+
{lifecycleRule.expiration?.noncurrent_expiration_days && (
415+
<InputBox
416+
type="number"
417+
id="noncurrentversion_expiration_days"
418+
name="noncurrentversion_expiration_days"
419+
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
420+
setNCExpirationDays(e.target.value);
421+
}}
422+
label="Non-current Expiration Days"
423+
value={NCExpirationDays}
424+
min="0"
425+
/>
426+
)}
427+
{lifecycleRule.expiration
428+
?.newer_noncurrent_expiration_versions && (
429+
<InputBox
430+
type="number"
431+
id="newer_noncurrentversion_expiration_versions"
432+
name="newer_noncurrentversion_expiration_versions"
433+
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
434+
setNewerNCExpirationVersions(e.target.value);
435+
}}
436+
label="Non-current Expiration Versions"
437+
value={newerNCExpirationVersions}
438+
min="0"
439+
/>
440+
)}
441+
</Fragment>
398442
)}
399443
{ilmType === "transition" && lifecycleRule.transition?.days && (
400444
<Fragment>
@@ -423,19 +467,37 @@ const EditLifecycleConfiguration = ({
423467
)}
424468

425469
{ilmType === "transition" &&
426-
lifecycleRule.transition?.noncurrent_transition_days && (
470+
(lifecycleRule.transition?.noncurrent_transition_days ||
471+
lifecycleRule.transition
472+
?.newer_noncurrent_transition_versions) && (
427473
<Fragment>
428-
<InputBox
429-
type="number"
430-
id="noncurrentversion_transition_days"
431-
name="noncurrentversion_transition_days"
432-
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
433-
setNCTransitionDays(e.target.value);
434-
}}
435-
label="Non-current Transition Days"
436-
value={NCTransitionDays}
437-
min="0"
438-
/>
474+
{lifecycleRule.transition?.noncurrent_transition_days && (
475+
<InputBox
476+
type="number"
477+
id="noncurrentversion_transition_days"
478+
name="noncurrentversion_transition_days"
479+
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
480+
setNCTransitionDays(e.target.value);
481+
}}
482+
label="Non-current Transition Days"
483+
value={NCTransitionDays}
484+
min="0"
485+
/>
486+
)}
487+
{lifecycleRule.transition
488+
?.newer_noncurrent_transition_versions && (
489+
<InputBox
490+
type="number"
491+
id="newer_noncurrentversion_transition_versions"
492+
name="newer_noncurrentversion_transition_versions"
493+
onChange={(e: React.ChangeEvent<HTMLInputElement>) => {
494+
setNewerNCTransitionVersions(e.target.value);
495+
}}
496+
label="Non-current Transition Versions"
497+
value={newerNCTransitionVersions}
498+
min="0"
499+
/>
500+
)}
439501
<InputBox
440502
id="noncurrentversion_t_SC"
441503
name="noncurrentversion_t_SC"

portal-ui/src/screens/Console/Buckets/types.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,15 @@ interface IExpirationLifecycle {
4242
date: string;
4343
delete_marker?: boolean;
4444
noncurrent_expiration_days?: number;
45+
newer_noncurrent_expiration_versions?: number;
4546
}
4647

4748
interface ITransitionLifecycle {
4849
days: number;
4950
date: string;
5051
storage_class?: string;
5152
noncurrent_transition_days?: number;
53+
newer_noncurrent_transition_versions?: number;
5254
noncurrent_storage_class?: string;
5355
}
5456

0 commit comments

Comments
 (0)