diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java index e3380afe4c..354bf95e15 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/VCloudDirectorMediaType.java @@ -147,6 +147,8 @@ public class VCloudDirectorMediaType { public static final String ORG_EMAIL_SETTINGS = "application/vnd.vmware.admin.organizationEmailSettings+xml"; + public static final String ORG_SETTINGS = "application/vnd.vmware.admin.orgSettings+xml"; + /** * * All acceptable media types. @@ -167,6 +169,6 @@ public class VCloudDirectorMediaType { CLONE_MEDIA_PARAMS, LEASE_SETTINGS_SECTION, RELOCATE_TEMPLATE, ENVELOPE, PUBLISH_CATALOG_PARAMS, GROUP, ORG_VAPP_TEMPLATE_LEASE_SETTINGS, ORG_LEASE_SETTINGS, ORG_PASSWORD_POLICY_SETTINGS, ORG_LDAP_SETTINGS, - ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS + ORG_GENERAL_SETTINGS, ORG_EMAIL_SETTINGS, ORG_SETTINGS ); } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java index 8a6e88fd4c..f4de180a68 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/domain/OrgSettings.java @@ -69,12 +69,12 @@ import com.google.common.base.Objects.ToStringHelper; @XmlAccessorType(XmlAccessType.FIELD) @XmlRootElement(name = "OrgSettings") @XmlType(propOrder = { - "orgGeneralSettings", + "generalSettings", "vAppLeaseSettings", "vAppTemplateLeaseSettings", - "orgLdapSettings", - "orgEmailSettings", - "orgPasswordPolicySettings" + "ldapSettings", + "emailSettings", + "passwordPolicy" }) public class OrgSettings extends ResourceType { public static Builder builder() { @@ -87,18 +87,18 @@ public class OrgSettings extends ResourceType { public static class Builder extends ResourceType.Builder { - private OrgGeneralSettings orgGeneralSettings; + private OrgGeneralSettings generalSettings; private OrgLeaseSettings vAppLeaseSettings; private OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; - private OrgLdapSettings orgLdapSettings; - private OrgEmailSettings orgEmailSettings; - private OrgPasswordPolicySettings orgPasswordPolicySettings; + private OrgLdapSettings ldapSettings; + private OrgEmailSettings emailSettings; + private OrgPasswordPolicySettings passwordPolicy; /** - * @see OrgSettings#getOrgGeneralSettings() + * @see OrgSettings#getGeneralSettings() */ - public Builder orgGeneralSettings(OrgGeneralSettings orgGeneralSettings) { - this.orgGeneralSettings = orgGeneralSettings; + public Builder orgGeneralSettings(OrgGeneralSettings generalSettings) { + this.generalSettings = generalSettings; return this; } @@ -119,32 +119,32 @@ public class OrgSettings extends ResourceType { } /** - * @see OrgSettings#getOrgLdapSettings() + * @see OrgSettings#getLdapSettings() */ - public Builder orgLdapSettings(OrgLdapSettings orgLdapSettings) { - this.orgLdapSettings = orgLdapSettings; + public Builder orgLdapSettings(OrgLdapSettings ldapSettings) { + this.ldapSettings = ldapSettings; return this; } /** - * @see OrgSettings#getOrgEmailSettings() + * @see OrgSettings#getEmailSettings() */ - public Builder orgEmailSettings(OrgEmailSettings orgEmailSettings) { - this.orgEmailSettings = orgEmailSettings; + public Builder orgEmailSettings(OrgEmailSettings emailSettings) { + this.emailSettings = emailSettings; return this; } /** - * @see OrgSettings#getOrgPasswordPolicySettings() + * @see OrgSettings#getPasswordPolicy() */ - public Builder orgPasswordPolicySettings(OrgPasswordPolicySettings orgPasswordPolicySettings) { - this.orgPasswordPolicySettings = orgPasswordPolicySettings; + public Builder passwordPolicy(OrgPasswordPolicySettings passwordPolicy) { + this.passwordPolicy = passwordPolicy; return this; } public OrgSettings build() { - return new OrgSettings(href, type, links, orgGeneralSettings, vAppLeaseSettings, - vAppTemplateLeaseSettings, orgLdapSettings, orgEmailSettings, orgPasswordPolicySettings); + return new OrgSettings(href, type, links, generalSettings, vAppLeaseSettings, + vAppTemplateLeaseSettings, ldapSettings, emailSettings, passwordPolicy); } @@ -191,12 +191,12 @@ public class OrgSettings extends ResourceType { } public Builder fromOrgSettings(OrgSettings in) { return fromResourceType(in) - .orgGeneralSettings(in.getOrgGeneralSettings()) + .orgGeneralSettings(in.getGeneralSettings()) .vAppLeaseSettings(in.getVAppLeaseSettings()) .vAppTemplateLeaseSettings(in.getVAppTemplateLeaseSettings()) - .orgLdapSettings(in.getOrgLdapSettings()) - .orgEmailSettings(in.getOrgEmailSettings()) - .orgPasswordPolicySettings(in.getOrgPasswordPolicySettings()); + .orgLdapSettings(in.getLdapSettings()) + .orgEmailSettings(in.getEmailSettings()) + .passwordPolicy(in.getPasswordPolicy()); } } @@ -205,32 +205,33 @@ public class OrgSettings extends ResourceType { // For JAXB } - public OrgSettings(URI href, String type, Set links, - OrgGeneralSettings orgGeneralSettings, + public OrgSettings(URI href, String type, Set links, + OrgGeneralSettings generalSettings, OrgLeaseSettings vAppLeaseSettings, OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings, - OrgLdapSettings orgLdapSettings, OrgEmailSettings orgEmailSettings, - OrgPasswordPolicySettings orgPasswordPolicySettings) { + OrgLdapSettings ldapSettings, OrgEmailSettings emailSettings, + OrgPasswordPolicySettings passwordPolicy) { super(href, type, links); - this.orgGeneralSettings = orgGeneralSettings; + this.generalSettings = generalSettings; this.vAppLeaseSettings = vAppLeaseSettings; this.vAppTemplateLeaseSettings = vAppTemplateLeaseSettings; - this.orgLdapSettings = orgLdapSettings; - this.orgPasswordPolicySettings = orgPasswordPolicySettings; + this.ldapSettings = ldapSettings; + this.emailSettings = emailSettings; + this.passwordPolicy = passwordPolicy; } @XmlElement(name = "OrgGeneralSettings") - protected OrgGeneralSettings orgGeneralSettings; + protected OrgGeneralSettings generalSettings; @XmlElement(name = "VAppLeaseSettings") protected OrgLeaseSettings vAppLeaseSettings; @XmlElement(name = "VAppTemplateLeaseSettings") protected OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; @XmlElement(name = "OrgLdapSettings") - protected OrgLdapSettings orgLdapSettings; + protected OrgLdapSettings ldapSettings; @XmlElement(name = "OrgEmailSettings") - protected OrgEmailSettings orgEmailSettings; + protected OrgEmailSettings emailSettings; @XmlElement(name = "OrgPasswordPolicySettings") - protected OrgPasswordPolicySettings orgPasswordPolicySettings; + protected OrgPasswordPolicySettings passwordPolicy; /** * Gets the value of the orgGeneralSettings property. @@ -240,8 +241,8 @@ public class OrgSettings extends ResourceType { * {@link OrgGeneralSettings } * */ - public OrgGeneralSettings getOrgGeneralSettings() { - return orgGeneralSettings; + public OrgGeneralSettings getGeneralSettings() { + return generalSettings; } /** @@ -276,8 +277,8 @@ public class OrgSettings extends ResourceType { * {@link OrgLdapSettings } * */ - public OrgLdapSettings getOrgLdapSettings() { - return orgLdapSettings; + public OrgLdapSettings getLdapSettings() { + return ldapSettings; } /** @@ -288,8 +289,8 @@ public class OrgSettings extends ResourceType { * {@link OrgEmailSettings } * */ - public OrgEmailSettings getOrgEmailSettings() { - return orgEmailSettings; + public OrgEmailSettings getEmailSettings() { + return emailSettings; } /** @@ -300,8 +301,8 @@ public class OrgSettings extends ResourceType { * {@link OrgPasswordPolicySettings } * */ - public OrgPasswordPolicySettings getOrgPasswordPolicySettings() { - return orgPasswordPolicySettings; + public OrgPasswordPolicySettings getPasswordPolicy() { + return passwordPolicy; } @Override @@ -312,34 +313,34 @@ public class OrgSettings extends ResourceType { return false; OrgSettings that = OrgSettings.class.cast(o); return super.equals(that) && - equal(orgGeneralSettings, that.orgGeneralSettings) && + equal(generalSettings, that.generalSettings) && equal(vAppLeaseSettings, that.vAppLeaseSettings) && equal(vAppTemplateLeaseSettings, that.vAppTemplateLeaseSettings) && - equal(orgLdapSettings, that.orgLdapSettings) && - equal(orgEmailSettings, that.orgEmailSettings) && - equal(orgPasswordPolicySettings, that.orgPasswordPolicySettings); + equal(ldapSettings, that.ldapSettings) && + equal(emailSettings, that.emailSettings) && + equal(passwordPolicy, that.passwordPolicy); } @Override public int hashCode() { return Objects.hashCode(super.hashCode(), - orgGeneralSettings, + generalSettings, vAppLeaseSettings, vAppTemplateLeaseSettings, - orgLdapSettings, - orgEmailSettings, - orgPasswordPolicySettings); + ldapSettings, + emailSettings, + passwordPolicy); } @Override public ToStringHelper string() { return super.string() - .add("orgGeneralSettings", orgGeneralSettings) + .add("generalSettings", generalSettings) .add("vAppLeaseSettings", vAppLeaseSettings) .add("vAppTemplateLeaseSettings", vAppTemplateLeaseSettings) - .add("orgLdapSettings", orgLdapSettings) - .add("orgEmailSettings", orgEmailSettings) - .add("orgPasswordPolicySettings", orgPasswordPolicySettings); + .add("ldapSettings", ldapSettings) + .add("emailSettings", emailSettings) + .add("passwordPolicy", passwordPolicy); } } diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java index 8dba6a872d..eda625bd03 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgAsyncClient.java @@ -38,6 +38,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest; import org.jclouds.vcloud.director.v1_5.functions.ThrowVCloudErrorOn4xx; @@ -57,9 +58,29 @@ public interface AdminOrgAsyncClient extends OrgAsyncClient { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + /** + * @see AdminOrgClient#getSettings(URI) + */ + @GET + @Path("/settings") + @Consumes + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture getSettings( + @EndpointParam URI orgRef); + + /** + * @see AdminOrgClient#updateSettings(URI, OrgSettings) + */ + @PUT + @Path("/settings") + @Consumes(VCloudDirectorMediaType.ORG_SETTINGS) + @Produces(VCloudDirectorMediaType.ORG_SETTINGS) + @JAXBResponseParser + @ExceptionParser(ThrowVCloudErrorOn4xx.class) + ListenableFuture updateSettings( + @EndpointParam URI orgRef, + @BinderParam(BindToXMLPayload.class) OrgSettings settings); /** * @see AdminOrgClient#getEmailSettings(URI) diff --git a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java index 9943b6df64..af752307ce 100644 --- a/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java +++ b/labs/vcloud-director/src/main/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClient.java @@ -28,6 +28,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; /** @@ -45,9 +46,29 @@ public interface AdminOrgClient extends OrgClient { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings + /** + * Gets organizational settings for this organization. + * + *
+    * GET /admin/org/{id}/settings
+    * 
+ * + * @param orgRef the reference for the admin org + * @return the settings + */ + OrgSettings getSettings(URI orgRef); -// PUT /admin/org/{id}/settings + /** + * Updates organizational settings for this organization. + * + *
+    * PUT /admin/org/{id}/settings
+    * 
+ * @param orgRef the reference for the admin org + * @param newSettings the requested updated settings + * @return the resultant settings + */ + OrgSettings updateSettings(URI orgRef, OrgSettings newSettings); /** * Retrieves email settings for an organization. diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java index c6f07b3735..13c1ba76bc 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/domain/Checks.java @@ -528,10 +528,10 @@ public class Checks { } } - public static void checkOrgSetting(OrgSettings settings) { + public static void checkOrgSettings(OrgSettings settings) { // Check optional fields - if (settings.getOrgGeneralSettings() != null) { - checkGeneralSettings(settings.getOrgGeneralSettings()); + if (settings.getGeneralSettings() != null) { + checkGeneralSettings(settings.getGeneralSettings()); } if (settings.getVAppLeaseSettings() != null) { checkVAppLeaseSettings(settings.getVAppLeaseSettings()); @@ -539,14 +539,14 @@ public class Checks { if (settings.getVAppTemplateLeaseSettings() != null) { checkVAppTemplateLeaseSettings(settings.getVAppTemplateLeaseSettings()); } - if (settings.getOrgLdapSettings() != null) { - checkLdapSettings(settings.getOrgLdapSettings()); + if (settings.getLdapSettings() != null) { + checkLdapSettings(settings.getLdapSettings()); } - if (settings.getOrgEmailSettings() != null) { - checkEmailSettings(settings.getOrgEmailSettings()); + if (settings.getEmailSettings() != null) { + checkEmailSettings(settings.getEmailSettings()); } - if (settings.getOrgPasswordPolicySettings() != null) { - checkPasswordPolicySettings(settings.getOrgPasswordPolicySettings()); + if (settings.getPasswordPolicy() != null) { + checkPasswordPolicySettings(settings.getPasswordPolicy()); } // parent type @@ -561,7 +561,6 @@ public class Checks { checkEmailAddress(settings.getFromEmailAddress()); assertNotNull(settings.getDefaultSubjectPrefix(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "defaultSubjectPrefix")); assertNotNull(settings.isAlertEmailToAllAdmins(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "isAlertEmailToAllAdmins")); - assertNotNull(settings.getAlertEmailsTo(), String.format(OBJ_FIELD_REQ, "OrgEmailSettings", "alertEmailsTo")); // optional // NOTE alertEmailsTo cannot be checked diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java index 82b9855ebb..ddd092a076 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientExpectTest.java @@ -30,6 +30,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.Reference; import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; @@ -54,9 +55,60 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + @Test + public void testGetSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/") + .acceptAnyMedia() + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/settings.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .httpResponseBuilder().build()); + + OrgSettings expected = settings(); + + assertEquals(client.getAdminOrgClient().getSettings(orgRef.getURI()), expected); + } + + public static final OrgSettings settings() { + return OrgSettings.builder() + .type("application/vnd.vmware.admin.organizationSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .link(Link.builder() + .rel("edit") + .type("application/vnd.vmware.admin.organizationSettings+xml") + .href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")) + .build()) + + .build(); + } + + @Test + public void testUpdateSettings() { + VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, + new VcloudHttpRequestPrimer() + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/") + .xmlFilePayload("/org/admin/updateSettingsSource.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .acceptMedia(VCloudDirectorMediaType.ORG_SETTINGS) + .httpRequestBuilder().build(), + new VcloudHttpResponsePrimer() + .xmlFilePayload("/org/admin/updateSettings.xml", + VCloudDirectorMediaType.ORG_SETTINGS) + .httpResponseBuilder().build()); + + OrgSettings expected = updateSettings(); + + assertEquals(client.getAdminOrgClient().updateSettings(orgRef.getURI(), expected), expected); + } + + @Test + public static final OrgSettings updateSettings() { + return settings().toBuilder() + .build(); + } @Test public void testGetEmailSettings() { @@ -239,10 +291,10 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect } @Test - public void testUpdateOrgPasswordPolicy() { + public void testUpdatePasswordPolicy() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/passwordPolicy") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy") .xmlFilePayload("/org/admin/updatePasswordPolicySource.xml", VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS) @@ -269,7 +321,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testGetVAppLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("GET", "/admin/org/???/settings/vAppLeaseSettings") + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings") .acceptAnyMedia() .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() @@ -292,7 +344,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testUpdateOrgVAppLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/vAppLeaseSettings") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings") .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", VCloudDirectorMediaType.ORG_LEASE_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_LEASE_SETTINGS) @@ -317,7 +369,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testGetVAppTemplateLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("GET", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings") .acceptAnyMedia() .httpRequestBuilder().build(), new VcloudHttpResponsePrimer() @@ -340,7 +392,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect public void testUpdateOrgVAppTemplateLeaseSettings() { VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, new VcloudHttpRequestPrimer() - .apiCommand("PUT", "/admin/org/???/settings/vAppTemplateLeaseSettings") + .apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings") .xmlFilePayload("/org/admin/updateVAppLeaseSettingsSource.xml", VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) .acceptMedia(VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS) diff --git a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java index cf341ab49b..17d2be7297 100644 --- a/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java +++ b/labs/vcloud-director/src/test/java/org/jclouds/vcloud/director/v1_5/features/AdminOrgClientLiveTest.java @@ -29,6 +29,7 @@ import org.jclouds.vcloud.director.v1_5.domain.OrgGeneralSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings; +import org.jclouds.vcloud.director.v1_5.domain.OrgSettings; import org.jclouds.vcloud.director.v1_5.domain.OrgVAppTemplateLeaseSettings; import org.jclouds.vcloud.director.v1_5.domain.ReferenceType; import org.jclouds.vcloud.director.v1_5.domain.SmtpServerSettings; @@ -59,11 +60,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { */ private ReferenceType orgRef; private AdminOrg org; - OrgEmailSettings emailSettings; - OrgGeneralSettings generalSettings; - OrgPasswordPolicySettings passwordPolicy; - OrgLeaseSettings vAppLeaseSettings; - OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings; + private OrgSettings settings, newSettings; + private OrgEmailSettings emailSettings, newEmailSettings; + private OrgGeneralSettings generalSettings, newGeneralSettings; + private OrgLdapSettings ldapSettings, newLdapSettings; + private OrgPasswordPolicySettings passwordPolicy, newPasswordPolicy; + private OrgLeaseSettings vAppLeaseSettings, newVAppLeaseSettings; + private OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings, newVAppTemplateLeaseSettings; @Override @BeforeClass(inheritGroups = true) @@ -79,9 +82,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { // POST /admin/org/{id}/groups -// GET /admin/org/{id}/settings - -// PUT /admin/org/{id}/settings + @Test(testName = "GET /admin/org/{id}/settings/emailSettings") public void testGetEmailSettings() { @@ -109,7 +110,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); try { - emailSettings = emailSettings.toBuilder() + newEmailSettings = emailSettings.toBuilder() .isDefaultSmtpServer(!isDefaultSmtpServer) .isDefaultOrgEmail(!isDefaultOrgEmail) .fromEmailAddress(newFromEmailAddress) @@ -119,7 +120,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); emailSettings = orgClient.updateEmailSettings( - orgRef.getURI(), emailSettings); + orgRef.getURI(), newEmailSettings); assertTrue(equal(emailSettings.isDefaultSmtpServer(), !isDefaultSmtpServer), String.format(OBJ_FIELD_UPDATABLE, @@ -175,7 +176,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer delayAfterPowerOnSeconds = generalSettings.getDelayAfterPowerOnSeconds(); try { - generalSettings = generalSettings.toBuilder() + newGeneralSettings = generalSettings.toBuilder() // .canPublishCatalogs(!canPublishCatalogs) .deployedVMQuota(deployedVMQuota+1) .storedVmQuota(storedVmQuota+1) @@ -184,7 +185,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { .build(); generalSettings = orgClient.updateGeneralSettings( - orgRef.getURI(), generalSettings); + orgRef.getURI(), newGeneralSettings); // assertTrue(equal(generalSettings.canPublishCatalogs(), !canPublishCatalogs), // String.format(OBJ_FIELD_UPDATABLE, @@ -220,8 +221,8 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { } @Test(testName = "GET /admin/org/{id}/settings/ldap") - public void getLdapSettings() { - OrgLdapSettings ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); + public void testGetLdapSettings() { + ldapSettings = orgClient.getLdapSettings(orgRef.getURI()); Checks.checkLdapSettings(ldapSettings); } @@ -241,14 +242,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer accountLockoutIntervalMinutes = passwordPolicy.getAccountLockoutIntervalMinutes(); try { - passwordPolicy = passwordPolicy.toBuilder() + newPasswordPolicy = passwordPolicy.toBuilder() .accountLockoutEnabled(!accountLockoutEnabled) .invalidLoginsBeforeLockout(invalidLoginsBeforeLockout+1) .accountLockoutIntervalMinutes(accountLockoutIntervalMinutes+1) .build(); passwordPolicy = orgClient.updatePasswordPolicy( - orgRef.getURI(), passwordPolicy); + orgRef.getURI(), newPasswordPolicy); assertTrue(equal(passwordPolicy.isAccountLockoutEnabled(), !accountLockoutEnabled), String.format(OBJ_FIELD_UPDATABLE, @@ -290,14 +291,14 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer deploymentLeaseSeconds = vAppLeaseSettings.getDeploymentLeaseSeconds(); try { - vAppLeaseSettings = vAppLeaseSettings.toBuilder() + newVAppLeaseSettings = vAppLeaseSettings.toBuilder() .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) .storageLeaseSeconds(storageLeaseSeconds+1) .deploymentLeaseSeconds(deploymentLeaseSeconds+1) .build(); vAppLeaseSettings = orgClient.updateVAppLeaseSettings( - orgRef.getURI(), vAppLeaseSettings); + orgRef.getURI(), newVAppLeaseSettings); assertTrue(equal(vAppLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -338,13 +339,13 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { Integer storageLeaseSeconds = vAppTemplateLeaseSettings.getStorageLeaseSeconds(); try { - vAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() + newVAppTemplateLeaseSettings = vAppTemplateLeaseSettings.toBuilder() .deleteOnStorageLeaseExpiration(!deleteOnStorageLeaseExpiration) .storageLeaseSeconds(storageLeaseSeconds+1) .build(); vAppTemplateLeaseSettings = orgClient.updateVAppTemplateLeaseSettings( - orgRef.getURI(), vAppTemplateLeaseSettings); + orgRef.getURI(), newVAppTemplateLeaseSettings); assertTrue(equal(vAppTemplateLeaseSettings.deleteOnStorageLeaseExpiration(), !deleteOnStorageLeaseExpiration), String.format(OBJ_FIELD_UPDATABLE, @@ -366,4 +367,75 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest { orgRef.getURI(), vAppTemplateLeaseSettings); } } + + @Test(testName = "GET /admin/org/{id}/settings/settings", + dependsOnMethods = { "testGetGeneralSettings", + "testGetVAppLeaseSettings", + "testGetVAppTemplateLeaseSettings", + "testGetLdapSettings", + "testGetEmailSettings", + "testGetPasswordPolicy"}) + public void testGetSettings() { + settings = orgClient.getSettings(orgRef.getURI()); + + Checks.checkOrgSettings(settings); + } + + @Test(testName = "PUT /admin/org/{id}/settings/settings", + dependsOnMethods = { "testUpdateGeneralSettings", + "testUpdateVAppLeaseSettings", + "testUpdateVAppTemplateLeaseSettings", + "testUpdateEmailSettings", + "testUpdatePasswordPolicy"}, + enabled = false ) + public void testUpdateSettings() { + try { + newSettings = settings.toBuilder() + .orgGeneralSettings(newGeneralSettings) + .vAppLeaseSettings(newVAppLeaseSettings) + .vAppTemplateLeaseSettings(newVAppTemplateLeaseSettings) + .orgLdapSettings(newLdapSettings) + .orgEmailSettings(newEmailSettings) + .passwordPolicy(newPasswordPolicy) + .build(); + + settings = orgClient.updateSettings( + orgRef.getURI(), newSettings); + + assertTrue(equal(settings.getGeneralSettings(), newGeneralSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "generalSettings")); + assertTrue(equal(settings.getVAppLeaseSettings(), newVAppLeaseSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "vAppLeaseSettings")); + assertTrue(equal(settings.getVAppTemplateLeaseSettings(), newVAppTemplateLeaseSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "vAppTemplateLeaseSettings")); + assertTrue(equal(settings.getLdapSettings(), newLdapSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "ldapSettings")); + assertTrue(equal(settings.getEmailSettings(), newEmailSettings), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "emailSettings")); + assertTrue(equal(settings.getPasswordPolicy(), newPasswordPolicy), + String.format(OBJ_FIELD_UPDATABLE, + "orgSettings", "passwordPolicy")); + + //TODO negative tests? + + Checks.checkOrgSettings(settings); + } finally { + settings = settings.toBuilder() + .orgGeneralSettings(generalSettings) + .vAppLeaseSettings(vAppLeaseSettings) + .vAppTemplateLeaseSettings(vAppTemplateLeaseSettings) + .orgLdapSettings(ldapSettings) + .orgEmailSettings(emailSettings) + .passwordPolicy(passwordPolicy) + .build(); + + settings = orgClient.updateSettings( + orgRef.getURI(), settings); + } + } }