Skip to content

Commit ce735e4

Browse files
committed
Update container expiration policy
1 parent 1220a9c commit ce735e4

File tree

5 files changed

+102
-1
lines changed

5 files changed

+102
-1
lines changed

gitlab4j-api/src/main/java/org/gitlab4j/api/ProjectApi.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.gitlab4j.api.models.ApprovalRuleParams;
4848
import org.gitlab4j.api.models.AuditEvent;
4949
import org.gitlab4j.api.models.Badge;
50+
import org.gitlab4j.api.models.ContainerExpirationPolicyAttributes;
5051
import org.gitlab4j.api.models.CustomAttribute;
5152
import org.gitlab4j.api.models.Event;
5253
import org.gitlab4j.api.models.FileUpload;
@@ -4727,4 +4728,25 @@ public List<Iteration> listProjectIterations(Object projectIdOrPath, IterationFi
47274728
get(Response.Status.OK, queryParams, "projects", getProjectIdOrPath(projectIdOrPath), "iterations");
47284729
return (response.readEntity(new GenericType<List<Iteration>>() {}));
47294730
}
4731+
4732+
/**
4733+
* Uploads and sets the project container expiration policy for the specified project.
4734+
*
4735+
* <pre><code>GitLab Endpoint: PUT /projects/:id</code></pre>
4736+
*
4737+
* @param projectIdOrPath the project in the form of an Long(ID), String(path), or Project instance, required
4738+
* @param containerExpirationPolicyAttributes the ContainerExpirationPolicyAttributes instance
4739+
* @return the updated Project instance
4740+
* @throws GitLabApiException if any exception occurs
4741+
*/
4742+
public Project setProjectContainerExpirationPolicy(
4743+
Object projectIdOrPath, ContainerExpirationPolicyAttributes containerExpirationPolicyAttributes)
4744+
throws GitLabApiException {
4745+
Response response = put(
4746+
Response.Status.OK,
4747+
containerExpirationPolicyAttributes.toString(),
4748+
"projects",
4749+
getProjectIdOrPath(projectIdOrPath));
4750+
return (response.readEntity(Project.class));
4751+
}
47304752
}

gitlab4j-models/src/main/java/org/gitlab4j/api/models/ContainerExpirationPolicy.java

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,26 @@
44

55
import org.gitlab4j.models.utils.JacksonJson;
66

7+
import com.fasterxml.jackson.annotation.JsonProperty;
8+
79
public class ContainerExpirationPolicy implements Serializable {
810
private static final long serialVersionUID = 1L;
911

1012
private String cadence;
1113
private Boolean enabled;
14+
15+
@JsonProperty("keep_n")
1216
private Integer keepN;
17+
18+
@JsonProperty("older_than")
1319
private String olderThan;
20+
21+
@JsonProperty("name_regex")
1422
private String nameRegex;
23+
24+
@JsonProperty("name_regex_keep")
1525
private String nameRegexKeep;
26+
1627
private String nextRunAt;
1728

1829
public String getCadence() {
@@ -23,6 +34,11 @@ public void setCadence(String cadence) {
2334
this.cadence = cadence;
2435
}
2536

37+
public ContainerExpirationPolicy withCadence(String cadence) {
38+
this.cadence = cadence;
39+
return this;
40+
}
41+
2642
public Boolean getEnabled() {
2743
return enabled;
2844
}
@@ -31,6 +47,11 @@ public void setEnabled(Boolean enabled) {
3147
this.enabled = enabled;
3248
}
3349

50+
public ContainerExpirationPolicy withEnabled(Boolean enabled) {
51+
this.enabled = enabled;
52+
return this;
53+
}
54+
3455
public Integer getKeepN() {
3556
return keepN;
3657
}
@@ -39,6 +60,11 @@ public void setKeepN(Integer keepN) {
3960
this.keepN = keepN;
4061
}
4162

63+
public ContainerExpirationPolicy withKeepN(Integer keepN) {
64+
this.keepN = keepN;
65+
return this;
66+
}
67+
4268
public String getOlderThan() {
4369
return olderThan;
4470
}
@@ -47,6 +73,11 @@ public void setOlderThan(String olderThan) {
4773
this.olderThan = olderThan;
4874
}
4975

76+
public ContainerExpirationPolicy withOlderThan(String olderThan) {
77+
this.olderThan = olderThan;
78+
return this;
79+
}
80+
5081
public String getNameRegex() {
5182
return nameRegex;
5283
}
@@ -55,6 +86,11 @@ public void setNameRegex(String nameRegex) {
5586
this.nameRegex = nameRegex;
5687
}
5788

89+
public ContainerExpirationPolicy withNameRegex(String nameRegex) {
90+
this.nameRegex = nameRegex;
91+
return this;
92+
}
93+
5894
public String getNameRegexKeep() {
5995
return nameRegexKeep;
6096
}
@@ -63,6 +99,11 @@ public void setNameRegexKeep(String nameRegexKeep) {
6399
this.nameRegexKeep = nameRegexKeep;
64100
}
65101

102+
public ContainerExpirationPolicy withNameRegexKeep(String nameRegexKeep) {
103+
this.nameRegexKeep = nameRegexKeep;
104+
return this;
105+
}
106+
66107
public String getNextRunAt() {
67108
return nextRunAt;
68109
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.gitlab4j.api.models;
2+
3+
import java.io.Serializable;
4+
5+
import org.gitlab4j.models.utils.JacksonJson;
6+
7+
import com.fasterxml.jackson.annotation.JsonProperty;
8+
9+
public class ContainerExpirationPolicyAttributes implements Serializable {
10+
private static final long serialVersionUID = 1L;
11+
12+
@JsonProperty("container_expiration_policy_attributes")
13+
private ContainerExpirationPolicy containerExpirationPolicyAttributes;
14+
15+
public ContainerExpirationPolicy getContainerExpirationPolicyAttributes() {
16+
return containerExpirationPolicyAttributes;
17+
}
18+
19+
public void setContainerExpirationPolicyAttributes(ContainerExpirationPolicy containerExpirationPolicyAttributes) {
20+
this.containerExpirationPolicyAttributes = containerExpirationPolicyAttributes;
21+
}
22+
23+
public ContainerExpirationPolicyAttributes withContainerExpirationPolicyAttributes(
24+
ContainerExpirationPolicy containerExpirationPolicyAttributes) {
25+
this.containerExpirationPolicyAttributes = containerExpirationPolicyAttributes;
26+
return this;
27+
}
28+
29+
@Override
30+
public String toString() {
31+
return (JacksonJson.toJsonString(this));
32+
}
33+
}

gitlab4j-models/src/main/java/org/gitlab4j/api/models/Project.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1282,6 +1282,11 @@ public void setContainerExpirationPolicy(ContainerExpirationPolicy containerExpi
12821282
this.containerExpirationPolicy = containerExpirationPolicy;
12831283
}
12841284

1285+
public Project withContainerExpirationPolicy(ContainerExpirationPolicy containerExpirationPolicy) {
1286+
this.containerExpirationPolicy = containerExpirationPolicy;
1287+
return this;
1288+
}
1289+
12851290
public Boolean getServiceDeskEnabled() {
12861291
return serviceDeskEnabled;
12871292
}

gitlab4j-models/src/test/resources/org/gitlab4j/models/project.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
"enabled" : true,
6060
"keep_n" : 1,
6161
"older_than" : "14d",
62-
"name_regex" : "",
62+
"name_regex" : ".*-development",
6363
"name_regex_keep" : ".*-main",
6464
"next_run_at" : "2022-06-25T17:11:26.865Z"
6565
},

0 commit comments

Comments
 (0)