mirror of https://github.com/apache/jclouds.git
Merge pull request #360 from danikov/vcloud-director-network
Issue 830: vCloud Network
This commit is contained in:
commit
5509b03afe
|
@ -20,6 +20,7 @@ package org.jclouds.vcloud.director.v1_5;
|
||||||
|
|
||||||
import org.jclouds.rest.annotations.Delegate;
|
import org.jclouds.rest.annotations.Delegate;
|
||||||
import org.jclouds.vcloud.director.v1_5.domain.Session;
|
import org.jclouds.vcloud.director.v1_5.domain.Session;
|
||||||
|
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.OrgAsyncClient;
|
||||||
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
@ -41,8 +42,14 @@ public interface VCloudDirectorAsyncClient {
|
||||||
Session getCurrentSession();
|
Session getCurrentSession();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return synchronous access to Org features
|
* @return asynchronous access to Org features
|
||||||
*/
|
*/
|
||||||
@Delegate
|
@Delegate
|
||||||
OrgAsyncClient getOrgClient();
|
OrgAsyncClient getOrgClient();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return asynchronous access to Network features
|
||||||
|
*/
|
||||||
|
@Delegate
|
||||||
|
NetworkAsyncClient getNetworkClient();
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,6 +23,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import org.jclouds.concurrent.Timeout;
|
import org.jclouds.concurrent.Timeout;
|
||||||
import org.jclouds.rest.annotations.Delegate;
|
import org.jclouds.rest.annotations.Delegate;
|
||||||
import org.jclouds.vcloud.director.v1_5.domain.Session;
|
import org.jclouds.vcloud.director.v1_5.domain.Session;
|
||||||
|
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.OrgClient;
|
||||||
|
|
||||||
import com.google.inject.Provides;
|
import com.google.inject.Provides;
|
||||||
|
@ -48,4 +49,10 @@ public interface VCloudDirectorClient {
|
||||||
*/
|
*/
|
||||||
@Delegate
|
@Delegate
|
||||||
OrgClient getOrgClient();
|
OrgClient getOrgClient();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return synchronous access to Network features
|
||||||
|
*/
|
||||||
|
@Delegate
|
||||||
|
NetworkClient getNetworkClient();
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,4 +42,6 @@ public interface VCloudDirectorMediaType {
|
||||||
|
|
||||||
public final static String ORG_XML = "application/vnd.vmware.vcloud.org+xml";
|
public final static String ORG_XML = "application/vnd.vmware.vcloud.org+xml";
|
||||||
|
|
||||||
|
public static final String ORG_NETWORK_XML = "application/vnd.vmware.vcloud.orgNetwork+xml";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -42,6 +42,8 @@ import org.jclouds.vcloud.director.v1_5.VCloudDirectorClient;
|
||||||
import org.jclouds.vcloud.director.v1_5.annotations.Login;
|
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.Session;
|
||||||
import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken;
|
import org.jclouds.vcloud.director.v1_5.domain.SessionWithToken;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.features.NetworkAsyncClient;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.features.NetworkClient;
|
||||||
import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient;
|
import org.jclouds.vcloud.director.v1_5.features.OrgAsyncClient;
|
||||||
import org.jclouds.vcloud.director.v1_5.features.OrgClient;
|
import org.jclouds.vcloud.director.v1_5.features.OrgClient;
|
||||||
import org.jclouds.vcloud.director.v1_5.functions.LoginUserInOrgWithPassword;
|
import org.jclouds.vcloud.director.v1_5.functions.LoginUserInOrgWithPassword;
|
||||||
|
@ -72,6 +74,7 @@ public class VCloudDirectorRestClientModule extends RestClientModule<VCloudDirec
|
||||||
|
|
||||||
public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
|
public static final Map<Class<?>, Class<?>> DELEGATE_MAP = ImmutableMap.<Class<?>, Class<?>> builder()//
|
||||||
.put(OrgClient.class, OrgAsyncClient.class)
|
.put(OrgClient.class, OrgAsyncClient.class)
|
||||||
|
.put(NetworkClient.class, NetworkAsyncClient.class)
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
public VCloudDirectorRestClientModule() {
|
public VCloudDirectorRestClientModule() {
|
||||||
|
|
|
@ -0,0 +1,112 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of IpAddresses.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "IpAddresses")
|
||||||
|
public class IpAddresses {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromIpAddresses(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
private Set<String> ipAddresses = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpAddresses#getIpAddresses()
|
||||||
|
*/
|
||||||
|
public Builder ipAddresses(Set<String> ipAddresses) {
|
||||||
|
this.ipAddresses = Sets.newLinkedHashSet(checkNotNull(ipAddresses, "ipAddresses"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpAddresses#getIpAddresses()
|
||||||
|
*/
|
||||||
|
public Builder ipAddress(String ipAddress) {
|
||||||
|
ipAddresses.add(checkNotNull(ipAddress, "ipAddress"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IpAddresses build() {
|
||||||
|
return new IpAddresses(ipAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromIpAddresses(IpAddresses in) {
|
||||||
|
return ipAddresses(in.getIpAddresses());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpAddresses() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpAddresses(Set<String> orgs) {
|
||||||
|
this.ipAddresses = ImmutableSet.copyOf(orgs);
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "IpAddress")
|
||||||
|
private Set<String> ipAddresses = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
public Set<String> getIpAddresses() {
|
||||||
|
return ImmutableSet.copyOf(ipAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
IpAddresses that = IpAddresses.class.cast(o);
|
||||||
|
return equal(ipAddresses, that.ipAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(ipAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("ipAddresses", ipAddresses).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,125 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a range of IP addresses, start and end inclusive.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "IpRange")
|
||||||
|
public class IpRange {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromIpRange(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private String startAddress;
|
||||||
|
private String endAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpRange#getStartAddress()
|
||||||
|
*/
|
||||||
|
public Builder startAddress(String startAddress) {
|
||||||
|
this.startAddress = startAddress;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpRange#getEndAddress()
|
||||||
|
*/
|
||||||
|
public Builder endAddress(String endAddress) {
|
||||||
|
this.endAddress = endAddress;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IpRange build() {
|
||||||
|
return new IpRange(startAddress, endAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromIpRange(IpRange in) {
|
||||||
|
return startAddress(in.getStartAddress()).endAddress(in.getEndAddress());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpRange() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpRange(String startAddress, String endAddress) {
|
||||||
|
this.startAddress = startAddress;
|
||||||
|
this.endAddress = endAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "StartAddress")
|
||||||
|
private String startAddress;
|
||||||
|
@XmlElement(namespace = NS, name = "EndAddress")
|
||||||
|
private String endAddress;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Start address of the IP range.
|
||||||
|
*/
|
||||||
|
public String getStartAddress() {
|
||||||
|
return startAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return End address of the IP range.
|
||||||
|
*/
|
||||||
|
public String getEndAddress() {
|
||||||
|
return endAddress;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
IpRange that = IpRange.class.cast(o);
|
||||||
|
return equal(startAddress, that.startAddress) && equal(endAddress, that.endAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(startAddress, endAddress);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("startAddress", startAddress)
|
||||||
|
.add("endAddress", endAddress).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,112 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A list of IpAddresses.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "IpRanges")
|
||||||
|
public class IpRanges {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromIpRanges(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
private Set<IpRange> ipRanges = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpRanges#getIpRanges()
|
||||||
|
*/
|
||||||
|
public Builder ipRanges(Set<IpRange> ipRanges) {
|
||||||
|
this.ipRanges = Sets.newLinkedHashSet(checkNotNull(ipRanges, "ipRanges"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpRanges#getIpRanges()
|
||||||
|
*/
|
||||||
|
public Builder ipRange(IpRange ipRange) {
|
||||||
|
ipRanges.add(checkNotNull(ipRange, "ipRange"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IpRanges build() {
|
||||||
|
return new IpRanges(ipRanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromIpRanges(IpRanges in) {
|
||||||
|
return ipRanges(in.getIpRanges());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpRanges() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpRanges(Set<IpRange> ipRanges) {
|
||||||
|
this.ipRanges = ImmutableSet.copyOf(ipRanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "IpRange")
|
||||||
|
private Set<IpRange> ipRanges = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
public Set<IpRange> getIpRanges() {
|
||||||
|
return ImmutableSet.copyOf(ipRanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
IpRanges that = IpRanges.class.cast(o);
|
||||||
|
return equal(ipRanges, that.ipRanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(ipRanges);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("ipRanges", ipRanges).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,289 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specify network settings like gateway, network mask, DNS servers, IP ranges, etc.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "IpScope")
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class IpScope {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromIpScope(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private boolean isInherited;
|
||||||
|
private String gateway;
|
||||||
|
private String netmask;
|
||||||
|
private String dns1;
|
||||||
|
private String dns2;
|
||||||
|
private String dnsSuffix;
|
||||||
|
private IpRanges ipRanges;
|
||||||
|
private IpAddresses allocatedIpAddresses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#isInherited()
|
||||||
|
*/
|
||||||
|
public Builder isInherited(boolean isInherited) {
|
||||||
|
this.isInherited = isInherited;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getGateway()
|
||||||
|
*/
|
||||||
|
public Builder gateway(String gateway) {
|
||||||
|
this.gateway = gateway;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getNetmask()
|
||||||
|
*/
|
||||||
|
public Builder netmask(String netmask) {
|
||||||
|
this.netmask = netmask;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getDns1()
|
||||||
|
*/
|
||||||
|
public Builder dns1(String dns1) {
|
||||||
|
this.dns1 = dns1;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getDns2()
|
||||||
|
*/
|
||||||
|
public Builder dns2(String dns2) {
|
||||||
|
this.dns2 = dns2;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getDnsSuffix()
|
||||||
|
*/
|
||||||
|
public Builder dnsSuffix(String dnsSuffix) {
|
||||||
|
this.dnsSuffix = dnsSuffix;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getIpRanges()
|
||||||
|
*/
|
||||||
|
public Builder ipRanges(IpRanges ipRanges) {
|
||||||
|
this.ipRanges = ipRanges;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see IpScope#getAllocatedIpAddresses()
|
||||||
|
*/
|
||||||
|
public Builder allocatedIpAddresses(IpAddresses allocatedIpAddresses) {
|
||||||
|
this.allocatedIpAddresses = allocatedIpAddresses;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IpScope build() {
|
||||||
|
IpScope ipScope = new IpScope(isInherited);
|
||||||
|
ipScope.setGateway(gateway);
|
||||||
|
ipScope.setNetmask(netmask);
|
||||||
|
ipScope.setDns1(dns1);
|
||||||
|
ipScope.setDns2(dns2);
|
||||||
|
ipScope.setDnsSuffix(dnsSuffix);
|
||||||
|
ipScope.setIpRanges(ipRanges);
|
||||||
|
ipScope.setAllocatedIpAddresses(allocatedIpAddresses);
|
||||||
|
return ipScope;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromIpScope(IpScope in) {
|
||||||
|
return isInherited(in.isInherited()).gateway(in.getGateway())
|
||||||
|
.netmask(in.getNetmask())
|
||||||
|
.dns1(in.getDns1())
|
||||||
|
.dns2(in.getDns2())
|
||||||
|
.dnsSuffix(in.getDnsSuffix())
|
||||||
|
.ipRanges(in.getIpRanges())
|
||||||
|
.allocatedIpAddresses(in.getAllocatedIpAddresses());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpScope() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private IpScope(boolean isInherited) {
|
||||||
|
this.isInherited = isInherited;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "IsInherited")
|
||||||
|
private boolean isInherited;
|
||||||
|
@XmlElement(namespace = NS, name = "Gateway")
|
||||||
|
private String gateway;
|
||||||
|
@XmlElement(namespace = NS, name = "Netmask")
|
||||||
|
private String netmask;
|
||||||
|
@XmlElement(namespace = NS, name = "Dns1")
|
||||||
|
private String dns1;
|
||||||
|
@XmlElement(namespace = NS, name = "Dns2")
|
||||||
|
private String dns2;
|
||||||
|
@XmlElement(namespace = NS, name = "DnsSuffix")
|
||||||
|
private String dnsSuffix;
|
||||||
|
@XmlElement(namespace = NS, name = "IpRanges")
|
||||||
|
private IpRanges ipRanges;
|
||||||
|
@XmlElement(namespace = NS, name = "AllocatedIpAddresses")
|
||||||
|
private IpAddresses allocatedIpAddresses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return True if the IP scope is inherit from parent network.
|
||||||
|
*/
|
||||||
|
public boolean isInherited() {
|
||||||
|
return isInherited;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Gateway of the network..
|
||||||
|
*/
|
||||||
|
public String getGateway() {
|
||||||
|
return gateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setGateway(String gateway) {
|
||||||
|
this.gateway = gateway;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Network mask.
|
||||||
|
*/
|
||||||
|
public String getNetmask() {
|
||||||
|
return netmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNetmask(String netmask) {
|
||||||
|
this.netmask = netmask;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Primary DNS server.
|
||||||
|
*/
|
||||||
|
public String getDns1() {
|
||||||
|
return dns1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDns1(String dns1) {
|
||||||
|
this.dns1 = dns1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Secondary DNS server.
|
||||||
|
*/
|
||||||
|
public String getDns2() {
|
||||||
|
return dns2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDns2(String dns2) {
|
||||||
|
this.dns2 = dns2;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return DNS suffix.
|
||||||
|
*/
|
||||||
|
public String getDnsSuffix() {
|
||||||
|
return dnsSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDnsSuffix(String dnsSuffix) {
|
||||||
|
this.dnsSuffix = dnsSuffix;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return IP ranges used for static pool allocation in the network.
|
||||||
|
*/
|
||||||
|
public IpRanges getIpRanges() {
|
||||||
|
return ipRanges;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIpRanges(IpRanges ipRanges) {
|
||||||
|
this.ipRanges = ipRanges;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Read-only list of allocated IP addresses in the network.
|
||||||
|
*/
|
||||||
|
public IpAddresses getAllocatedIpAddresses() {
|
||||||
|
return allocatedIpAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllocatedIpAddresses(IpAddresses allocatedIpAddresses) {
|
||||||
|
this.allocatedIpAddresses = allocatedIpAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
IpScope that = IpScope.class.cast(o);
|
||||||
|
return equal(isInherited, that.isInherited) && equal(gateway, that.gateway) &&
|
||||||
|
equal(netmask, that.netmask) &&
|
||||||
|
equal(dns1, that.dns1) &&
|
||||||
|
equal(dns2, that.dns2) &&
|
||||||
|
equal(dnsSuffix, that.dnsSuffix) &&
|
||||||
|
equal(ipRanges, that.ipRanges) &&
|
||||||
|
equal(allocatedIpAddresses, that.allocatedIpAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(isInherited, gateway, netmask, dns1, dns2, dnsSuffix,
|
||||||
|
ipRanges, allocatedIpAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("isInherited", isInherited)
|
||||||
|
.add("gateway", gateway)
|
||||||
|
.add("netmask", netmask)
|
||||||
|
.add("dns1", dns1)
|
||||||
|
.add("dns2", dns2)
|
||||||
|
.add("dnsSuffix", dnsSuffix)
|
||||||
|
.add("ipRanges", ipRanges)
|
||||||
|
.add("allocatedIpAddresses", allocatedIpAddresses).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,265 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a network configuration
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "NetworkConfiguration")
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class NetworkConfiguration{
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromConfiguration(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
private IpScope ipScope;
|
||||||
|
private ReferenceType<?> parentNetwork;
|
||||||
|
private String fenceMode;
|
||||||
|
private boolean retainNetInfoAcrossDeployments;
|
||||||
|
private NetworkFeatures features;
|
||||||
|
private SyslogServerSettings syslogServerSettings;
|
||||||
|
private RouterInfo routerInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getIpScope()
|
||||||
|
*/
|
||||||
|
public Builder ipScope(IpScope ipScope) {
|
||||||
|
this.ipScope = ipScope;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getParentNetwork()
|
||||||
|
*/
|
||||||
|
public Builder parentNetwork(ReferenceType<?> parentNetwork) {
|
||||||
|
this.parentNetwork = parentNetwork;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getFenceMode()
|
||||||
|
*/
|
||||||
|
public Builder fenceMode(String fenceMode) {
|
||||||
|
this.fenceMode = fenceMode;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getRetainNetInfoAcrossDeployments()
|
||||||
|
*/
|
||||||
|
public Builder retainNetInfoAcrossDeployments(boolean retainNetInfoAcrossDeployments) {
|
||||||
|
this.retainNetInfoAcrossDeployments = retainNetInfoAcrossDeployments;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getNetworkFeatures()
|
||||||
|
*/
|
||||||
|
public Builder features(NetworkFeatures features) {
|
||||||
|
this.features = features;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getSyslogServerSettings()
|
||||||
|
*/
|
||||||
|
public Builder syslogServerSettings(SyslogServerSettings syslogServerSettings) {
|
||||||
|
this.syslogServerSettings = syslogServerSettings;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkConfiguration#getRouterInfo()
|
||||||
|
*/
|
||||||
|
public Builder routerInfo(RouterInfo routerInfo) {
|
||||||
|
this.routerInfo = routerInfo;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkConfiguration build() {
|
||||||
|
NetworkConfiguration networkConfiguration = new NetworkConfiguration(fenceMode);
|
||||||
|
networkConfiguration.setIpScope(ipScope);
|
||||||
|
networkConfiguration.setParentNetwork(parentNetwork);
|
||||||
|
networkConfiguration.setRetainNetInfoAcrossDeployments(retainNetInfoAcrossDeployments);
|
||||||
|
networkConfiguration.setNetworkFeatures(features);
|
||||||
|
networkConfiguration.setSyslogServerSettings(syslogServerSettings);
|
||||||
|
networkConfiguration.setRouterInfo(routerInfo);
|
||||||
|
return networkConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromConfiguration(NetworkConfiguration in) {
|
||||||
|
return ipScope(in.getIpScope()).parentNetwork(in.getParentNetwork()).fenceMode(in.getFenceMode())
|
||||||
|
.retainNetInfoAcrossDeployments(in.getRetainNetInfoAcrossDeployments())
|
||||||
|
.features(in.getNetworkFeatures())
|
||||||
|
.syslogServerSettings(in.getSyslogServerSettings())
|
||||||
|
.routerInfo(in.getRouterInfo());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkConfiguration() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkConfiguration(String fenceMode) {
|
||||||
|
this.fenceMode = fenceMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "IpScope")
|
||||||
|
private IpScope ipScope;
|
||||||
|
@XmlElement(namespace = NS, name = "ParentNetwork")
|
||||||
|
private ReferenceType<?> parentNetwork;
|
||||||
|
@XmlElement(namespace = NS, name = "FenceMode")
|
||||||
|
private String fenceMode;
|
||||||
|
@XmlElement(namespace = NS, name = "RetainNetInfoAcrossDeployments")
|
||||||
|
private boolean retainNetInfoAcrossDeployments = false;
|
||||||
|
@XmlElement(namespace = NS, name = "Features")
|
||||||
|
private NetworkFeatures features;
|
||||||
|
@XmlElement(namespace = NS, name = "SyslogServerSettings")
|
||||||
|
private SyslogServerSettings syslogServerSettings;
|
||||||
|
@XmlElement(namespace = NS, name = "RouterInfo")
|
||||||
|
private RouterInfo routerInfo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return IP level configuration items such as gateway, dns, subnet,
|
||||||
|
* IP address pool to be used for allocation. Note that the pool of IP addresses
|
||||||
|
* needs to fall within the subnet/mask of the IpScope.
|
||||||
|
*/
|
||||||
|
public IpScope getIpScope() {
|
||||||
|
return ipScope;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIpScope(IpScope ipScope) {
|
||||||
|
this.ipScope = ipScope;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return reference to parent network.
|
||||||
|
*/
|
||||||
|
public ReferenceType<?> getParentNetwork() {
|
||||||
|
return parentNetwork;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setParentNetwork(ReferenceType<?> parentNetwork) {
|
||||||
|
this.parentNetwork = parentNetwork;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Isolation type of the network. If ParentNetwork is specified, this property
|
||||||
|
* controls connectivity to the parent. One of: bridged (connected directly to the ParentNetwork),
|
||||||
|
* isolated (not connected to any other network), natRouted (connected to the ParentNetwork via a
|
||||||
|
* NAT service)
|
||||||
|
*/
|
||||||
|
public String getFenceMode() {
|
||||||
|
return fenceMode;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return whether the network resources such as IP/MAC of router will be retained
|
||||||
|
* across deployments. Default is false.
|
||||||
|
*/
|
||||||
|
public boolean getRetainNetInfoAcrossDeployments() {
|
||||||
|
return retainNetInfoAcrossDeployments;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRetainNetInfoAcrossDeployments(boolean retainNetInfoAcrossDeployments) {
|
||||||
|
this.retainNetInfoAcrossDeployments = retainNetInfoAcrossDeployments;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Network features like DHCP, firewall and NAT rules.
|
||||||
|
*/
|
||||||
|
public NetworkFeatures getNetworkFeatures() {
|
||||||
|
return features;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNetworkFeatures(NetworkFeatures features) {
|
||||||
|
this.features = features;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Syslog server settings for the network.
|
||||||
|
*/
|
||||||
|
public SyslogServerSettings getSyslogServerSettings() {
|
||||||
|
return syslogServerSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSyslogServerSettings(SyslogServerSettings syslogServerSettings) {
|
||||||
|
this.syslogServerSettings = syslogServerSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return router information
|
||||||
|
*/
|
||||||
|
public RouterInfo getRouterInfo() {
|
||||||
|
return routerInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRouterInfo(RouterInfo routerInfo) {
|
||||||
|
this.routerInfo = routerInfo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
NetworkConfiguration that = NetworkConfiguration.class.cast(o);
|
||||||
|
return equal(ipScope, that.ipScope) && equal(parentNetwork, that.parentNetwork) &&
|
||||||
|
equal(fenceMode, that.fenceMode) &&
|
||||||
|
equal(retainNetInfoAcrossDeployments, that.retainNetInfoAcrossDeployments) &&
|
||||||
|
equal(features, that.features) &&
|
||||||
|
equal(syslogServerSettings, that.syslogServerSettings) &&
|
||||||
|
equal(routerInfo, that.routerInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(ipScope, parentNetwork, fenceMode, retainNetInfoAcrossDeployments,
|
||||||
|
features, syslogServerSettings, routerInfo);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("ipScope", ipScope).add("parentNetwork", parentNetwork)
|
||||||
|
.add("fenceMode", fenceMode)
|
||||||
|
.add("retainNetInfoAcrossDeployments", retainNetInfoAcrossDeployments)
|
||||||
|
.add("features", features)
|
||||||
|
.add("syslogServerSettings", syslogServerSettings)
|
||||||
|
.add("routerInfo", routerInfo).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,119 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.common.collect.ImmutableSet;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents features of a network.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "Features")
|
||||||
|
public class NetworkFeatures {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromNetworkFeatures(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private Set<NetworkService> services = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkFeatures#getNetworkServices()
|
||||||
|
*/
|
||||||
|
public Builder services(Set<NetworkService> services) {
|
||||||
|
this.services = Sets.newLinkedHashSet(checkNotNull(services, "services"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkFeatures#getNetworkServices()
|
||||||
|
*/
|
||||||
|
public Builder service(NetworkService service) {
|
||||||
|
services.add(checkNotNull(service, "service"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkFeatures build() {
|
||||||
|
NetworkFeatures networkFeatures = new NetworkFeatures();
|
||||||
|
networkFeatures.setNetworkServices(services);
|
||||||
|
return networkFeatures;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromNetworkFeatures(NetworkFeatures in) {
|
||||||
|
return services(in.getNetworkServices());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkFeatures() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "NetworkService")
|
||||||
|
private Set<NetworkService> services = Sets.newLinkedHashSet();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return a Network service. May be any of DhcpService, NatService, IpsecVpnService,
|
||||||
|
* DhcpService, or StaticRoutingService.
|
||||||
|
*/
|
||||||
|
public Set<NetworkService> getNetworkServices() {
|
||||||
|
return ImmutableSet.copyOf(services);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNetworkServices(Set<NetworkService> services) {
|
||||||
|
this.services = Sets.newLinkedHashSet(checkNotNull(services, "services"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
NetworkFeatures that = NetworkFeatures.class.cast(o);
|
||||||
|
return equal(services, that.services);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(services);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("services", services).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,105 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Represents a network service
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "NetworkService")
|
||||||
|
public class NetworkService {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromNetworkService(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private boolean isEnabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NetworkService#isEnabled()
|
||||||
|
*/
|
||||||
|
public Builder enabled(boolean isEnabled) {
|
||||||
|
this.isEnabled = isEnabled;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public NetworkService build() {
|
||||||
|
NetworkService networkService = new NetworkService();
|
||||||
|
networkService.setEnabled(isEnabled);
|
||||||
|
return networkService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromNetworkService(NetworkService in) {
|
||||||
|
return enabled(in.isEnabled());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private NetworkService() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "IsEnabled")
|
||||||
|
private boolean isEnabled;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Enable or disable the service using this flag
|
||||||
|
*/
|
||||||
|
public boolean isEnabled() {
|
||||||
|
return isEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEnabled(boolean isEnabled) {
|
||||||
|
this.isEnabled = isEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
NetworkService that = NetworkService.class.cast(o);
|
||||||
|
return equal(isEnabled, that.isEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(isEnabled);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("isEnabled", isEnabled).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,248 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
*(Link.builder().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(Link.builder().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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import org.jclouds.ovf.Network;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
import com.google.common.base.Objects.ToStringHelper;
|
||||||
|
import com.google.common.collect.Sets;
|
||||||
|
|
||||||
|
@XmlRootElement(namespace = NS, name = "OrgNetwork")
|
||||||
|
public class OrgNetwork extends EntityType<OrgNetwork> {
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromOrgNetwork(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder extends EntityType.Builder<OrgNetwork> {
|
||||||
|
|
||||||
|
private NetworkConfiguration networkConfiguration;
|
||||||
|
private ReferenceType<?> networkPool;
|
||||||
|
private IpAddresses allowedExternalIpAddresses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Network#getConfiguration()
|
||||||
|
*/
|
||||||
|
public Builder configuration(NetworkConfiguration networkConfiguration) {
|
||||||
|
this.networkConfiguration = networkConfiguration;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Network#getNetworkPool()
|
||||||
|
*/
|
||||||
|
public Builder networkPool(ReferenceType<?> networkPool) {
|
||||||
|
this.networkPool = networkPool;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see Network#getAllowedExternalIpAddresses()
|
||||||
|
*/
|
||||||
|
public Builder allowedExternalIpAddresses(IpAddresses allowedExternalIpAddresses) {
|
||||||
|
this.allowedExternalIpAddresses = allowedExternalIpAddresses;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public OrgNetwork build() {
|
||||||
|
OrgNetwork network = new OrgNetwork(href, name);
|
||||||
|
network.setConfiguration(networkConfiguration);
|
||||||
|
network.setNetworkPool(networkPool);
|
||||||
|
network.setAllowedExternalIpAddresses(allowedExternalIpAddresses);
|
||||||
|
network.setDescription(description);
|
||||||
|
network.setId(id);
|
||||||
|
network.setType(type);
|
||||||
|
network.setLinks(links);
|
||||||
|
network.setTasksInProgress(tasksInProgress);
|
||||||
|
return network;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see EntityType#getName()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder name(String name) {
|
||||||
|
this.name = name;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see EntityType#getDescription()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder description(String description) {
|
||||||
|
this.description = description;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see EntityType#getId()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder id(String id) {
|
||||||
|
this.id = id;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see EntityType#getTasksInProgress()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder tasksInProgress(TasksInProgress tasksInProgress) {
|
||||||
|
this.tasksInProgress = tasksInProgress;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see ReferenceType#getHref()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder href(URI href) {
|
||||||
|
this.href = href;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see ReferenceType#getType()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder type(String type) {
|
||||||
|
this.type = type;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see ReferenceType#getLinks()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder links(Set<Link> links) {
|
||||||
|
this.links = Sets.newLinkedHashSet(checkNotNull(links, "links"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see ReferenceType#getLinks()
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Builder link(Link link) {
|
||||||
|
this.links.add(checkNotNull(link, "link"));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Builder fromEntityType(EntityType<OrgNetwork> in) {
|
||||||
|
return Builder.class.cast(super.fromEntityType(in));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromOrgNetwork(OrgNetwork in) {
|
||||||
|
return fromEntityType(in).configuration(in.getConfiguration())
|
||||||
|
.networkPool(in.getNetworkPool())
|
||||||
|
.allowedExternalIpAddresses(in.getAllowedExternalIpAddresses());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private OrgNetwork() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private OrgNetwork(URI href, String name) {
|
||||||
|
super(href, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "Configuration")
|
||||||
|
private NetworkConfiguration networkConfiguration;
|
||||||
|
@XmlElement(namespace = NS, name = "NetworkPool")
|
||||||
|
private ReferenceType<?> networkPool;
|
||||||
|
@XmlElement(namespace = NS, name = "AllowedExternalIpAddresses")
|
||||||
|
private IpAddresses allowedExternalIpAddresses;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return optional configuration
|
||||||
|
*/
|
||||||
|
public NetworkConfiguration getConfiguration() {
|
||||||
|
return networkConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConfiguration(NetworkConfiguration networkConfiguration) {
|
||||||
|
this.networkConfiguration = networkConfiguration;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return optional network pool
|
||||||
|
*/
|
||||||
|
public ReferenceType<?> getNetworkPool() {
|
||||||
|
return networkPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNetworkPool(ReferenceType<?> networkPool) {
|
||||||
|
this.networkPool = networkPool;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return optional network pool
|
||||||
|
*/
|
||||||
|
public IpAddresses getAllowedExternalIpAddresses() {
|
||||||
|
return allowedExternalIpAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAllowedExternalIpAddresses(IpAddresses allowedExternalIpAddresses) {
|
||||||
|
this.allowedExternalIpAddresses = allowedExternalIpAddresses;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (!super.equals(o))
|
||||||
|
return false;
|
||||||
|
OrgNetwork that = OrgNetwork.class.cast(o);
|
||||||
|
return super.equals(that) && equal(networkConfiguration, that.networkConfiguration) &&
|
||||||
|
equal(networkPool, that.networkPool) &&
|
||||||
|
equal(allowedExternalIpAddresses, that.allowedExternalIpAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return super.hashCode() + Objects.hashCode(networkConfiguration,
|
||||||
|
networkPool, allowedExternalIpAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ToStringHelper string() {
|
||||||
|
return super.string().add("configuration", networkConfiguration).add("networkPool", networkPool)
|
||||||
|
.add("allowedExternalIpAddresses", allowedExternalIpAddresses);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,104 @@
|
||||||
|
/**
|
||||||
|
* 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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Specifies router information.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "RouterInfo")
|
||||||
|
public class RouterInfo {
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromRouterInfo(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private String externalIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see RouterInfo#getExternalIp()
|
||||||
|
*/
|
||||||
|
public Builder externalIp(String externalIp) {
|
||||||
|
this.externalIp = externalIp;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RouterInfo build() {
|
||||||
|
return new RouterInfo(externalIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromRouterInfo(RouterInfo in) {
|
||||||
|
return externalIp(in.getExternalIp());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private RouterInfo() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
private RouterInfo(String externalIp) {
|
||||||
|
this.externalIp = externalIp;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "ExternalIp")
|
||||||
|
private String externalIp;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the external IP of the router. Applicable for NAT Routed / Fenced networks only.
|
||||||
|
*/
|
||||||
|
public String getExternalIp() {
|
||||||
|
return externalIp;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
RouterInfo that = RouterInfo.class.cast(o);
|
||||||
|
return equal(externalIp, that.externalIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(externalIp, externalIp);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("externalIp", externalIp).toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
*(Link.builder().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(Link.builder().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.domain;
|
||||||
|
|
||||||
|
import static com.google.common.base.Objects.equal;
|
||||||
|
import static org.jclouds.vcloud.director.v1_5.VCloudDirectorMediaType.NS;
|
||||||
|
|
||||||
|
import javax.xml.bind.annotation.XmlAccessType;
|
||||||
|
import javax.xml.bind.annotation.XmlAccessorType;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
|
||||||
|
import com.google.common.base.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Syslog server settings. If logging is configured for firewall rules, the logs
|
||||||
|
* will be directed to these syslog servers.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@XmlRootElement(namespace = NS, name = "SyslogServerSettings")
|
||||||
|
@XmlAccessorType(XmlAccessType.FIELD)
|
||||||
|
public class SyslogServerSettings {
|
||||||
|
|
||||||
|
public static Builder builder() {
|
||||||
|
return new Builder();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder toBuilder() {
|
||||||
|
return new Builder().fromSyslogServerSettings(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class Builder {
|
||||||
|
|
||||||
|
private String syslogServerIp1;
|
||||||
|
private String syslogServerIp2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SyslogServerSettings#getSyslogServerIp1()
|
||||||
|
*/
|
||||||
|
public Builder syslogServerIp1(String syslogServerIp1) {
|
||||||
|
this.syslogServerIp1 = syslogServerIp1;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see SyslogServerSettings#getSyslogServerIp2()
|
||||||
|
*/
|
||||||
|
public Builder syslogServerIp2(String syslogServerIp2) {
|
||||||
|
this.syslogServerIp2 = syslogServerIp2;
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SyslogServerSettings build() {
|
||||||
|
SyslogServerSettings syslogServerSettings = new SyslogServerSettings();
|
||||||
|
syslogServerSettings.syslogServerIp1 = syslogServerIp1;
|
||||||
|
syslogServerSettings.syslogServerIp2 = syslogServerIp2;
|
||||||
|
return syslogServerSettings;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Builder fromSyslogServerSettings(SyslogServerSettings in) {
|
||||||
|
return syslogServerIp1(in.getSyslogServerIp1()).syslogServerIp2(in.getSyslogServerIp2());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private SyslogServerSettings() {
|
||||||
|
// For JAXB and builder use
|
||||||
|
}
|
||||||
|
|
||||||
|
@XmlElement(namespace = NS, name = "SyslogServerIp1")
|
||||||
|
private String syslogServerIp1;
|
||||||
|
@XmlElement(namespace = NS, name = "SyslogServerIp2")
|
||||||
|
private String syslogServerIp2;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Primary syslog server.
|
||||||
|
*/
|
||||||
|
public String getSyslogServerIp1() {
|
||||||
|
return syslogServerIp1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSyslogServerIp1(String syslogServerIp1) {
|
||||||
|
this.syslogServerIp1 = syslogServerIp1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Secondary syslog server.
|
||||||
|
*/
|
||||||
|
public String getSyslogServerIp2() {
|
||||||
|
return syslogServerIp2;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSyslogServerIp2(String syslogServerIp2) {
|
||||||
|
this.syslogServerIp2 = syslogServerIp2;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o)
|
||||||
|
return true;
|
||||||
|
if (o == null || getClass() != o.getClass())
|
||||||
|
return false;
|
||||||
|
SyslogServerSettings that = SyslogServerSettings.class.cast(o);
|
||||||
|
return equal(syslogServerIp1, that.syslogServerIp1) && equal(syslogServerIp2, that.syslogServerIp1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hashCode(syslogServerIp1, syslogServerIp2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return Objects.toStringHelper("").add("syslogServerIp1", syslogServerIp1)
|
||||||
|
.add("syslogServerIp1", syslogServerIp2).toString();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
|
||||||
|
import javax.ws.rs.Consumes;
|
||||||
|
import javax.ws.rs.GET;
|
||||||
|
import javax.ws.rs.Path;
|
||||||
|
|
||||||
|
import org.jclouds.rest.annotations.EndpointParam;
|
||||||
|
import org.jclouds.rest.annotations.ExceptionParser;
|
||||||
|
import org.jclouds.rest.annotations.JAXBResponseParser;
|
||||||
|
import org.jclouds.rest.annotations.RequestFilters;
|
||||||
|
import org.jclouds.rest.functions.ReturnNullOnNotFoundOr404;
|
||||||
|
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.OrgNetwork;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.filters.AddVCloudAuthorizationToRequest;
|
||||||
|
|
||||||
|
import com.google.common.util.concurrent.ListenableFuture;
|
||||||
|
|
||||||
|
/**
|
||||||
|
|
||||||
|
* @see NetworkClient
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@RequestFilters(AddVCloudAuthorizationToRequest.class)
|
||||||
|
public interface NetworkAsyncClient {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NeworkClient#getNetwork()
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Consumes
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
|
ListenableFuture<OrgNetwork> getNetwork(@EndpointParam URI uri);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NeworkClient#getMetadata()
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Path("/metadata/")
|
||||||
|
@Consumes
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
|
ListenableFuture<Metadata> getMetadata(@EndpointParam URI orgRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see NeworkClient#getMetadataEntry()
|
||||||
|
*/
|
||||||
|
@GET
|
||||||
|
@Consumes
|
||||||
|
@JAXBResponseParser
|
||||||
|
@ExceptionParser(ReturnNullOnNotFoundOr404.class)
|
||||||
|
ListenableFuture<MetadataEntry> getMetadataEntry(@EndpointParam URI metaDataRef);
|
||||||
|
}
|
|
@ -0,0 +1,61 @@
|
||||||
|
/**
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
import java.net.URI;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import org.jclouds.concurrent.Timeout;
|
||||||
|
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.OrgNetwork;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides synchronous access to Network.
|
||||||
|
* <p/>
|
||||||
|
*
|
||||||
|
* @see NetworkAsyncClient
|
||||||
|
* @see <a href= "http://support.theenterprisecloud.com/kb/default.asp?id=984&Lang=1&SID=" />
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@Timeout(duration = 180, timeUnit = TimeUnit.SECONDS)
|
||||||
|
public interface NetworkClient {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a network.
|
||||||
|
*
|
||||||
|
* @return the network or null if not found
|
||||||
|
*/
|
||||||
|
OrgNetwork getNetwork(URI networkRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves an list of the network's metadata
|
||||||
|
*
|
||||||
|
* @return a list of metadata
|
||||||
|
*/
|
||||||
|
Metadata getMetadata(URI networkRef);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a metadata entry
|
||||||
|
*
|
||||||
|
* @return the metadata entry, or null if not found
|
||||||
|
*/
|
||||||
|
MetadataEntry getMetadataEntry(URI metaDataRef);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,133 @@
|
||||||
|
/**
|
||||||
|
* Licensed to jclouds, Inc. (jclouds) under one or more
|
||||||
|
* contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
*(Link.builder().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(Link.builder().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.features;
|
||||||
|
|
||||||
|
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.IpAddresses;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.IpRange;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.IpRanges;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.IpScope;
|
||||||
|
import org.jclouds.vcloud.director.v1_5.domain.Link;
|
||||||
|
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.NetworkConfiguration;
|
||||||
|
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.testng.annotations.Test;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Allows us to test a client via its side effects.
|
||||||
|
*
|
||||||
|
* @author danikov
|
||||||
|
*/
|
||||||
|
@Test(groups = "unit", singleThreaded = true, testName = "NetworkClientExpectTest")
|
||||||
|
public class NetworkClientExpectTest extends BaseVCloudDirectorRestClientExpectTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWhenResponseIs2xxLoginReturnsValidNetwork() {
|
||||||
|
URI networkRef = URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c");
|
||||||
|
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
getStandardRequest("GET", networkRef),
|
||||||
|
getStandardPayloadResponse("/network/network.xml", VCloudDirectorMediaType.ORG_NETWORK_XML));
|
||||||
|
|
||||||
|
OrgNetwork expected = OrgNetwork
|
||||||
|
.builder()
|
||||||
|
.name("internet01-Jclouds")
|
||||||
|
.id("urn:vcloud:network:55a677cf-ab3f-48ae-b880-fab90421980c")
|
||||||
|
.type(VCloudDirectorMediaType.ORG_NETWORK_XML)
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c"))
|
||||||
|
.link(Link.builder()
|
||||||
|
.rel("up")
|
||||||
|
.type("application/vnd.vmware.vcloud.org+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"))
|
||||||
|
.build())
|
||||||
|
.link(Link.builder()
|
||||||
|
.rel("down")
|
||||||
|
.type("application/vnd.vmware.vcloud.metadata+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c/metadata"))
|
||||||
|
.build())
|
||||||
|
.description("")
|
||||||
|
.configuration(NetworkConfiguration.builder()
|
||||||
|
.ipScope(IpScope.builder()
|
||||||
|
.isInherited(true)
|
||||||
|
.gateway("173.240.107.49")
|
||||||
|
.netmask("255.255.255.240")
|
||||||
|
.dns1("173.240.111.52")
|
||||||
|
.dns2("173.240.111.53")
|
||||||
|
.ipRanges(IpRanges.builder()
|
||||||
|
.ipRange(IpRange.builder()
|
||||||
|
.startAddress("173.240.107.50")
|
||||||
|
.endAddress("173.240.107.62")
|
||||||
|
.build())
|
||||||
|
.build())
|
||||||
|
.build())
|
||||||
|
.fenceMode("bridged")
|
||||||
|
.retainNetInfoAcrossDeployments(false)
|
||||||
|
.syslogServerSettings(SyslogServerSettings.builder().build())
|
||||||
|
.build())
|
||||||
|
.allowedExternalIpAddresses(IpAddresses.builder().build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
assertEquals(client.getNetworkClient().getNetwork(networkRef), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testWhenResponseIs2xxLoginReturnsValidMetadata() {
|
||||||
|
URI orgRef = URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c");
|
||||||
|
URI metaRef = URI.create(orgRef.toASCIIString()+"/metadata/");
|
||||||
|
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
getStandardRequest("GET", metaRef),
|
||||||
|
getStandardPayloadResponse("/network/metadata.xml", VCloudDirectorMediaType.METADATA_XML));
|
||||||
|
|
||||||
|
Metadata expected = Metadata.builder()
|
||||||
|
.type("application/vnd.vmware.vcloud.metadata+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c/metadata"))
|
||||||
|
.link(Link.builder()
|
||||||
|
.rel("up")
|
||||||
|
.type("application/vnd.vmware.vcloud.network+xml")
|
||||||
|
.href(URI.create("https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c"))
|
||||||
|
.build())
|
||||||
|
.build();
|
||||||
|
|
||||||
|
assertEquals(client.getOrgClient().getMetadata(orgRef), expected);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test(enabled=false) // No metadata in exemplar xml...
|
||||||
|
public void testWhenResponseIs2xxLoginReturnsValidMetadataEntry() {
|
||||||
|
URI metadataRef = URI.create(
|
||||||
|
"https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c/metadata/KEY");
|
||||||
|
|
||||||
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
|
getStandardRequest("GET", metadataRef),
|
||||||
|
getStandardPayloadResponse("/network/metadata.xml", VCloudDirectorMediaType.METADATAENTRY_XML));
|
||||||
|
|
||||||
|
MetadataEntry expected = MetadataEntry.builder()
|
||||||
|
.build();
|
||||||
|
|
||||||
|
assertEquals(client.getOrgClient().getMetadataEntry(metadataRef), expected);
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,7 +45,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
||||||
|
|
||||||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
getStandardRequest("GET", URI.create("http://localhost/api/org/")),
|
getStandardRequest("GET", URI.create("http://localhost/api/org/")),
|
||||||
getStandardPayloadResponse("/org/orglist.xml", VCloudDirectorMediaType.ORGLIST_XML));
|
getStandardPayloadResponse("/org/orglist.xml", VCloudDirectorMediaType.ORGLIST_XML+";version=1.5"));
|
||||||
|
|
||||||
OrgList expected = OrgList.builder()
|
OrgList expected = OrgList.builder()
|
||||||
.org(Reference.builder()
|
.org(Reference.builder()
|
||||||
|
@ -64,7 +64,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
||||||
|
|
||||||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
getStandardRequest("GET", orgRef),
|
getStandardRequest("GET", orgRef),
|
||||||
getStandardPayloadResponse("/org/org.xml", VCloudDirectorMediaType.ORG_XML));
|
getStandardPayloadResponse("/org/org.xml", VCloudDirectorMediaType.ORG_XML+";version=1.5"));
|
||||||
|
|
||||||
Org expected = Org
|
Org expected = Org
|
||||||
.builder()
|
.builder()
|
||||||
|
@ -125,7 +125,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
||||||
|
|
||||||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
getStandardRequest("GET", metaRef),
|
getStandardRequest("GET", metaRef),
|
||||||
getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATA_XML));
|
getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATA_XML+";version=1.5"));
|
||||||
|
|
||||||
Metadata expected = Metadata.builder()
|
Metadata expected = Metadata.builder()
|
||||||
.type("application/vnd.vmware.vcloud.metadata+xml")
|
.type("application/vnd.vmware.vcloud.metadata+xml")
|
||||||
|
@ -146,7 +146,7 @@ public class OrgClientExpectTest extends BaseVCloudDirectorRestClientExpectTest
|
||||||
|
|
||||||
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
VCloudDirectorClient client = requestsSendResponses(loginRequest, sessionResponse,
|
||||||
getStandardRequest("GET", metadataRef),
|
getStandardRequest("GET", metadataRef),
|
||||||
getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATAENTRY_XML));
|
getStandardPayloadResponse("/org/metadata.xml", VCloudDirectorMediaType.METADATAENTRY_XML+";version=1.5"));
|
||||||
|
|
||||||
MetadataEntry expected = MetadataEntry.builder()
|
MetadataEntry expected = MetadataEntry.builder()
|
||||||
.build();
|
.build();
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<Metadata xmlns="http://www.vmware.com/vcloud/v1.5" type="application/vnd.vmware.vcloud.metadata+xml" href="https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c/metadata" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vcloudbeta.bluelock.com/api/v1.5/schema/master.xsd">
|
||||||
|
<Link rel="up" type="application/vnd.vmware.vcloud.network+xml" href="https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c"/>
|
||||||
|
</Metadata>
|
|
@ -0,0 +1,25 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<OrgNetwork xmlns="http://www.vmware.com/vcloud/v1.5" name="internet01-Jclouds" id="urn:vcloud:network:55a677cf-ab3f-48ae-b880-fab90421980c" type="application/vnd.vmware.vcloud.orgNetwork+xml" href="https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.vmware.com/vcloud/v1.5 http://vcloudbeta.bluelock.com/api/v1.5/schema/master.xsd">
|
||||||
|
<Link rel="up" type="application/vnd.vmware.vcloud.org+xml" href="https://vcloudbeta.bluelock.com/api/org/6f312e42-cd2b-488d-a2bb-97519cd57ed0"/>
|
||||||
|
<Link rel="down" type="application/vnd.vmware.vcloud.metadata+xml" href="https://vcloudbeta.bluelock.com/api/network/55a677cf-ab3f-48ae-b880-fab90421980c/metadata"/>
|
||||||
|
<Description/>
|
||||||
|
<Configuration>
|
||||||
|
<IpScope>
|
||||||
|
<IsInherited>true</IsInherited>
|
||||||
|
<Gateway>173.240.107.49</Gateway>
|
||||||
|
<Netmask>255.255.255.240</Netmask>
|
||||||
|
<Dns1>173.240.111.52</Dns1>
|
||||||
|
<Dns2>173.240.111.53</Dns2>
|
||||||
|
<IpRanges>
|
||||||
|
<IpRange>
|
||||||
|
<StartAddress>173.240.107.50</StartAddress>
|
||||||
|
<EndAddress>173.240.107.62</EndAddress>
|
||||||
|
</IpRange>
|
||||||
|
</IpRanges>
|
||||||
|
</IpScope>
|
||||||
|
<FenceMode>bridged</FenceMode>
|
||||||
|
<RetainNetInfoAcrossDeployments>false</RetainNetInfoAcrossDeployments>
|
||||||
|
<SyslogServerSettings/>
|
||||||
|
</Configuration>
|
||||||
|
<AllowedExternalIpAddresses/>
|
||||||
|
</OrgNetwork>
|
Loading…
Reference in New Issue