mirror of
https://github.com/apache/jclouds.git
synced 2025-03-03 14:59:06 +00:00
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:
commit
f51a2bf6d1
@ -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),//
|
||||
|
@ -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
|
||||
|
@ -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"));
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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();
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
@ -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();
|
||||
}
|
@ -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() {
|
||||
|
@ -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
|
||||
);
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
*/
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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;
|
@ -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.
|
@ -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;
|
@ -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.
|
@ -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;
|
@ -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.
|
@ -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;
|
@ -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.
|
@ -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;
|
@ -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}.
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
||||
|
@ -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;
|
@ -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;
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
@ -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();
|
||||
}
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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"));
|
||||
}
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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")
|
||||
|
@ -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() {
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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()
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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"));
|
||||
}
|
||||
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
@ -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) {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
@ -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));
|
||||
|
@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
@ -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}
|
37
scriptbuilder/src/main/resources/functions/installOpenJDK.sh
Normal file
37
scriptbuilder/src/main/resources/functions/installOpenJDK.sh
Normal 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
|
||||
}
|
@ -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() {
|
||||
|
@ -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");
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user