Merge branch 'master' of github.com:jclouds/jclouds into 1.5.x

* 'master' of github.com:jclouds/jclouds:
  Issue 891: ubuntu and centos now work with openjdk
  return false when node is null
  Issue 891: switch to openjdk; tested on ubuntu
  minor vcloud bugfixes
  expect test structure for new admin client
  Issue 830: Remove wrong exception parser
  Issue 830: Add some Javadoc for UndeployVAppParams
  trying to fix guice to have both user/admin modules
  Issue 830: Method name tidying
  build users ahead of tests using admin credentials (WIP)
  refractor out admin
This commit is contained in:
Adrian Cole 2012-03-30 18:40:13 -07:00
commit f51a2bf6d1
78 changed files with 1837 additions and 1331 deletions

View File

@ -61,7 +61,7 @@ public class RunScriptData {
public static StatementList installAdminUserJBossAndOpenPorts(OperatingSystem os) throws IOException {
return new StatementList(//
AdminAccess.builder().adminUsername("web").build(),//
InstallJDK.fromURL(),//
InstallJDK.fromOpenJDK(),//
authorizePortsInIpTables(22, 8080),//
extractTargzIntoDirectory(JBOSS7_URL, "/usr/local"),//
exec("{md} " + JBOSS_HOME), exec("mv /usr/local/jboss-*/* " + JBOSS_HOME),//

View File

@ -213,7 +213,7 @@ public class NodePredicates {
return new Predicate<NodeMetadata>() {
@Override
public boolean apply(NodeMetadata nodeMetadata) {
return nodeMetadata.getGroup() != null;
return nodeMetadata != null && nodeMetadata.getGroup() != null;
}
@Override

View File

@ -213,7 +213,7 @@ public abstract class BaseComputeServiceLiveTest extends BaseVersionedServiceLiv
@Test(enabled = true, expectedExceptions = NoSuchElementException.class)
public void testCorrectExceptionRunningNodesNotFound() throws Exception {
client.runScriptOnNodesMatching(runningInGroup("zebras-are-awesome"), InstallJDK.fromURL());
client.runScriptOnNodesMatching(runningInGroup("zebras-are-awesome"), InstallJDK.fromOpenJDK());
}
// since surefire and eclipse don't otherwise guarantee the order, we are
@ -375,7 +375,7 @@ public abstract class BaseComputeServiceLiveTest extends BaseVersionedServiceLiv
protected static Template addRunScriptToTemplate(Template template) {
template.getOptions().runScript(
Statements.newStatementList(AdminAccess.standard(), InstallJDK.fromURL()));
Statements.newStatementList(AdminAccess.standard(), InstallJDK.fromOpenJDK()));
return template;
}
@ -439,7 +439,7 @@ public abstract class BaseComputeServiceLiveTest extends BaseVersionedServiceLiv
protected Map<? extends NodeMetadata, ExecResponse> runScriptWithCreds(final String group, OperatingSystem os,
LoginCredentials creds) throws RunScriptOnNodesException {
return client.runScriptOnNodesMatching(runningInGroup(group), InstallJDK.fromURL(), overrideLoginCredentials(creds)
return client.runScriptOnNodesMatching(runningInGroup(group), InstallJDK.fromOpenJDK(), overrideLoginCredentials(creds)
.nameTask("runScriptWithCreds"));
}

View File

@ -65,7 +65,7 @@ import com.google.inject.Module;
*
* @author Adrian Cole
*/
@Test(groups = "live")
@Test(groups = "live", testName="StubComputeServiceIntegrationTest")
public class StubComputeServiceIntegrationTest extends BaseComputeServiceLiveTest {
private static final ExecResponse EXEC_GOOD = new ExecResponse("", "", 0);

View File

@ -96,7 +96,7 @@ function ensure_cmd_or_install_package_apt(){
function ensure_cmd_or_install_package_yum(){
local cmd=$1
local pkg=$2
hash $cmd 2>/dev/null || yum --nogpgcheck -y ensure $pkg
hash $cmd 2>/dev/null || yum --nogpgcheck -y install $pkg
}
function ensure_netutils_apt() {
@ -133,41 +133,42 @@ function setupPublicCurl() {
ensure_can_resolve_public_dns
return 0
}
function installJDK() {
if hash curl 2>/dev/null; then
if [ `uname -m` == 'x86_64' ]; then
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz}
else
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz}
fi
curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET $url |(mkdir -p /usr/local &&cd /usr/local &&tar -xpzf -)
mv /usr/local/jdk* /usr/local/jdk/
test -n \"$SUDO_USER\" && cat >> /home/$SUDO_USER/.bashrc <<-'END_OF_JCLOUDS_FILE'
function setupJavaHomeInProfile() {
test -n \"$SUDO_USER\" && cat >> `getent passwd $SUDO_USER| cut -f6 -d:`/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
# TODO: eventhough we are setting the above, sometimes images (ex.
# cloudservers ubuntu) kick out of .bashrc (ex. [ -z "$PS1" ] &&
# return), for this reason, we should also explicitly link.
# A better way would be to update using alternatives or the like
ln -fs /usr/local/jdk/bin/java /usr/bin/java
/usr/bin/java -version || abort "cannot run /usr/bin/java"
}
function installOpenJDK() {
if hash apt-get 2>/dev/null; then
export pkg=openjdk-7-jdk
apt-get-install $pkg || ( apt-get-upgrade && apt-get-install $pkg )
export JAVA_HOME=`ls -d /usr/lib/jvm/java-7-openjdk-*|grep -v common`
elif hash yum 2>/dev/null; then
#TODO: find a jdk7 yum repo
export pkg=java-1.6.0-openjdk-devel
yum --nogpgcheck -y install $pkg
export JAVA_HOME=`ls -d /usr/lib/jvm/java-1.6.0-openjdk-*`
else
abort "curl not available.. cannot install openjdk"
abort "we only support apt-get and yum right now... please contribute!"
return 1
fi
return 0
ln -Fs $JAVA_HOME /usr/local/jdk
/usr/local/jdk/bin/java -version || abort "cannot run java"
setupJavaHomeInProfile
}
END_OF_JCLOUDS_SCRIPT
@ -198,7 +199,7 @@ END_OF_JCLOUDS_SCRIPT
awk -v user=^${SUDO_USER:=${USER}}: -v password='crypt(randompassword)' 'BEGIN { FS=OFS=":" } $0 ~ user { $2 = password } 1' /etc/shadow >/etc/shadow.${SUDO_USER:=${USER}}
test -f /etc/shadow.${SUDO_USER:=${USER}} && mv /etc/shadow.${SUDO_USER:=${USER}} /etc/shadow
setupPublicCurl || return 1
installJDK || return 1
installOpenJDK || return 1
END_OF_JCLOUDS_SCRIPT

View File

@ -96,7 +96,7 @@ function ensure_cmd_or_install_package_apt(){
function ensure_cmd_or_install_package_yum(){
local cmd=$1
local pkg=$2
hash $cmd 2>/dev/null || yum --nogpgcheck -y ensure $pkg
hash $cmd 2>/dev/null || yum --nogpgcheck -y install $pkg
}
function ensure_netutils_apt() {
@ -133,41 +133,42 @@ function setupPublicCurl() {
ensure_can_resolve_public_dns
return 0
}
function installJDK() {
if hash curl 2>/dev/null; then
if [ `uname -m` == 'x86_64' ]; then
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz}
else
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz}
fi
curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET $url |(mkdir -p /usr/local &&cd /usr/local &&tar -xpzf -)
mv /usr/local/jdk* /usr/local/jdk/
test -n \"$SUDO_USER\" && cat >> /home/$SUDO_USER/.bashrc <<-'END_OF_JCLOUDS_FILE'
function setupJavaHomeInProfile() {
test -n \"$SUDO_USER\" && cat >> `getent passwd $SUDO_USER| cut -f6 -d:`/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
# TODO: eventhough we are setting the above, sometimes images (ex.
# cloudservers ubuntu) kick out of .bashrc (ex. [ -z "$PS1" ] &&
# return), for this reason, we should also explicitly link.
# A better way would be to update using alternatives or the like
ln -fs /usr/local/jdk/bin/java /usr/bin/java
/usr/bin/java -version || abort "cannot run /usr/bin/java"
}
function installOpenJDK() {
if hash apt-get 2>/dev/null; then
export pkg=openjdk-7-jdk
apt-get-install $pkg || ( apt-get-upgrade && apt-get-install $pkg )
export JAVA_HOME=`ls -d /usr/lib/jvm/java-7-openjdk-*|grep -v common`
elif hash yum 2>/dev/null; then
#TODO: find a jdk7 yum repo
export pkg=java-1.6.0-openjdk-devel
yum --nogpgcheck -y install $pkg
export JAVA_HOME=`ls -d /usr/lib/jvm/java-1.6.0-openjdk-*`
else
abort "curl not available.. cannot install openjdk"
abort "we only support apt-get and yum right now... please contribute!"
return 1
fi
return 0
ln -Fs $JAVA_HOME /usr/local/jdk
/usr/local/jdk/bin/java -version || abort "cannot run java"
setupJavaHomeInProfile
}
END_OF_JCLOUDS_SCRIPT
@ -198,7 +199,7 @@ END_OF_JCLOUDS_SCRIPT
awk -v user=^${SUDO_USER:=${USER}}: -v password='crypt(randompassword)' 'BEGIN { FS=OFS=":" } $0 ~ user { $2 = password } 1' /etc/shadow >/etc/shadow.${SUDO_USER:=${USER}}
test -f /etc/shadow.${SUDO_USER:=${USER}} && mv /etc/shadow.${SUDO_USER:=${USER}} /etc/shadow
setupPublicCurl || return 1
installJDK || return 1
installOpenJDK || return 1
iptables -I INPUT 1 -p tcp --dport 22 -j ACCEPT
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
iptables-save

View File

@ -96,7 +96,7 @@ function ensure_cmd_or_install_package_apt(){
function ensure_cmd_or_install_package_yum(){
local cmd=$1
local pkg=$2
hash $cmd 2>/dev/null || yum --nogpgcheck -y ensure $pkg
hash $cmd 2>/dev/null || yum --nogpgcheck -y install $pkg
}
function ensure_netutils_apt() {
@ -133,41 +133,42 @@ function setupPublicCurl() {
ensure_can_resolve_public_dns
return 0
}
function installJDK() {
if hash curl 2>/dev/null; then
if [ `uname -m` == 'x86_64' ]; then
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz}
else
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz}
fi
curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET $url |(mkdir -p /usr/local &&cd /usr/local &&tar -xpzf -)
mv /usr/local/jdk* /usr/local/jdk/
test -n \"$SUDO_USER\" && cat >> /home/$SUDO_USER/.bashrc <<-'END_OF_JCLOUDS_FILE'
function setupJavaHomeInProfile() {
test -n \"$SUDO_USER\" && cat >> `getent passwd $SUDO_USER| cut -f6 -d:`/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
# TODO: eventhough we are setting the above, sometimes images (ex.
# cloudservers ubuntu) kick out of .bashrc (ex. [ -z "$PS1" ] &&
# return), for this reason, we should also explicitly link.
# A better way would be to update using alternatives or the like
ln -fs /usr/local/jdk/bin/java /usr/bin/java
/usr/bin/java -version || abort "cannot run /usr/bin/java"
}
function installOpenJDK() {
if hash apt-get 2>/dev/null; then
export pkg=openjdk-7-jdk
apt-get-install $pkg || ( apt-get-upgrade && apt-get-install $pkg )
export JAVA_HOME=`ls -d /usr/lib/jvm/java-7-openjdk-*|grep -v common`
elif hash yum 2>/dev/null; then
#TODO: find a jdk7 yum repo
export pkg=java-1.6.0-openjdk-devel
yum --nogpgcheck -y install $pkg
export JAVA_HOME=`ls -d /usr/lib/jvm/java-1.6.0-openjdk-*`
else
abort "curl not available.. cannot install openjdk"
abort "we only support apt-get and yum right now... please contribute!"
return 1
fi
return 0
ln -Fs $JAVA_HOME /usr/local/jdk
/usr/local/jdk/bin/java -version || abort "cannot run java"
setupJavaHomeInProfile
}
END_OF_JCLOUDS_SCRIPT
@ -178,7 +179,7 @@ END_OF_JCLOUDS_SCRIPT
rm -f $INSTANCE_HOME/rc
trap 'echo $?>$INSTANCE_HOME/rc' 0 1 2 3 15
setupPublicCurl || exit 1
installJDK || exit 1
installOpenJDK || exit 1
END_OF_JCLOUDS_SCRIPT

View File

@ -0,0 +1,37 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5;
import org.jclouds.rest.RestContext;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncClient;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorContextImpl;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import com.google.inject.ImplementedBy;
/**
* @author danikov
*/
@ImplementedBy(VCloudDirectorContextImpl.class)
public interface VCloudDirectorContext extends RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> {
RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient> getAdminContext();
}

View File

@ -23,6 +23,9 @@ import java.util.Properties;
import org.jclouds.rest.RestContextBuilder;
import org.jclouds.vcloud.director.v1_5.config.VCloudDirectorRestClientModule;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorContextImpl;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import com.google.inject.Module;
@ -39,5 +42,10 @@ public class VCloudDirectorContextBuilder extends RestContextBuilder<VCloudDirec
protected void addClientModule(List<Module> modules) {
modules.add(new VCloudDirectorRestClientModule());
}
@SuppressWarnings("unchecked")
@Override
public VCloudDirectorContext buildContext() {
return buildInjector().getInstance(VCloudDirectorContextImpl.class);
}
}

View File

@ -0,0 +1,91 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.admin;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.UserAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
/**
* Provides asynchronous access to VCloudDirector Admin via their REST API.
*
* @see VCloudDirectorAdminClient
* @author danikov
*/
public interface VCloudDirectorAdminAsyncClient extends VCloudDirectorAsyncClient {
/**
* @return asynchronous access to admin query features
*/
@Override
@Delegate
AdminQueryAsyncClient getQueryClient();
/**
* @return asynchronous access to {@link Catalog} admin features
*/
@Override
@Delegate
AdminCatalogAsyncClient getCatalogClient();
/**
* @return asynchronous access to admin {@link Group} features
*/
@Delegate
GroupAsyncClient getGroupClient();
/**
* @return asynchronous access to {@link AdminOrg} features
*/
@Override
@Delegate
AdminOrgAsyncClient getOrgClient();
/**
* @return asynchronous access to {@link User} features
*/
@Delegate
UserAsyncClient getUserClient();
/**
* @return asynchronous access to {@link AdminVdc} features
*/
@Override
@Delegate
AdminVdcAsyncClient getVdcClient();
/**
* @return asynchronous access to admin {@link Network} features
*/
@Override
@Delegate
AdminNetworkAsyncClient getNetworkClient();
}

View File

@ -0,0 +1,94 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.admin;
import java.util.concurrent.TimeUnit;
import org.jclouds.concurrent.Timeout;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupClient;
import org.jclouds.vcloud.director.v1_5.features.admin.UserClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
/**
* Provides synchronous access to VCloudDirector Admin.
*
* @see VCloudDirectorAsyncClient
* @author Adrian Cole
*/
@Timeout(duration = 60, timeUnit = TimeUnit.SECONDS)
public interface VCloudDirectorAdminClient extends VCloudDirectorClient {
/**
* @return asynchronous access to admin query features
*/
@Override
@Delegate
AdminQueryClient getQueryClient();
/**
* @return synchronous access to {@link Catalog} admin features
*/
@Override
@Delegate
AdminCatalogClient getCatalogClient();
/**
* @return synchronous access to admin {@link Group} features
*/
@Delegate
GroupClient getGroupClient();
/**
* @return synchronous access to {@link AdminOrg} features
*/
@Override
@Delegate
AdminOrgClient getOrgClient();
/**
* @return synchronous access to {@link User} features
*/
@Delegate
UserClient getUserClient();
/**
* @return synchronous access to {@link AdminVdc} features
*/
@Delegate
AdminVdcClient getVdcClient();
/**
* @return synchronous access to admin {@link Network} features
*/
@Override
@Delegate
AdminNetworkClient getNetworkClient();
}

View File

@ -1,4 +1,5 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
@ -36,26 +37,17 @@ import org.jclouds.http.annotation.Redirection;
import org.jclouds.http.annotation.ServerError;
import org.jclouds.location.Provider;
import org.jclouds.rest.ConfiguresRestClient;
import org.jclouds.rest.RestContext;
import org.jclouds.rest.config.BinderUtils;
import org.jclouds.rest.config.RestClientModule;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.rest.internal.RestContextImpl;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncClient;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.annotations.Login;
import org.jclouds.vcloud.director.v1_5.domain.Session;
import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken;
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.features.AdminNetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.features.AdminOrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.features.AdminQueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.features.AdminVdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.CatalogClient;
import org.jclouds.vcloud.director.v1_5.features.GroupAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.GroupClient;
import org.jclouds.vcloud.director.v1_5.features.MediaAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MediaClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient;
@ -70,19 +62,33 @@ import org.jclouds.vcloud.director.v1_5.features.TaskAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.TaskClient;
import org.jclouds.vcloud.director.v1_5.features.UploadAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.UploadClient;
import org.jclouds.vcloud.director.v1_5.features.UserAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.UserClient;
import org.jclouds.vcloud.director.v1_5.features.VAppAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VAppClient;
import org.jclouds.vcloud.director.v1_5.features.VAppTemplateAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient;
import org.jclouds.vcloud.director.v1_5.features.VdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VdcClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupClient;
import org.jclouds.vcloud.director.v1_5.features.admin.UserAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.admin.UserClient;
import org.jclouds.vcloud.director.v1_5.functions.LoginUserInOrgWithPassword;
import org.jclouds.vcloud.director.v1_5.handlers.InvalidateSessionAndRetryOn401AndLogoutOnClose;
import org.jclouds.vcloud.director.v1_5.handlers.VCloudDirectorErrorHandler;
import org.jclouds.vcloud.director.v1_5.login.SessionAsyncClient;
import org.jclouds.vcloud.director.v1_5.login.SessionClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import com.google.common.base.Function;
import com.google.common.base.Supplier;
@ -93,128 +99,153 @@ import com.google.common.cache.LoadingCache;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
import com.google.inject.name.Named;
/**
* Configures the VCloudDirector connection.
* Configures the cloudstack connection.
*
* @author Adrian Cole
*/
@RequiresHttp
@ConfiguresRestClient
public class VCloudDirectorRestClientModule extends RestClientModule<VCloudDirectorClient, VCloudDirectorAsyncClient> {
public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>>builder()
.put(AdminCatalogClient.class, AdminCatalogAsyncClient.class)
.put(AdminOrgClient.class, AdminOrgAsyncClient.class)
.put(AdminVdcClient.class, AdminVdcAsyncClient.class)
.put(CatalogClient.class, CatalogAsyncClient.class)
.put(NetworkClient.class, NetworkAsyncClient.class)
.put(OrgClient.class, OrgAsyncClient.class)
.put(QueryClient.class, QueryAsyncClient.class)
.put(AdminQueryClient.class, AdminQueryAsyncClient.class)
.put(MediaClient.class, MediaAsyncClient.class)
.put(TaskClient.class, TaskAsyncClient.class)
.put(VdcClient.class, VdcAsyncClient.class)
.put(VAppClient.class, VAppAsyncClient.class)
.put(VAppTemplateClient.class, VAppTemplateAsyncClient.class)
.put(UploadClient.class, UploadAsyncClient.class)
.put(MetadataClient.Readable.class, MetadataAsyncClient.Readable.class)
.put(MetadataClient.Writeable.class, MetadataAsyncClient.Writeable.class)
.put(GroupClient.class, GroupAsyncClient.class)
.put(UserClient.class, UserAsyncClient.class)
.put(AdminNetworkClient.class, AdminNetworkAsyncClient.class)
.build();
public VCloudDirectorRestClientModule() {
super(VCloudDirectorClient.class, VCloudDirectorAsyncClient.class, DELEGATE_MAP);
public static final Map<Class<?>, Class<?>> USER_DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>>builder()
.put(CatalogClient.class, CatalogAsyncClient.class)
.put(MediaClient.class, MediaAsyncClient.class)
.put(MetadataClient.Readable.class, MetadataAsyncClient.Readable.class)
.put(MetadataClient.Writeable.class, MetadataAsyncClient.Writeable.class)
.put(NetworkClient.class, NetworkAsyncClient.class)
.put(OrgClient.class, OrgAsyncClient.class)
.put(QueryClient.class, QueryAsyncClient.class)
.put(TaskClient.class, TaskAsyncClient.class)
.put(UploadClient.class, UploadAsyncClient.class)
.put(VAppClient.class, VAppAsyncClient.class)
.put(VAppTemplateClient.class, VAppTemplateAsyncClient.class)
.put(VdcClient.class, VdcAsyncClient.class)
.build();
public static final Map<Class<?>, Class<?>> ADMIN_DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>>builder()
.putAll(USER_DELEGATE_MAP)
.put(AdminCatalogClient.class, AdminCatalogAsyncClient.class)
.put(AdminNetworkClient.class, AdminNetworkAsyncClient.class)
.put(AdminOrgClient.class, AdminOrgAsyncClient.class)
.put(AdminQueryClient.class, AdminQueryAsyncClient.class)
.put(AdminVdcClient.class, AdminVdcAsyncClient.class)
.put(GroupClient.class, GroupAsyncClient.class)
.put(UserClient.class, UserAsyncClient.class)
.build();
@Override
protected void bindAsyncClient() {
// bind the user client (default)
super.bindAsyncClient();
// bind the admin client
BinderUtils.bindAsyncClient(binder(), VCloudDirectorAdminAsyncClient.class);
}
@Override
protected void bindClient() {
// bind the user client (default)
super.bindClient();
// bind the admin client
BinderUtils.bindClient(binder(), VCloudDirectorAdminClient.class, VCloudDirectorAdminAsyncClient.class, ADMIN_DELEGATE_MAP);
}
public VCloudDirectorRestClientModule() {
super(VCloudDirectorClient.class, VCloudDirectorAsyncClient.class, ADMIN_DELEGATE_MAP);
}
@Override
protected void configure() {
bind(new TypeLiteral<RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient>>() {
}).to(new TypeLiteral<RestContextImpl<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient>>() {
});
// Bind clients that are used directly in Functions, Predicates and other circumstances
bindClientAndAsyncClient(binder(), SessionClient.class, SessionAsyncClient.class);
bindClientAndAsyncClient(binder(), OrgClient.class, OrgAsyncClient.class);
bindClientAndAsyncClient(binder(), SessionClient.class, SessionAsyncClient.class);
bindClientAndAsyncClient(binder(), TaskClient.class, TaskAsyncClient.class);
bindClientAndAsyncClient(binder(), VAppClient.class, VAppAsyncClient.class);
bind(HttpRetryHandler.class).annotatedWith(ClientError.class).to(InvalidateSessionAndRetryOn401AndLogoutOnClose.class);
super.configure();
}
@Override
protected void bindErrorHandlers() {
bind(HttpErrorHandler.class).annotatedWith(Redirection.class).to(VCloudDirectorErrorHandler.class);
bind(HttpErrorHandler.class).annotatedWith(ClientError.class).to(VCloudDirectorErrorHandler.class);
bind(HttpErrorHandler.class).annotatedWith(ServerError.class).to(VCloudDirectorErrorHandler.class);
}
@Provides
@Login
protected Supplier<URI> loginUrl(@Provider Supplier<URI> provider) {
// TODO: technically, we should implement version client, but this will work
return Suppliers.compose(new Function<URI, URI>() {
@Override
public URI apply(URI arg0) {
return URI.create(arg0.toASCIIString() + "/sessions");
}
}, provider);
}
@Provides
protected Supplier<Session> currentSession(Supplier<SessionWithToken> in) {
return Suppliers.compose(new Function<SessionWithToken, Session>() {
@Override
public Session apply(SessionWithToken arg0) {
return arg0.getSession();
}
}, in);
}
@Provides
@Singleton
@org.jclouds.vcloud.director.v1_5.annotations.Session
protected Supplier<String> sessionToken(Supplier<SessionWithToken> in) {
return Suppliers.compose(new Function<SessionWithToken, String>() {
@Override
public String apply(SessionWithToken arg0) {
return arg0.getToken();
}
}, in);
}
@Provides
@Singleton
protected Function<Credentials, SessionWithToken> makeSureFilterRetriesOnTimeout(
LoginUserInOrgWithPassword loginWithPasswordCredentials) {
LoginUserInOrgWithPassword loginWithPasswordCredentials) {
// we should retry on timeout exception logging in.
return new RetryOnTimeOutExceptionFunction<Credentials, SessionWithToken>(loginWithPasswordCredentials);
}
@Provides
@Singleton
public LoadingCache<Credentials, SessionWithToken> provideSessionWithTokenCache(
Function<Credentials, SessionWithToken> getSessionWithToken,
@Named(Constants.PROPERTY_SESSION_INTERVAL) int seconds) {
Function<Credentials, SessionWithToken> getSessionWithToken,
@Named(Constants.PROPERTY_SESSION_INTERVAL) int seconds) {
return CacheBuilder.newBuilder().expireAfterWrite(seconds, TimeUnit.SECONDS).build(
CacheLoader.from(getSessionWithToken));
CacheLoader.from(getSessionWithToken));
}
// Temporary conversion of a cache to a supplier until there is a single-element cache
// http://code.google.com/p/guava-libraries/issues/detail?id=872
@Provides
@Singleton
protected Supplier<SessionWithToken> provideSessionWithTokenSupplier(
final LoadingCache<Credentials, SessionWithToken> cache, @Provider final Credentials creds) {
final LoadingCache<Credentials, SessionWithToken> cache, @Provider final Credentials creds) {
return new Supplier<SessionWithToken>() {
@Override
public SessionWithToken get() {

View File

@ -0,0 +1,27 @@
package org.jclouds.vcloud.director.v1_5.domain;
import java.util.Arrays;
import java.util.List;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClient;
public class Role { //TODO: placeholder for implementation
public static final class DefaultRoles {
public static final String USER = "vApp User";
public static final String AUTHOR = "vApp Author";
public static final String CATALOG_AUTHOR = "Catalog Author";
public static final String CONSOLE = "Console Access Only";
public static final String ORG_ADMIN = "Organization Administrator";
/**
* All default {@link AdminQueryClient#roleReferencesQueryAll()} values.
* <p/>
* This list must be updated whenever a new default role is added.
*/
public static final List<String> ALL = Arrays.asList(
USER, AUTHOR, CATALOG_AUTHOR, CONSOLE, ORG_ADMIN
);
}
}

View File

@ -79,7 +79,21 @@ public class UndeployVAppParams {
protected String undeployPowerAction;
/**
* Gets the value of the undeployPowerAction property.
* The specified action is applied to all VMs in the vApp.
*
* All values other than {@code default} ignore actions, order, and delay specified in the StartupSection. One of:
* <ul>
* <li>{@code powerOff} (Power off the VMs. This is the default action if this attribute is missing or empty)
* <li>{@code suspend} (Suspend the VMs)
* <li>{@code shutdown} (Shut down the VMs)
* <li>{@code force} (Attempt to power off the VMs.
* </ul>
* Failures in undeploying the VM or associated networks are ignored. All references to the vApp and its VMs are
* removed from the database), default (Use the actions, order, and delay specified in the StartupSection).
*
* TODO add an enumeration for these values
*
* @since 1.5
*/
public String getUndeployPowerAction() {
return undeployPowerAction;

View File

@ -123,24 +123,24 @@ public interface VAppAsyncClient {
ListenableFuture<Task> deleteVApp(@EndpointParam URI vAppURI);
/**
* @see VAppClient#consolidateVApp(URI)
* @see VAppClient#consolidateVm(URI)
*/
@POST
@Path("/action/consolidate")
@Consumes(TASK)
@JAXBResponseParser
ListenableFuture<Task> consolidateVApp(@EndpointParam URI vAppURI);
ListenableFuture<Task> consolidateVm(@EndpointParam URI vAppURI);
/**
* @see VAppClient#controlAccess(URI, ControlAccessParams)
* @see VAppClient#modifyControlAccess(URI, ControlAccessParams)
*/
@POST
@Path("/action/controlAccess")
@Produces(CONTROL_ACCESS)
@Consumes(CONTROL_ACCESS)
@JAXBResponseParser
ListenableFuture<ControlAccessParams> controlAccess(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) ControlAccessParams params);
ListenableFuture<ControlAccessParams> modifyControlAccess(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) ControlAccessParams params);
/**
* @see VAppClient#deploy(URI, DeployVAppParams)
@ -190,26 +190,26 @@ public interface VAppAsyncClient {
ListenableFuture<Task> installVMwareTools(@EndpointParam URI vAppURI);
/**
* @see VAppClient#recomposeVApp(URI, RecomposeVAppParams)
* @see VAppClient#recompose(URI, RecomposeVAppParams)
*/
@POST
@Path("/action/recomposeVApp")
@Produces(RECOMPOSE_VAPP_PARAMS)
@Consumes(TASK)
@JAXBResponseParser
ListenableFuture<Task> recomposeVApp(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) RecomposeVAppParams params);
ListenableFuture<Task> recompose(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) RecomposeVAppParams params);
/**
* @see VAppClient#relocate(URI, RelocateParams)
* @see VAppClient#relocateVm(URI, RelocateParams)
*/
@POST
@Path("/action/relocate")
@Produces(RELOCATE_VM_PARAMS)
@Consumes(TASK)
@JAXBResponseParser
ListenableFuture<Task> relocate(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) RelocateParams params);
ListenableFuture<Task> relocateVm(@EndpointParam URI vAppURI,
@BinderParam(BindToXMLPayload.class) RelocateParams params);
/**
* @see VAppClient#undeploy(URI, UndeployVAppParams)

View File

@ -63,32 +63,32 @@ public interface VAppClient {
*
* The vApp/VM could be in one of these statuses:
* <ul>
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#FAILED_CREATION} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#FAILED_CREATION FAILED_CREATION(-1)} -
* Transient entity state, e.g., model object is created but the corresponding VC backing does not
* exist yet. This is further sub-categorized in the respective entities.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} -
* Entity is whole, e.g., VM creation is complete and all the required model objects and VC backings are
* created.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#RESOLVED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#RESOLVED RESOLVED(1)} -
* Entity is resolved.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#DEPLOYED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#DEPLOYED DEPLOYED(2)} -
* Entity is deployed.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#SUSPENDED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#SUSPENDED SUSPENDED(3)} -
* All VMs of the vApp are suspended.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_ON} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_ON POWERED_ON(4)} -
* All VMs of the vApp are powered on.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#WAITING_FOR_INPUT} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#WAITING_FOR_INPUT WAITING_FOR_INPUT(5)} -
* VM is pending response on a question.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNKNOWN} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNKNOWN UNKNOWN(6)} -
* Entity state could not be retrieved from the inventory, e.g., VM power state is null.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRECOGNIZED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRECOGNIZED UNRECOGNIZED(7)} -
* Entity state was retrieved from the inventory but could not be mapped to an internal state.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_OFF} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_OFF POWERED_OFF(8)} -
* All VMs of the vApp are powered off.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#INCONSISTENT_STATE} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#INCONSISTENT_STATE INCONSISTENT_STATE(9)} -
* Apply to VM status, if a vm is {@code POWERED_ON}, or {@code WAITING_FOR_INPUT}, but is
* undeployed, it is in an inconsistent state.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#MIXED} -
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#MIXED MIXED(10)} -
* vApp status is set to {@code MIXED} when the VMs in the vApp are in different power states
* </ul>
*
@ -131,7 +131,7 @@ public interface VAppClient {
*
* @since 1.5
*/
Task consolidateVApp(URI vAppURI);
Task consolidateVm(URI vAppURI);
/**
* Modifies the control access of a vApp.
@ -142,7 +142,7 @@ public interface VAppClient {
*
* @since 0.9
*/
ControlAccessParams controlAccess(URI vAppURI, ControlAccessParams params);
ControlAccessParams modifyControlAccess(URI vAppURI, ControlAccessParams params);
/**
* Deploys a vApp/VM.
@ -231,7 +231,7 @@ public interface VAppClient {
*
* @since 1.0
*/
Task recomposeVApp(URI vAppURI, RecomposeVAppParams params);
Task recompose(URI vAppURI, RecomposeVAppParams params);
/**
* Relocates a vm.
@ -242,7 +242,7 @@ public interface VAppClient {
*
* @since 1.5
*/
Task relocate(URI vAppURI, RelocateParams params);
Task relocateVm(URI vAppURI, RelocateParams params);
/**
* Undeploy a vApp/VM.

View File

@ -73,7 +73,7 @@ import com.google.common.util.concurrent.ListenableFuture;
public interface VAppTemplateAsyncClient {
/**
* @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#getVAppTemplate(URI)
* @see VAppTemplateClient#getVAppTemplate(URI)
*/
@GET
@Consumes(VAPP_TEMPLATE)
@ -83,14 +83,14 @@ public interface VAppTemplateAsyncClient {
/**
* @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient#editVAppTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.VAppTemplate)
* @see VAppTemplateClient#modifyVAppTemplate(URI, VAppTemplate)
*/
@PUT
@Produces(VAPP_TEMPLATE)
@Consumes(TASK)
@JAXBResponseParser
ListenableFuture<Task> editVAppTemplate(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) VAppTemplate template);
ListenableFuture<Task> modifyVAppTemplate(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) VAppTemplate template);
/**
* @see VAppTemplateClient#deleteVappTemplate(URI)
@ -101,21 +101,21 @@ public interface VAppTemplateAsyncClient {
ListenableFuture<Task> deleteVappTemplate(@EndpointParam URI templateUri);
/**
* @see VAppTemplateClient#consolidateVappTemplate(URI)
* @see VAppTemplateClient#consolidateVm(URI)
*/
@POST
@Consumes(TASK)
@Path("/action/consolidate")
@JAXBResponseParser
ListenableFuture<Task> consolidateVappTemplate(@EndpointParam URI templateURI);
ListenableFuture<Task> consolidateVm(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#disableDownloadVappTemplate(URI)
* @see VAppTemplateClient#disableDownload(URI)
*/
@POST
@Path("/action/disableDownload")
@JAXBResponseParser
ListenableFuture<Void> disableDownloadVappTemplate(@EndpointParam URI templateURI);
ListenableFuture<Void> disableDownload(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#enableDownloadVappTemplate(URI)
@ -124,105 +124,115 @@ public interface VAppTemplateAsyncClient {
@Consumes(TASK)
@Path("/action/enableDownload")
@JAXBResponseParser
ListenableFuture<Task> enableDownloadVappTemplate(@EndpointParam URI templateURI);
ListenableFuture<Task> enableDownload(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#relocateVappTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.RelocateParams)
* @see VAppTemplateClient#relocateVm(URI, RelocateParams)
*/
@POST
@Produces(RELOCATE_TEMPLATE)
@Consumes(TASK)
@Path("/action/relocate")
@JAXBResponseParser
ListenableFuture<Task> relocateVappTemplate(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) RelocateParams params);
ListenableFuture<Task> relocateVm(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) RelocateParams params);
/**
* @see VAppTemplateClient#getVAppTemplateCustomizationSection(URI)
* @see VAppTemplateClient#getCustomizationSection(URI)
*/
@GET
@Consumes(CUSTOMIZATION_SECTION)
@Path("/customizationSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<CustomizationSection> getVAppTemplateCustomizationSection(@EndpointParam URI templateURI);
ListenableFuture<CustomizationSection> getCustomizationSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editVAppTemplateCustomizationSection(URI, org.jclouds.vcloud.director.v1_5.domain.CustomizationSection)
* @see VAppTemplateClient#modifyCustomizationSection(URI, CustomizationSection)
*/
@PUT
@Produces(CUSTOMIZATION_SECTION)
@Consumes(TASK)
@Path("/customizationSection")
@JAXBResponseParser
ListenableFuture<Task> editVAppTemplateCustomizationSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) CustomizationSection sectionType);
ListenableFuture<Task> modifyCustomizationSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) CustomizationSection sectionType);
/**
* @see VAppTemplateClient#getVAppTemplateGuestCustomizationSection(URI)
* @see VAppTemplateClient#getGuestCustomizationSection(URI)
*/
@GET
@Consumes(GUEST_CUSTOMIZATION_SECTION)
@Path("/guestCustomizationSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<GuestCustomizationSection> getVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI);
ListenableFuture<GuestCustomizationSection> getGuestCustomizationSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editVAppTemplateGuestCustomizationSection(URI, org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection)
* @see VAppTemplateClient#modifyGuestCustomizationSection(URI, org.jclouds.vcloud.director.v1_5.domain.GuestCustomizationSection)
*/
@PUT
@Produces(GUEST_CUSTOMIZATION_SECTION)
@Consumes(TASK)
@Path("/guestCustomizationSection")
@JAXBResponseParser
ListenableFuture<Task> editVAppTemplateGuestCustomizationSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) GuestCustomizationSection section);
ListenableFuture<Task> modifyGuestCustomizationSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) GuestCustomizationSection section);
/**
* @see VAppTemplateClient#getVappTemplateLeaseSettingsSection(URI)
* @see VAppTemplateClient#getLeaseSettingsSection(URI)
*/
@GET
@Consumes(LEASE_SETTINGS_SECTION)
@Path("/leaseSettingsSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<LeaseSettingsSection> getVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI);
ListenableFuture<LeaseSettingsSection> getLeaseSettingsSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editVappTemplateLeaseSettingsSection(URI, org.jclouds.vcloud.director.v1_5.domain.LeaseSettingsSection)
* @see VAppTemplateClient#modifyLeaseSettingsSection(URI, LeaseSettingsSection)
*/
@PUT
@Produces(LEASE_SETTINGS_SECTION)
@Consumes(TASK)
@Path("/leaseSettingsSection")
@JAXBResponseParser
ListenableFuture<Task> editVappTemplateLeaseSettingsSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection);
ListenableFuture<Task> modifyLeaseSettingsSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) LeaseSettingsSection settingsSection);
/**
* @see VAppTemplateClient#getVAppTemplateNetworkConfigSection(URI)
* @see VAppTemplateClient#getNetworkConnectionSection(URI)
*/
@GET
@Consumes(NETWORK_CONFIG_SECTION)
@Path("/networkConnectionSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<NetworkConnectionSection> getNetworkConnectionSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#getNetworkConfigSection(URI)
*/
@GET
@Consumes(NETWORK_CONFIG_SECTION)
@Path("/networkConfigSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<NetworkConfigSection> getVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI);
ListenableFuture<NetworkConfigSection> getNetworkConfigSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editVAppTemplateNetworkConfigSection(URI, org.jclouds.vcloud.director.v1_5.domain.NetworkConfigSection)
* @see VAppTemplateClient#modifyNetworkConfigSection(URI, NetworkConfigSection)
*/
@PUT
@Produces(NETWORK_CONFIG_SECTION)
@Consumes(TASK)
@Path("/networkConfigSection")
@JAXBResponseParser
ListenableFuture<Task> editVAppTemplateNetworkConfigSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) NetworkConfigSection section);
ListenableFuture<Task> modifyNetworkConfigSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) NetworkConfigSection section);
/**
* @see VAppTemplateClient#getVAppTemplateNetworkConnectionSection(URI)
* @see VAppTemplateClient#getNetworkConnectionSection(URI)
*/
@GET
@Consumes(NETWORK_CONNECTION_SECTION)
@ -232,35 +242,35 @@ public interface VAppTemplateAsyncClient {
ListenableFuture<NetworkConnectionSection> getVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editVAppTemplateNetworkConnectionSection(URI, org.jclouds.vcloud.director.v1_5.domain.NetworkConnectionSection)
* @see VAppTemplateClient#modifyNetworkConnectionSection(URI, NetworkConnectionSection)
*/
@PUT
@Produces(NETWORK_CONNECTION_SECTION)
@Consumes(TASK)
@Path("/networkConnectionSection")
@JAXBResponseParser
ListenableFuture<Task> editVAppTemplateNetworkConnectionSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) NetworkConnectionSection section);
ListenableFuture<Task> modifyNetworkConnectionSection(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) NetworkConnectionSection section);
/**
* @see VAppTemplateClient#getVAppTemplateNetworkSection(URI)
* @see VAppTemplateClient#getNetworkSection(URI)
*/
@GET
@Consumes(NETWORK_SECTION)
@Path("/networkSection")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<NetworkSection> getVAppTemplateNetworkSection(@EndpointParam URI templateURI);
ListenableFuture<NetworkSection> getNetworkSection(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#getVAppTemplateOvf(URI)
* @see VAppTemplateClient#getOvf(URI)
*/
@GET
@Consumes
@Path("/ovf")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<Envelope> getVAppTemplateOvf(@EndpointParam URI templateURI);
ListenableFuture<Envelope> getOvf(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#getOwnerOfVAppTemplate(URI)
@ -270,7 +280,7 @@ public interface VAppTemplateAsyncClient {
@Path("/owner")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<Owner> getOwnerOfVAppTemplate(@EndpointParam URI templateURI);
ListenableFuture<Owner> getOwner(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#getProductSectionsForVAppTemplate(URI)
@ -280,18 +290,18 @@ public interface VAppTemplateAsyncClient {
@Path("/productSections")
@JAXBResponseParser
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
ListenableFuture<ProductSectionList> getProductSectionsForVAppTemplate(@EndpointParam URI templateURI);
ListenableFuture<ProductSectionList> getProductSections(@EndpointParam URI templateURI);
/**
* @see VAppTemplateClient#editProductSectionsForVAppTemplate(URI, org.jclouds.vcloud.director.v1_5.domain.ProductSectionList)
* @see VAppTemplateClient#modifyProductSections(URI, ProductSectionList)
*/
@PUT
@Produces(PRODUCT_SECTION_LIST)
@Consumes(TASK)
@Path("/productSections")
@JAXBResponseParser
ListenableFuture<Task> editProductSectionsForVAppTemplate(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) ProductSectionList sections);
ListenableFuture<Task> modifyProductSections(@EndpointParam URI templateURI,
@BinderParam(BindToXMLPayload.class) ProductSectionList sections);
/**
* @see VAppTemplateClient#getShadowVms(URI)

View File

@ -39,7 +39,7 @@ import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
/**
* Provides synchronous access to {@link VAppTemplate} objects.
*
*
* @author Adam Lowe
* @see org.jclouds.vcloud.director.v1_5.features.VAppTemplateAsyncClient
*/
@ -51,25 +51,25 @@ public interface VAppTemplateClient {
*
* The vApp could be in one of these statues:
* <ul>
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#FAILED_CREATION} -
* Transient entity state, e.g., model object is created but the corresponding VC backing
* does not exist yet. This is further sub-categorized in the respective entities.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED} -
* Entity is whole, e.g., VM creation is complete and all the required model objects and VC backings are created.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#RESOLVED} -
* Entity is resolved.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNKNOWN} -
* Entity state could not be retrieved from the inventory, e.g., VM power state is null.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_OFF} -
* All VMs of the vApp template
* are powered off.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#MIXED} -
* vApp template status is set to MIXED when the VMs in the vApp are in different power states.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#FAILED_CREATION FAILED_CREATION(-1)} -
* Transient entity state, e.g., model object is created but the corresponding VC backing does not exist yet. This
* is further sub-categorized in the respective entities.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} -
* Entity is whole, e.g., VM creation is complete and all the required model objects and VC backings are created.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#RESOLVED RESOLVED(1)} -
* Entity is resolved.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNKNOWN UNKNOWN(6)} -
* Entity state could not be retrieved from the inventory, e.g., VM power state is null.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#POWERED_OFF POWERED_OFF(8)} -
* All VMs of the vApp template are powered off.
* <li>{@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#MIXED MIXED(10)} -
* vApp template status is set to {@code MIXED} when the VMs in the vApp are in different power states.
* </ul>
*
* <pre>
* GET /vAppTemplate/{id}
* </pre>
*
*
* @param templateUri the URI of the template
* @return the requested template
*/
@ -77,159 +77,159 @@ public interface VAppTemplateClient {
/**
* Modifies only the name/description of a vApp template.
*
*
* <pre>
* PUT /vAppTemplate/{id}
* </pre>
*
* @param templateUri the URI of the template
* @param template the template containing the new name and/or description
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param template the template containing the new name and/or description
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVAppTemplate(URI templateUri, VAppTemplate template);
Task modifyVAppTemplate(URI templateUri, VAppTemplate template);
/**
* Deletes a vApp template.
*
*
* <pre>
* DELETE /vAppTemplate/{id}
* </pre>
*
*
* @param templateUri the URI of the template
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task deleteVappTemplate(URI templateUri);
/**
* Consolidates a VM
*
*
* <pre>
* POST /vAppTemplate/{id}/action/consolidate
* </pre>
*
*
* @param templateUri the URI of the template
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task consolidateVappTemplate(URI templateUri);
Task consolidateVm(URI templateUri);
/**
* Disables the download link to the ovf of a vApp template.
*
*
* <pre>
* POST /vAppTemplate/{id}/action/disableDownload
* </pre>
*
*
* @param templateUri the URI of the template
*/
void disableDownloadVappTemplate(URI templateUri);
void disableDownload(URI templateUri);
/**
* Enables downloading of the ovf of a vApp template.
*
*
* <pre>
* POST /vAppTemplate/{id}/action/enableDownload
* </pre>
*
*
* @param templateUri the URI of the template
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task enableDownloadVappTemplate(URI templateUri);
Task enableDownload(URI templateUri);
/**
* Relocates a virtual machine in a vApp template to a different datastore.
*
*
* <pre>
* POST /vAppTemplate/{id}/action/relocate
* </pre>
*
*
* @param templateUri the URI of the template
* @param params contains the reference to the new datastore
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param params contains the reference to the new datastore
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task relocateVappTemplate(URI templateUri, RelocateParams params);
Task relocateVm(URI templateUri, RelocateParams params);
/**
* Retrieves the customization section of a vApp template.
*
*
* <pre>
* GET /vAppTemplate/{id}/customizationSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the customization section
*/
CustomizationSection getVAppTemplateCustomizationSection(URI templateUri);
CustomizationSection getCustomizationSection(URI templateUri);
/**
* Modifies the vApp template customization information.
*
*
* <pre>
* PUT /vAppTemplate/{id}/customizationSection
* </pre>
*
*
* @param templateUri the URI of the template
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVAppTemplateCustomizationSection(URI templateUri, CustomizationSection section);
Task modifyCustomizationSection(URI templateUri, CustomizationSection section);
/**
* Retrieves the Guest Customization Section of a VM
*
*
* <pre>
* GET /vAppTemplate/{id}/guestCustomizationSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the guest customization section
*/
GuestCustomizationSection getVAppTemplateGuestCustomizationSection(URI templateUri);
GuestCustomizationSection getGuestCustomizationSection(URI templateUri);
/**
* Modifies the guest customization options of a VM.
*
*
* <pre>
* PUT /vAppTemplate/{id}/guestCustomizationSection
* </pre>
*
*
* @param templateUri the URI of the template
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVAppTemplateGuestCustomizationSection(URI templateUri, GuestCustomizationSection section);
Task modifyGuestCustomizationSection(URI templateUri, GuestCustomizationSection section);
/**
* Retrieves the lease settings section of a vApp or vApp template
*
*
* <pre>
* GET /vAppTemplate/{id}/leaseSettingsSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the lease settings
*/
LeaseSettingsSection getVappTemplateLeaseSettingsSection(URI templateUri);
LeaseSettingsSection getLeaseSettingsSection(URI templateUri);
/**
* Modifies the lease settings section of a vApp or vApp template.
*
*
* <pre>
* PUT /vAppTemplate/{id}/leaseSettingsSection
* </pre>
*
*
* @param templateUri the URI of the template
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVappTemplateLeaseSettingsSection(URI templateUri, LeaseSettingsSection section);
Task modifyLeaseSettingsSection(URI templateUri, LeaseSettingsSection section);
/**
* Retrieves the network config section of a vApp or vApp template.
@ -237,122 +237,122 @@ public interface VAppTemplateClient {
* <pre>
* GET /vAppTemplate/{id}/networkConfigSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the network config section requested
*/
NetworkConfigSection getVAppTemplateNetworkConfigSection(URI templateUri);
NetworkConfigSection getNetworkConfigSection(URI templateUri);
/**
* Modifies the network config section of a vApp.
*
*
* <pre>
* PUT /vAppTemplate/{id}/networkConfigSection
* </pre>
*
*
* @param templateUri the URI of the template
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVAppTemplateNetworkConfigSection(URI templateUri, NetworkConfigSection section);
Task modifyNetworkConfigSection(URI templateUri, NetworkConfigSection section);
/**
* Retrieves the network connection section of a VM
*
*
* <pre>
* GET /vAppTemplate/{id}/networkConnectionSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the network connection section requested
*/
NetworkConnectionSection getVAppTemplateNetworkConnectionSection(URI templateUri);
NetworkConnectionSection getNetworkConnectionSection(URI templateUri);
/**
* Modifies the network connection section of a VM.
*
*
* <pre>
* PUT /vAppTemplate/{id}/networkConnectionSection
* </pre>
*
*
* @param templateUri the URI of the template
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @param section the new configuration to apply
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editVAppTemplateNetworkConnectionSection(URI templateUri, NetworkConnectionSection section);
Task modifyNetworkConnectionSection(URI templateUri, NetworkConnectionSection section);
/**
* Retrieves the network section of a vApp or vApp template.
*
*
* <pre>
* GET /vAppTemplate/{id}/networkSection
* </pre>
*
*
* @param templateUri the URI of the template
* @return the network section requested
*/
NetworkSection getVAppTemplateNetworkSection(URI templateUri);
NetworkSection getNetworkSection(URI templateUri);
/**
* Retrieves an OVF descriptor of a vApp template. This OVF represents the vApp
* template as it is, with all vCloud specific information (like mac address,
* parent networks, etc). The OVF which could be downloaded by enabling for
* download will not contain this information. There no specific states bound
* to this entity.
* Retrieves an OVF descriptor of a vApp template.
*
* This OVF represents the vApp template as it is, with all vCloud specific information (like mac address, parent
* networks, etc). The OVF which could be downloaded by enabling for download will not contain this information.
* There are no specific states bound to this entity.
*
* <pre>
* GET /vAppTemplate/{id}/ovf
* </pre>
*
*
* @param templateUri the URI of the template
* @return the ovf envelope
*/
Envelope getVAppTemplateOvf(URI templateUri);
Envelope getOvf(URI templateUri);
/**
* Retrieves vApp template owner.
*
*
* <pre>
* GET /vAppTemplate/{id}/owner
* </pre>
*
*
* @param templateUri the URI of the template
* @return the owner of the vApp template
*/
Owner getOwnerOfVAppTemplate(URI templateUri);
Owner getOwner(URI templateUri);
/**
* Retrieves VAppTemplate/VM product sections
*
*
* <pre>
* GET /vAppTemplate/{id}/productSections
* </pre>
*
*
* @param templateUri the URI of the template
* @return the product sections
*/
ProductSectionList getProductSectionsForVAppTemplate(URI templateUri);
ProductSectionList getProductSections(URI templateUri);
/**
* Modifies the product sections of a vApp or vApp template.
*
*
* <pre>
* PUT /vAppTemplate/{id}/productSections
* </pre>
*
*
* @param templateUri the URI of the template
* @return the task performing the action. This operation is asynchronous and the user
* should monitor the returned task status in order to check when it is completed.
* @return the task performing the action. This operation is asynchronous and the user should monitor the returned
* task status in order to check when it is completed.
*/
Task editProductSectionsForVAppTemplate(URI templateUri, ProductSectionList sections);
Task modifyProductSections(URI templateUri, ProductSectionList sections);
/**
* <pre>
* GET /vAppTemplate/{id}/shadowVms
* </pre>
*
*
* @param templateUri the URI of the template
* @return shadowVM references
*/

View File

@ -56,30 +56,34 @@ public interface VdcClient {
* Captures a vApp into vApp template.
*
* The status of vApp template will be in
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)}
* until the capture task is finished.
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the
* capture task is finished.
*
* @return a VApp resource which will contain a task.
* The user should should wait for this task to finish to be able to use the vApp.
* @return a VApp resource which will contain a task. The user should should wait for this task to finish to be able
* to use the vApp.
*/
VAppTemplate captureVApp(URI vdcUri, CaptureVAppParams params);
/**
* Clones a media into new one.
* Clones a media into new one.
*
* The status of the returned media is
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)}
* until the task for cloning finish.
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the task
* for cloning finish.
*
* @return a Media resource which will contain a task.
* The user should monitor the contained task status in order to check when it is completed.
* @return a Media resource which will contain a task. The user should monitor the contained task status in order to
* check when it is completed.
*/
Media cloneMedia(URI vdcUri, CloneMediaParams params);
/**
* Clones a vApp into new one. The status of vApp will be in UNRESOLVED(0) until the clone task is finished.
* Clones a vApp into new one.
*
* The status of vApp will be in {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED
* UNRESOLVED(0)} until the clone task is finished.
*
* @return a VApp resource which will contain a task.
* The user should should wait for this task to finish to be able to use the vApp.
* @return a VApp resource which will contain a task. The user should should wait for this task to finish to be able
* to use the vApp.
*/
VApp cloneVApp(URI vdcUri, CloneVAppParams params);
@ -87,11 +91,11 @@ public interface VdcClient {
* Clones a vApp template into new one.
*
* The status of vApp template will be in
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)}
* until the clone task is finished.
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the clone
* task is finished.
*
* @return a VAppTemplate resource which will contain a task.
* The user should should wait for this task to finish to be able to use the VAppTemplate.
* @return a VAppTemplate resource which will contain a task. The user should should wait for this task to finish to
* be able to use the VAppTemplate.
*/
VAppTemplate cloneVAppTemplate(URI vdcUri, CloneVAppTemplateParams params);
@ -102,45 +106,43 @@ public interface VdcClient {
* or virtual machines. When you compose a vApp, all children of each composition source
* become peers in the Children collection of the composed vApp. To compose a vApp, a client
* makes a compose vApp request whose body is a ComposeVAppParams element, includes the
* following information:
* following information:
* <ul>
* <li>An InstantiationParams element that applies to the composed vApp itself and any vApp
* templates referenced in Item elements.
* <li>A SourcedItem element for each virtual machine, vApp, or vAppTemplate to include in
* the composition. Each SourcedItem can contain the following elements:
* <li>An InstantiationParams element that applies to the composed vApp itself and any vApp templates referenced in
* Item elements.
* <li>A SourcedItem element for each virtual machine, vApp, or vAppTemplate to include in the composition. Each
* SourcedItem can contain the following elements:
* <ul>
* <li>A required Source element whose href attribute value is a reference
* to a vApp template, vApp, or VM to include in the composition. If the Source element
* references a VM, the Item must also include an InstantiationParams element specific to
* that VM.
* <li>An optional NetworkAssignment element that specifies how the network connections
* of child VM elements are mapped to vApp networks in the parent.
* <li>A required Source element whose href attribute value is a reference to a vApp template, vApp, or VM to include
* in the composition. If the Source element references a VM, the Item must also include an InstantiationParams
* element specific to that VM.
* <li>An optional NetworkAssignment element that specifies how the network connections of child VM elements are
* mapped to vApp networks in the parent.
* </ul>
* <li>If any of the composition items is subject to a EULA, the ComposeVAppParams element
* must include an AllEULAsAccepted element that has a value of true, indicating that you
* accept the EULA. Otherwise, composition fails. The composed vApp must be deployed and
* powered on before it can be used. The status of vApp will be
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)}
* until the compose task is finished.
* </ul>
* If any of the composition items is subject to a EULA, the ComposeVAppParams element must include an
* AllEULAsAccepted element that has a value of true, indicating that you accept the EULA. Otherwise, composition
* fails. The composed vApp must be deployed and powered on before it can be used. The status of vApp will be
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)} until the
* compose task is finished.
*
* @return a VApp resource which will contain a task.
* The user should should wait for this task to finish to be able to use the vApp.
* @return a VApp resource which will contain a task. The user should should wait for this task to finish to be able
* to use the vApp.
*/
VApp composeVApp(URI vdcUri, ComposeVAppParams params);
/**
* Instantiate a vApp template into a new vApp.
*
* The status of vApp will be in
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED UNRESOLVED(0)}
* until the instantiate task is finished.
* Instantiate a vApp template into a new vApp.
*
* The status of vApp will be in {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#UNRESOLVED
* UNRESOLVED(0)} until the instantiate task is finished.
*
* <pre>
* POST /vdc/{id}/action/instantiateVAppTemplate
* </pre>
*
* @return a VApp resource which will contain a task.
* The user should should wait for this task to finish to be able to use the vApp.
* @return a VApp resource which will contain a task. The user should should wait for this task to finish to be able
* to use the vApp.
*/
VApp instantiateVApp(URI vdcUri, InstantiateVAppParamsType params);
@ -149,19 +151,19 @@ public interface VdcClient {
*
* The operation is separate on several steps:
* <ol>
* <li>creating empty vApp template entity
* <li>uploading an OVF of vApp template
* <li>uploading disks described from the OVF
* <li>creating empty vApp template entity
* <li>uploading an OVF of vApp template
* <li>uploading disks described from the OVF
* <li>finishing task for uploading
* </ol>
* The status of vApp template will be {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#NOT_READY NOT_READY(0)}
* until the ovf and all disks are uploaded to the transfer site. After this a task will run on the vApp template uploading.
*
* Note that the empty vApp template's getFiles() returns a file of size -1 after step one above,
* The status of vApp template will be
* {@link org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status#NOT_READY NOT_READY(0)} until the ovf and
* all disks are uploaded to the transfer site. After this a task will run on the vApp template uploading.
* Note that the empty vApp template's getFiles() returns a file of size -1 after step one above,
* because the descriptor.ovf does not yet exist.
*
* @return a VAppTemplate resource which will contain a task.
* The user should should wait for this task to finish to be able to use the VAppTemplate.
* @return a VAppTemplate resource which will contain a task. The user should should wait for this task to finish to
* be able to use the VAppTemplate.
*/
VAppTemplate uploadVAppTemplate(URI vdcUri, UploadVAppTemplateParams params);

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
@ -40,6 +40,9 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.AdminCatalog;
import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams;
import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient.Writeable;
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
import com.google.common.util.concurrent.ListenableFuture;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;
@ -24,8 +24,11 @@ import java.util.concurrent.TimeUnit;
import org.jclouds.concurrent.Timeout;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.AdminCatalog;
import org.jclouds.vcloud.director.v1_5.domain.Metadata;
import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams;
import org.jclouds.vcloud.director.v1_5.features.CatalogClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataClient;
/**
* Provides synchronous access to {@link AdminCatalog} objects.

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
@ -39,6 +39,9 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.ExternalNetwork;
import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient.Writeable;
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
import com.google.common.util.concurrent.ListenableFuture;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;
@ -26,6 +26,9 @@ import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.Network;
import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.MetadataClient;
import org.jclouds.vcloud.director.v1_5.features.NetworkClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataClient.Writeable;
/**
* Provides synchronous access to admin {@link Network} objects.

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
@ -43,6 +43,9 @@ 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.features.MetadataAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient.Writeable;
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
import com.google.common.util.concurrent.ListenableFuture;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;
@ -31,6 +31,9 @@ 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.features.MetadataClient;
import org.jclouds.vcloud.director.v1_5.features.OrgClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataClient.Writeable;
/**
* Provides synchronous access to {@link Org} objects.

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.util.concurrent.TimeUnit;
@ -31,6 +31,7 @@ import org.jclouds.rest.annotations.QueryParams;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.vcloud.director.v1_5.domain.RoleReferences;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords;
import org.jclouds.vcloud.director.v1_5.features.QueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
import com.google.common.util.concurrent.ListenableFuture;

View File

@ -16,13 +16,14 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.util.concurrent.TimeUnit;
import org.jclouds.concurrent.Timeout;
import org.jclouds.vcloud.director.v1_5.domain.RoleReferences;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords;
import org.jclouds.vcloud.director.v1_5.features.QueryClient;
/**
* Provides synchronous access to {@link AdminQuery} objects.

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
@ -37,6 +37,9 @@ import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient.Writeable;
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
import com.google.common.util.concurrent.ListenableFuture;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;
@ -26,6 +26,9 @@ import org.jclouds.rest.annotations.Delegate;
import org.jclouds.rest.annotations.EndpointParam;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.MetadataClient;
import org.jclouds.vcloud.director.v1_5.features.VdcClient;
import org.jclouds.vcloud.director.v1_5.features.MetadataAsyncClient.Writeable;
/**
* Provides synchronous access to {@link AdminVdc}.

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;

View File

@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.features;
package org.jclouds.vcloud.director.v1_5.features.admin;
import java.net.URI;
import java.util.concurrent.TimeUnit;

View File

@ -0,0 +1,72 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.internal;
import java.net.URI;
import java.util.Map;
import java.util.Set;
import javax.inject.Inject;
import javax.inject.Singleton;
import org.jclouds.domain.Credentials;
import org.jclouds.lifecycle.Closer;
import org.jclouds.location.Iso3166;
import org.jclouds.location.Provider;
import org.jclouds.rest.RestContext;
import org.jclouds.rest.Utils;
import org.jclouds.rest.annotations.ApiVersion;
import org.jclouds.rest.annotations.BuildVersion;
import org.jclouds.rest.annotations.Identity;
import org.jclouds.rest.internal.RestContextImpl;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorContext;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncClient;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import com.google.common.base.Supplier;
import com.google.inject.Injector;
import com.google.inject.TypeLiteral;
/**
* @author danikov
*/
@Singleton
public class VCloudDirectorContextImpl extends RestContextImpl<VCloudDirectorClient, VCloudDirectorAsyncClient> implements
VCloudDirectorContext {
private final RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient> adminContext;
@Inject
VCloudDirectorContextImpl(Closer closer, Map<String, Credentials> credentialStore, Utils utils, Injector injector,
TypeLiteral<VCloudDirectorClient> syncApi, TypeLiteral<VCloudDirectorAsyncClient> asyncApi,
@Provider Supplier<URI> endpoint, @Provider String provider,
@Identity String identity, @ApiVersion String apiVersion, @BuildVersion String buildVersion,
@Iso3166 Set<String> iso3166Codes,
RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient> adminContext) {
super(closer, credentialStore, utils, injector, syncApi, asyncApi, endpoint, provider,
identity, apiVersion, buildVersion, iso3166Codes);
this.adminContext = adminContext;
}
@Override
public RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient> getAdminContext() {
return adminContext;
}
}

View File

@ -16,35 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5;
package org.jclouds.vcloud.director.v1_5.user;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.Media;
import org.jclouds.vcloud.director.v1_5.domain.Org;
import org.jclouds.vcloud.director.v1_5.domain.Session;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.domain.VApp;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.domain.Vdc;
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminNetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminOrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminQueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.AdminVdcAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.CatalogAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.GroupAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.QueryAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.TaskAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.UploadAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.UserAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VAppAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VAppTemplateAsyncClient;
import org.jclouds.vcloud.director.v1_5.features.VdcAsyncClient;
@ -71,12 +60,6 @@ public interface VCloudDirectorAsyncClient {
@Delegate
QueryAsyncClient getQueryClient();
/**
* @return asynchronous access to admin query features
*/
@Delegate
AdminQueryAsyncClient getAdminQueryClient();
/**
* @return asynchronous access to {@link Org} features
*/
@ -130,40 +113,4 @@ public interface VCloudDirectorAsyncClient {
*/
@Delegate
VAppTemplateAsyncClient getVAppTemplateClient();
/**
* @return asynchronous access to {@link Catalog} admin features
*/
@Delegate
AdminCatalogAsyncClient getAdminCatalogClient();
/**
* @return asynchronous access to admin {@link Group} features
*/
@Delegate
GroupAsyncClient getGroupClient();
/**
* @return asynchronous access to {@link AdminOrg} features
*/
@Delegate
AdminOrgAsyncClient getAdminOrgClient();
/**
* @return asynchronous access to {@link User} features
*/
@Delegate
UserAsyncClient getUserClient();
/**
* @return asynchronous access to {@link AdminVdc} features
*/
@Delegate
AdminVdcAsyncClient getAdminVdcClient();
/**
* @return asynchronous access to admin {@link Network} features
*/
@Delegate
AdminNetworkAsyncClient getAdminNetworkClient();
}

View File

@ -16,39 +16,29 @@
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5;
package org.jclouds.vcloud.director.v1_5.user;
import java.util.concurrent.TimeUnit;
import org.jclouds.concurrent.Timeout;
import org.jclouds.rest.annotations.Delegate;
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncClient;
import org.jclouds.vcloud.director.v1_5.domain.Catalog;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.Media;
import org.jclouds.vcloud.director.v1_5.domain.Org;
import org.jclouds.vcloud.director.v1_5.domain.Session;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.domain.VApp;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.domain.Vdc;
import org.jclouds.vcloud.director.v1_5.domain.ovf.Network;
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.features.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.features.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.features.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.features.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.features.CatalogClient;
import org.jclouds.vcloud.director.v1_5.features.GroupClient;
import org.jclouds.vcloud.director.v1_5.features.MediaClient;
import org.jclouds.vcloud.director.v1_5.features.NetworkClient;
import org.jclouds.vcloud.director.v1_5.features.OrgClient;
import org.jclouds.vcloud.director.v1_5.features.QueryClient;
import org.jclouds.vcloud.director.v1_5.features.TaskClient;
import org.jclouds.vcloud.director.v1_5.features.UploadClient;
import org.jclouds.vcloud.director.v1_5.features.UserClient;
import org.jclouds.vcloud.director.v1_5.features.VAppClient;
import org.jclouds.vcloud.director.v1_5.features.VAppTemplateClient;
import org.jclouds.vcloud.director.v1_5.features.VdcClient;
@ -58,8 +48,8 @@ import com.google.inject.Provides;
/**
* Provides synchronous access to VCloudDirector.
*
* @see VCloudDirectorAsyncClient
* @author Adrian Cole
* @see VCloudDirectorAdminAsyncClient
* @author danikov
*/
@Timeout(duration = 60, timeUnit = TimeUnit.SECONDS)
public interface VCloudDirectorClient {
@ -75,12 +65,6 @@ public interface VCloudDirectorClient {
@Delegate
QueryClient getQueryClient();
/**
* @return asynchronous access to admin query features
*/
@Delegate
AdminQueryClient getAdminQueryClient();
/**
* @return synchronous access to {@link Org} features
*/
@ -134,40 +118,4 @@ public interface VCloudDirectorClient {
*/
@Delegate
VAppTemplateClient getVAppTemplateClient();
/**
* @return synchronous access to {@link Catalog} admin features
*/
@Delegate
AdminCatalogClient getAdminCatalogClient();
/**
* @return synchronous access to admin {@link Group} features
*/
@Delegate
GroupClient getGroupClient();
/**
* @return synchronous access to {@link AdminOrg} features
*/
@Delegate
AdminOrgClient getAdminOrgClient();
/**
* @return synchronous access to {@link User} features
*/
@Delegate
UserClient getUserClient();
/**
* @return synchronous access to {@link AdminVdc} features
*/
@Delegate
AdminVdcClient getAdminVdcClient();
/**
* @return synchronous access to admin {@link Network} features
*/
@Delegate
AdminNetworkClient getAdminNetworkClient();
}

View File

@ -32,7 +32,7 @@ import org.jclouds.http.HttpResponse;
import org.jclouds.util.Strings2;
import org.jclouds.vcloud.director.v1_5.domain.OrgList;
import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken;
import org.jclouds.vcloud.director.v1_5.features.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.jclouds.xml.internal.JAXBParser;
import org.testng.annotations.Test;

View File

@ -20,15 +20,16 @@ package org.jclouds.vcloud.director.v1_5;
import static org.testng.Assert.assertEquals;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.login.SessionClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
/**
* @author Adrian Cole
*/
@Test(groups = "unit", testName = "VCloudDirectorClient")
public class VCloudDirectorClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class VCloudDirectorClientExpectTest extends VCloudDirectorAdminClientExpectTest {
public void testRestClientModuleWorksProperly() throws Exception {

View File

@ -22,15 +22,16 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.AdminCatalog;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -41,13 +42,7 @@ import com.google.common.collect.ImmutableSet;
* @author grkvlt@apache.org
*/
@Test(groups = { "unit", "admin", "catalog" }, singleThreaded = true, testName = "CatalogClientExpectTest")
public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
private Reference orgRef = Reference.builder()
.type("application/vnd.vmware.vcloud.catalog+xml")
.name("QunyingTestCatalog")
.href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
.build();
public class AdminCatalogClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private Reference catalogRef = Reference.builder()
.type("application/vnd.vmware.vcloud.catalog+xml")
@ -57,7 +52,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
@Test
public void testCreateCatalog() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/catalogs")
.xmlFilePayload("/catalog/admin/createCatalogSource.xml", VCloudDirectorMediaType.ADMIN_CATALOG)
@ -70,7 +65,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
AdminCatalog source = createCatalogSource();
AdminCatalog expected = createCatalog();
assertEquals(client.getAdminCatalogClient().createCatalog(orgRef.getHref(), source), expected);
assertEquals(client.getCatalogClient().createCatalog(catalogRef.getHref(), source), expected);
}
// FIXME disabled due to intermittent JXB error: javax.xml.bind.UnmarshalException:
@ -82,7 +77,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
// <{http://www.vmware.com/vcloud/v1.5}VAppReference>
@Test(enabled = false)
public void testGetCatalog() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")
.acceptAnyMedia()
@ -93,7 +88,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
AdminCatalog expected = catalog();
AdminCatalog actual = client.getAdminCatalogClient().getCatalog(catalogRef.getHref());
AdminCatalog actual = client.getCatalogClient().getCatalog(catalogRef.getHref());
assertEquals(actual.getHref(), expected.getHref());
assertEquals(actual.getLinks(), expected.getLinks());
assertEquals(actual.getTasks(), expected.getTasks());
@ -107,12 +102,12 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
assertEquals(actual.getOwner(), expected.getOwner());
assertEquals(client.getAdminCatalogClient().getCatalog(catalogRef.getHref()), expected);
assertEquals(client.getCatalogClient().getCatalog(catalogRef.getHref()), expected);
}
@Test
public void testModifyCatalog() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")
.xmlFilePayload("/catalog/admin/updateCatalogSource.xml", VCloudDirectorMediaType.ADMIN_CATALOG)
@ -124,12 +119,12 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
AdminCatalog expected = modifyCatalog();
assertEquals(client.getAdminCatalogClient().updateCatalog(catalogRef.getHref(), expected), expected);
assertEquals(client.getCatalogClient().updateCatalog(catalogRef.getHref(), expected), expected);
}
@Test
public void testGetOwner() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/owner")
.acceptAnyMedia()
@ -151,12 +146,12 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
.build())
.build();
assertEquals(client.getAdminCatalogClient().getOwner(catalogRef.getHref()), expected);
assertEquals(client.getCatalogClient().getOwner(catalogRef.getHref()), expected);
}
@Test
public void testSetOwner() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/owner")
.xmlFilePayload("/catalog/admin/updateOwnerSource.xml", VCloudDirectorMediaType.OWNER)
@ -174,12 +169,12 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
.build())
.build();
client.getAdminCatalogClient().setOwner(catalogRef.getHref(), newOwner);
client.getCatalogClient().setOwner(catalogRef.getHref(), newOwner);
}
@Test
public void testPublishCatalog() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4/action/publish")
.xmlFilePayload("/catalog/admin/publishCatalogParams.xml", VCloudDirectorMediaType.PUBLISH_CATALOG_PARAMS)
@ -192,12 +187,12 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
.isPublished(true)
.build();
client.getAdminCatalogClient().publishCatalog(catalogRef.getHref(), params);
client.getCatalogClient().publishCatalog(catalogRef.getHref(), params);
}
@Test
public void testDeleteCatalog() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("DELETE", "/admin/catalog/7212e451-76e1-4631-b2de-ba1dfd8080e4")
.acceptAnyMedia()
@ -205,7 +200,7 @@ public class AdminCatalogClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpResponsePrimer()
.httpResponseBuilder().statusCode(204).build());
client.getAdminCatalogClient().deleteCatalog(catalogRef.getHref());
client.getCatalogClient().deleteCatalog(catalogRef.getHref());
}
public static final AdminCatalog createCatalogSource() {

View File

@ -40,6 +40,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.PublishCatalogParams;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
@ -74,7 +75,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest
@Override
@BeforeClass(alwaysRun = true)
protected void setupRequiredClients() {
catalogClient = context.getApi().getAdminCatalogClient();
catalogClient = adminContext.getApi().getCatalogClient();
orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint);
}
@ -109,8 +110,8 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest
@Test(description = "PUT /admin/catalog/{id}/owner",
dependsOnMethods = { "testGetCatalog" })
public void updateCatalogOwner() {
User newOwnerUser = UserClientLiveTest.randomTestUser("testUpdateCatalogOwner", context);
newOwnerUser = context.getApi().getUserClient().createUser(orgRef.getHref(), newOwnerUser);
User newOwnerUser = randomTestUser("testUpdateCatalogOwner");
newOwnerUser = adminContext.getApi().getUserClient().createUser(orgRef.getHref(), newOwnerUser);
assertNotNull(newOwnerUser, "failed to create temp user to test updateCatalogOwner");
Owner oldOwner = owner;
@ -129,7 +130,7 @@ public class AdminCatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest
} finally {
catalogClient.setOwner(catalog.getHref(), oldOwner);
owner = catalogClient.getOwner(catalog.getHref());
context.getApi().getUserClient().deleteUser(newOwnerUser.getHref());
adminContext.getApi().getUserClient().deleteUser(newOwnerUser.getHref());
}
}

View File

@ -22,13 +22,14 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -39,7 +40,7 @@ import com.google.common.collect.ImmutableSet;
* @author danikov
*/
@Test(groups = { "unit", "admin", "network"}, singleThreaded = true, testName = "AdminNetworkClientExpectTest")
public class AdminNetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class AdminNetworkClientExpectTest extends VCloudDirectorAdminClientExpectTest {
Reference networkRef = Reference.builder()
.href(URI.create(endpoint+"/admin/network/b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1"))
@ -47,7 +48,7 @@ public class AdminNetworkClientExpectTest extends BaseVCloudDirectorRestClientEx
@Test
public void testGetNetworkWithOrgNetwork() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/network/b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1")
.acceptAnyMedia()
@ -58,12 +59,12 @@ public class AdminNetworkClientExpectTest extends BaseVCloudDirectorRestClientEx
OrgNetwork expected = orgNetwork();
assertEquals(client.getAdminNetworkClient().getNetwork(networkRef.getHref()), expected);
assertEquals(client.getNetworkClient().getNetwork(networkRef.getHref()), expected);
}
@Test
public void testUpdateNetwork() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/network/b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1")
.xmlFilePayload("/network/admin/updateNetworkSource.xml", VCloudDirectorMediaType.ORG_NETWORK)
@ -75,12 +76,12 @@ public class AdminNetworkClientExpectTest extends BaseVCloudDirectorRestClientEx
Task expected = updateNetworkTask();
assertEquals(client.getAdminNetworkClient().updateNetwork(networkRef.getHref(), updateNetwork()), expected);
assertEquals(client.getNetworkClient().updateNetwork(networkRef.getHref(), updateNetwork()), expected);
}
@Test(enabled = false)
public void testResetNetwork() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/network/b466c0c5-8a5c-4335-b703-a2e2e6b5f3e1/action/reset")
.acceptMedia(VCloudDirectorMediaType.TASK)
@ -91,7 +92,7 @@ public class AdminNetworkClientExpectTest extends BaseVCloudDirectorRestClientEx
Task expected = resetNetworkTask();
assertEquals(client.getAdminNetworkClient().resetNetwork(networkRef.getHref()), expected);
assertEquals(client.getNetworkClient().resetNetwork(networkRef.getHref()), expected);
}
public final OrgNetwork orgNetwork() {

View File

@ -39,6 +39,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.RouterInfo;
import org.jclouds.vcloud.director.v1_5.domain.SyslogServerSettings;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminNetworkClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -67,7 +68,7 @@ public class AdminNetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest
@Override
@BeforeClass(alwaysRun = true)
protected void setupRequiredClients() {
networkClient = context.getApi().getAdminNetworkClient();
networkClient = adminContext.getApi().getNetworkClient();
networkRef = Reference.builder().href(networkURI).build().toAdminReference(endpoint);
}

View File

@ -22,8 +22,8 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.AdminOrg;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.OrgEmailSettings;
@ -35,7 +35,8 @@ 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;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
/**
@ -44,7 +45,7 @@ import org.testng.annotations.Test;
* @author danikov
*/
@Test(groups = { "unit", "user", "org"}, singleThreaded = true, testName = "AdminOrgClientExpectTest")
public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class AdminOrgClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private Reference orgRef = Reference.builder()
.href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
@ -52,7 +53,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
@Test
public void testGetOrg() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0")
.acceptAnyMedia()
@ -64,7 +65,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
AdminOrg expected = adminOrg();
assertEquals(client.getAdminOrgClient().getOrg(orgRef.getHref()), expected);
assertEquals(client.getOrgClient().getOrg(orgRef.getHref()), expected);
}
public static final AdminOrg adminOrg() {
@ -186,7 +187,7 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
@Test(enabled = false)
public void testGetSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/")
.acceptAnyMedia()
@ -198,7 +199,318 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
OrgSettings expected = settings();
assertEquals(client.getAdminOrgClient().getSettings(orgRef.getHref()), expected);
assertEquals(client.getOrgClient().getSettings(orgRef.getHref()), expected);
}
@Test(enabled = false)
public void testUpdateSettings() {
VCloudDirectorAdminClient 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.getOrgClient().updateSettings(orgRef.getHref(), expected), expected);
}
@Test
public void testGetEmailSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/emailSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgEmailSettings expected = emailSettings();
assertEquals(client.getOrgClient().getEmailSettings(orgRef.getHref()), expected);
}
@Test
public void testUpdateEmailSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")
.xmlFilePayload("/org/admin/updateEmailSettingsSource.xml",
VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.acceptMedia(VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateEmailSettings.xml",
VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.httpResponseBuilder().build());
OrgEmailSettings expected = updateEmailSettings();
assertEquals(client.getOrgClient().updateEmailSettings(orgRef.getHref(), expected), expected);
}
@Test(enabled = false)
public void testGetGeneralSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/generalSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgGeneralSettings expected = generalSettings();
assertEquals(client.getOrgClient().getGeneralSettings(orgRef.getHref()), expected);
}
public static final OrgGeneralSettings generalSettings() {
return OrgGeneralSettings.builder()
.type("application/vnd.vmware.admin.organizationGeneralSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.organizationGeneralSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general"))
.build())
.canPublishCatalogs(false)
.deployedVMQuota(0)
.storedVmQuota(0)
.useServerBootSequence(false)
.delayAfterPowerOnSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateGeneralSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")
.xmlFilePayload("/org/admin/updateGeneralSettingsSource.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.acceptMedia(VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateGeneralSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgGeneralSettings expected = updateGeneralSettings();
assertEquals(client.getOrgClient().updateGeneralSettings(orgRef.getHref(), expected), expected);
}
public static final OrgGeneralSettings updateGeneralSettings() {
return generalSettings().toBuilder()
.build();
}
@Test
public void testGetLdapSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/ldapSettings.xml",
VCloudDirectorMediaType.ORG_LDAP_SETTINGS)
.httpResponseBuilder().build());
OrgLdapSettings expected = ldapSettings();
assertEquals(client.getOrgClient().getLdapSettings(orgRef.getHref()), expected);
}
public static final OrgLdapSettings ldapSettings() {
return OrgLdapSettings.builder()
.type("application/vnd.vmware.admin.organizationLdapSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap"))
.ldapMode("NONE")
.build();
}
@Test
public void testGetPasswordPolicy() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/passwordPolicy.xml",
VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS)
.httpResponseBuilder().build());
OrgPasswordPolicySettings expected = passwordPolicy();
assertEquals(client.getOrgClient().getPasswordPolicy(orgRef.getHref()), expected);
}
public static final OrgPasswordPolicySettings passwordPolicy() {
return OrgPasswordPolicySettings.builder()
.type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml")
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy"))
.build())
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy"))
.accountLockoutEnabled(false)
.invalidLoginsBeforeLockout(5)
.accountLockoutIntervalMinutes(10)
.build();
}
@Test
public void testUpdatePasswordPolicy() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updatePasswordPolicy.xml",
VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS)
.httpResponseBuilder().build());
OrgPasswordPolicySettings expected = updateOrgPasswordPolicy();
assertEquals(client.getOrgClient().updatePasswordPolicy(orgRef.getHref(), expected), expected);
}
public static final OrgPasswordPolicySettings updateOrgPasswordPolicy() {
return passwordPolicy().toBuilder()
.accountLockoutEnabled(true)
.invalidLoginsBeforeLockout(6)
.accountLockoutIntervalMinutes(11)
.build();
}
@Test(enabled = false)
public void testGetVAppLeaseSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/vAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgLeaseSettings expected = vAppLeaseSettings();
assertEquals(client.getOrgClient().getVAppLeaseSettings(orgRef.getHref()), expected);
}
public static final OrgLeaseSettings vAppLeaseSettings() {
return OrgLeaseSettings.builder()
.type("application/vnd.vmware.admin.vAppLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.vAppLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings"))
.build())
.deleteOnStorageLeaseExpiration(false)
.deploymentLeaseSeconds(0)
.storageLeaseSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateOrgVAppLeaseSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgLeaseSettings expected = updateVAppLeaseSettings();
assertEquals(client.getOrgClient().updateVAppLeaseSettings(orgRef.getHref(), expected), expected);
}
public static final OrgLeaseSettings updateVAppLeaseSettings() {
return vAppLeaseSettings().toBuilder()
.build();
}
@Test(enabled = false)
public void testGetVAppTemplateLeaseSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/vAppTemplateLeaseSettings.xml",
VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgVAppTemplateLeaseSettings expected = vAppTemplateLeaseSettings();
assertEquals(client.getOrgClient().getVAppTemplateLeaseSettings(orgRef.getHref()), expected);
}
public static final OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings() {
return OrgVAppTemplateLeaseSettings.builder()
.type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings"))
.build())
.deleteOnStorageLeaseExpiration(false)
.storageLeaseSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateOrgVAppTemplateLeaseSettings() {
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgVAppTemplateLeaseSettings expected = updateVAppTemplateLeaseSettings();
assertEquals(client.getOrgClient().updateVAppTemplateLeaseSettings(orgRef.getHref(), expected), expected);
}
public static final OrgVAppTemplateLeaseSettings updateVAppTemplateLeaseSettings() {
return vAppTemplateLeaseSettings().toBuilder()
.build();
}
public static final OrgSettings settings() {
@ -249,47 +561,11 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
.build();
}
@Test(enabled = false)
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.getHref(), expected), expected);
}
@Test
public static final OrgSettings updateSettings() {
return settings().toBuilder()
.build();
}
@Test
public void testGetEmailSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/emailSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgEmailSettings expected = emailSettings();
assertEquals(client.getAdminOrgClient().getEmailSettings(orgRef.getHref()), expected);
}
public static final OrgEmailSettings emailSettings() {
return OrgEmailSettings.builder()
@ -314,25 +590,6 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
.build();
}
@Test
public void testUpdateEmailSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/email")
.xmlFilePayload("/org/admin/updateEmailSettingsSource.xml",
VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.acceptMedia(VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateEmailSettings.xml",
VCloudDirectorMediaType.ORG_EMAIL_SETTINGS)
.httpResponseBuilder().build());
OrgEmailSettings expected = updateEmailSettings();
assertEquals(client.getAdminOrgClient().updateEmailSettings(orgRef.getHref(), expected), expected);
}
@Test
public static final OrgEmailSettings updateEmailSettings() {
return emailSettings().toBuilder()
@ -349,259 +606,4 @@ public class AdminOrgClientExpectTest extends BaseVCloudDirectorRestClientExpect
.build();
}
@Test(enabled = false)
public void testGetGeneralSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/generalSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgGeneralSettings expected = generalSettings();
assertEquals(client.getAdminOrgClient().getGeneralSettings(orgRef.getHref()), expected);
}
public static final OrgGeneralSettings generalSettings() {
return OrgGeneralSettings.builder()
.type("application/vnd.vmware.admin.organizationGeneralSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.organizationGeneralSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general"))
.build())
.canPublishCatalogs(false)
.deployedVMQuota(0)
.storedVmQuota(0)
.useServerBootSequence(false)
.delayAfterPowerOnSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateGeneralSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/general")
.xmlFilePayload("/org/admin/updateGeneralSettingsSource.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.acceptMedia(VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateGeneralSettings.xml",
VCloudDirectorMediaType.ORG_GENERAL_SETTINGS)
.httpResponseBuilder().build());
OrgGeneralSettings expected = updateGeneralSettings();
assertEquals(client.getAdminOrgClient().updateGeneralSettings(orgRef.getHref(), expected), expected);
}
public static final OrgGeneralSettings updateGeneralSettings() {
return generalSettings().toBuilder()
.build();
}
@Test
public void testGetLdapSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/ldapSettings.xml",
VCloudDirectorMediaType.ORG_LDAP_SETTINGS)
.httpResponseBuilder().build());
OrgLdapSettings expected = ldapSettings();
assertEquals(client.getAdminOrgClient().getLdapSettings(orgRef.getHref()), expected);
}
public static final OrgLdapSettings ldapSettings() {
return OrgLdapSettings.builder()
.type("application/vnd.vmware.admin.organizationLdapSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/ldap"))
.ldapMode("NONE")
.build();
}
@Test
public void testGetPasswordPolicy() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/passwordPolicy.xml",
VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS)
.httpResponseBuilder().build());
OrgPasswordPolicySettings expected = passwordPolicy();
assertEquals(client.getAdminOrgClient().getPasswordPolicy(orgRef.getHref()), expected);
}
public static final OrgPasswordPolicySettings passwordPolicy() {
return OrgPasswordPolicySettings.builder()
.type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml")
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.organizationPasswordPolicySettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy"))
.build())
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/passwordPolicy"))
.accountLockoutEnabled(false)
.invalidLoginsBeforeLockout(5)
.accountLockoutIntervalMinutes(10)
.build();
}
@Test
public void testUpdatePasswordPolicy() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updatePasswordPolicy.xml",
VCloudDirectorMediaType.ORG_PASSWORD_POLICY_SETTINGS)
.httpResponseBuilder().build());
OrgPasswordPolicySettings expected = updateOrgPasswordPolicy();
assertEquals(client.getAdminOrgClient().updatePasswordPolicy(orgRef.getHref(), expected), expected);
}
public static final OrgPasswordPolicySettings updateOrgPasswordPolicy() {
return passwordPolicy().toBuilder()
.accountLockoutEnabled(true)
.invalidLoginsBeforeLockout(6)
.accountLockoutIntervalMinutes(11)
.build();
}
@Test(enabled = false)
public void testGetVAppLeaseSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/vAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgLeaseSettings expected = vAppLeaseSettings();
assertEquals(client.getAdminOrgClient().getVAppLeaseSettings(orgRef.getHref()), expected);
}
public static final OrgLeaseSettings vAppLeaseSettings() {
return OrgLeaseSettings.builder()
.type("application/vnd.vmware.admin.vAppLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.vAppLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppLeaseSettings"))
.build())
.deleteOnStorageLeaseExpiration(false)
.deploymentLeaseSeconds(0)
.storageLeaseSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateOrgVAppLeaseSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgLeaseSettings expected = updateVAppLeaseSettings();
assertEquals(client.getAdminOrgClient().updateVAppLeaseSettings(orgRef.getHref(), expected), expected);
}
public static final OrgLeaseSettings updateVAppLeaseSettings() {
return vAppLeaseSettings().toBuilder()
.build();
}
@Test(enabled = false)
public void testGetVAppTemplateLeaseSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings")
.acceptAnyMedia()
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/vAppTemplateLeaseSettings.xml",
VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgVAppTemplateLeaseSettings expected = vAppTemplateLeaseSettings();
assertEquals(client.getAdminOrgClient().getVAppTemplateLeaseSettings(orgRef.getHref()), expected);
}
public static final OrgVAppTemplateLeaseSettings vAppTemplateLeaseSettings() {
return OrgVAppTemplateLeaseSettings.builder()
.type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings"))
.link(Link.builder()
.rel("edit")
.type("application/vnd.vmware.admin.vAppTemplateLeaseSettings+xml")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/settings/vAppTemplateLeaseSettings"))
.build())
.deleteOnStorageLeaseExpiration(false)
.storageLeaseSeconds(0)
.build();
}
@Test(enabled = false)
public void testUpdateOrgVAppTemplateLeaseSettings() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.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)
.httpRequestBuilder().build(),
new VcloudHttpResponsePrimer()
.xmlFilePayload("/org/admin/updateVAppLeaseSettings.xml",
VCloudDirectorMediaType.ORG_VAPP_TEMPLATE_LEASE_SETTINGS)
.httpResponseBuilder().build());
OrgVAppTemplateLeaseSettings expected = updateVAppTemplateLeaseSettings();
assertEquals(client.getAdminOrgClient().updateVAppTemplateLeaseSettings(orgRef.getHref(), expected), expected);
}
public static final OrgVAppTemplateLeaseSettings updateVAppTemplateLeaseSettings() {
return vAppTemplateLeaseSettings().toBuilder()
.build();
}
}

View File

@ -35,6 +35,7 @@ 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;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -72,7 +73,7 @@ public class AdminOrgClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Override
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
orgClient = context.getApi().getAdminOrgClient();
orgClient = adminContext.getApi().getOrgClient();
orgRef = Iterables.getFirst(orgClient.getOrgList().getOrgs(), null).toAdminReference(endpoint);
assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org"));
}

View File

@ -24,12 +24,13 @@ import java.net.URI;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRoleRecord;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMultimap;
@ -40,7 +41,7 @@ import com.google.common.collect.ImmutableMultimap;
* @author Aled Sage
*/
@Test(groups = { "unit", "admin", "query" }, singleThreaded = true, testName = "AdminQueryClientExpectTest")
public class AdminQueryClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class AdminQueryClientExpectTest extends VCloudDirectorAdminClientExpectTest {
// TODO Write expect tests for all other admin-query operations
@ -63,7 +64,7 @@ public class AdminQueryClientExpectTest extends BaseVCloudDirectorRestClientExpe
.payload(payloadFromResourceWithContentType("/query/admin/allGroups.xml", VCloudDirectorMediaType.QUERY_RESULT_RECORDS + ";version=1.5"))
.build();
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, queryRequest, queryResponse);
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse, queryRequest, queryResponse);
QueryResultRecords expected = QueryResultRecords.builder()
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/groups/query?page=1&pageSize=25&format=records"))
@ -84,7 +85,7 @@ public class AdminQueryClientExpectTest extends BaseVCloudDirectorRestClientExpe
.build())
.build();
assertEquals(client.getAdminQueryClient().groupsQueryAll(), expected);
assertEquals(client.getQueryClient().groupsQueryAll(), expected);
}
// <?xml version="1.0" encoding="UTF-8"?>
@ -111,7 +112,7 @@ public class AdminQueryClientExpectTest extends BaseVCloudDirectorRestClientExpe
.payload(payloadFromResourceWithContentType("/query/admin/allRoles.xml", VCloudDirectorMediaType.QUERY_RESULT_RECORDS + ";version=1.5"))
.build();
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, queryRequest, queryResponse);
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse, queryRequest, queryResponse);
QueryResultRecords expected = QueryResultRecords.builder()
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/roles/query?page=1&pageSize=25&format=records"))
@ -137,7 +138,7 @@ public class AdminQueryClientExpectTest extends BaseVCloudDirectorRestClientExpe
.build())
.build();
assertEquals(client.getAdminQueryClient().rolesQueryAll(), expected);
assertEquals(client.getQueryClient().rolesQueryAll(), expected);
}
}

View File

@ -30,6 +30,7 @@ import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRightRecord;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRoleRecord;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultStrandedUserRecord;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminQueryClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -51,7 +52,7 @@ public class AdminQueryClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Override
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
queryClient = context.getApi().getAdminQueryClient();
queryClient = adminContext.getApi().getQueryClient();
}
@Test(description = "GET /admin/groups/query")

View File

@ -22,11 +22,12 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.AdminVdc;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
/**
@ -35,7 +36,7 @@ import org.testng.annotations.Test;
* @author danikov
*/
@Test(groups = { "unit", "admin", "vdc" }, singleThreaded = true, testName = "AdminVdcClientExpectTest")
public class AdminVdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class AdminVdcClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private Reference vdcRef = Reference.builder()
.href(URI.create(endpoint + "???"))
@ -43,7 +44,7 @@ public class AdminVdcClientExpectTest extends BaseVCloudDirectorRestClientExpect
@Test( enabled = false )
public void testGetVdc() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/vdc/???")
.acceptAnyMedia()
@ -55,7 +56,7 @@ public class AdminVdcClientExpectTest extends BaseVCloudDirectorRestClientExpect
AdminVdc expected = adminVdc();
assertEquals(client.getAdminVdcClient().getVdc(vdcRef.getHref()), expected);
assertEquals(client.getVdcClient().getVdc(vdcRef.getHref()), expected);
}
public static final AdminVdc adminVdc() {

View File

@ -33,6 +33,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Metadata;
import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry;
import org.jclouds.vcloud.director.v1_5.domain.MetadataValue;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminVdcClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
@ -62,7 +63,7 @@ public class AdminVdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Override
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
vdcClient = context.getApi().getAdminVdcClient();
vdcClient = adminContext.getApi().getVdcClient();
metadataClient = vdcClient.getMetadataClient();
assertNotNull(vdcURI, String.format(REF_REQ_LIVE, VDC));
adminVdcUri = toAdminUri(vdcURI);

View File

@ -24,7 +24,7 @@ import java.net.URI;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClientExpectTest;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.CatalogItem;
import org.jclouds.vcloud.director.v1_5.domain.CatalogType;
@ -34,7 +34,7 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataEntry;
import org.jclouds.vcloud.director.v1_5.domain.MetadataValue;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMultimap;
@ -46,7 +46,7 @@ import com.google.common.collect.ImmutableSet;
* @author grkvlt@apache.org
*/
@Test(groups = { "unit", "user", "catalog" }, singleThreaded = true, testName = "CatalogClientExpectTest")
public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class CatalogClientExpectTest extends VCloudDirectorClientExpectTest {
@Test
public void testGetCatalog() {
@ -181,11 +181,11 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse, catalogItemRequest, catalogItemResponse);
URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df");
CatalogItem expected = catalogItem();
assertEquals(client.getCatalogClient().getCatalogItem(catalogItemURI), expected);
URI catalogItemURI = URI.create("https://vcloudbeta.bluelock.com/api/catalogItem/a36fdac9-b8c2-43e2-9a4c-2ffaf3ee13df");
CatalogItem expected = catalogItem();
assertEquals(client.getCatalogClient().getCatalogItem(catalogItemURI), expected);
}
@Test
@ -443,10 +443,10 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT
public static Reference ubuntuVappTemplateReference() {
return Reference.builder()
.type("application/vnd.vmware.vcloud.vAppTemplate+xml")
.name("ubuntu10")
.href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"))
.build();
.type("application/vnd.vmware.vcloud.vAppTemplate+xml")
.name("ubuntu10")
.href(URI.create("https://vcloudbeta.bluelock.com/api/vAppTemplate/vappTemplate-ef4415e6-d413-4cbb-9262-f9bbec5f2ea9"))
.build();
}
public static MetadataEntry metadataEntry() {
@ -626,4 +626,4 @@ public class CatalogClientExpectTest extends BaseVCloudDirectorRestClientExpectT
.build();
}
}

View File

@ -51,6 +51,7 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.Vdc;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminCatalogClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
@ -92,7 +93,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest {
.description("created by CatalogClientLiveTest")
.build();
AdminCatalogClient adminCatalogClient = context.getApi().getAdminCatalogClient();
AdminCatalogClient adminCatalogClient = adminContext.getApi().getCatalogClient();
adminCatalog = adminCatalogClient.createCatalog(orgRef.getHref(), newCatalog);
catalogRef = find(adminCatalog.getLinks(), and(relEquals("alternate"), typeEquals(VCloudDirectorMediaType.CATALOG)));
@ -114,7 +115,7 @@ public class CatalogClientLiveTest extends BaseVCloudDirectorClientLiveTest {
context.getApi().getMediaClient().deleteMedia(media.getHref());
if (adminCatalog != null) {
context.getApi().getAdminCatalogClient().deleteCatalog(adminCatalog.getHref());
adminContext.getApi().getCatalogClient().deleteCatalog(adminCatalog.getHref());
try {
catalogClient.getCatalog(catalogRef.getHref());
fail("The Catalog should have been deleted");

View File

@ -22,11 +22,12 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
/**
@ -35,7 +36,7 @@ import org.testng.annotations.Test;
* @author danikov
*/
@Test(groups = { "unit", "admin", "group"}, singleThreaded = true, testName = "GroupClientExpectTest")
public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class GroupClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private Reference groupRef = Reference.builder()
.type("application/vnd.vmware.admin.group+xml")
@ -45,7 +46,7 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes
@Test(enabled = false)
public void testGetGroup() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/group/???")
.acceptAnyMedia()
@ -67,7 +68,7 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes
@Test(enabled = false)
public void testUpdateGroup() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/group/???")
.xmlFilePayload("/group/updateGroupSource.xml", VCloudDirectorMediaType.GROUP)
@ -88,7 +89,7 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes
@Test
public void testDeleteGroup() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("DELETE", "/admin/group/???")
.acceptAnyMedia()
@ -96,6 +97,6 @@ public class GroupClientExpectTest extends BaseVCloudDirectorRestClientExpectTes
new VcloudHttpResponsePrimer()
.httpResponseBuilder().statusCode(204).build());
client.getAdminCatalogClient().deleteCatalog(groupRef.getHref());
client.getCatalogClient().deleteCatalog(groupRef.getHref());
}
}

View File

@ -28,6 +28,7 @@ import org.jclouds.vcloud.director.v1_5.domain.Checks;
import org.jclouds.vcloud.director.v1_5.domain.Group;
import org.jclouds.vcloud.director.v1_5.domain.OrgLdapSettings;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.features.admin.GroupClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -45,7 +46,6 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest {
/*
* Convenience references to API clients.
*/
private GroupClient groupClient;
/*
@ -58,11 +58,11 @@ public class GroupClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Override
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
groupClient = context.getApi().getGroupClient();
groupClient = adminContext.getApi().getGroupClient();
Reference orgRef = null;
// TODO: requisite LDAP settings
// oldLdapSettings = context.getApi().getAdminOrgClient().getLdapSettings(orgRef.getHref());
// oldLdapSettings = adminContext.getApi().getAdminOrgClient().getLdapSettings(orgRef.getHref());
// OrgLdapSettings newLdapSettings = oldLdapSettings.toBuilder()
// .ldapMode(OrgLdapSettings.LdapMode.SYSTEM)
// .build();

View File

@ -24,7 +24,6 @@ import static org.testng.Assert.fail;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.CloneMediaParams;
@ -38,7 +37,8 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue;
import org.jclouds.vcloud.director.v1_5.domain.Owner;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -49,7 +49,7 @@ import com.google.common.collect.ImmutableSet;
* @author danikov
*/
@Test(groups = { "unit", "user", "media" }, singleThreaded = true, testName = "MediaClientExpectTest")
public class MediaClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class MediaClientExpectTest extends VCloudDirectorAdminClientExpectTest {
@Test
public void testCreateMedia() {

View File

@ -24,7 +24,6 @@ import static org.testng.Assert.fail;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.DhcpService;
@ -42,7 +41,8 @@ import org.jclouds.vcloud.director.v1_5.domain.NetworkConfiguration;
import org.jclouds.vcloud.director.v1_5.domain.NetworkFeatures;
import org.jclouds.vcloud.director.v1_5.domain.OrgNetwork;
import org.jclouds.vcloud.director.v1_5.domain.SyslogServerSettings;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -53,7 +53,7 @@ import com.google.common.collect.ImmutableSet;
* @author danikov
*/
@Test(groups = { "unit", "user", "network" }, singleThreaded = true, testName = "NetworkClientExpectTest")
public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class NetworkClientExpectTest extends VCloudDirectorAdminClientExpectTest {
@Test
public void testGetNetwork() {

View File

@ -62,13 +62,13 @@ public class NetworkClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
networkClient = context.getApi().getNetworkClient();
context.getApi().getAdminNetworkClient().getMetadataClient().setMetadata(toAdminUri(networkURI),
adminContext.getApi().getNetworkClient().getMetadataClient().setMetadata(toAdminUri(networkURI),
"key", MetadataValue.builder().value("value").build());
}
@AfterClass(groups = { "live" })
public void cleanUp() throws Exception {
context.getApi().getAdminNetworkClient().getMetadataClient()
adminContext.getApi().getNetworkClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(networkURI), "key");
}

View File

@ -24,7 +24,6 @@ import static org.testng.Assert.fail;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.Error;
@ -35,7 +34,8 @@ import org.jclouds.vcloud.director.v1_5.domain.MetadataValue;
import org.jclouds.vcloud.director.v1_5.domain.Org;
import org.jclouds.vcloud.director.v1_5.domain.OrgList;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -47,7 +47,7 @@ import com.google.common.collect.Iterables;
* @author Adrian Cole
*/
@Test(groups = { "unit", "user", "org" }, singleThreaded = true, testName = "OrgClientExpectTest")
public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class OrgClientExpectTest extends VCloudDirectorAdminClientExpectTest {
@Test
public void testGetOrgList() {

View File

@ -69,7 +69,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@AfterClass(alwaysRun = true)
public void cleanUp() throws Exception {
if (metadataSet) {
context.getApi().getAdminOrgClient().getMetadataClient()
adminContext.getApi().getOrgClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(orgURI), "key");
}
}
@ -114,7 +114,7 @@ public class OrgClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Test(description = "orgClient admin metadata setup", dependsOnMethods = { "testGetOrg" })
public void testSetupMetadata() {
context.getApi().getAdminOrgClient().getMetadataClient().setMetadata(toAdminUri(orgURI),
adminContext.getApi().getOrgClient().getMetadataClient().setMetadata(toAdminUri(orgURI),
"KEY", MetadataValue.builder().value("VALUE").build());
metadataSet = true;
}

View File

@ -24,14 +24,14 @@ import java.net.URI;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.CatalogReference;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.query.CatalogReferences;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultCatalogRecord;
import org.jclouds.vcloud.director.v1_5.domain.query.QueryResultRecords;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMultimap;
@ -42,7 +42,7 @@ import com.google.common.collect.ImmutableMultimap;
* @author grkvlt@apache.org
*/
@Test(groups = { "unit", "user", "query" }, singleThreaded = true, testName = "QueryClientExpectTest")
public class QueryClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class QueryClientExpectTest extends VCloudDirectorAdminClientExpectTest {
@Test
public void testQueryAllCatalogs() {

View File

@ -26,14 +26,14 @@ import java.net.URI;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.Error;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.TasksList;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMultimap;
@ -44,7 +44,7 @@ import com.google.common.collect.ImmutableMultimap;
* @author grkvlt@apache.org
*/
@Test(groups = { "unit", "user", "task" }, singleThreaded = true, testName = "TaskClientExpectTest")
public class TaskClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class TaskClientExpectTest extends VCloudDirectorAdminClientExpectTest {
@Test
public void testTaskListForValidOrg() {

View File

@ -24,12 +24,13 @@ import java.net.URI;
import java.util.Collections;
import org.jclouds.rest.ResourceNotFoundException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.Link;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.features.admin.UserClient;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
/**
@ -37,8 +38,8 @@ import org.testng.annotations.Test;
*
* @author danikov
*/
@Test(groups = { "unit", "admin", "adminUser" }, singleThreaded = true, testName = "UserClientExpectTest")
public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
@Test(groups = { "unit", "admin", "adminUser"}, singleThreaded = true, testName = "UserClientExpectTest")
public class UserClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private Reference orgRef = Reference.builder()
.href(URI.create(endpoint + "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
@ -50,7 +51,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test
public void testCreateUser() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0/catalogs")
.xmlFilePayload("/user/createUserSource.xml", VCloudDirectorMediaType.USER)
@ -113,7 +114,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test
public void testGetUser() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("GET", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6")
.acceptAnyMedia()
@ -135,7 +136,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test
public void testUpdateUser() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("PUT", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6")
.xmlFilePayload("/user/updateUserSource.xml", VCloudDirectorMediaType.USER)
@ -175,7 +176,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test
public void testDeleteUser() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("DELETE", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6")
.acceptAnyMedia()
@ -188,7 +189,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test
public void testUnlockUser() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6/action/unlock")
.acceptAnyMedia()
@ -201,7 +202,7 @@ public class UserClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
@Test(expectedExceptions = ResourceNotFoundException.class)
public void testUnlockUserFailNotFound() {
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
VCloudDirectorAdminClient client = requestsSendResponses(loginRequest, sessionResponse,
new VcloudHttpRequestPrimer()
.apiCommand("POST", "/admin/user/b37223f3-8792-477a-820f-334998f61cd6/action/unlock")
.acceptAnyMedia()

View File

@ -27,20 +27,18 @@ import static org.testng.Assert.fail;
import static org.testng.AssertJUnit.assertFalse;
import java.net.URI;
import java.util.Random;
import org.jclouds.rest.AuthorizationException;
import org.jclouds.rest.RestContext;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.domain.Checks;
import org.jclouds.vcloud.director.v1_5.domain.Error;
import org.jclouds.vcloud.director.v1_5.domain.OrgPasswordPolicySettings;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.RoleReferences;
import org.jclouds.vcloud.director.v1_5.domain.Role.DefaultRoles;
import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.features.admin.AdminOrgClient;
import org.jclouds.vcloud.director.v1_5.features.admin.UserClient;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorClientLiveTest;
import org.jclouds.vcloud.director.v1_5.login.SessionClient;
import org.testng.annotations.AfterClass;
@ -69,12 +67,11 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
*/
private Reference orgRef;
private User user;
private static Random random = new Random();
@Override
@BeforeClass(alwaysRun = true)
public void setupRequiredClients() {
userClient = context.getApi().getUserClient();
userClient = adminContext.getApi().getUserClient();
orgRef = Iterables.getFirst(context.getApi().getOrgClient().getOrgList().getOrgs(), null).toAdminReference(endpoint);
}
@ -91,7 +88,7 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Test(description = "POST /admin/org/{id}/users")
public void testCreateUser() {
User newUser = randomTestUser("testCreateUser", context);
User newUser = randomTestUser("testCreateUser");
user = userClient.createUser(orgRef.getHref(), newUser);
Checks.checkUser(newUser);
}
@ -122,7 +119,7 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
.password("newPassword")
// TODO test setting other fields?
// .name("new"+oldUser.getName())
.role(nonVAppUserRole(context))
.role(getRoleReferenceFor(DefaultRoles.AUTHOR))
.build();
userClient.updateUser(user.getHref(), newUser);
@ -165,7 +162,7 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Test(description = "POST /admin/user/{id}/action/unlock", dependsOnMethods = { "testUpdateUser" })
public void testUnlockUser() {
// Need to know how many times to fail login to lock account
AdminOrgClient adminOrgClient = context.getApi().getAdminOrgClient();
AdminOrgClient adminOrgClient = adminContext.getApi().getOrgClient();
OrgPasswordPolicySettings settingsToRevertTo = null;
// session client isn't typically exposed to the user, as it is implicit
@ -220,15 +217,7 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
dependsOnMethods = { "testCreateUser" } )
public void testDeleteUser() {
// Create a user to be deleted (so we remove dependencies on test ordering)
String name = name("a");
User newUser = User.builder()
.name(name)
.role(Reference.builder() // FIXME: auto-fetch a role? or inject
.name("vApp User")
.href(URI.create("https://vcloudbeta.bluelock.com/api/admin/role/ff1e0c91-1288-3664-82b7-a6fa303af4d1"))
.build())
.password("password")
.build();
User newUser = randomTestUser("testDeleteUser");
User userToBeDeleted = userClient.createUser(orgRef.getHref(), newUser);
// Delete the user
@ -249,48 +238,4 @@ public class UserClientLiveTest extends BaseVCloudDirectorClientLiveTest {
assertEquals(vde.getError(), expected);
}
}
public static Reference vAppUserRole(RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> context) {
RoleReferences roles = context.getApi().getAdminQueryClient().roleReferencesQueryAll();
for (Reference role : roles.getReferences()) {
if (equal(role.getName(), "vApp User")) {
return Reference.builder().fromReference(role).build();
}
}
return null;
}
public static Reference nonVAppUserRole(RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> context) {
RoleReferences roles = context.getApi().getAdminQueryClient().roleReferencesQueryAll();
for (Reference role : roles.getReferences()) {
if (!equal(role.getName(), "vApp User")) {
return Reference.builder().fromReference(role).build();
}
}
return null;
}
public static User randomTestUser(String prefix, RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> context) {
return randomTestUser(prefix, vAppUserRole(context));
}
public static User randomTestUser(String prefix, Reference role) {
return User.builder()
.name(name(prefix)+random.nextInt(999999))
.fullName("testFullName")
.emailAddress("test@test.com")
.telephone("555-1234")
.isEnabled(false)
.im("testIM")
.isAlertEnabled(false)
.alertEmailPrefix("testPrefix")
.alertEmail("testAlert@test.com")
.isExternal(false)
.isGroupRole(false)
.role(role)
.password("password")
.build();
}
}

View File

@ -22,7 +22,6 @@ import static org.testng.Assert.assertEquals;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.ControlAccessParams;
import org.jclouds.vcloud.director.v1_5.domain.DeployVAppParams;
@ -51,7 +50,8 @@ import org.jclouds.vcloud.director.v1_5.domain.ovf.NetworkSection;
import org.jclouds.vcloud.director.v1_5.domain.ovf.OperatingSystemSection;
import org.jclouds.vcloud.director.v1_5.domain.ovf.StartupSection;
import org.jclouds.vcloud.director.v1_5.domain.ovf.VirtualHardwareSection;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import org.testng.internal.annotations.Sets;
@ -65,7 +65,7 @@ import com.google.common.collect.Multimaps;
* @author grkvlt@apache.org
*/
@Test(groups = { "unit", "user", "vapp" }, singleThreaded = true, testName = "VAppClientExpectTest")
public class VAppClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class VAppClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private String vAppId = "vapp-d0e2b6b9-4381-4ddc-9572-cdfae54059be";
private URI vAppURI = URI.create(endpoint + vAppId);
@ -140,7 +140,7 @@ public class VAppClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
Task expected = consolidateVAppTask();
assertEquals(client.getVAppClient().consolidateVApp(vAppURI), expected);
assertEquals(client.getVAppClient().consolidateVm(vAppURI), expected);
}
@Test(enabled = false)
@ -159,7 +159,7 @@ public class VAppClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
ControlAccessParams expected = controlAccessParams();
assertEquals(client.getVAppClient().controlAccess(vAppURI, params), expected);
assertEquals(client.getVAppClient().modifyControlAccess(vAppURI, params), expected);
}
@Test(enabled = false)
@ -259,7 +259,7 @@ public class VAppClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
Task expected = recomposeVAppTask();
assertEquals(client.getVAppClient().recomposeVApp(vAppURI, params), expected);
assertEquals(client.getVAppClient().recompose(vAppURI, params), expected);
}
@Test(enabled = false)
@ -279,7 +279,7 @@ public class VAppClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
Task expected = relocateTask();
assertEquals(client.getVAppClient().relocate(vAppURI, params), expected);
assertEquals(client.getVAppClient().relocateVm(vAppURI, params), expected);
}
@Test(enabled = false)

View File

@ -316,7 +316,7 @@ public class VAppClientLiveTest extends AbstractVAppClientLiveTest {
vApp = powerOn(vApp);
// The method under test
Task consolidateVApp = vAppClient.consolidateVApp(vApp.getHref());
Task consolidateVApp = vAppClient.consolidateVm(vApp.getHref());
assertTrue(retryTaskSuccess.apply(consolidateVApp), String.format(TASK_COMPLETE_TIMELY, "consolidateVApp"));
}
@ -331,7 +331,7 @@ public class VAppClientLiveTest extends AbstractVAppClientLiveTest {
.build();
// The method under test
ControlAccessParams modified = vAppClient.controlAccess(vApp.getHref(), params);
ControlAccessParams modified = vAppClient.modifyControlAccess(vApp.getHref(), params);
// Check the retrieved object is well formed
checkControlAccessParams(modified);
@ -347,7 +347,7 @@ public class VAppClientLiveTest extends AbstractVAppClientLiveTest {
.build();
// The method under test
ControlAccessParams modified = vAppClient.controlAccess(vApp.getHref(), params);
ControlAccessParams modified = vAppClient.modifyControlAccess(vApp.getHref(), params);
// Check the retrieved object is well formed
checkControlAccessParams(modified);
@ -436,7 +436,7 @@ public class VAppClientLiveTest extends AbstractVAppClientLiveTest {
RecomposeVAppParams params = RecomposeVAppParams.builder().build();
// The method under test
Task recomposeVApp = vAppClient.recomposeVApp(vApp.getHref(), params);
Task recomposeVApp = vAppClient.recompose(vApp.getHref(), params);
assertTrue(retryTaskSuccess.apply(recomposeVApp), String.format(TASK_COMPLETE_TIMELY, "recomposeVApp"));
}
@ -449,7 +449,7 @@ public class VAppClientLiveTest extends AbstractVAppClientLiveTest {
RelocateParams params = RelocateParams.builder().datastore(Reference.builder().href(datastore.getHref()).build()).build();
// The method under test
Task relocate = vAppClient.relocate(vApp.getHref(), params);
Task relocate = vAppClient.relocateVm(vApp.getHref(), params);
assertTrue(retryTaskSuccess.apply(relocate), String.format(TASK_COMPLETE_TIMELY, "relocate"));
}

View File

@ -66,7 +66,7 @@ import org.jclouds.vcloud.director.v1_5.domain.RelocateParams;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.VAppNetworkConfiguration;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
@ -77,7 +77,7 @@ import com.google.common.collect.ImmutableSet;
* @author Adam Lowe
*/
@Test(groups = { "unit", "user", "vapptemplate" }, testName = "VAppTemplateClientExpectTest")
public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class VAppTemplateClientExpectTest extends VCloudDirectorAdminClientExpectTest {
public VAppTemplateClientExpectTest() {
TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles"));
@ -102,7 +102,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
assertEquals(template, exampleTemplate());
Task task = client.editVAppTemplate(uri, exampleTemplate());
Task task = client.modifyVAppTemplate(uri, exampleTemplate());
assertNotNull(task);
task = client.deleteVappTemplate(uri);
@ -130,7 +130,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("PUT", templateId).xmlFilePayload("/vapptemplate/vAppTemplate.xml", VAPP_TEMPLATE).acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
client.editVAppTemplate(uri, exampleTemplate());
client.modifyVAppTemplate(uri, exampleTemplate());
}
@Test(expectedExceptions = VCloudDirectorException.class)
@ -155,7 +155,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
Task task = client.consolidateVappTemplate(uri);
Task task = client.consolidateVm(uri);
assertNotNull(task);
}
@ -168,7 +168,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/consolidate").acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
client.consolidateVappTemplate(uri);
client.consolidateVm(uri);
}
public void testDisableDownloadVAppTemplate() {
@ -181,7 +181,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
client.disableDownloadVappTemplate(uri);
client.disableDownload(uri);
}
@Test(expectedExceptions = VCloudDirectorException.class)
@ -193,7 +193,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/disableDownload").httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient();
client.disableDownloadVappTemplate(uri);
client.disableDownload(uri);
}
public void testEnableDownloadVAppTemplate() {
@ -206,7 +206,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
Task task = client.enableDownloadVappTemplate(uri);
Task task = client.enableDownload(uri);
assertNotNull(task);
}
@ -219,7 +219,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("POST", templateId + "/action/enableDownload").acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
client.enableDownloadVappTemplate(uri);
client.enableDownload(uri);
}
public void testRelocateVAppTemplate() {
@ -236,7 +236,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
Reference datastore = Reference.builder().href(URI.create("https://vcloud.example.com/api/admin/extension/datastore/607")).build();
RelocateParams params = RelocateParams.builder().datastore(datastore).build();
Task task = client.relocateVappTemplate(uri, params);
Task task = client.relocateVm(uri, params);
assertNotNull(task);
}
@ -252,7 +252,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
Reference datastore = Reference.builder().href(URI.create("https://vcloud.example.com/api/admin/extension/datastore/607")).build();
RelocateParams params = RelocateParams.builder().datastore(datastore).build();
client.relocateVappTemplate(uri, params);
client.relocateVm(uri, params);
}
@Test
@ -268,11 +268,11 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
CustomizationSection section = client.getVAppTemplateCustomizationSection(uri);
CustomizationSection section = client.getCustomizationSection(uri);
assertEquals(section, exampleCustomizationSection());
Task task = client.editVAppTemplateCustomizationSection(uri, exampleCustomizationSection());
Task task = client.modifyCustomizationSection(uri, exampleCustomizationSection());
assertNotNull(task);
}
@ -284,7 +284,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/customizationSection").acceptMedia(CUSTOMIZATION_SECTION).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
assertNull(client.getVAppTemplateCustomizationSection(uri));
assertNull(client.getCustomizationSection(uri));
}
@Test(expectedExceptions = ResourceNotFoundException.class)
@ -296,7 +296,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/customizationSection").xmlFilePayload("/vapptemplate/customizationSection.xml", CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
client.editVAppTemplateCustomizationSection(uri, exampleCustomizationSection());
client.modifyCustomizationSection(uri, exampleCustomizationSection());
}
public void testGuestCustomizationSection() {
@ -311,11 +311,11 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
GuestCustomizationSection section = client.getVAppTemplateGuestCustomizationSection(uri);
GuestCustomizationSection section = client.getGuestCustomizationSection(uri);
assertEquals(section, exampleGuestCustomizationSection());
Task task = client.editVAppTemplateGuestCustomizationSection(uri, exampleGuestCustomizationSection());
Task task = client.modifyGuestCustomizationSection(uri, exampleGuestCustomizationSection());
assertNotNull(task);
}
@ -328,7 +328,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/guestCustomizationSection").acceptMedia(GUEST_CUSTOMIZATION_SECTION).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient();
client.getVAppTemplateGuestCustomizationSection(uri);
client.getGuestCustomizationSection(uri);
}
@Test(expectedExceptions = VCloudDirectorException.class)
@ -340,7 +340,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/guestCustomizationSection").xmlFilePayload("/vapptemplate/guestCustomizationSection.xml", GUEST_CUSTOMIZATION_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient();
client.editVAppTemplateGuestCustomizationSection(uri, exampleGuestCustomizationSection());
client.modifyGuestCustomizationSection(uri, exampleGuestCustomizationSection());
}
public void testLeaseSettingsSection() throws ParseException {
@ -355,11 +355,11 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
).getVAppTemplateClient();
assertNotNull(client);
LeaseSettingsSection section = client.getVappTemplateLeaseSettingsSection(uri);
LeaseSettingsSection section = client.getLeaseSettingsSection(uri);
assertEquals(section, exampleLeaseSettingsSection());
Task task = client.editVappTemplateLeaseSettingsSection(uri, exampleLeaseSettingsSection());
Task task = client.modifyLeaseSettingsSection(uri, exampleLeaseSettingsSection());
assertNotNull(task);
}
@ -371,7 +371,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/leaseSettingsSection").acceptMedia(LEASE_SETTINGS_SECTION).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
assertNull(client.getVappTemplateLeaseSettingsSection(uri));
assertNull(client.getLeaseSettingsSection(uri));
}
@Test(expectedExceptions = ResourceNotFoundException.class)
@ -383,7 +383,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/leaseSettingsSection").xmlFilePayload("/vapptemplate/leaseSettingsSection.xml", LEASE_SETTINGS_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error403.xml", ERROR).httpResponseBuilder().statusCode(403).build()).getVAppTemplateClient();
client.editVappTemplateLeaseSettingsSection(uri, exampleLeaseSettingsSection());
client.modifyLeaseSettingsSection(uri, exampleLeaseSettingsSection());
}
public void testVappTemplateMetadata() {
@ -503,11 +503,11 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
assertNotNull(client);
NetworkConfigSection section = client.getVAppTemplateNetworkConfigSection(uri);
NetworkConfigSection section = client.getNetworkConfigSection(uri);
assertEquals(section, exampleNetworkConfigSection());
Task task = client.editVAppTemplateNetworkConfigSection(uri, exampleNetworkConfigSection());
Task task = client.modifyNetworkConfigSection(uri, exampleNetworkConfigSection());
assertNotNull(task);
}
@ -520,7 +520,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("GET", templateId + "/networkConfigSection").acceptMedia(NETWORK_CONFIG_SECTION).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient();
client.getVAppTemplateNetworkConfigSection(uri);
client.getNetworkConfigSection(uri);
}
@Test(expectedExceptions = VCloudDirectorException.class)
@ -532,7 +532,7 @@ public class VAppTemplateClientExpectTest extends BaseVCloudDirectorRestClientEx
new VcloudHttpRequestPrimer().apiCommand("PUT", templateId + "/networkConfigSection").xmlFilePayload("/vapptemplate/networkConfigSection.xml", NETWORK_CONFIG_SECTION).acceptMedia(TASK).httpRequestBuilder().build(),
new VcloudHttpResponsePrimer().xmlFilePayload("/vapptemplate/error400.xml", ERROR).httpResponseBuilder().statusCode(400).build()).getVAppTemplateClient();
client.editVAppTemplateNetworkConfigSection(uri, exampleNetworkConfigSection());
client.modifyNetworkConfigSection(uri, exampleNetworkConfigSection());
}
private VAppTemplate exampleTemplate() {

View File

@ -106,7 +106,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "GET /vAppTemplate/{id}/owner")
public void testGetVAppTemplateOwner() {
Owner owner = vAppTemplateClient.getOwnerOfVAppTemplate(vAppTemplateURI);
Owner owner = vAppTemplateClient.getOwner(vAppTemplateURI);
checkOwner(owner);
assertEquals(owner.getUser(), vAppTemplateClient.getVAppTemplate(vAppTemplateURI).getOwner().getUser());
@ -114,14 +114,14 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "GET /vAppTemplate/{id}/customizationSection")
public void testGetCustomizationSection() {
CustomizationSection customizationSection = vAppTemplateClient.getVAppTemplateCustomizationSection(vAppTemplateURI);
CustomizationSection customizationSection = vAppTemplateClient.getCustomizationSection(vAppTemplateURI);
checkCustomizationSection(customizationSection);
}
@Test(description = "GET /vAppTemplate/{id}/productSections")
public void testGetProductSections() {
ProductSectionList productSectionList = vAppTemplateClient.getProductSectionsForVAppTemplate(vAppTemplateURI);
ProductSectionList productSectionList = vAppTemplateClient.getProductSections(vAppTemplateURI);
checkProductSectionList(productSectionList);
}
@ -130,13 +130,13 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
public void testEditProductSections() {
// TODO make a real modification
ProductSectionList origSections = vAppTemplateClient.getProductSectionsForVAppTemplate(vApp.getHref());
ProductSectionList origSections = vAppTemplateClient.getProductSections(vApp.getHref());
ProductSectionList newSections = origSections.toBuilder().build();
Task task = vAppTemplateClient.editProductSectionsForVAppTemplate(vApp.getHref(), newSections);
Task task = vAppTemplateClient.modifyProductSections(vApp.getHref(), newSections);
assertTaskSucceeds(task);
ProductSectionList modified = vAppTemplateClient.getProductSectionsForVAppTemplate(vApp.getHref());
ProductSectionList modified = vAppTemplateClient.getProductSections(vApp.getHref());
checkProductSectionList(modified);
}
@ -145,7 +145,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
getGuestCustomizationSection(new Function<URI, GuestCustomizationSection>() {
@Override
public GuestCustomizationSection apply(URI uri) {
return vAppTemplateClient.getVAppTemplateGuestCustomizationSection(uri);
return vAppTemplateClient.getGuestCustomizationSection(uri);
}
});
}
@ -153,7 +153,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "GET /vAppTemplate/{id}/leaseSettingsSection")
public void testGetLeaseSettingsSection() {
// FIXME Wrong case for Vapp
LeaseSettingsSection leaseSettingsSection = vAppTemplateClient.getVappTemplateLeaseSettingsSection(vAppTemplateURI);
LeaseSettingsSection leaseSettingsSection = vAppTemplateClient.getLeaseSettingsSection(vAppTemplateURI);
checkLeaseSettingsSection(leaseSettingsSection);
}
@ -179,7 +179,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "GET /vAppTemplate/{id}/networkConfigSection")
public void testGetVAppTemplateNetworkConfigSection() {
NetworkConfigSection networkConfigSection = vAppTemplateClient.getVAppTemplateNetworkConfigSection(vAppTemplateURI);
NetworkConfigSection networkConfigSection = vAppTemplateClient.getNetworkConfigSection(vAppTemplateURI);
checkNetworkConfigSection(networkConfigSection);
}
@ -189,21 +189,21 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
getNetworkConnectionSection(new Function<URI, NetworkConnectionSection>() {
@Override
public NetworkConnectionSection apply(URI uri) {
return vAppTemplateClient.getVAppTemplateNetworkConnectionSection(uri);
return vAppTemplateClient.getNetworkConnectionSection(uri);
}
});
}
@Test(description = "GET /vAppTemplate/{id}/networkSection")
public void testGetVAppTemplateNetworkSection() {
NetworkSection networkSection = vAppTemplateClient.getVAppTemplateNetworkSection(vAppTemplateURI);
NetworkSection networkSection = vAppTemplateClient.getNetworkSection(vAppTemplateURI);
checkOvfNetworkSection(networkSection);
}
@Test(description = "GET /vAppTemplate/{id}/ovf")
public void testGetVAppTemplateOvf() {
Envelope envelope = vAppTemplateClient.getVAppTemplateOvf(vAppTemplateURI);
Envelope envelope = vAppTemplateClient.getOvf(vAppTemplateURI);
checkOvfEnvelope(envelope);
}
@ -217,7 +217,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.description(description)
.build();
final Task task = vAppTemplateClient.editVAppTemplate(vAppTemplateURI, template);
final Task task = vAppTemplateClient.modifyVAppTemplate(vAppTemplateURI, template);
retryTaskSuccess.apply(task);
VAppTemplate newTemplate = vAppTemplateClient.getVAppTemplate(vAppTemplateURI);
@ -288,10 +288,10 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.computerName(computerName)
.build();
final Task task = vAppTemplateClient.editVAppTemplateGuestCustomizationSection(vm.getHref(), newSection);
final Task task = vAppTemplateClient.modifyGuestCustomizationSection(vm.getHref(), newSection);
assertTaskSucceeds(task);
GuestCustomizationSection modified = vAppTemplateClient.getVAppTemplateGuestCustomizationSection(vm.getHref());
GuestCustomizationSection modified = vAppTemplateClient.getGuestCustomizationSection(vm.getHref());
checkGuestCustomizationSection(modified);
assertEquals(modified.getComputerName(), computerName);
@ -299,7 +299,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "PUT /vAppTemplate/{id}/customizationSection")
public void testEditCustomizationSection() {
boolean oldVal = vAppTemplateClient.getVAppTemplateCustomizationSection(vAppTemplateURI).isCustomizeOnInstantiate();
boolean oldVal = vAppTemplateClient.getCustomizationSection(vAppTemplateURI).isCustomizeOnInstantiate();
boolean newVal = !oldVal;
CustomizationSection customizationSection = CustomizationSection.builder()
@ -307,10 +307,10 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.customizeOnInstantiate(newVal)
.build();
final Task task = vAppTemplateClient.editVAppTemplateCustomizationSection(vAppTemplateURI, customizationSection);
final Task task = vAppTemplateClient.modifyCustomizationSection(vAppTemplateURI, customizationSection);
retryTaskSuccess.apply(task);
CustomizationSection newCustomizationSection = vAppTemplateClient.getVAppTemplateCustomizationSection(vAppTemplateURI);
CustomizationSection newCustomizationSection = vAppTemplateClient.getCustomizationSection(vAppTemplateURI);
assertEquals(newCustomizationSection.isCustomizeOnInstantiate(), newVal);
}
@ -327,10 +327,10 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.deploymentLeaseInSeconds(deploymentLeaseInSeconds)
.build();
final Task task = vAppTemplateClient.editVappTemplateLeaseSettingsSection(vAppTemplateURI, leaseSettingSection);
final Task task = vAppTemplateClient.modifyLeaseSettingsSection(vAppTemplateURI, leaseSettingSection);
retryTaskSuccess.apply(task);
LeaseSettingsSection newLeaseSettingsSection = vAppTemplateClient.getVappTemplateLeaseSettingsSection(vAppTemplateURI);
LeaseSettingsSection newLeaseSettingsSection = vAppTemplateClient.getLeaseSettingsSection(vAppTemplateURI);
assertEquals(newLeaseSettingsSection.getStorageLeaseInSeconds(), (Integer) storageLeaseInSeconds);
assertEquals(newLeaseSettingsSection.getDeploymentLeaseInSeconds(), (Integer) deploymentLeaseInSeconds);
}
@ -339,7 +339,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
public void testEditNetworkConfigSection() {
// TODO What to modify?
NetworkConfigSection oldSection = vAppTemplateClient.getVAppTemplateNetworkConfigSection(vApp.getHref());
NetworkConfigSection oldSection = vAppTemplateClient.getNetworkConfigSection(vApp.getHref());
NetworkConfigSection newSection = oldSection.toBuilder().build();
// String networkName = ""+random.nextInt();
@ -356,10 +356,10 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
// .networkConfigs(vappNetworkConfigurations)
// .build();
final Task task = vAppTemplateClient.editVAppTemplateNetworkConfigSection(vApp.getHref(), newSection);
final Task task = vAppTemplateClient.modifyNetworkConfigSection(vApp.getHref(), newSection);
assertTaskSucceeds(task);
NetworkConfigSection modified = vAppTemplateClient.getVAppTemplateNetworkConfigSection(vAppTemplateURI);
NetworkConfigSection modified = vAppTemplateClient.getNetworkConfigSection(vAppTemplateURI);
checkNetworkConfigSection(modified);
// assertEquals(modified§.getNetworkConfigs().size(), 1);
@ -383,10 +383,10 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.build())
.build();
Task task = vAppTemplateClient.editVAppTemplateNetworkConnectionSection(vm.getHref(), newSection);
Task task = vAppTemplateClient.modifyNetworkConnectionSection(vm.getHref(), newSection);
assertTaskSucceeds(task);
NetworkConnectionSection modified = vAppTemplateClient.getVAppTemplateNetworkConnectionSection(vm.getHref());
NetworkConnectionSection modified = vAppTemplateClient.getNetworkConnectionSection(vm.getHref());
checkNetworkConnectionSection(modified);
}
@ -413,7 +413,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "POST /vAppTemplate/{id}/action/disableDownload")
public void testDisableVAppTemplateDownload() throws Exception {
vAppTemplateClient.disableDownloadVappTemplate(vAppTemplateURI);
vAppTemplateClient.disableDownload(vAppTemplateURI);
// TODO Check that it really is disabled. The only thing I can see for determining this
// is the undocumented "download" link in the VAppTemplate. But that is brittle and we
@ -428,8 +428,8 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "POST /vAppTemplate/{id}/action/enableDownload")
public void testEnableVAppTemplateDownload() throws Exception {
// First disable so that enable really has some work to do...
vAppTemplateClient.disableDownloadVappTemplate(vAppTemplateURI);
final Task task = vAppTemplateClient.enableDownloadVappTemplate(vAppTemplateURI);
vAppTemplateClient.disableDownload(vAppTemplateURI);
final Task task = vAppTemplateClient.enableDownload(vAppTemplateURI);
retryTaskSuccess.apply(task);
// TODO Check that it really is enabled. The only thing I can see for determining this
@ -454,7 +454,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "POST /vAppTemplate/{id}/action/consolidate")
public void testConsolidateVAppTemplate() throws Exception {
final Task task = vAppTemplateClient.consolidateVappTemplate(vm.getHref());
final Task task = vAppTemplateClient.consolidateVm(vm.getHref());
assertTaskSucceedsLong(task);
// TODO Need assertion that command had effect
@ -468,7 +468,7 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
.datastore(dataStore)
.build();
final Task task = vAppTemplateClient.relocateVappTemplate(vAppTemplateURI, relocateParams);
final Task task = vAppTemplateClient.relocateVm(vAppTemplateURI, relocateParams);
assertTaskSucceedsLong(task);
}
@ -484,8 +484,8 @@ public class VAppTemplateClientLiveTest extends AbstractVAppClientLiveTest {
@Test(description = "test completed task not included in vAppTemplate")
public void testCompletedTaskNotIncludedInVAppTemplate() throws Exception {
// Kick off a task, and wait for it to complete
vAppTemplateClient.disableDownloadVappTemplate(vAppTemplateURI);
final Task task = vAppTemplateClient.enableDownloadVappTemplate(vAppTemplateURI);
vAppTemplateClient.disableDownload(vAppTemplateURI);
final Task task = vAppTemplateClient.enableDownload(vAppTemplateURI);
assertTaskDoneEventually(task);
// Ask the VAppTemplate for its tasks, and the status of the matching task if it exists

View File

@ -24,7 +24,6 @@ import static org.testng.Assert.fail;
import java.net.URI;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.Capabilities;
@ -46,7 +45,8 @@ import org.jclouds.vcloud.director.v1_5.domain.UploadVAppTemplateParams;
import org.jclouds.vcloud.director.v1_5.domain.VApp;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
import org.jclouds.vcloud.director.v1_5.domain.Vdc;
import org.jclouds.vcloud.director.v1_5.internal.BaseVCloudDirectorRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.internal.VCloudDirectorAdminClientExpectTest;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
@ -56,7 +56,7 @@ import org.testng.annotations.Test;
* @author danikov
*/
@Test(groups = { "unit", "user", "vdc" }, singleThreaded = true, testName = "VdcClientExpectTest")
public class VdcClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
public class VdcClientExpectTest extends VCloudDirectorAdminClientExpectTest {
private URI vdcURI;

View File

@ -105,7 +105,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
cleanUpVApp(composedVApp);
}
context.getApi().getAdminVdcClient().getMetadataClient()
adminContext.getApi().getVdcClient().getMetadataClient()
.deleteMetadataEntry(toAdminUri(vdcURI), "key");
}
@ -309,7 +309,7 @@ public class VdcClientLiveTest extends BaseVCloudDirectorClientLiveTest {
@Test(description = "vdcClient admin metadata configuration", dependsOnMethods = { "testGetVdc" } )
public void testSetupMetadata() {
context.getApi().getAdminVdcClient().getMetadataClient().setMetadata(toAdminUri(vdcURI),
adminContext.getApi().getVdcClient().getMetadataClient().setMetadata(toAdminUri(vdcURI),
"key", MetadataValue.builder().value("value").build());
}

View File

@ -19,14 +19,17 @@
package org.jclouds.vcloud.director.v1_5.internal;
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.TASK_COMPLETE_TIMELY;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertTrue;
import static org.testng.Assert.fail;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Properties;
import java.util.Random;
import java.util.Set;
@ -43,10 +46,11 @@ import org.jclouds.rest.RestContext;
import org.jclouds.rest.RestContextFactory;
import org.jclouds.sshj.config.SshjSshClientModule;
import org.jclouds.vcloud.director.testng.FormatApiResultsListener;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorContext;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorException;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminAsyncClient;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import org.jclouds.vcloud.director.v1_5.domain.InstantiateVAppTemplateParams;
import org.jclouds.vcloud.director.v1_5.domain.InstantiationParams;
import org.jclouds.vcloud.director.v1_5.domain.Link;
@ -56,9 +60,12 @@ import org.jclouds.vcloud.director.v1_5.domain.NetworkConfiguration;
import org.jclouds.vcloud.director.v1_5.domain.Org;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.domain.ResourceEntityType.Status;
import org.jclouds.vcloud.director.v1_5.domain.Role.DefaultRoles;
import org.jclouds.vcloud.director.v1_5.domain.RoleReferences;
import org.jclouds.vcloud.director.v1_5.domain.Session;
import org.jclouds.vcloud.director.v1_5.domain.Task;
import org.jclouds.vcloud.director.v1_5.domain.UndeployVAppParams;
import org.jclouds.vcloud.director.v1_5.domain.User;
import org.jclouds.vcloud.director.v1_5.domain.VApp;
import org.jclouds.vcloud.director.v1_5.domain.VAppNetworkConfiguration;
import org.jclouds.vcloud.director.v1_5.domain.VAppTemplate;
@ -70,6 +77,9 @@ import org.jclouds.vcloud.director.v1_5.features.VdcClient;
import org.jclouds.vcloud.director.v1_5.predicates.ReferencePredicates;
import org.jclouds.vcloud.director.v1_5.predicates.TaskStatusEquals;
import org.jclouds.vcloud.director.v1_5.predicates.TaskSuccess;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorAsyncClient;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
@ -105,11 +115,15 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
public static final String VAPP = "vApp";
public static final String VAPP_TEMPLATE = "vAppTemplate";
public static final String VDC = "vdc";
public static final int REQUIRED_ADMIN_VM_QUOTA = 0;
public static final int REQUIRED_USER_VM_QUOTA = 0;
public Predicate<Task> retryTaskSuccess;
public Predicate<Task> retryTaskSuccessLong;
protected RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> context;
protected RestContext<VCloudDirectorAdminClient, VCloudDirectorAdminAsyncClient> adminContext;
protected RestContext<VCloudDirectorClient, VCloudDirectorAsyncClient> context; // FIXME: rename to userContext?
protected Session adminSession;
protected Session session;
protected String catalogId;
@ -151,14 +165,82 @@ public abstract class BaseVCloudDirectorClientLiveTest extends BaseVersionedServ
protected void setupContext() throws Exception {
setupCredentials();
Properties overrides = setupProperties();
context = new RestContextFactory().createContext(provider, identity, credential, ImmutableSet.<Module> of(
VCloudDirectorContext rootContext = VCloudDirectorContext.class.cast(
new RestContextFactory().createContext(provider, identity, credential, ImmutableSet.<Module> of(
new Log4JLoggingModule(), new SshjSshClientModule()), overrides));
adminContext = rootContext.getAdminContext();
rootContext.utils().injector().injectMembers(this);
Reference orgRef = Iterables.getFirst(rootContext.getApi().getOrgClient().getOrgList().getOrgs(), null)
.toAdminReference(endpoint);
assertNotNull(orgRef, String.format(REF_REQ_LIVE, "admin org"));
String adminIdentity = "testAdmin"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String adminCredential = "testAdminPassword";
rootContext.getAdminContext().getApi().getUserClient().createUser(orgRef.getHref(), User.builder()
.name(adminIdentity)
.password(adminCredential)
.description("test user with user-level privileges") //TODO desc
.role(getRoleReferenceFor(DefaultRoles.ORG_ADMIN))
.deployedVmQuota(REQUIRED_ADMIN_VM_QUOTA)
.isEnabled(true)
.build());
rootContext.close(); rootContext = null;
adminContext = VCloudDirectorContext.class.cast(new RestContextFactory().createContext(provider, adminIdentity, adminCredential, ImmutableSet.<Module> of(
new Log4JLoggingModule(), new SshjSshClientModule()), overrides)).getAdminContext();
adminSession = adminContext.getApi().getCurrentSession();
adminContext.utils().injector().injectMembers(this);
String userIdentity = "test"+new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
String userCredential = "testPassword";
adminContext.getApi().getUserClient().createUser(orgRef.getHref(), User.builder()
.name(userIdentity)
.password(userCredential)
.description("test user with user-level privileges")
.role(getRoleReferenceFor(DefaultRoles.USER))
.deployedVmQuota(REQUIRED_USER_VM_QUOTA)
.isEnabled(true)
.build());
context = new RestContextFactory().createContext(provider, userIdentity, userCredential, ImmutableSet.<Module> of(
new Log4JLoggingModule(), new SshjSshClientModule()), overrides);
session = context.getApi().getCurrentSession();
context.utils().injector().injectMembers(this);
initTestParametersFromPropertiesOrLazyDiscover();
setupRequiredClients();
}
public Reference getRoleReferenceFor(String name) {
RoleReferences roles = adminContext.getApi().getQueryClient().roleReferencesQueryAll();
// wrapped in a builder to strip out unwanted xml cruft that the api chokes on
return Reference.builder().fromReference(Iterables.find(roles.getReferences(), ReferencePredicates.nameEquals(name))).build();
}
public User randomTestUser(String prefix) {
return randomTestUser(prefix, getRoleReferenceFor(DefaultRoles.USER));
}
public User randomTestUser(String prefix, Reference role) {
return User.builder()
.name(name(prefix)+random.nextInt(999999))
.fullName("testFullName")
.emailAddress("test@test.com")
.telephone("555-1234")
.isEnabled(false)
.im("testIM")
.isAlertEnabled(false)
.alertEmailPrefix("testPrefix")
.alertEmail("testAlert@test.com")
.isExternal(false)
.isGroupRole(false)
.role(role)
.password("password")
.build();
}
// TODO change properties to URI, not id
protected void initTestParametersFromPropertiesOrLazyDiscover() {
@ -206,9 +288,12 @@ 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) {

View File

@ -0,0 +1,261 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.internal;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.jclouds.rest.RestContextFactory.createContext;
import static org.testng.Assert.assertNotNull;
import java.net.URI;
import java.util.Properties;
import org.jclouds.Constants;
import org.jclouds.date.DateService;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.logging.config.NullLoggingModule;
import org.jclouds.rest.BaseRestClientExpectTest;
import org.jclouds.rest.RestContextSpec;
import org.jclouds.rest.BaseRestClientExpectTest.ExpectModule;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
import org.testng.annotations.BeforeGroups;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.Multimap;
import com.google.inject.Guice;
import com.google.inject.Module;
/**
* Base class for writing KeyStone Rest Client Expect tests
*
* @author Adrian Cole
*/
public abstract class BaseVCloudDirectorExpectTest<T> extends BaseRestClientExpectTest<T> {
public BaseVCloudDirectorExpectTest() {
provider = "vcloud-director";
identity = String.format("%s@%s", user, org);
credential = password;
}
public static final String user = "adrian@jclouds.org";
public static final String org = "JClouds";
public static final String password = "password";
public static final String token = "mIaR3/6Lna8DWImd7/JPR5rK8FcUHabt+G/UCJV5pJQ=";
public static final String endpoint = "https://vcloudbeta.bluelock.com/api";
protected static DateService dateService;
@BeforeGroups("unit")
protected static void setupDateService() {
dateService = Guice.createInjector().getInstance(DateService.class);
assertNotNull(dateService);
}
@Override
public Properties setupProperties() {
Properties props = new Properties();
props.put(Constants.PROPERTY_MAX_RETRIES, 1);
return props;
}
@Override
public HttpRequestComparisonType compareHttpRequestAsType(HttpRequest input) {
if (input.getPayload() == null || input.getPayload().getContentMetadata().getContentLength() == 0) {
return HttpRequestComparisonType.DEFAULT;
}
return HttpRequestComparisonType.XML;
}
protected HttpRequest loginRequest = HttpRequest.builder()
.method("POST")
.endpoint(URI.create(endpoint + "/sessions"))
.headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "*/*")
.put("Authorization", "Basic YWRyaWFuQGpjbG91ZHMub3JnQEpDbG91ZHM6cGFzc3dvcmQ=")
.build())
.build();
protected HttpResponse sessionResponse = HttpResponse.builder()
.statusCode(200)
.headers(ImmutableMultimap.<String, String> builder()
.put("x-vcloud-authorization", token)
.put("Set-Cookie", String.format("vcloud-token=%s; Secure; Path=/", token))
.build())
.payload(payloadFromResourceWithContentType("/session.xml", VCloudDirectorMediaType.SESSION + ";version=1.5"))
.build();
@Deprecated
protected HttpRequest getStandardRequest(String method, String path) {
return getStandardRequest(method, path, VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, URI uri) {
return getStandardRequest(method, uri, VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, String path, String mediaType) {
return getStandardRequest(method, URI.create(endpoint + path), VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardPayloadRequest(String method, String command, String relativeFilePath,
String postMediaType) {
return getStandardPayloadRequest(method, URI.create(endpoint + command), relativeFilePath, postMediaType);
}
@Deprecated
protected HttpRequest getStandardPayloadRequest(String method, URI uri, String relativeFilePath,
String postMediaType) {
return getStandardRequestWithPayload(method, uri, VCloudDirectorMediaType.ANY, relativeFilePath, postMediaType);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, URI uri, String mediaType) {
return HttpRequest.builder()
.method(method)
.endpoint(uri)
.headers(ImmutableMultimap.<String, String> builder()
.put("Accept", mediaType)
.put("x-vcloud-authorization", token)
.build())
.build();
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, String path, String relativeFilePath, String mediaType) {
return getStandardRequestWithPayload(method, path, VCloudDirectorMediaType.ANY, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, URI uri, String relativeFilePath, String mediaType) {
return getStandardRequestWithPayload(method, uri, VCloudDirectorMediaType.ANY, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, String path, String acceptType, String relativeFilePath, String mediaType) {
URI uri = URI.create(endpoint + path);
return getStandardRequestWithPayload(method, uri, acceptType, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, URI uri, String acceptType, String relativeFilePath, String mediaType) {
return HttpRequest.builder()
.method(method)
.endpoint(uri)
.headers(ImmutableMultimap.<String, String> builder()
.put("Accept", acceptType)
.put("x-vcloud-authorization", token)
.build())
.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType))
.build();
}
@Deprecated
protected HttpResponse getStandardPayloadResponse(String relativeFilePath, String mediaType) {
return getStandardPayloadResponse(200, relativeFilePath, mediaType);
}
@Deprecated
protected HttpResponse getStandardPayloadResponse(int statusCode, String relativeFilePath, String mediaType) {
return HttpResponse.builder()
.statusCode(statusCode)
.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType + ";version=1.5"))
.build();
}
/**
* Implicitly adds x-vcloud-authorization header with token.
* Provides convenience methods for priming a HttpRequest.Builder for vCloud testing
*
* @author danikov
*/
public class VcloudHttpRequestPrimer {
private Multimap<String, String> headers = LinkedListMultimap.create();
private HttpRequest.Builder builder = HttpRequest.builder();
public VcloudHttpRequestPrimer() {
}
public VcloudHttpRequestPrimer apiCommand(String method, String command) {
builder.method(method).endpoint(URI.create(endpoint + command));
return this;
}
public VcloudHttpRequestPrimer xmlFilePayload(String relativeFilePath, String mediaType) {
builder.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType));
return this;
}
public VcloudHttpRequestPrimer headers(Multimap<String, String> headers) {
this.headers.putAll(ImmutableMultimap.copyOf(checkNotNull(headers, "headers")));
return this;
}
public VcloudHttpRequestPrimer acceptAnyMedia() {
return acceptMedia(VCloudDirectorMediaType.ANY);
}
public VcloudHttpRequestPrimer acceptMedia(String media) {
return header("Accept", media);
}
public VcloudHttpRequestPrimer header(String name, String value) {
headers.put(checkNotNull(name, "header.name"), checkNotNull(value, "header.value"));
return this;
}
public HttpRequest.Builder httpRequestBuilder() {
header("x-vcloud-authorization", token);
builder.headers(headers);
return builder;
}
}
protected class VcloudHttpResponsePrimer {
private HttpResponse.Builder builder = HttpResponse.builder();
public VcloudHttpResponsePrimer() {
}
public VcloudHttpResponsePrimer xmlFilePayload(String relativeFilePath, String mediaType) {
builder.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType));
return this;
}
public HttpResponse.Builder httpResponseBuilder() {
return builder;
}
}
public URI toAdminUri(Reference ref) {
return toAdminUri(ref.getHref());
}
public URI toAdminUri(URI uri) {
return Reference.builder().href(uri).build().toAdminReference(endpoint).getHref();
}
}

View File

@ -18,236 +18,13 @@
*/
package org.jclouds.vcloud.director.v1_5.internal;
import static com.google.common.base.Preconditions.checkNotNull;
import static org.testng.Assert.assertNotNull;
import java.net.URI;
import java.util.Properties;
import org.jclouds.Constants;
import org.jclouds.date.DateService;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.rest.BaseRestClientExpectTest;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType;
import org.jclouds.vcloud.director.v1_5.domain.Reference;
import org.testng.annotations.BeforeGroups;
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.LinkedListMultimap;
import com.google.common.collect.Multimap;
import com.google.inject.Guice;
import org.jclouds.vcloud.director.v1_5.user.VCloudDirectorClient;
/**
* Base class for writing KeyStone Rest Client Expect tests
*
* @author Adrian Cole
*/
public class BaseVCloudDirectorRestClientExpectTest extends BaseRestClientExpectTest<VCloudDirectorClient> {
public abstract class BaseVCloudDirectorRestClientExpectTest extends BaseVCloudDirectorExpectTest<VCloudDirectorClient> {
public static final String user = "adrian@jclouds.org";
public static final String org = "JClouds";
public static final String password = "password";
public static final String token = "mIaR3/6Lna8DWImd7/JPR5rK8FcUHabt+G/UCJV5pJQ=";
public static final String endpoint = "https://vcloudbeta.bluelock.com/api";
protected static DateService dateService;
@BeforeGroups("unit")
protected static void setupDateService() {
dateService = Guice.createInjector().getInstance(DateService.class);
assertNotNull(dateService);
}
@Override
public Properties setupProperties() {
Properties props = new Properties();
props.put(Constants.PROPERTY_MAX_RETRIES, 1);
return props;
}
@Override
public HttpRequestComparisonType compareHttpRequestAsType(HttpRequest input) {
if (input.getPayload() == null || input.getPayload().getContentMetadata().getContentLength() == 0) {
return HttpRequestComparisonType.DEFAULT;
}
return HttpRequestComparisonType.XML;
}
protected HttpRequest loginRequest = HttpRequest.builder()
.method("POST")
.endpoint(URI.create(endpoint + "/sessions"))
.headers(ImmutableMultimap.<String, String>builder()
.put("Accept", "*/*")
.put("Authorization", "Basic YWRyaWFuQGpjbG91ZHMub3JnQEpDbG91ZHM6cGFzc3dvcmQ=")
.build())
.build();
protected HttpResponse sessionResponse = HttpResponse.builder()
.statusCode(200)
.headers(ImmutableMultimap.<String, String> builder()
.put("x-vcloud-authorization", token)
.put("Set-Cookie", String.format("vcloud-token=%s; Secure; Path=/", token))
.build())
.payload(payloadFromResourceWithContentType("/session.xml", VCloudDirectorMediaType.SESSION + ";version=1.5"))
.build();
public BaseVCloudDirectorRestClientExpectTest() {
provider = "vcloud-director";
identity = String.format("%s@%s", user, org);
credential = password;
}
@Deprecated
protected HttpRequest getStandardRequest(String method, String path) {
return getStandardRequest(method, path, VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, URI uri) {
return getStandardRequest(method, uri, VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, String path, String mediaType) {
return getStandardRequest(method, URI.create(endpoint + path), VCloudDirectorMediaType.ANY);
}
@Deprecated
protected HttpRequest getStandardPayloadRequest(String method, String command, String relativeFilePath,
String postMediaType) {
return getStandardPayloadRequest(method, URI.create(endpoint + command), relativeFilePath, postMediaType);
}
@Deprecated
protected HttpRequest getStandardPayloadRequest(String method, URI uri, String relativeFilePath,
String postMediaType) {
return getStandardRequestWithPayload(method, uri, VCloudDirectorMediaType.ANY, relativeFilePath, postMediaType);
}
@Deprecated
protected HttpRequest getStandardRequest(String method, URI uri, String mediaType) {
return HttpRequest.builder()
.method(method)
.endpoint(uri)
.headers(ImmutableMultimap.<String, String> builder()
.put("Accept", mediaType)
.put("x-vcloud-authorization", token)
.build())
.build();
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, String path, String relativeFilePath, String mediaType) {
return getStandardRequestWithPayload(method, path, VCloudDirectorMediaType.ANY, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, URI uri, String relativeFilePath, String mediaType) {
return getStandardRequestWithPayload(method, uri, VCloudDirectorMediaType.ANY, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, String path, String acceptType, String relativeFilePath, String mediaType) {
URI uri = URI.create(endpoint + path);
return getStandardRequestWithPayload(method, uri, acceptType, relativeFilePath, mediaType);
}
@Deprecated
protected HttpRequest getStandardRequestWithPayload(String method, URI uri, String acceptType, String relativeFilePath, String mediaType) {
return HttpRequest.builder()
.method(method)
.endpoint(uri)
.headers(ImmutableMultimap.<String, String> builder()
.put("Accept", acceptType)
.put("x-vcloud-authorization", token)
.build())
.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType))
.build();
}
@Deprecated
protected HttpResponse getStandardPayloadResponse(String relativeFilePath, String mediaType) {
return getStandardPayloadResponse(200, relativeFilePath, mediaType);
}
@Deprecated
protected HttpResponse getStandardPayloadResponse(int statusCode, String relativeFilePath, String mediaType) {
return HttpResponse.builder()
.statusCode(statusCode)
.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType + ";version=1.5"))
.build();
}
/**
* Implicitly adds x-vcloud-authorization header with token.
* Provides convenience methods for priming a HttpRequest.Builder for vCloud testing
*
* @author danikov
*/
public class VcloudHttpRequestPrimer {
private Multimap<String, String> headers = LinkedListMultimap.create();
private HttpRequest.Builder builder = HttpRequest.builder();
public VcloudHttpRequestPrimer() {
}
public VcloudHttpRequestPrimer apiCommand(String method, String command) {
builder.method(method).endpoint(URI.create(endpoint + command));
return this;
}
public VcloudHttpRequestPrimer xmlFilePayload(String relativeFilePath, String mediaType) {
builder.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType));
return this;
}
public VcloudHttpRequestPrimer headers(Multimap<String, String> headers) {
this.headers.putAll(ImmutableMultimap.copyOf(checkNotNull(headers, "headers")));
return this;
}
public VcloudHttpRequestPrimer acceptAnyMedia() {
return acceptMedia(VCloudDirectorMediaType.ANY);
}
public VcloudHttpRequestPrimer acceptMedia(String media) {
return header("Accept", media);
}
public VcloudHttpRequestPrimer header(String name, String value) {
headers.put(checkNotNull(name, "header.name"), checkNotNull(value, "header.value"));
return this;
}
public HttpRequest.Builder httpRequestBuilder() {
header("x-vcloud-authorization", token);
builder.headers(headers);
return builder;
}
}
protected class VcloudHttpResponsePrimer {
private HttpResponse.Builder builder = HttpResponse.builder();
public VcloudHttpResponsePrimer() {
}
public VcloudHttpResponsePrimer xmlFilePayload(String relativeFilePath, String mediaType) {
builder.payload(payloadFromResourceWithContentType(relativeFilePath, mediaType));
return this;
}
public HttpResponse.Builder httpResponseBuilder() {
return builder;
}
}
public URI toAdminUri(Reference ref) {
return toAdminUri(ref.getHref());
}
public URI toAdminUri(URI uri) {
return Reference.builder().href(uri).build().toAdminReference(endpoint).getHref();
}
}

View File

@ -0,0 +1,57 @@
/**
* Licensed to jclouds, Inc. (jclouds) under one or more
* contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. jclouds licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.jclouds.vcloud.director.v1_5.internal;
import java.util.Properties;
import org.jclouds.http.HttpRequest;
import org.jclouds.http.HttpResponse;
import org.jclouds.logging.config.NullLoggingModule;
import org.jclouds.rest.RestContextFactory;
import org.jclouds.vcloud.director.v1_5.VCloudDirectorContext;
import org.jclouds.vcloud.director.v1_5.admin.VCloudDirectorAdminClient;
import com.google.common.base.Function;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Module;
/**
*
* @author Adrian Cole
*/
public abstract class VCloudDirectorAdminClientExpectTest extends
BaseVCloudDirectorExpectTest<VCloudDirectorAdminClient> implements
Function<VCloudDirectorContext, VCloudDirectorAdminClient> {
@Override
public VCloudDirectorAdminClient createClient(Function<HttpRequest, HttpResponse> fn, Module module, Properties props) {
return apply(createVCloudDirectorContext(fn, module, props));
}
@Override
public VCloudDirectorAdminClient apply(VCloudDirectorContext input) {
return input.getAdminContext().getApi();
}
private VCloudDirectorContext createVCloudDirectorContext(Function<HttpRequest, HttpResponse> fn, Module module,
Properties props) {
return VCloudDirectorContext.class.cast(new RestContextFactory(setupRestProperties()).createContext(provider,
identity, credential, ImmutableSet.<Module> of(new ExpectModule(fn), new NullLoggingModule(), module), props));
}
}

View File

@ -149,7 +149,7 @@ public class PlacementGroupClientLiveTest extends BaseVersionedServiceLiveTest {
assertEquals(template.getImage().getUserMetadata().get("hypervisor"), "xen");
template.getOptions().runScript(
Statements.newStatementList(AdminAccess.standard(), InstallJDK.fromURL()));
Statements.newStatementList(AdminAccess.standard(), InstallJDK.fromOpenJDK()));
String group = PREFIX + "cccluster";
context.getComputeService().destroyNodesMatching(NodePredicates.inGroup(group));

View File

@ -31,22 +31,43 @@ import org.jclouds.scriptbuilder.domain.StatementList;
* @author Adrian Cole
*/
public class InstallJDK {
// TODO: this doesn't work
public static Statement fromOracle() {
throw new UnsupportedOperationException("Oracle JDK install doesn't currently work due to license agreement");
}
public static Statement fromOpenJDK() {
return new FromOpenJDK();
}
/**
* @see fromOpenJDK
*/
@Deprecated
public static Statement fromURL() {
return new FromURL();
return fromOpenJDK();
}
public static Statement fromURL(URI url) {
return new FromURL(url);
}
public static class FromOpenJDK extends StatementList {
public FromOpenJDK() {
super(call("setupPublicCurl"), call("installOpenJDK"));
}
}
public static class FromURL extends StatementList {
public FromURL() {
super(call("setupPublicCurl"), call("installJDK"));
super(call("setupPublicCurl"), call("installJDKFromURL"));
}
public FromURL(URI jdk7Url) {
super(call("setupPublicCurl"), call("installJDK", jdk7Url.toASCIIString()));
super(call("setupPublicCurl"), call("installJDKFromURL", jdk7Url.toASCIIString()));
}
}
}

View File

@ -1,4 +1,7 @@
function installJDK() {
# note this does not work until someone addresses user auth
# https://issues.jenkins-ci.org/browse/JENKINS-10556
# https://forums.oracle.com/forums/thread.jspa?messageID=10236239&tstart=0
function installJDKFromURL() {
if hash curl 2>/dev/null; then
if [ `uname -m` == 'x86_64' ]; then
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz}

View File

@ -0,0 +1,37 @@
function setupJavaHomeInProfile() {
test -n \"$SUDO_USER\" && cat >> `getent passwd $SUDO_USER| cut -f6 -d:`/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
}
function installOpenJDK() {
if hash apt-get 2>/dev/null; then
export pkg=openjdk-7-jdk
apt-get-install $pkg || ( apt-get-upgrade && apt-get-install $pkg )
export JAVA_HOME=`ls -d /usr/lib/jvm/java-7-openjdk-*|grep -v common`
elif hash yum 2>/dev/null; then
#TODO: find a jdk7 yum repo
export pkg=java-1.6.0-openjdk-devel
yum --nogpgcheck -y install $pkg
export JAVA_HOME=`ls -d /usr/lib/jvm/java-1.6.0-openjdk-*`
else
abort "we only support apt-get and yum right now... please contribute!"
return 1
fi
ln -Fs $JAVA_HOME /usr/local/jdk
/usr/local/jdk/bin/java -version || abort "cannot run java"
setupJavaHomeInProfile
}

View File

@ -11,7 +11,7 @@ function ensure_cmd_or_install_package_apt(){
function ensure_cmd_or_install_package_yum(){
local cmd=$1
local pkg=$2
hash $cmd 2>/dev/null || yum --nogpgcheck -y ensure $pkg
hash $cmd 2>/dev/null || yum --nogpgcheck -y install $pkg
}
function ensure_netutils_apt() {

View File

@ -39,14 +39,14 @@ import com.google.common.io.Resources;
@Test(groups = "unit", testName = "InstallJDKTest")
public class InstallJDKTest {
Statement installJDK = InstallJDK.fromURL();
Statement installJDK = InstallJDK.fromOpenJDK();
public void testInstallJDKUNIX() throws IOException {
assertEquals(InstallJDK.fromURL().render(OsFamily.UNIX), "setupPublicCurl || return 1\ninstallJDK || return 1\n");
assertEquals(InstallJDK.fromOpenJDK().render(OsFamily.UNIX), "setupPublicCurl || return 1\ninstallOpenJDK || return 1\n");
}
public void testInstallJDKUNIXInScriptBuilderSourcesSetupPublicCurl() throws IOException {
assertEquals(InitScript.builder().name("install_jdk").run(InstallJDK.fromURL()).build().render(OsFamily.UNIX),
assertEquals(InitScript.builder().name("install_jdk").run(InstallJDK.fromOpenJDK()).build().render(OsFamily.UNIX),
CharStreams.toString(Resources.newReaderSupplier(
Resources.getResource("test_install_jdk_scriptbuilder." + ShellToken.SH.to(OsFamily.UNIX)),
Charsets.UTF_8)));
@ -54,7 +54,7 @@ public class InstallJDKTest {
public void testInstallJDKUNIXWithURL() throws IOException {
assertEquals(InstallJDK.fromURL(URI.create("http://foo")).render(OsFamily.UNIX),
"setupPublicCurl || return 1\ninstallJDK http://foo || return 1\n");
"setupPublicCurl || return 1\ninstallJDKFromURL http://foo || return 1\n");
}
}

View File

@ -96,7 +96,7 @@ function ensure_cmd_or_install_package_apt(){
function ensure_cmd_or_install_package_yum(){
local cmd=$1
local pkg=$2
hash $cmd 2>/dev/null || yum --nogpgcheck -y ensure $pkg
hash $cmd 2>/dev/null || yum --nogpgcheck -y install $pkg
}
function ensure_netutils_apt() {
@ -133,41 +133,42 @@ function setupPublicCurl() {
ensure_can_resolve_public_dns
return 0
}
function installJDK() {
if hash curl 2>/dev/null; then
if [ `uname -m` == 'x86_64' ]; then
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-x64.tar.gz}
else
local url=${1:-http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586.tar.gz}
fi
curl -q -s -S -L --connect-timeout 10 --max-time 600 --retry 20 -X GET $url |(mkdir -p /usr/local &&cd /usr/local &&tar -xpzf -)
mv /usr/local/jdk* /usr/local/jdk/
test -n \"$SUDO_USER\" && cat >> /home/$SUDO_USER/.bashrc <<-'END_OF_JCLOUDS_FILE'
function setupJavaHomeInProfile() {
test -n \"$SUDO_USER\" && cat >> `getent passwd $SUDO_USER| cut -f6 -d:`/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> $HOME/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
cat >> /etc/skel/.bashrc <<-'END_OF_JCLOUDS_FILE'
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH
END_OF_JCLOUDS_FILE
# TODO: eventhough we are setting the above, sometimes images (ex.
# cloudservers ubuntu) kick out of .bashrc (ex. [ -z "$PS1" ] &&
# return), for this reason, we should also explicitly link.
# A better way would be to update using alternatives or the like
ln -fs /usr/local/jdk/bin/java /usr/bin/java
/usr/bin/java -version || abort "cannot run /usr/bin/java"
}
function installOpenJDK() {
if hash apt-get 2>/dev/null; then
export pkg=openjdk-7-jdk
apt-get-install $pkg || ( apt-get-upgrade && apt-get-install $pkg )
export JAVA_HOME=`ls -d /usr/lib/jvm/java-7-openjdk-*|grep -v common`
elif hash yum 2>/dev/null; then
#TODO: find a jdk7 yum repo
export pkg=java-1.6.0-openjdk-devel
yum --nogpgcheck -y install $pkg
export JAVA_HOME=`ls -d /usr/lib/jvm/java-1.6.0-openjdk-*`
else
abort "curl not available.. cannot install openjdk"
abort "we only support apt-get and yum right now... please contribute!"
return 1
fi
return 0
ln -Fs $JAVA_HOME /usr/local/jdk
/usr/local/jdk/bin/java -version || abort "cannot run java"
setupJavaHomeInProfile
}
END_OF_JCLOUDS_SCRIPT
@ -178,7 +179,7 @@ END_OF_JCLOUDS_SCRIPT
rm -f $INSTANCE_HOME/rc
trap 'echo $?>$INSTANCE_HOME/rc' 0 1 2 3 15
setupPublicCurl || exit 1
installJDK || exit 1
installOpenJDK || exit 1
END_OF_JCLOUDS_SCRIPT