Add get Project/config endpoint

This commit is contained in:
Greg Schueler 2014-02-27 12:44:26 -08:00
parent b571c2a5be
commit 92eb7acc15
3 changed files with 56 additions and 1 deletions

View file

@ -349,7 +349,7 @@ public class RundeckClient implements Serializable {
RundeckApiException, RundeckApiLoginException,
RundeckApiTokenException, IllegalArgumentException {
AssertUtil.notBlank(projectName, "projectName is mandatory to get the details of a project !");
AssertUtil.notBlank(projectName, "projectName is mandatory to create a project !");
return new ApiCall(this)
.post(new ApiPathBuilder("/projects").xml(
projectDocument(projectName, configuration)
@ -359,6 +359,26 @@ public class RundeckClient implements Serializable {
: "/project"
)));
}
/**
* Return the configuration of a project
*
* @param projectName name of the project - mandatory
*
* @return a {@link ProjectConfig} instance - won't be null
*
* @throws RundeckApiException in case of error when calling the API (non-existent project with this name)
* @throws RundeckApiLoginException if the login fails (in case of login-based authentication)
* @throws RundeckApiTokenException if the token is invalid (in case of token-based authentication)
* @throws IllegalArgumentException if the projectName is blank (null, empty or whitespace)
*/
public ProjectConfig getProjectConfig(String projectName) throws
RundeckApiException, RundeckApiLoginException,
RundeckApiTokenException, IllegalArgumentException {
AssertUtil.notBlank(projectName, "projectName is mandatory to get the config of a project !");
return new ApiCall(this)
.get(new ApiPathBuilder("/project/", projectName, "/config"), new ProjectConfigParser("/config"));
}
private Document projectDocument(String projectName, Map<String, String> configuration) {
RundeckProject project = new RundeckProject();

View file

@ -91,6 +91,17 @@ public class RundeckClientTest {
Assert.assertNotNull(project.getProjectConfig());
}
@Test
@Betamax(tape = "get_project_configv11")
public void getProjectConfig() throws Exception {
ProjectConfig config = createClient(TEST_TOKEN_6, 11).getProjectConfig("monkey1");
Assert.assertNotNull(config);
Assert.assertNotNull(config.getProperties());
Assert.assertEquals(9,config.getProperties().size());
Assert.assertEquals("monkey1", config.getProperties().get("project.name"));
}
@Test
@Betamax(tape = "get_history")
public void getHistory() throws Exception {

View file

@ -0,0 +1,24 @@
!tape
name: get_project_configv11
interactions:
- recorded: 2014-02-27T20:35:47.282Z
request:
method: GET
uri: http://rundeck.local:4440/api/11/project/monkey1/config
headers:
Accept: text/xml
Host: rundeck.local:4440
Proxy-Connection: Keep-Alive
User-Agent: RunDeck API Java Client 11
X-RunDeck-Auth-Token: Do4d3NUD5DKk21DR4sNK755RcPk618vn
response:
status: 200
headers:
Content-Type: application/xml;charset=UTF-8
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Server: Jetty(7.6.0.v20120127)
Set-Cookie: JSESSIONID=bo96n10n268hsd1gi9y67nah;Path=/
X-Rundeck-API-Version: '11'
X-Rundeck-API-XML-Response-Wrapper: 'false'
body: !!binary |-
PGNvbmZpZz4KICA8cHJvcGVydHkga2V5PSdwcm9qZWN0Lm5hbWUnIHZhbHVlPSdtb25rZXkxJyAvPgogIDxwcm9wZXJ0eSBrZXk9J3Byb2plY3Quc3NoLWF1dGhlbnRpY2F0aW9uJyB2YWx1ZT0ncHJpdmF0ZUtleScgLz4KICA8cHJvcGVydHkga2V5PSdzZXJ2aWNlLk5vZGVFeGVjdXRvci5kZWZhdWx0LnByb3ZpZGVyJyB2YWx1ZT0nanNjaC1zc2gnIC8+CiAgPHByb3BlcnR5IGtleT0ncmVzb3VyY2VzLnNvdXJjZS4xLmNvbmZpZy5pbmNsdWRlU2VydmVyTm9kZScgdmFsdWU9J3RydWUnIC8+CiAgPHByb3BlcnR5IGtleT0ncmVzb3VyY2VzLnNvdXJjZS4xLmNvbmZpZy5nZW5lcmF0ZUZpbGVBdXRvbWF0aWNhbGx5JyB2YWx1ZT0ndHJ1ZScgLz4KICA8cHJvcGVydHkga2V5PSdyZXNvdXJjZXMuc291cmNlLjEuY29uZmlnLmZpbGUnIHZhbHVlPScvVXNlcnMvZ3JlZy9ydW5kZWNrMmQvcHJvamVjdHMvbW9ua2V5MS9ldGMvcmVzb3VyY2VzLnhtbCcgLz4KICA8cHJvcGVydHkga2V5PSdwcm9qZWN0LnNzaC1rZXlwYXRoJyB2YWx1ZT0nL1VzZXJzL2dyZWcvLnNzaC9pZF9yc2EnIC8+CiAgPHByb3BlcnR5IGtleT0nc2VydmljZS5GaWxlQ29waWVyLmRlZmF1bHQucHJvdmlkZXInIHZhbHVlPSdqc2NoLXNjcCcgLz4KICA8cHJvcGVydHkga2V5PSdyZXNvdXJjZXMuc291cmNlLjEudHlwZScgdmFsdWU9J2ZpbGUnIC8+CjwvY29uZmlnPg==