Skip to content

Commit d49bf74

Browse files
authored
JENKINS-73398: Support credential snapshots (#334)
1 parent 48134f6 commit d49bf74

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

src/main/java/com/datapipe/jenkins/vault/credentials/common/VaultSSHUserPrivateKeyImpl.java

+45
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datapipe.jenkins.vault.credentials.common;
22

33
import com.cloudbees.plugins.credentials.CredentialsScope;
4+
import com.cloudbees.plugins.credentials.CredentialsSnapshotTaker;
45
import edu.umd.cs.findbugs.annotations.NonNull;
56
import hudson.Extension;
67
import hudson.model.Item;
@@ -154,4 +155,48 @@ public ListBoxModel doFillEngineVersionItems(@AncestorInPath Item context) {
154155
return engineVersions(context);
155156
}
156157
}
158+
159+
static class SelfContained extends VaultSSHUserPrivateKeyImpl {
160+
private final String username;
161+
private final String privateKey;
162+
private final Secret passphrase;
163+
164+
public SelfContained(VaultSSHUserPrivateKeyImpl base) {
165+
super(base.getScope(), base.getId(), base.getDescription());
166+
username = base.getUsername();
167+
privateKey = base.getPrivateKey();
168+
passphrase = base.getPassphrase();
169+
}
170+
171+
@NonNull
172+
@Override
173+
public String getUsername() {
174+
return username;
175+
}
176+
177+
@NonNull
178+
@Override
179+
public String getPrivateKey() {
180+
return privateKey;
181+
}
182+
183+
@NonNull
184+
@Override
185+
public Secret getPassphrase() {
186+
return passphrase;
187+
}
188+
}
189+
190+
@Extension
191+
public static class SnapshotTaker extends CredentialsSnapshotTaker<VaultSSHUserPrivateKeyImpl> {
192+
@Override
193+
public Class<VaultSSHUserPrivateKeyImpl> type() {
194+
return VaultSSHUserPrivateKeyImpl.class;
195+
}
196+
197+
@Override
198+
public VaultSSHUserPrivateKeyImpl snapshot(VaultSSHUserPrivateKeyImpl credentials) {
199+
return new SelfContained(credentials);
200+
}
201+
}
157202
}

src/main/java/com/datapipe/jenkins/vault/credentials/common/VaultStringCredentialImpl.java

+29
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datapipe.jenkins.vault.credentials.common;
22

33
import com.cloudbees.plugins.credentials.CredentialsScope;
4+
import com.cloudbees.plugins.credentials.CredentialsSnapshotTaker;
45
import edu.umd.cs.findbugs.annotations.NonNull;
56
import hudson.Extension;
67
import hudson.model.Item;
@@ -83,4 +84,32 @@ public ListBoxModel doFillEngineVersionItems(@AncestorInPath Item context) {
8384
}
8485

8586
}
87+
88+
static class SelfContained extends VaultStringCredentialImpl {
89+
private final Secret secret;
90+
91+
public SelfContained(VaultStringCredentialImpl base) {
92+
super(base.getScope(), base.getId(), base.getDescription());
93+
secret = base.getSecret();
94+
}
95+
96+
@NonNull
97+
@Override
98+
public Secret getSecret() {
99+
return secret;
100+
}
101+
}
102+
103+
@Extension
104+
public static class SnapshotTaker extends CredentialsSnapshotTaker<VaultStringCredentialImpl> {
105+
@Override
106+
public Class<VaultStringCredentialImpl> type() {
107+
return VaultStringCredentialImpl.class;
108+
}
109+
110+
@Override
111+
public VaultStringCredentialImpl snapshot(VaultStringCredentialImpl credentials) {
112+
return new SelfContained(credentials);
113+
}
114+
}
86115
}

src/main/java/com/datapipe/jenkins/vault/credentials/common/VaultUsernamePasswordCredentialImpl.java

+37
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.datapipe.jenkins.vault.credentials.common;
22

33
import com.cloudbees.plugins.credentials.CredentialsScope;
4+
import com.cloudbees.plugins.credentials.CredentialsSnapshotTaker;
45
import edu.umd.cs.findbugs.annotations.NonNull;
56
import hudson.Extension;
67
import hudson.model.Item;
@@ -112,4 +113,40 @@ public ListBoxModel doFillEngineVersionItems(@AncestorInPath Item context) {
112113
return engineVersions(context);
113114
}
114115
}
116+
117+
static class SelfContained extends VaultUsernamePasswordCredentialImpl {
118+
private final String username;
119+
private final Secret password;
120+
121+
public SelfContained(VaultUsernamePasswordCredentialImpl base) {
122+
super(base.getScope(), base.getId(), base.getDescription());
123+
username = base.getUsername();
124+
password = base.getPassword();
125+
}
126+
127+
@NonNull
128+
@Override
129+
public String getUsername() {
130+
return username;
131+
}
132+
133+
@NonNull
134+
@Override
135+
public Secret getPassword() {
136+
return password;
137+
}
138+
}
139+
140+
@Extension
141+
public static class SnapshotTaker extends CredentialsSnapshotTaker<VaultUsernamePasswordCredentialImpl> {
142+
@Override
143+
public Class<VaultUsernamePasswordCredentialImpl> type() {
144+
return VaultUsernamePasswordCredentialImpl.class;
145+
}
146+
147+
@Override
148+
public VaultUsernamePasswordCredentialImpl snapshot(VaultUsernamePasswordCredentialImpl credentials) {
149+
return new SelfContained(credentials);
150+
}
151+
}
115152
}

0 commit comments

Comments
 (0)