make adminContext more robust

This commit is contained in:
danikov 2012-04-03 11:11:49 +01:00
parent 075dc00a13
commit f20b7a902a
5 changed files with 136 additions and 77 deletions

View File

@ -88,6 +88,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest {
catalogClient = context.getApi().getCatalogClient(); catalogClient = context.getApi().getCatalogClient();
Reference orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint); Reference orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint);
if (adminContext != null) {
AdminCatalog newCatalog = AdminCatalog.builder() AdminCatalog newCatalog = AdminCatalog.builder()
.name(name("Test Catalog ")) .name(name("Test Catalog "))
.description("created by CatalogClientLiveTest") .description("created by CatalogClientLiveTest")
@ -104,6 +105,9 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest {
Task mergeCatalogMetadata = adminCatalogClient.getMetadataClient().mergeMetadata(adminCatalog.getHref(), newMetadata); Task mergeCatalogMetadata = adminCatalogClient.getMetadataClient().mergeMetadata(adminCatalog.getHref(), newMetadata);
checkTask(mergeCatalogMetadata); checkTask(mergeCatalogMetadata);
assertTrue(retryTaskSuccess.apply(mergeCatalogMetadata), String.format(TASK_COMPLETE_TIMELY, "setupRequiredClients")); assertTrue(retryTaskSuccess.apply(mergeCatalogMetadata), String.format(TASK_COMPLETE_TIMELY, "setupRequiredClients"));
} else {
catalogRef = Reference.builder().href(catalogURI).build();
}
} }
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)

View File

@ -58,19 +58,21 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest {
*/ */
protected NetworkClient networkClient; protected NetworkClient networkClient;
private boolean metadataSet = false;
@Override @Override
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
public void setupRequiredClients() { public void setupRequiredClients() {
networkClient = context.getApi().getNetworkClient(); networkClient = context.getApi().getNetworkClient();
adminContext.getApi().getNetworkClient().getMetadataClient().setMetadata(toAdminUri(networkURI),
"key", MetadataValue.builder().value("value").build());
} }
@AfterClass(groups = { "live" }) @AfterClass(alwaysRun = true)
public void cleanUp() throws Exception { public void cleanUp() throws Exception {
if (metadataSet) {
adminContext.getApi().getNetworkClient().getMetadataClient() adminContext.getApi().getNetworkClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(networkURI), "key"); .deleteMetadataEntry(toAdminUri(networkURI), "key");
} }
}
@Test(description = "GET /network/{id}") @Test(description = "GET /network/{id}")
public void testGetNetwork() { public void testGetNetwork() {
@ -87,8 +89,18 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest {
Checks.checkOrgNetwork(network); Checks.checkOrgNetwork(network);
} }
@Test(description = "GET /network/{id}/metadata") private void setupMetadata() {
adminContext.getApi().getNetworkClient().getMetadataClient().setMetadata(toAdminUri(networkURI),
"key", MetadataValue.builder().value("value").build());
metadataSet = true;
}
@Test(description = "GET /network/{id}/metadata", dependsOnMethods = { "testGetNetwork" })
public void testGetMetadata() { public void testGetMetadata() {
if (adminContext != null) {
setupMetadata();
}
Metadata metadata = networkClient.getMetadataClient().getMetadata(networkURI); Metadata metadata = networkClient.getMetadataClient().getMetadata(networkURI);
// required for testing // required for testing
assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()), assertFalse(Iterables.isEmpty(metadata.getMetadataEntries()),
@ -109,7 +121,7 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest {
} }
} }
@Test(description = "GET /network/{id}/metadata/{key}") @Test(description = "GET /network/{id}/metadata/{key}", dependsOnMethods = { "testGetMetadata" })
public void testGetMetadataValue() { public void testGetMetadataValue() {
MetadataValue metadataValue = networkClient.getMetadataClient().getMetadataValue(networkURI, "key"); MetadataValue metadataValue = networkClient.getMetadataClient().getMetadataValue(networkURI, "key");

View File

@ -70,7 +70,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest {
public void cleanUp() throws Exception { public void cleanUp() throws Exception {
if (metadataSet) { if (metadataSet) {
adminContext.getApi().getOrgClient().getMetadataClient() adminContext.getApi().getOrgClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(orgURI), "key"); .deleteMetadataEntry(toAdminUri(orgURI), "KEY");
} }
} }
@ -112,15 +112,18 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest {
checkOrg(org); checkOrg(org);
} }
@Test(description = "orgClient admin metadata setup", dependsOnMethods = { "testGetOrg" }) private void setupMetadata() {
public void testSetupMetadata() {
adminContext.getApi().getOrgClient().getMetadataClient().setMetadata(toAdminUri(orgURI), adminContext.getApi().getOrgClient().getMetadataClient().setMetadata(toAdminUri(orgURI),
"KEY", MetadataValue.builder().value("VALUE").build()); "KEY", MetadataValue.builder().value("VALUE").build());
metadataSet = true; metadataSet = true;
} }
@Test(description = "GET /org/{id}/metadata", dependsOnMethods = { "testSetupMetadata" }) @Test(description = "GET /org/{id}/metadata", dependsOnMethods = { "testGetOrg" })
public void testGetOrgMetadata() { public void testGetOrgMetadata() {
if (adminContext != null) {
setupMetadata();
}
// Call the method being tested // Call the method being tested
Metadata metadata = orgClient.getMetadataClient().getMetadata(orgURI); Metadata metadata = orgClient.getMetadataClient().getMetadata(orgURI);

View File

@ -83,6 +83,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
private VAppTemplate clonedVAppTemplate; private VAppTemplate clonedVAppTemplate;
private VAppTemplate capturedVAppTemplate; private VAppTemplate capturedVAppTemplate;
private VAppTemplate uploadedVAppTemplate; private VAppTemplate uploadedVAppTemplate;
private boolean metadataSet = false;
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
public void cleanUp() throws Exception { public void cleanUp() throws Exception {
@ -105,9 +106,11 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
cleanUpVApp(composedVApp); cleanUpVApp(composedVApp);
} }
if (metadataSet) {
adminContext.getApi().getVdcClient().getMetadataClient() adminContext.getApi().getVdcClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(vdcURI), "key"); .deleteMetadataEntry(toAdminUri(vdcURI), "key");
} }
}
@Override @Override
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
@ -307,14 +310,18 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
} }
@Test(description = "vdcClient admin metadata configuration", dependsOnMethods = { "testGetVdc" } ) private void setupMetadata() {
public void testSetupMetadata() {
adminContext.getApi().getVdcClient().getMetadataClient().setMetadata(toAdminUri(vdcURI), adminContext.getApi().getVdcClient().getMetadataClient().setMetadata(toAdminUri(vdcURI),
"key", MetadataValue.builder().value("value").build()); "key", MetadataValue.builder().value("value").build());
metadataSet = true;
} }
@Test(description = "GET /vdc/{id}/metadata", dependsOnMethods = { "testSetupMetadata" } ) @Test(description = "GET /vdc/{id}/metadata", dependsOnMethods = { "testGetVdc" } )
public void testGetMetadata() { public void testGetMetadata() {
if(adminContext != null) {
setupMetadata();
}
Metadata metadata = vdcClient.getMetadataClient().getMetadata(vdcURI); Metadata metadata = vdcClient.getMetadataClient().getMetadata(vdcURI);
// required for testing // required for testing

View File

@ -18,6 +18,7 @@
*/ */
package org.jclouds.vcloud.director.v1_5.internal; package org.jclouds.vcloud.director.v1_5.internal;
import static com.google.common.base.Objects.equal;
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.ENTITY_NON_NULL; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.ENTITY_NON_NULL;
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.REF_REQ_LIVE;
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.TASK_COMPLETE_TIMELY; import static org.jclouds.vcloud.director.v1_5.VCloudDirectorLiveTestConstants.TASK_COMPLETE_TIMELY;
@ -127,6 +128,7 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
protected Session session; protected Session session;
protected String catalogId; protected String catalogId;
protected URI catalogURI;
protected URI vAppTemplateURI; protected URI vAppTemplateURI;
protected URI mediaURI; protected URI mediaURI;
protected URI networkURI; protected URI networkURI;
@ -136,6 +138,9 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
protected final Set<String> vAppNames = Sets.newLinkedHashSet(); protected final Set<String> vAppNames = Sets.newLinkedHashSet();
protected static final Random random = new Random(); protected static final Random random = new Random();
private User createdAdminUser;
private User createdUser;
protected BaseVCloudDirectorClientLiveTest() { protected BaseVCloudDirectorClientLiveTest() {
provider = "vcloud-director"; provider = "vcloud-director";
} }
@ -169,6 +174,13 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
VCloudDirectorContext rootContext = VCloudDirectorContext.class.cast( VCloudDirectorContext rootContext = VCloudDirectorContext.class.cast(
new RestContextFactory().createContext(provider, identity, credential, ImmutableSet.<Module> of( new RestContextFactory().createContext(provider, identity, credential, ImmutableSet.<Module> of(
new Log4JLoggingModule(), new SshjSshClientModule()), overrides)); new Log4JLoggingModule(), new SshjSshClientModule()), overrides));
if (rootContext.getApi().getCurrentSession().getLinks().contains(Link.builder()
.rel("down")
.type("application/vnd.vmware.admin.vcloud+xml")
.href(URI.create(endpoint+"/admin/"))
.build())) {
adminContext = rootContext.getAdminContext(); adminContext = rootContext.getAdminContext();
rootContext.utils().injector().injectMembers(this); rootContext.utils().injector().injectMembers(this);
@ -176,13 +188,21 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
.toAdminReference(endpoint); .toAdminReference(endpoint);
assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org")); assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org"));
Reference userRef = Iterables.find(adminContext.getApi().getOrgClient().getOrg(orgRef.getHref()).getUsers(),
ReferencePredicates.nameEquals(adminContext.getApi().getCurrentSession().getUser()));
User user = adminContext.getApi().getUserClient().getUser(userRef.getHref());
Reference orgAdmin = user.getRole();
assertTrue(equal(orgAdmin.getName(), DefaultRoles.ORG_ADMIN), "must give org admin or user-only credentials");
String adminIdentity = "testAdmin"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); String adminIdentity = "testAdmin"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String adminCredential = "testAdminPassword"; String adminCredential = "testAdminPassword";
rootContext.getAdminContext().getApi().getUserClient().createUser(orgRef.getHref(), User.builder()
createdAdminUser = rootContext.getAdminContext().getApi().getUserClient().createUser(orgRef.getHref(), User.builder()
.name(adminIdentity) .name(adminIdentity)
.password(adminCredential) .password(adminCredential)
.description("test user with user-level privileges") //TODO desc .description("test user with user-level privileges")
.role(getRoleReferenceFor(DefaultRoles.ORG_ADMIN)) .role(orgAdmin)
.deployedVmQuota(REQUIRED_ADMIN_VM_QUOTA) .deployedVmQuota(REQUIRED_ADMIN_VM_QUOTA)
.isEnabled(true) .isEnabled(true)
.build()); .build());
@ -196,7 +216,7 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
String userIdentity = "test"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); String userIdentity = "test"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String userCredential = "testPassword"; String userCredential = "testPassword";
adminContext.getApi().getUserClient().createUser(orgRef.getHref(), User.builder() createdUser = adminContext.getApi().getUserClient().createUser(orgRef.getHref(), User.builder()
.name(userIdentity) .name(userIdentity)
.password(userCredential) .password(userCredential)
.description("test user with user-level privileges") .description("test user with user-level privileges")
@ -207,6 +227,10 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
context = new RestContextFactory().createContext(provider, userIdentity, userCredential, ImmutableSet.<Module> of( context = new RestContextFactory().createContext(provider, userIdentity, userCredential, ImmutableSet.<Module> of(
new Log4JLoggingModule(), new SshjSshClientModule()), overrides); new Log4JLoggingModule(), new SshjSshClientModule()), overrides);
} else {
context = rootContext;
}
session = context.getApi().getCurrentSession(); session = context.getApi().getCurrentSession();
context.utils().injector().injectMembers(this); context.utils().injector().injectMembers(this);
@ -214,6 +238,20 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
setupRequiredClients(); setupRequiredClients();
} }
@AfterClass(alwaysRun = true)
protected void tearDown() {
if (createdAdminUser != null) {
adminContext.getApi().getUserClient().deleteUser(createdAdminUser.getHref());
}
if (createdUser != null) {
adminContext.getApi().getUserClient().deleteUser(createdUser.getHref());
}
if (context != null)
context.close();
if (adminContext != null)
adminContext.close();
}
public Reference getRoleReferenceFor(String name) { public Reference getRoleReferenceFor(String name) {
RoleReferences roles = adminContext.getApi().getQueryClient().roleReferencesQueryAll(); RoleReferences roles = adminContext.getApi().getQueryClient().roleReferencesQueryAll();
// wrapped in a builder to strip out unwanted xml cruft that the api chokes on // wrapped in a builder to strip out unwanted xml cruft that the api chokes on
@ -245,6 +283,9 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
// TODO change properties to URI, not id // TODO change properties to URI, not id
protected void initTestParametersFromPropertiesOrLazyDiscover() { protected void initTestParametersFromPropertiesOrLazyDiscover() {
catalogId = Strings.emptyToNull(System.getProperty("test." + provider + ".catalog-id")); catalogId = Strings.emptyToNull(System.getProperty("test." + provider + ".catalog-id"));
if (catalogId != null) {
catalogURI = URI.create(endpoint + "/catalog/" + catalogId);
}
String vAppTemplateId = Strings.emptyToNull(System.getProperty("test." + provider + ".vapptemplate-id")); String vAppTemplateId = Strings.emptyToNull(System.getProperty("test." + provider + ".vapptemplate-id"));
if (vAppTemplateId != null) if (vAppTemplateId != null)
@ -288,14 +329,6 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
} }
} }
@AfterClass(alwaysRun = true)
protected void tearDown() {
if (context != null)
context.close();
if (adminContext != null)
adminContext.close();
}
public URI toAdminUri(Reference ref) { public URI toAdminUri(Reference ref) {
return toAdminUri(ref.getHref()); return toAdminUri(ref.getHref());
} }