1 package org.kuali.common.devops.jenkins.upgrade;
2
3 import javax.validation.constraints.Min;
4
5 import org.kuali.common.aws.model.ImmutableAWSCredentials;
6 import org.kuali.common.core.build.ValidatingBuilder;
7 import org.kuali.common.core.validate.annotation.IdiotProofImmutable;
8
9 import com.amazonaws.auth.AWSCredentials;
10 import com.fasterxml.jackson.annotation.JsonIgnore;
11
12 @IdiotProofImmutable
13 public final class JenkinsArchiveContext {
14
15 private final String hostname;
16 private final String bucket;
17 private final String home;
18 @JsonIgnore
19 private final ImmutableAWSCredentials credentials;
20 private final String timezone;
21 private final String age;
22 private final String stack;
23 private final JenkinsCommand command;
24 @Min(1)
25 private final int threads;
26
27 private JenkinsArchiveContext(Builder builder) {
28 this.hostname = builder.hostname;
29 this.bucket = builder.bucket;
30 this.home = builder.home;
31 this.timezone = builder.timezone;
32 this.age = builder.age;
33 this.threads = builder.threads;
34 this.stack = builder.stack;
35 this.command = builder.command;
36 this.credentials = ImmutableAWSCredentials.copyOf(builder.credentials);
37 }
38
39 public static final Builder builder() {
40 return new Builder();
41 }
42
43 public static class Builder extends ValidatingBuilder<JenkinsArchiveContext> {
44
45 private String hostname;
46 private String bucket;
47 private String home;
48 private JenkinsCommand command;
49 private String timezone;
50 private AWSCredentials credentials;
51 private String age;
52 private int threads;
53 private String stack;
54
55 public Builder withCommand(JenkinsCommand command) {
56 this.command = command;
57 return this;
58 }
59
60 public Builder withThreads(int threads) {
61 this.threads = threads;
62 return this;
63 }
64
65 public Builder withAge(String age) {
66 this.age = age;
67 return this;
68 }
69
70 public Builder withStack(String stack) {
71 this.stack = stack;
72 return this;
73 }
74
75 public Builder withTimezone(String timezone) {
76 this.timezone = timezone;
77 return this;
78 }
79
80 public Builder withHostname(String hostname) {
81 this.hostname = hostname;
82 return this;
83 }
84
85 public Builder withBucket(String bucket) {
86 this.bucket = bucket;
87 return this;
88 }
89
90 public Builder withHome(String home) {
91 this.home = home;
92 return this;
93 }
94
95 public Builder withCredentials(AWSCredentials credentials) {
96 this.credentials = credentials;
97 return this;
98 }
99
100 @Override
101 public JenkinsArchiveContext build() {
102 return validate(new JenkinsArchiveContext(this));
103 }
104 }
105
106 public String getHostname() {
107 return hostname;
108 }
109
110 public String getBucket() {
111 return bucket;
112 }
113
114 public String getHome() {
115 return home;
116 }
117
118 public AWSCredentials getCredentials() {
119 return credentials;
120 }
121
122 public String getTimezone() {
123 return timezone;
124 }
125
126 public String getAge() {
127 return age;
128 }
129
130 public int getThreads() {
131 return threads;
132 }
133
134 public JenkinsCommand getCommand() {
135 return command;
136 }
137
138 public String getStack() {
139 return stack;
140 }
141
142 }