mirror of
https://github.com/Fishwaldo/rundeck-api-java-client.git
synced 2025-07-08 14:08:33 +00:00
Support api v9 uuidOption for jobs import #8
This commit is contained in:
parent
8707881c08
commit
db647eb944
8 changed files with 159 additions and 0 deletions
|
@ -1,6 +1,7 @@
|
|||
package org.rundeck.api;
|
||||
|
||||
import org.rundeck.api.domain.RundeckJobsImportMethod;
|
||||
import org.rundeck.api.domain.RundeckJobsUUIDImportBehavior;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
|
@ -11,6 +12,7 @@ public class DefaultJobsImport implements RundeckJobsImport{
|
|||
private InputStream stream;
|
||||
private FileType fileType;
|
||||
private RundeckJobsImportMethod importMethod;
|
||||
private RundeckJobsUUIDImportBehavior uuidImportBehavior;
|
||||
private String project;
|
||||
|
||||
public InputStream getStream() {
|
||||
|
@ -44,4 +46,12 @@ public class DefaultJobsImport implements RundeckJobsImport{
|
|||
public void setProject(final String project) {
|
||||
this.project = project;
|
||||
}
|
||||
|
||||
public RundeckJobsUUIDImportBehavior getUuidImportBehavior() {
|
||||
return uuidImportBehavior;
|
||||
}
|
||||
|
||||
public void setUuidImportBehavior(RundeckJobsUUIDImportBehavior uuidImportBehavior) {
|
||||
this.uuidImportBehavior = uuidImportBehavior;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -869,6 +869,10 @@ public class RundeckClient implements Serializable {
|
|||
.param("format", rundeckJobsImport.getFileType())
|
||||
.param("dupeOption", rundeckJobsImport.getImportMethod())
|
||||
.attach("xmlBatch", rundeckJobsImport.getStream());
|
||||
if(null!=rundeckJobsImport.getUuidImportBehavior()) {
|
||||
//API v9
|
||||
request.param("uuidOption", rundeckJobsImport.getUuidImportBehavior());
|
||||
}
|
||||
if(null!=rundeckJobsImport.getProject()) {
|
||||
//API v8
|
||||
request.param("project", rundeckJobsImport.getProject());
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.rundeck.api;
|
||||
|
||||
import org.rundeck.api.domain.RundeckJobsImportMethod;
|
||||
import org.rundeck.api.domain.RundeckJobsUUIDImportBehavior;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
|
@ -25,6 +26,11 @@ public interface RundeckJobsImport {
|
|||
* @return
|
||||
*/
|
||||
public RundeckJobsImportMethod getImportMethod();
|
||||
/**
|
||||
* Return the import behavior
|
||||
* @return
|
||||
*/
|
||||
public RundeckJobsUUIDImportBehavior getUuidImportBehavior();
|
||||
|
||||
/**
|
||||
* Return the project name
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package org.rundeck.api;
|
||||
|
||||
import org.rundeck.api.domain.RundeckJobsImportMethod;
|
||||
import org.rundeck.api.domain.RundeckJobsUUIDImportBehavior;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
|
@ -20,6 +21,7 @@ public class RundeckJobsImportBuilder {
|
|||
jobsImport.setFileType(original.getFileType());
|
||||
jobsImport.setProject(original.getProject());
|
||||
jobsImport.setImportMethod(original.getImportMethod());
|
||||
jobsImport.setUuidImportBehavior(original.getUuidImportBehavior());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -58,6 +60,10 @@ public class RundeckJobsImportBuilder {
|
|||
jobsImport.setImportMethod(behavior);
|
||||
return this;
|
||||
}
|
||||
public RundeckJobsImportBuilder setUUIDImportBehavior(final RundeckJobsUUIDImportBehavior behavior) {
|
||||
jobsImport.setUuidImportBehavior(behavior);
|
||||
return this;
|
||||
}
|
||||
|
||||
public RundeckJobsImport build() {
|
||||
final RundeckJobsImport built = jobsImport;
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
package org.rundeck.api.domain;
|
||||
|
||||
/**
|
||||
* $INTERFACE is ... User: greg Date: 1/16/14 Time: 11:38 AM
|
||||
*/
|
||||
public enum RundeckJobsUUIDImportBehavior {
|
||||
PRESERVE,
|
||||
REMOVE
|
||||
}
|
|
@ -54,6 +54,7 @@ public class RundeckClientTest {
|
|||
public static final String TEST_TOKEN_3 = "9RdEosesKP3se4oV9EKOd4s3RUeUS3ON";
|
||||
public static final String TEST_TOKEN_4 = "sN5RRSNvu15DnV6EcNDdc2CkdPcv3s32";
|
||||
public static final String TEST_TOKEN_5 = "C3O6d5O98Kr6Dpv71sdE4ERdCuU12P6d";
|
||||
public static final String TEST_TOKEN_6 = "Do4d3NUD5DKk21DR4sNK755RcPk618vn";
|
||||
|
||||
@Rule
|
||||
public Recorder recorder = new Recorder();
|
||||
|
@ -912,6 +913,83 @@ public class RundeckClientTest {
|
|||
Assert.assertEquals("importJobsProjectParamV7", rundeckJob.getName());
|
||||
Assert.assertEquals("testXYZ", rundeckJob.getProject());
|
||||
}
|
||||
/**
|
||||
* Import jobs, project parameter v7 doesn' use parameter
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
@Betamax(tape = "import_jobs_uuid_param_remove_v9")
|
||||
public void importJobsUUIDParamRemoveV9() throws Exception {
|
||||
final RundeckClient client = createClient(TEST_TOKEN_6, 9);
|
||||
InputStream stream=new ByteArrayInputStream(
|
||||
("<joblist>\n" +
|
||||
" <job>\n" +
|
||||
" <uuid>testImportUUID</uuid>\n" +
|
||||
" <loglevel>INFO</loglevel>\n" +
|
||||
" <sequence keepgoing='false' strategy='node-first'>\n" +
|
||||
" <command>\n" +
|
||||
" <exec>echo hi</exec>\n" +
|
||||
" </command>\n" +
|
||||
" </sequence>\n" +
|
||||
" <description></description>\n" +
|
||||
" <name>importJobsUUIDParamRemoveV9</name>\n" +
|
||||
" </job>\n" +
|
||||
"</joblist>").getBytes("utf-8"));
|
||||
|
||||
final RundeckJobsImport jobsImport = RundeckJobsImportBuilder.builder()
|
||||
.setStream(stream)
|
||||
.setFileType(FileType.XML)
|
||||
.setJobsImportMethod(RundeckJobsImportMethod.CREATE)
|
||||
.setUUIDImportBehavior(RundeckJobsUUIDImportBehavior.REMOVE)
|
||||
.setProject("test")
|
||||
.build();
|
||||
RundeckJobsImportResult rundeckJobsImportResult = client.importJobs(jobsImport);
|
||||
Assert.assertEquals(0,rundeckJobsImportResult.getFailedJobs().size());
|
||||
Assert.assertEquals(0,rundeckJobsImportResult.getSkippedJobs().size());
|
||||
Assert.assertEquals(1,rundeckJobsImportResult.getSucceededJobs().size());
|
||||
RundeckJob rundeckJob = rundeckJobsImportResult.getSucceededJobs().get(0);
|
||||
Assert.assertEquals("importJobsUUIDParamRemoveV9", rundeckJob.getName());
|
||||
Assert.assertFalse("testImportUUID".equals(rundeckJob.getId()));
|
||||
Assert.assertEquals("b33c8bb1-4dfc-4661-a890-4164b264cc4a", rundeckJob.getId());
|
||||
}
|
||||
/**
|
||||
* Import jobs, project parameter v7 doesn' use parameter
|
||||
* @throws Exception
|
||||
*/
|
||||
@Test
|
||||
@Betamax(tape = "import_jobs_uuid_param_preserve_v9")
|
||||
public void importJobsUUIDParamPreserveV9() throws Exception {
|
||||
final RundeckClient client = createClient(TEST_TOKEN_6, 9);
|
||||
InputStream stream=new ByteArrayInputStream(
|
||||
("<joblist>\n" +
|
||||
" <job>\n" +
|
||||
" <uuid>testImportUUID</uuid>\n" +
|
||||
" <loglevel>INFO</loglevel>\n" +
|
||||
" <sequence keepgoing='false' strategy='node-first'>\n" +
|
||||
" <command>\n" +
|
||||
" <exec>echo hi</exec>\n" +
|
||||
" </command>\n" +
|
||||
" </sequence>\n" +
|
||||
" <description></description>\n" +
|
||||
" <name>importJobsUUIDParamPreserveV9</name>\n" +
|
||||
" </job>\n" +
|
||||
"</joblist>").getBytes("utf-8"));
|
||||
|
||||
final RundeckJobsImport jobsImport = RundeckJobsImportBuilder.builder()
|
||||
.setStream(stream)
|
||||
.setFileType(FileType.XML)
|
||||
.setJobsImportMethod(RundeckJobsImportMethod.CREATE)
|
||||
.setUUIDImportBehavior(RundeckJobsUUIDImportBehavior.PRESERVE)
|
||||
.setProject("test")
|
||||
.build();
|
||||
RundeckJobsImportResult rundeckJobsImportResult = client.importJobs(jobsImport);
|
||||
Assert.assertEquals(0,rundeckJobsImportResult.getFailedJobs().size());
|
||||
Assert.assertEquals(0,rundeckJobsImportResult.getSkippedJobs().size());
|
||||
Assert.assertEquals(1,rundeckJobsImportResult.getSucceededJobs().size());
|
||||
RundeckJob rundeckJob = rundeckJobsImportResult.getSucceededJobs().get(0);
|
||||
Assert.assertEquals("importJobsUUIDParamPreserveV9", rundeckJob.getName());
|
||||
Assert.assertEquals("testImportUUID", rundeckJob.getId());
|
||||
}
|
||||
/**
|
||||
* Running executions for all projects using API v9
|
||||
* @throws Exception
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
!tape
|
||||
name: import_jobs_uuid_param_preserve_v9
|
||||
interactions:
|
||||
- recorded: 2014-01-16T19:48:16.361Z
|
||||
request:
|
||||
method: POST
|
||||
uri: http://rundeck.local:4440/api/9/jobs/import?format=xml&dupeOption=create&uuidOption=preserve&project=test
|
||||
headers:
|
||||
Content-Type: multipart/form-data; boundary=Vv9SewZI5E_1GRc0505bncu0VK9ZyEST8frI5x
|
||||
Host: rundeck.local:4440
|
||||
Proxy-Connection: Keep-Alive
|
||||
Transfer-Encoding: chunked
|
||||
User-Agent: RunDeck API Java Client 9
|
||||
X-RunDeck-Auth-Token: Do4d3NUD5DKk21DR4sNK755RcPk618vn
|
||||
response:
|
||||
status: 200
|
||||
headers:
|
||||
Content-Type: text/xml;charset=UTF-8
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT
|
||||
Server: Jetty(7.6.0.v20120127)
|
||||
Set-Cookie: JSESSIONID=1xnx5xlw417u9yjo2k4r2azlz;Path=/
|
||||
body: "<result success='true' apiversion='10'>\n <succeeded count='1'>\n <job index='1' href='http://dignan.local:4440/api/10/job/testImportUUID'>\n <id>testImportUUID</id>\n <name>importJobsUUIDParamPreserveV9</name>\n <group></group>\n\
|
||||
\ <project>test</project>\n <url>http://dignan.local:4440/scheduledExecution/show/testImportUUID</url>\n </job>\n </succeeded>\n <failed count='0' />\n <skipped count='0' />\n</result>"
|
|
@ -0,0 +1,23 @@
|
|||
!tape
|
||||
name: import_jobs_uuid_param_remove_v9
|
||||
interactions:
|
||||
- recorded: 2014-01-16T19:48:16.054Z
|
||||
request:
|
||||
method: POST
|
||||
uri: http://rundeck.local:4440/api/9/jobs/import?format=xml&dupeOption=create&uuidOption=remove&project=test
|
||||
headers:
|
||||
Content-Type: multipart/form-data; boundary=g4k7Bv2F-yGqChdM2JJnQlCIXgmcZhb
|
||||
Host: rundeck.local:4440
|
||||
Proxy-Connection: Keep-Alive
|
||||
Transfer-Encoding: chunked
|
||||
User-Agent: RunDeck API Java Client 9
|
||||
X-RunDeck-Auth-Token: Do4d3NUD5DKk21DR4sNK755RcPk618vn
|
||||
response:
|
||||
status: 200
|
||||
headers:
|
||||
Content-Type: text/xml;charset=UTF-8
|
||||
Expires: Thu, 01 Jan 1970 00:00:00 GMT
|
||||
Server: Jetty(7.6.0.v20120127)
|
||||
Set-Cookie: JSESSIONID=1cc5yr3jhdhxs1d9zt0cxdt84z;Path=/
|
||||
body: "<result success='true' apiversion='10'>\n <succeeded count='1'>\n <job index='1' href='http://dignan.local:4440/api/10/job/b33c8bb1-4dfc-4661-a890-4164b264cc4a'>\n <id>b33c8bb1-4dfc-4661-a890-4164b264cc4a</id>\n <name>importJobsUUIDParamRemoveV9</name>\n\
|
||||
\ <group></group>\n <project>test</project>\n <url>http://dignan.local:4440/scheduledExecution/show/b33c8bb1-4dfc-4661-a890-4164b264cc4a</url>\n </job>\n </succeeded>\n <failed count='0' />\n <skipped count='0' />\n</result>"
|
Loading…
Add table
Add a link
Reference in a new issue