mirror of https://github.com/apache/jclouds.git
fixed network predicates
This commit is contained in:
parent
67d5d8f1e7
commit
6ca5a99484
|
@ -50,6 +50,7 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
private boolean isDefault;
|
||||
private boolean supportsVLAN;
|
||||
private TrafficType trafficType;
|
||||
private GuestIPType guestIPType;
|
||||
private Set<String> tags = ImmutableSet.of();
|
||||
|
||||
public Builder id(long id) {
|
||||
|
@ -102,6 +103,11 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
return this;
|
||||
}
|
||||
|
||||
public Builder guestIPType(GuestIPType guestIPType) {
|
||||
this.guestIPType = guestIPType;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder tags(Set<String> tags) {
|
||||
this.tags = ImmutableSet.copyOf(checkNotNull(tags, "tags"));
|
||||
return this;
|
||||
|
@ -109,7 +115,7 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
|
||||
public NetworkOffering build() {
|
||||
return new NetworkOffering(id, name, displayText, created, availability, supportsVLAN, maxConnections,
|
||||
isDefault, trafficType, networkRate, tags);
|
||||
isDefault, trafficType, guestIPType, networkRate, tags);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,13 +133,15 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
private boolean supportsVLAN;
|
||||
@SerializedName("traffictype")
|
||||
private TrafficType trafficType;
|
||||
@SerializedName("guestiptype")
|
||||
private GuestIPType guestIPType;
|
||||
@SerializedName("networkrate")
|
||||
private int networkRate = -1;
|
||||
private String tags;
|
||||
|
||||
public NetworkOffering(long id, String name, String displayText, @Nullable Date created, String availability,
|
||||
boolean supportsVLAN, @Nullable Integer maxConnections, boolean isDefault, TrafficType trafficType,
|
||||
int networkRate, Set<String> tags) {
|
||||
GuestIPType guestIPType, int networkRate, Set<String> tags) {
|
||||
this.id = id;
|
||||
this.name = name;
|
||||
this.displayText = displayText;
|
||||
|
@ -143,6 +151,7 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
this.maxConnections = maxConnections;
|
||||
this.isDefault = isDefault;
|
||||
this.trafficType = trafficType;
|
||||
this.guestIPType = guestIPType;
|
||||
this.networkRate = networkRate;
|
||||
this.tags = tags.size() == 0 ? null : Joiner.on(',').join(tags);
|
||||
}
|
||||
|
@ -207,7 +216,8 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
|
||||
/**
|
||||
*
|
||||
* @return the max number of concurrent connection the network offering supports
|
||||
* @return the max number of concurrent connection the network offering
|
||||
* supports
|
||||
*/
|
||||
@Nullable
|
||||
public Integer getMaxConnections() {
|
||||
|
@ -230,6 +240,14 @@ public class NetworkOffering implements Comparable<NetworkOffering> {
|
|||
return trafficType;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return the guest ip type for this network offering
|
||||
*/
|
||||
public GuestIPType getGuestIPType() {
|
||||
return guestIPType;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return data transfer rate in megabits per second allowed.
|
||||
|
|
|
@ -0,0 +1,61 @@
|
|||
/**
|
||||
*
|
||||
* Copyright (C) 2011 Cloud Conscious, LLC. <info@cloudconscious.com>
|
||||
*
|
||||
* ====================================================================
|
||||
* Licensed 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.cloudstack.predicates;
|
||||
|
||||
import static com.google.common.base.Predicates.alwaysTrue;
|
||||
|
||||
import org.jclouds.cloudstack.domain.GuestIPType;
|
||||
import org.jclouds.cloudstack.domain.NetworkOffering;
|
||||
import org.jclouds.cloudstack.domain.TrafficType;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class NetworkOfferingPredicates {
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true, if the offering supports creation of GuestVirtual Networks
|
||||
*/
|
||||
public static Predicate<NetworkOffering> supportsGuestVirtualNetworks() {
|
||||
return new Predicate<NetworkOffering>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(NetworkOffering arg0) {
|
||||
return arg0.getTrafficType() == TrafficType.GUEST && arg0.getGuestIPType() == GuestIPType.VIRTUAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "supportsGuestVirtualNetworks()";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return always returns true.
|
||||
*/
|
||||
public static Predicate<NetworkOffering> any() {
|
||||
return alwaysTrue();
|
||||
}
|
||||
}
|
|
@ -19,46 +19,64 @@
|
|||
package org.jclouds.cloudstack.predicates;
|
||||
|
||||
import static com.google.common.base.Preconditions.checkNotNull;
|
||||
import static com.google.common.base.Predicates.alwaysTrue;
|
||||
import static com.google.common.base.Predicates.and;
|
||||
import static com.google.common.base.Predicates.not;
|
||||
|
||||
import org.jclouds.cloudstack.domain.NetworkType;
|
||||
import org.jclouds.cloudstack.domain.Zone;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.base.Predicates;
|
||||
|
||||
/**
|
||||
*
|
||||
* @author Adrian Cole
|
||||
*/
|
||||
public class ZonePredicates {
|
||||
|
||||
public static class SupportsNetworkType implements Predicate<Zone> {
|
||||
private final org.jclouds.cloudstack.domain.NetworkType type;
|
||||
|
||||
public SupportsNetworkType(org.jclouds.cloudstack.domain.NetworkType type) {
|
||||
this.type = checkNotNull(type, "type");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean apply(Zone input) {
|
||||
return type.equals(checkNotNull(input, "zone").getNetworkType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "supportsNetworkType(" + type + ")";
|
||||
}
|
||||
}
|
||||
|
||||
static Predicate<Zone> supportsAdvancedNetworks = new SupportsNetworkType(
|
||||
org.jclouds.cloudstack.domain.NetworkType.ADVANCED);
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true, if the zone supports {@link NetworkType.ADVANCED}
|
||||
*/
|
||||
public static Predicate<Zone> supportsAdvancedNetworks() {
|
||||
return supportsAdvancedNetworks;
|
||||
return new Predicate<Zone>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(Zone input) {
|
||||
return NetworkType.ADVANCED.equals(checkNotNull(input, "zone").getNetworkType());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "supportsAvancedNetworks()";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true, if the zone supports security groups
|
||||
*/
|
||||
public static Predicate<Zone> supportsSecurityGroups() {
|
||||
return new Predicate<Zone>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(Zone input) {
|
||||
return input.isSecurityGroupsEnabled();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "supportsSecurityGroups()";
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @return true, if the zone supports creation of GuestVirtual Networks
|
||||
*/
|
||||
public static Predicate<Zone> supportsGuestVirtualNetworks() {
|
||||
return and(supportsAdvancedNetworks(), not(supportsSecurityGroups()));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -66,6 +84,6 @@ public class ZonePredicates {
|
|||
* @return always returns true.
|
||||
*/
|
||||
public static Predicate<Zone> any() {
|
||||
return Predicates.alwaysTrue();
|
||||
return alwaysTrue();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -75,7 +75,8 @@ public class AccountClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
assert account.getVMLimit() == null || account.getVMLimit() >= 0 : account;
|
||||
assert account.getVMsRunning() >= 0 : account;
|
||||
assert account.getVMsStopped() >= 0 : account;
|
||||
assert account.getVMs() >= 0 : account;
|
||||
// TODO update to 2.2.4 as this is a bug in 2.2.3
|
||||
// assert account.getVMs() >= 0 : account;
|
||||
assert account.getVolumesAvailable() == null || account.getVolumesAvailable() >= 0 : account;
|
||||
assert account.getVolumeLimit() == null || account.getVolumeLimit() >= 0 : account;
|
||||
assert account.getVolumes() >= 0 : account;
|
||||
|
|
|
@ -30,12 +30,12 @@ import org.jclouds.cloudstack.domain.Network;
|
|||
import org.jclouds.cloudstack.domain.NetworkOffering;
|
||||
import org.jclouds.cloudstack.domain.Zone;
|
||||
import org.jclouds.cloudstack.options.ListNetworksOptions;
|
||||
import org.jclouds.cloudstack.predicates.NetworkOfferingPredicates;
|
||||
import org.jclouds.cloudstack.predicates.ZonePredicates;
|
||||
import org.testng.annotations.AfterGroups;
|
||||
import org.testng.annotations.BeforeGroups;
|
||||
import org.testng.annotations.Test;
|
||||
|
||||
import com.google.common.base.Predicate;
|
||||
import com.google.common.collect.Iterables;
|
||||
|
||||
/**
|
||||
|
@ -58,21 +58,17 @@ public class NetworkClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
super.setupClient();
|
||||
|
||||
try {
|
||||
zone = find(client.getZoneClient().listZones(), ZonePredicates.supportsAdvancedNetworks());
|
||||
offering = Iterables.find(client.getOfferingClient().listNetworkOfferings(), new Predicate<NetworkOffering>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(NetworkOffering arg0) {
|
||||
return "Optional".equals(arg0.getAvailability());
|
||||
}
|
||||
|
||||
});
|
||||
// you can create guest direct network by Admin user, but since we are
|
||||
// not admin, let's try to create a guest virtual one
|
||||
zone = find(client.getZoneClient().listZones(), ZonePredicates.supportsGuestVirtualNetworks());
|
||||
offering = Iterables.find(client.getOfferingClient().listNetworkOfferings(),
|
||||
NetworkOfferingPredicates.supportsGuestVirtualNetworks());
|
||||
networksSupported = true;
|
||||
} catch (NoSuchElementException e) {
|
||||
}
|
||||
}
|
||||
|
||||
public void testCreateNetworks() throws Exception {
|
||||
public void testCreateNetwork() throws Exception {
|
||||
if (!networksSupported)
|
||||
return;
|
||||
network = client.getNetworkClient().createNetworkInZone(zone.getId(), offering.getId(), prefix, prefix);
|
||||
|
|
|
@ -72,39 +72,39 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
|
||||
static final Ordering<ServiceOffering> DEFAULT_SIZE_ORDERING = new Ordering<ServiceOffering>() {
|
||||
public int compare(ServiceOffering left, ServiceOffering right) {
|
||||
return ComparisonChain.start().compare(left.getCpuNumber(), right.getCpuNumber()).compare(left.getMemory(),
|
||||
right.getMemory()).result();
|
||||
return ComparisonChain.start().compare(left.getCpuNumber(), right.getCpuNumber())
|
||||
.compare(left.getMemory(), right.getMemory()).result();
|
||||
}
|
||||
};
|
||||
|
||||
public static VirtualMachine createVirtualMachine(CloudStackClient client, RetryablePredicate<Long> jobComplete,
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
Set<Network> networks = client.getNetworkClient().listNetworks();
|
||||
if (networks.size() > 0) {
|
||||
return createVirtualMachineInNetwork(get(networks, 0), client, jobComplete, virtualMachineRunning);
|
||||
} else {
|
||||
return createVirtualMachineWithSecurityGroupInZone(find(client.getZoneClient().listZones(),
|
||||
new Predicate<Zone>() {
|
||||
return createVirtualMachineWithSecurityGroupInZone(
|
||||
find(client.getZoneClient().listZones(), new Predicate<Zone>() {
|
||||
|
||||
@Override
|
||||
public boolean apply(Zone arg0) {
|
||||
return arg0.isSecurityGroupsEnabled();
|
||||
}
|
||||
@Override
|
||||
public boolean apply(Zone arg0) {
|
||||
return arg0.isSecurityGroupsEnabled();
|
||||
}
|
||||
|
||||
}).getId(), get(client.getSecurityGroupClient().listSecurityGroups(), 0).getId(), client,
|
||||
jobComplete, virtualMachineRunning);
|
||||
}).getId(), get(client.getSecurityGroupClient().listSecurityGroups(), 0).getId(), client, jobComplete,
|
||||
virtualMachineRunning);
|
||||
}
|
||||
}
|
||||
|
||||
public static VirtualMachine createVirtualMachineWithSecurityGroupInZone(long zoneId, long groupId,
|
||||
CloudStackClient client, RetryablePredicate<Long> jobComplete,
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
CloudStackClient client, RetryablePredicate<Long> jobComplete,
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
return createVirtualMachineWithOptionsInZone(new DeployVirtualMachineOptions().securityGroupId(groupId), zoneId,
|
||||
client, jobComplete, virtualMachineRunning);
|
||||
client, jobComplete, virtualMachineRunning);
|
||||
}
|
||||
|
||||
public static VirtualMachine createVirtualMachineInNetwork(Network network, CloudStackClient client,
|
||||
RetryablePredicate<Long> jobComplete, RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
RetryablePredicate<Long> jobComplete, RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
DeployVirtualMachineOptions options = new DeployVirtualMachineOptions();
|
||||
long zoneId = network.getZoneId();
|
||||
options.networkId(network.getId());
|
||||
|
@ -112,8 +112,8 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
}
|
||||
|
||||
public static VirtualMachine createVirtualMachineWithOptionsInZone(DeployVirtualMachineOptions options,
|
||||
final long zoneId, CloudStackClient client, RetryablePredicate<Long> jobComplete,
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
final long zoneId, CloudStackClient client, RetryablePredicate<Long> jobComplete,
|
||||
RetryablePredicate<VirtualMachine> virtualMachineRunning) {
|
||||
// TODO enum, as this is way too easy to mess up.
|
||||
Set<String> acceptableCategories = ImmutableSet.of("Ubuntu", "CentOS");
|
||||
|
||||
|
@ -121,9 +121,9 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
final Predicate<Template> osTypePredicate = new OSCategoryIn(client).apply(acceptableCategories);
|
||||
|
||||
Predicate<Template> templatePredicate = Predicates.<Template> and(TemplatePredicates.isReady(),
|
||||
hypervisorPredicate, osTypePredicate);
|
||||
Iterable<Template> templates = filter(client.getTemplateClient().listTemplates(
|
||||
ListTemplatesOptions.Builder.zoneId(zoneId)), templatePredicate);
|
||||
hypervisorPredicate, osTypePredicate);
|
||||
Iterable<Template> templates = filter(
|
||||
client.getTemplateClient().listTemplates(ListTemplatesOptions.Builder.zoneId(zoneId)), templatePredicate);
|
||||
if (Iterables.any(templates, TemplatePredicates.isPasswordEnabled())) {
|
||||
templates = filter(templates, TemplatePredicates.isPasswordEnabled());
|
||||
}
|
||||
|
@ -134,14 +134,14 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
long serviceOfferingId = DEFAULT_SIZE_ORDERING.min(client.getOfferingClient().listServiceOfferings()).getId();
|
||||
|
||||
System.out.printf("serviceOfferingId %d, templateId %d, zoneId %d, options %s%n", serviceOfferingId, templateId,
|
||||
zoneId, options);
|
||||
AsyncCreateResponse job = client.getVirtualMachineClient().deployVirtualMachineInZone(serviceOfferingId, templateId,
|
||||
zoneId, options);
|
||||
zoneId, options);
|
||||
AsyncCreateResponse job = client.getVirtualMachineClient().deployVirtualMachineInZone(zoneId, serviceOfferingId,
|
||||
templateId, options);
|
||||
assert jobComplete.apply(job.getJobId());
|
||||
AsyncJob<VirtualMachine> jobWithResult = client.getAsyncJobClient().<VirtualMachine> getAsyncJob(job.getJobId());
|
||||
if (jobWithResult.getError() != null)
|
||||
Throwables.propagate(new ExecutionException(String.format("job %s failed with exception %s", job.getId(),
|
||||
jobWithResult.getError().toString())) {
|
||||
jobWithResult.getError().toString())) {
|
||||
private static final long serialVersionUID = 4371112085613620239L;
|
||||
});
|
||||
VirtualMachine vm = jobWithResult.getResult();
|
||||
|
@ -221,7 +221,7 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
assertTrue(response.size() >= 0);
|
||||
for (VirtualMachine vm : response) {
|
||||
VirtualMachine newDetails = getOnlyElement(client.getVirtualMachineClient().listVirtualMachines(
|
||||
ListVirtualMachinesOptions.Builder.id(vm.getId())));
|
||||
ListVirtualMachinesOptions.Builder.id(vm.getId())));
|
||||
assertEquals(vm.getId(), newDetails.getId());
|
||||
checkVm(vm);
|
||||
}
|
||||
|
@ -258,20 +258,20 @@ public class VirtualMachineClientLiveTest extends BaseCloudStackClientLiveTest {
|
|||
assert nic.getTrafficType() != null : vm;
|
||||
assert nic.getGuestIPType() != null : vm;
|
||||
switch (vm.getState()) {
|
||||
case RUNNING:
|
||||
assert nic.getNetmask() != null : vm;
|
||||
assert nic.getGateway() != null : vm;
|
||||
assert nic.getIPAddress() != null : vm;
|
||||
break;
|
||||
case STARTING:
|
||||
assert nic.getNetmask() == null : vm;
|
||||
assert nic.getGateway() == null : vm;
|
||||
assert nic.getIPAddress() == null : vm;
|
||||
break;
|
||||
default:
|
||||
assert nic.getNetmask() != null : vm;
|
||||
assert nic.getGateway() != null : vm;
|
||||
assert nic.getIPAddress() != null : vm;
|
||||
case RUNNING:
|
||||
assert nic.getNetmask() != null : vm;
|
||||
assert nic.getGateway() != null : vm;
|
||||
assert nic.getIPAddress() != null : vm;
|
||||
break;
|
||||
case STARTING:
|
||||
assert nic.getNetmask() == null : vm;
|
||||
assert nic.getGateway() == null : vm;
|
||||
assert nic.getIPAddress() == null : vm;
|
||||
break;
|
||||
default:
|
||||
assert nic.getNetmask() != null : vm;
|
||||
assert nic.getGateway() != null : vm;
|
||||
assert nic.getIPAddress() != null : vm;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue