cloudstack-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From sate...@apache.org
Subject [35/50] [abbrv] git commit: updated refs/heads/deploy-from-snapshot to 44ba14d
Date Thu, 16 Jun 2016 08:12:36 GMT
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/AclRule.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/AclRule.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/AclRule.java
new file mode 100644
index 0000000..8a4c053
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/AclRule.java
@@ -0,0 +1,209 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+@SuppressWarnings("serial")
+public class AclRule extends AccessRule {
+
+    public static final String ETHERTYPE_ARP = "ARP";
+
+    /**
+     * @TODO Convert this String into Enum and check the JSON communication still works
+     */
+    protected String action;
+
+    protected String sourceIpPrefix;
+
+    protected String destinationIpPrefix;
+
+    protected String sourceMacAddress;
+
+    protected String destinationMacAddress;
+
+    protected Integer sourcePortRangeMin;
+
+    protected Integer destinationPortRangeMin;
+
+    protected Integer sourcePortRangeMax;
+
+    protected Integer destinationPortRangeMax;
+
+    protected Integer icmpProtocolCode;
+
+    protected Integer icmpProtocolType;
+
+    protected int order;
+
+
+    /**
+     * Default constructor
+     */
+    public AclRule() {
+    }
+
+    /**
+     * Fully parameterized constructor
+     */
+    public AclRule(String ethertype, int protocol, String action, String sourceMacAddress,
+            String destinationMacAddress, String sourceIpPrefix, String destinationIpPrefix,
+            Integer sourcePortRangeMin, Integer sourcePortRangeMax,
+            Integer destinationPortRangeMin, Integer destinationPortRangeMax,
+            int order, Integer icmpProtocolCode, Integer icmpProtocolType) {
+        this.ethertype = ethertype;
+        this.protocol = protocol;
+        this.action = action;
+        this.sourceMacAddress = sourceMacAddress;
+        this.destinationMacAddress = destinationMacAddress;
+        this.sourceIpPrefix = sourceIpPrefix;
+        this.destinationIpPrefix = destinationIpPrefix;
+        this.sourcePortRangeMin = sourcePortRangeMin;
+        this.sourcePortRangeMax = sourcePortRangeMax;
+        this.destinationPortRangeMin = destinationPortRangeMin;
+        this.destinationPortRangeMax = destinationPortRangeMax;
+        this.order = order;
+        this.icmpProtocolCode = icmpProtocolCode;
+        this.icmpProtocolType = icmpProtocolType;
+    }
+
+
+    public String getAction() {
+        return action;
+    }
+
+    public void setAction(String action) {
+        this.action = action;
+    }
+
+    public String getSourceIpPrefix() {
+        return sourceIpPrefix;
+    }
+
+    public void setSourceIpPrefix(String sourceIpPrefix) {
+        this.sourceIpPrefix = sourceIpPrefix;
+    }
+
+    public String getDestinationIpPrefix() {
+        return destinationIpPrefix;
+    }
+
+    public void setDestinationIpPrefix(String destinationIpPrefix) {
+        this.destinationIpPrefix = destinationIpPrefix;
+    }
+
+    public String getSourceMacAddress() {
+        return sourceMacAddress;
+    }
+
+    public void setSourceMacAddress(String sourceMacAddress) {
+        this.sourceMacAddress = sourceMacAddress;
+    }
+
+    public String getDestinationMacAddress() {
+        return destinationMacAddress;
+    }
+
+    public void setDestinationMacAddress(String destinationMacAddress) {
+        this.destinationMacAddress = destinationMacAddress;
+    }
+
+    public Integer getSourcePortRangeMin() {
+        return sourcePortRangeMin;
+    }
+
+    public void setSourcePortRangeMin(Integer sourcePortRangeMin) {
+        this.sourcePortRangeMin = sourcePortRangeMin;
+    }
+
+    public Integer getDestinationPortRangeMin() {
+        return destinationPortRangeMin;
+    }
+
+    public void setDestinationPortRangeMin(Integer destinationPortRangeMin) {
+        this.destinationPortRangeMin = destinationPortRangeMin;
+    }
+
+    public Integer getSourcePortRangeMax() {
+        return sourcePortRangeMax;
+    }
+
+    public void setSourcePortRangeMax(Integer sourcePortRangeMax) {
+        this.sourcePortRangeMax = sourcePortRangeMax;
+    }
+
+    public Integer getDestinationPortRangeMax() {
+        return destinationPortRangeMax;
+    }
+
+    public void setDestinationPortRangeMax(Integer destinationPortRangeMax) {
+        this.destinationPortRangeMax = destinationPortRangeMax;
+    }
+
+    public Integer getIcmpProtocolCode() {
+        return icmpProtocolCode;
+    }
+
+    public void setIcmpProtocolCode(Integer icmpProtocolCode) {
+        this.icmpProtocolCode = icmpProtocolCode;
+    }
+
+    public Integer getIcmpProtocolType() {
+        return icmpProtocolType;
+    }
+
+    public void setIcmpProtocolType(Integer icmpProtocolType) {
+        this.icmpProtocolType = icmpProtocolType;
+    }
+
+    public int getOrder() {
+        return order;
+    }
+
+    public void setOrder(int order) {
+        this.order = order;
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 31)
+            .append(ethertype).append(protocol)
+            .toHashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof AclRule)) {
+            return false;
+        }
+        AclRule another = (AclRule) obj;
+        return new EqualsBuilder()
+                .append(ethertype, another.ethertype)
+                .append(protocol, another.protocol)
+                .isEquals();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Attachment.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Attachment.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Attachment.java
new file mode 100644
index 0000000..90ff131
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Attachment.java
@@ -0,0 +1,24 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+public abstract class Attachment {
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraEntity.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraEntity.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraEntity.java
new file mode 100644
index 0000000..afcd233
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraEntity.java
@@ -0,0 +1,85 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.io.Serializable;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+import org.apache.commons.lang.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang.builder.ToStringStyle;
+
+public abstract class BaseNiciraEntity implements Serializable {
+    protected String href;
+    protected String schema;
+    protected String uuid;
+
+    public String getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(final String uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getHref() {
+        return href;
+    }
+
+    public void setHref(final String href) {
+        this.href = href;
+    }
+
+    public String getSchema() {
+        return schema;
+    }
+
+    public void setSchema(final String schema) {
+        this.schema = schema;
+    }
+
+    @Override
+    public String toString() {
+        return ReflectionToStringBuilder.reflectionToString(this, ToStringStyle.DEFAULT_STYLE, false);
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 31)
+                .append(this.getClass())
+                .append(uuid)
+                .toHashCode();
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (!(this.getClass().isInstance(obj))) {
+            return false;
+        }
+        final BaseNiciraEntity another = (BaseNiciraEntity) obj;
+        return new EqualsBuilder().append(uuid, another.uuid).isEquals();
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraNamedEntity.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraNamedEntity.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraNamedEntity.java
new file mode 100644
index 0000000..0e21ddb
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/BaseNiciraNamedEntity.java
@@ -0,0 +1,44 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.List;
+
+public abstract class BaseNiciraNamedEntity extends BaseNiciraEntity {
+
+    protected String displayName;
+    protected List<NiciraNvpTag> tags;
+
+    public String getDisplayName() {
+        return displayName;
+    }
+
+    public void setDisplayName(final String displayName) {
+        this.displayName = displayName;
+    }
+
+    public List<NiciraNvpTag> getTags() {
+        return tags;
+    }
+
+    public void setTags(final List<NiciraNvpTag> tags) {
+        this.tags = tags;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/ControlClusterStatus.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/ControlClusterStatus.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/ControlClusterStatus.java
new file mode 100644
index 0000000..8d6399e
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/ControlClusterStatus.java
@@ -0,0 +1,87 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+public class ControlClusterStatus {
+    private String clusterStatus;
+    private Stats nodeStats;
+    private Stats queueStats;
+    private Stats portStats;
+    private Stats routerportStats;
+    private Stats switchStats;
+    private Stats zoneStats;
+    private Stats routerStats;
+    private Stats securityProfileStats;
+
+    public String getClusterStatus() {
+        return clusterStatus;
+    }
+
+    public Stats getNodeStats() {
+        return nodeStats;
+    }
+
+    public Stats getLqueueStats() {
+        return queueStats;
+    }
+
+    public Stats getLportStats() {
+        return portStats;
+    }
+
+    public Stats getLrouterportStats() {
+        return routerportStats;
+    }
+
+    public Stats getLswitchStats() {
+        return switchStats;
+    }
+
+    public Stats getZoneStats() {
+        return zoneStats;
+    }
+
+    public Stats getLrouterStats() {
+        return routerStats;
+    }
+
+    public Stats getSecurityProfileStats() {
+        return securityProfileStats;
+    }
+
+    public class Stats {
+        private int errorStateCount;
+        private int registeredCount;
+        private int activeCount;
+
+        public int getErrorStateCount() {
+            return errorStateCount;
+        }
+
+        public int getRegisteredCount() {
+            return registeredCount;
+        }
+
+        public int getActiveCount() {
+            return activeCount;
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/DestinationNatRule.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/DestinationNatRule.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/DestinationNatRule.java
new file mode 100644
index 0000000..a0d5afc
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/DestinationNatRule.java
@@ -0,0 +1,113 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+public class DestinationNatRule extends NatRule {
+    private String toDestinationIpAddress;
+    private Integer toDestinationPort;
+
+    public DestinationNatRule() {
+        setType("DestinationNatRule");
+    }
+
+    public String getToDestinationIpAddress() {
+        return toDestinationIpAddress;
+    }
+
+    public void setToDestinationIpAddress(final String toDestinationIpAddress) {
+        this.toDestinationIpAddress = toDestinationIpAddress;
+    }
+
+    public Integer getToDestinationPort() {
+        return toDestinationPort;
+    }
+
+    public void setToDestinationPort(final Integer toDestinationPort) {
+        this.toDestinationPort = toDestinationPort;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = super.hashCode();
+        result = prime * result + ((toDestinationIpAddress == null) ? 0 : toDestinationIpAddress.hashCode());
+        result = prime * result + ((toDestinationPort == null) ? 0 : toDestinationPort.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!super.equals(obj)) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        DestinationNatRule other = (DestinationNatRule)obj;
+        if (toDestinationIpAddress == null) {
+            if (other.toDestinationIpAddress != null) {
+                return false;
+            }
+        } else if (!toDestinationIpAddress.equals(other.toDestinationIpAddress)) {
+            return false;
+        }
+        if (toDestinationPort == null) {
+            if (other.toDestinationPort != null) {
+                return false;
+            }
+        } else if (!toDestinationPort.equals(other.toDestinationPort)) {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public boolean equalsIgnoreUuid(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!super.equalsIgnoreUuid(obj)) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        DestinationNatRule other = (DestinationNatRule)obj;
+        if (toDestinationIpAddress == null) {
+            if (other.toDestinationIpAddress != null) {
+                return false;
+            }
+        } else if (!toDestinationIpAddress.equals(other.toDestinationIpAddress)) {
+            return false;
+        }
+        if (toDestinationPort == null) {
+            if (other.toDestinationPort != null) {
+                return false;
+            }
+        } else if (!toDestinationPort.equals(other.toDestinationPort)) {
+            return false;
+        }
+        return true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/L3GatewayAttachment.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/L3GatewayAttachment.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/L3GatewayAttachment.java
new file mode 100644
index 0000000..a1d5ce4
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/L3GatewayAttachment.java
@@ -0,0 +1,55 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+/**
+ *
+ */
+public class L3GatewayAttachment extends Attachment {
+    private String l3GatewayServiceUuid;
+    private final String type = "L3GatewayAttachment";
+    private Long vlanId;
+
+    public L3GatewayAttachment(String l3GatewayServiceUuid) {
+        this.l3GatewayServiceUuid = l3GatewayServiceUuid;
+    }
+
+    public L3GatewayAttachment(final String l3GatewayServiceUuid, final long vlanId) {
+        this.l3GatewayServiceUuid = l3GatewayServiceUuid;
+        this.vlanId = vlanId;
+    }
+
+    public String getL3GatewayServiceUuid() {
+        return l3GatewayServiceUuid;
+    }
+
+    public void setL3GatewayServiceUuid(final String l3GatewayServiceUuid) {
+        this.l3GatewayServiceUuid = l3GatewayServiceUuid;
+    }
+
+    public long getVlanId() {
+        return vlanId;
+    }
+
+    public void setVlanId(long vlanId) {
+        this.vlanId = vlanId;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouter.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouter.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouter.java
new file mode 100644
index 0000000..edc9351
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouter.java
@@ -0,0 +1,71 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+
+/**
+ *
+ */
+public class LogicalRouter extends BaseNiciraNamedEntity {
+    public static final String REPLICATION_MODE_SERVICE = "service";
+    public static final String REPLICATION_MODE_SOURCE = "source";
+
+    private final String type = "LogicalRouterConfig";
+    private RoutingConfig routingConfig;
+    private boolean distributed;
+    private boolean natSynchronizationEnabled;
+    private String replicationMode;
+
+    public String getType() {
+        return type;
+    }
+
+    public RoutingConfig getRoutingConfig() {
+        return routingConfig;
+    }
+
+    public void setRoutingConfig(final RoutingConfig routingConfig) {
+        this.routingConfig = routingConfig;
+    }
+
+    public boolean isDistributed() {
+        return distributed;
+    }
+
+    public void setDistributed(final boolean distributed) {
+        this.distributed = distributed;
+    }
+
+    public boolean isNatSynchronizationEnabled() {
+        return natSynchronizationEnabled;
+    }
+
+    public void setNatSynchronizationEnabled(final boolean natSynchronizationEnabled) {
+        this.natSynchronizationEnabled = natSynchronizationEnabled;
+    }
+
+    public String getReplicationMode() {
+        return replicationMode;
+    }
+
+    public void setReplicationMode(final String replicationMode) {
+        this.replicationMode = replicationMode;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouterPort.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouterPort.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouterPort.java
new file mode 100644
index 0000000..d9ee09a
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalRouterPort.java
@@ -0,0 +1,62 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.List;
+
+public class LogicalRouterPort extends BaseNiciraNamedEntity {
+    private Integer portno;
+    private boolean adminStatusEnabled;
+    private List<String> ipAddresses;
+    private String macAddress;
+    private final String type = "LogicalRouterPortConfig";
+
+    public int getPortno() {
+        return portno;
+    }
+
+    public void setPortno(final int portno) {
+        this.portno = portno;
+    }
+
+    public boolean isAdminStatusEnabled() {
+        return adminStatusEnabled;
+    }
+
+    public void setAdminStatusEnabled(final boolean adminStatusEnabled) {
+        this.adminStatusEnabled = adminStatusEnabled;
+    }
+
+    public List<String> getIpAddresses() {
+        return ipAddresses;
+    }
+
+    public void setIpAddresses(final List<String> ipAddresses) {
+        this.ipAddresses = ipAddresses;
+    }
+
+    public String getMacAddress() {
+        return macAddress;
+    }
+
+    public void setMacAddress(final String macAddress) {
+        this.macAddress = macAddress;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitch.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitch.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitch.java
new file mode 100644
index 0000000..b527d94
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitch.java
@@ -0,0 +1,60 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.List;
+
+public class LogicalSwitch extends BaseNiciraNamedEntity {
+    public static final String REPLICATION_MODE_SERVICE = "service";
+    public static final String REPLICATION_MODE_SOURCE = "source";
+
+    private final String type = "LogicalSwitchConfig";
+    private boolean portIsolationEnabled;
+    private List<TransportZoneBinding> transportZones;
+    private String replicationMode;
+
+    public boolean isPortIsolationEnabled() {
+        return portIsolationEnabled;
+    }
+
+    public void setPortIsolationEnabled(final boolean portIsolationEnabled) {
+        this.portIsolationEnabled = portIsolationEnabled;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public List<TransportZoneBinding> getTransportZones() {
+        return transportZones;
+    }
+
+    public void setTransportZones(final List<TransportZoneBinding> transportZones) {
+        this.transportZones = transportZones;
+    }
+
+    public String getReplicationMode() {
+        return replicationMode;
+    }
+
+    public void setReplicationMode(final String replicationMode) {
+        this.replicationMode = replicationMode;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitchPort.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitchPort.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitchPort.java
new file mode 100644
index 0000000..5e07423
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/LogicalSwitchPort.java
@@ -0,0 +1,82 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.List;
+
+public class LogicalSwitchPort extends BaseNiciraNamedEntity {
+    private Integer portno;
+    private boolean adminStatusEnabled;
+    private String queueUuid;
+    private List<String> securityProfiles;
+    private List<String> mirrorTargets;
+    private final String type = "LogicalSwitchPortConfig";
+
+    public LogicalSwitchPort() {
+        super();
+    }
+
+    public LogicalSwitchPort(final String displayName, final List<NiciraNvpTag> tags, final boolean adminStatusEnabled) {
+        super();
+        this.displayName = displayName;
+        this.tags = tags;
+        this.adminStatusEnabled = adminStatusEnabled;
+    }
+
+    public Integer getPortno() {
+        return portno;
+    }
+
+    public void setPortno(final Integer portno) {
+        this.portno = portno;
+    }
+
+    public boolean isAdminStatusEnabled() {
+        return adminStatusEnabled;
+    }
+
+    public void setAdminStatusEnabled(final boolean adminStatusEnabled) {
+        this.adminStatusEnabled = adminStatusEnabled;
+    }
+
+    public String getQueueUuid() {
+        return queueUuid;
+    }
+
+    public void setQueueUuid(final String queueUuid) {
+        this.queueUuid = queueUuid;
+    }
+
+    public List<String> getSecurityProfiles() {
+        return securityProfiles;
+    }
+
+    public void setSecurityProfiles(final List<String> securityProfiles) {
+        this.securityProfiles = securityProfiles;
+    }
+
+    public List<String> getMirrorTargets() {
+        return mirrorTargets;
+    }
+
+    public void setMirrorTargets(final List<String> mirrorTargets) {
+        this.mirrorTargets = mirrorTargets;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Match.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Match.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Match.java
new file mode 100644
index 0000000..ae3a86c
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/Match.java
@@ -0,0 +1,146 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+/**
+ *
+ */
+public class Match {
+    private Integer protocol;
+    private String sourceIpAddresses;
+    private String destinationIpAddresses;
+    private Integer sourcePort;
+    private Integer destinationPort;
+    private String ethertype = "IPv4";
+
+    public Integer getProtocol() {
+        return protocol;
+    }
+
+    public void setProtocol(final Integer protocol) {
+        this.protocol = protocol;
+    }
+
+    public Integer getSourcePort() {
+        return sourcePort;
+    }
+
+    public void setSourcePort(final Integer sourcePort) {
+        this.sourcePort = sourcePort;
+    }
+
+    public Integer getDestinationPort() {
+        return destinationPort;
+    }
+
+    public void setDestinationPort(final Integer destinationPort) {
+        this.destinationPort = destinationPort;
+    }
+
+    public String getEthertype() {
+        return ethertype;
+    }
+
+    public void setEthertype(final String ethertype) {
+        this.ethertype = ethertype;
+    }
+
+    public String getSourceIpAddresses() {
+        return sourceIpAddresses;
+    }
+
+    public void setSourceIpAddresses(final String sourceIpAddresses) {
+        this.sourceIpAddresses = sourceIpAddresses;
+    }
+
+    public String getDestinationIpAddresses() {
+        return destinationIpAddresses;
+    }
+
+    public void setDestinationIpAddresses(final String destinationIpAddresses) {
+        this.destinationIpAddresses = destinationIpAddresses;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((destinationIpAddresses == null) ? 0 : destinationIpAddresses.hashCode());
+        result = prime * result + ((destinationPort == null) ? 0 : destinationPort.hashCode());
+        result = prime * result + ((ethertype == null) ? 0 : ethertype.hashCode());
+        result = prime * result + ((protocol == null) ? 0 : protocol.hashCode());
+        result = prime * result + ((sourceIpAddresses == null) ? 0 : sourceIpAddresses.hashCode());
+        result = prime * result + ((sourcePort == null) ? 0 : sourcePort.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        Match other = (Match)obj;
+        if (destinationIpAddresses == null) {
+            if (other.destinationIpAddresses != null)
+                return false;
+        } else if (!destinationIpAddresses.equals(other.destinationIpAddresses)) {
+            return false;
+        }
+        if (destinationPort == null) {
+            if (other.destinationPort != null) {
+                return false;
+            }
+        } else if (!destinationPort.equals(other.destinationPort)) {
+            return false;
+        }
+        if (ethertype == null) {
+            if (other.ethertype != null)
+                return false;
+        } else if (!ethertype.equals(other.ethertype)) {
+            return false;
+        }
+        if (protocol == null) {
+            if (other.protocol != null)
+                return false;
+        } else if (!protocol.equals(other.protocol)) {
+            return false;
+        }
+        if (sourceIpAddresses == null) {
+            if (other.sourceIpAddresses != null)
+                return false;
+        } else if (!sourceIpAddresses.equals(other.sourceIpAddresses)) {
+            return false;
+        }
+        if (sourcePort == null) {
+            if (other.sourcePort != null)
+                return false;
+        } else if (!sourcePort.equals(other.sourcePort)) {
+            return false;
+        }
+        return true;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NatRule.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NatRule.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NatRule.java
new file mode 100644
index 0000000..912e352
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NatRule.java
@@ -0,0 +1,130 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.UUID;
+
+/**
+ *
+ */
+public abstract class NatRule {
+    protected Match match;
+    protected UUID uuid;
+    protected String type;
+    protected int order;
+
+    public NatRule() {
+    }
+
+    public Match getMatch() {
+        return match;
+    }
+
+    public void setMatch(final Match match) {
+        this.match = match;
+    }
+
+    public UUID getUuid() {
+        return uuid;
+    }
+
+    public void setUuid(final UUID uuid) {
+        this.uuid = uuid;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(final String type) {
+        this.type = type;
+    }
+
+    public int getOrder() {
+        return order;
+    }
+
+    public void setOrder(final int order) {
+        this.order = order;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + ((match == null) ? 0 : match.hashCode());
+        result = prime * result + order;
+        result = prime * result + ((type == null) ? 0 : type.hashCode());
+        result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
+        return result;
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        NatRule other = (NatRule)obj;
+        if (match == null) {
+            if (other.match != null)
+                return false;
+        } else if (!match.equals(other.match))
+            return false;
+        if (order != other.order)
+            return false;
+        if (type == null) {
+            if (other.type != null)
+                return false;
+        } else if (!type.equals(other.type))
+            return false;
+        if (uuid == null) {
+            if (other.uuid != null)
+                return false;
+        } else if (!uuid.equals(other.uuid))
+            return false;
+        return true;
+    }
+
+    public boolean equalsIgnoreUuid(final Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        NatRule other = (NatRule)obj;
+        if (match == null) {
+            if (other.match != null)
+                return false;
+        } else if (!match.equals(other.match))
+            return false;
+        if (order != other.order)
+            return false;
+        if (type == null) {
+            if (other.type != null)
+                return false;
+        } else if (!type.equals(other.type))
+            return false;
+        return true;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApi.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApi.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApi.java
new file mode 100644
index 0000000..810453c
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApi.java
@@ -0,0 +1,658 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
+
+import com.google.gson.JsonDeserializationContext;
+import com.google.gson.JsonDeserializer;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParseException;
+import com.google.gson.reflect.TypeToken;
+
+import com.cloud.utils.rest.CloudstackRESTException;
+import com.cloud.utils.rest.RESTServiceConnector;
+import com.cloud.utils.rest.RESTValidationStrategy;
+
+@SuppressWarnings("rawtypes")
+public class NiciraNvpApi {
+    protected static final String GET_METHOD_TYPE = "get";
+    protected static final String DELETE_METHOD_TYPE = "delete";
+    protected static final String PUT_METHOD_TYPE = "put";
+    protected static final String POST_METHOD_TYPE = "post";
+
+    protected static final String SEC_PROFILE_URI_PREFIX = "/ws.v1/security-profile";
+    protected static final String ACL_URI_PREFIX = "/ws.v1/acl";
+    private static final String SWITCH_URI_PREFIX = "/ws.v1/lswitch";
+    private static final String ROUTER_URI_PREFIX = "/ws.v1/lrouter";
+    private static final String LOGIN_URL = "/ws.v1/login";
+
+    protected RESTServiceConnector restConnector;
+
+    protected final static Map<Class, String> prefixMap;
+
+    protected final static Map<Class, Type> listTypeMap;
+
+    protected final static Map<String, String> defaultListParams;
+
+    static {
+        prefixMap = new HashMap<Class, String>();
+        prefixMap.put(SecurityProfile.class, SEC_PROFILE_URI_PREFIX);
+        prefixMap.put(Acl.class, ACL_URI_PREFIX);
+        prefixMap.put(LogicalSwitch.class, SWITCH_URI_PREFIX);
+        prefixMap.put(LogicalRouter.class, ROUTER_URI_PREFIX);
+
+        listTypeMap = new HashMap<Class, Type>();
+        listTypeMap.put(SecurityProfile.class, new TypeToken<NiciraNvpList<SecurityProfile>>() {
+        }.getType());
+        listTypeMap.put(Acl.class, new TypeToken<NiciraNvpList<Acl>>() {
+        }.getType());
+        listTypeMap.put(LogicalSwitch.class, new TypeToken<NiciraNvpList<LogicalSwitch>>() {
+        }.getType());
+        listTypeMap.put(LogicalRouter.class, new TypeToken<NiciraNvpList<LogicalRouter>>() {
+        }.getType());
+
+        defaultListParams = new HashMap<String, String>();
+        defaultListParams.put("fields", "*");
+    }
+
+    public NiciraNvpApi() {
+        final List<Class<?>> classList = new ArrayList<Class<?>>();
+        classList.add(NatRule.class);
+        classList.add(RoutingConfig.class);
+        final List<JsonDeserializer<?>> deserializerList = new ArrayList<JsonDeserializer<?>>();
+        deserializerList.add(new NatRuleAdapter());
+        deserializerList.add(new RoutingConfigAdapter());
+
+        restConnector = new RESTServiceConnector(new RESTValidationStrategy(LOGIN_URL), classList, deserializerList);
+    }
+
+    public NiciraNvpApi(final String address, final String username, final String password) {
+        this();
+        restConnector.setControllerAddress(address);
+        restConnector.setAdminCredentials(username, password);
+    }
+
+    public void setControllerAddress(final String address) {
+        restConnector.setControllerAddress(address);
+    }
+
+    public void setAdminCredentials(final String username, final String password) {
+        restConnector.setAdminCredentials(username, password);
+    }
+
+    /**
+     * POST
+     *
+     * @param entity
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    protected <T> T create(final T entity) throws NiciraNvpApiException {
+        final String uri = prefixMap.get(entity.getClass());
+        return createWithUri(entity, uri);
+    }
+
+    /**
+     * POST
+     *
+     * @param entity
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    protected <T> T createWithUri(final T entity, final String uri) throws NiciraNvpApiException {
+        T createdEntity;
+        try {
+            createdEntity = restConnector.executeCreateObject(entity, new TypeToken<T>() {
+            }.getType(), uri, Collections.<String, String> emptyMap());
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        return createdEntity;
+    }
+
+    /**
+     * GET list of items
+     *
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    protected <T> NiciraNvpList<T> find(final Class<T> clazz) throws NiciraNvpApiException {
+        return find(null, clazz);
+    }
+
+    /**
+     * GET list of items
+     *
+     * @param uuid
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public <T> NiciraNvpList<T> find(final String uuid, final Class<T> clazz) throws NiciraNvpApiException {
+        final String uri = prefixMap.get(clazz);
+        Map<String, String> params = defaultListParams;
+        if (uuid != null) {
+            params = new HashMap<String, String>(defaultListParams);
+            params.put("uuid", uuid);
+        }
+
+        NiciraNvpList<T> entities;
+        try {
+            entities = restConnector.executeRetrieveObject(listTypeMap.get(clazz), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        if (entities == null) {
+            throw new NiciraNvpApiException("Unexpected response from API");
+        }
+
+        return entities;
+    }
+
+    /**
+     * PUT item given a UUID as key and an item object
+     * with the new data
+     *
+     * @param item
+     * @param uuid
+     * @throws NiciraNvpApiException
+     */
+    public <T> void update(final T item, final String uuid)
+                    throws NiciraNvpApiException {
+        final String uri = prefixMap.get(item.getClass()) + "/" + uuid;
+        updateWithUri(item, uri);
+    }
+
+    /**
+     * PUT item given a UUID as key and an item object
+     * with the new data
+     *
+     * @param item
+     * @param uuid
+     * @throws NiciraNvpApiException
+     */
+    public <T> void updateWithUri(final T item, final String uri)
+                    throws NiciraNvpApiException {
+        try {
+            restConnector.executeUpdateObject(item, uri, Collections.<String, String> emptyMap());
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+    }
+
+    /**
+     * DELETE Security Profile given a UUID as key
+     *
+     * @param securityProfileUuid
+     * @throws NiciraNvpApiException
+     */
+    public <T> void delete(final String uuid, final Class<T> clazz)
+            throws NiciraNvpApiException {
+        final String uri = prefixMap.get(clazz) + "/" + uuid;
+        deleteWithUri(uri);
+    }
+
+    /**
+     * DELETE Security Profile given a UUID as key
+     *
+     * @param securityProfileUuid
+     * @throws NiciraNvpApiException
+     */
+    public <T> void deleteWithUri(final String uri)
+            throws NiciraNvpApiException {
+        try {
+            restConnector.executeDeleteObject(uri);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+    }
+
+    /**
+     * POST {@link SecurityProfile}
+     *
+     * @param securityProfile
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public SecurityProfile createSecurityProfile(final SecurityProfile securityProfile) throws NiciraNvpApiException {
+        return create(securityProfile);
+    }
+
+    /**
+     * GET list of {@link SecurityProfile}
+     *
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<SecurityProfile> findSecurityProfile() throws NiciraNvpApiException {
+        return findSecurityProfile(null);
+    }
+
+    /**
+     * GET list of {@link SecurityProfile} filtered by UUID
+     *
+     * We could have invoked the service:
+     * SEC_PROFILE_URI_PREFIX + "/" + securityProfileUuid
+     * but it is not working currently
+     *
+     * @param uuid
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<SecurityProfile> findSecurityProfile(final String uuid) throws NiciraNvpApiException {
+        return find(uuid, SecurityProfile.class);
+    }
+
+    /**
+     * PUT {@link SecurityProfile} given a UUID as key and a {@link SecurityProfile}
+     * with the new data
+     *
+     * @param securityProfile
+     * @param securityProfileUuid
+     * @throws NiciraNvpApiException
+     */
+    public void updateSecurityProfile(final SecurityProfile securityProfile,
+            final String securityProfileUuid)
+                    throws NiciraNvpApiException {
+        update(securityProfile, securityProfileUuid);
+    }
+
+    /**
+     * DELETE Security Profile given a UUID as key
+     *
+     * @param securityProfileUuid
+     * @throws NiciraNvpApiException
+     */
+    public void deleteSecurityProfile(final String securityProfileUuid)
+            throws NiciraNvpApiException {
+        delete(securityProfileUuid, SecurityProfile.class);
+    }
+
+
+    /**
+     * POST {@link Acl}
+     *
+     * @param acl
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public Acl createAcl(final Acl acl) throws NiciraNvpApiException {
+        return create(acl);
+    }
+
+    /**
+     * GET list of {@link Acl}
+     *
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<Acl> findAcl() throws NiciraNvpApiException {
+        return findAcl(null);
+    }
+
+    /**
+     * GET list of {@link Acl} filtered by UUID
+     *
+     * @param uuid
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<Acl> findAcl(final String uuid) throws NiciraNvpApiException {
+        return find(uuid, Acl.class);
+    }
+
+    /**
+     * PUT {@link Acl} given a UUID as key and a {@link Acl}
+     * with the new data
+     *
+     * @param acl
+     * @param aclUuid
+     * @throws NiciraNvpApiException
+     */
+    public void updateAcl(final Acl acl,
+            final String aclUuid)
+                    throws NiciraNvpApiException {
+        update(acl, aclUuid);
+    }
+
+    /**
+     * DELETE Acl given a UUID as key
+     *
+     * @param acl
+     * @throws NiciraNvpApiException
+     */
+    public void deleteAcl(final String aclUuid) throws NiciraNvpApiException {
+        delete(aclUuid, Acl.class);
+    }
+
+    public LogicalSwitch createLogicalSwitch(final LogicalSwitch logicalSwitch) throws NiciraNvpApiException {
+        return create(logicalSwitch);
+    }
+
+    /**
+     * GET list of {@link LogicalSwitch}
+     *
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<LogicalSwitch> findLogicalSwitch() throws NiciraNvpApiException {
+        return findLogicalSwitch(null);
+    }
+
+    /**
+     * GET list of {@link LogicalSwitch} filtered by UUID
+     *
+     * @param uuid
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<LogicalSwitch> findLogicalSwitch(final String uuid) throws NiciraNvpApiException {
+        return find(uuid, LogicalSwitch.class);
+    }
+
+    /**
+     * PUT {@link LogicalSwitch} given a UUID as key and a {@link LogicalSwitch}
+     * with the new data
+     *
+     * @param logicalSwitch
+     * @param logicalSwitchUuid
+     * @throws NiciraNvpApiException
+     */
+    public void updateLogicalSwitch(final LogicalSwitch logicalSwitch,
+            final String logicalSwitchUuid)
+                    throws NiciraNvpApiException {
+        update(logicalSwitch, logicalSwitchUuid);
+    }
+
+    public void deleteLogicalSwitch(final String uuid) throws NiciraNvpApiException {
+        delete(uuid, LogicalSwitch.class);
+    }
+
+    public LogicalSwitchPort createLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
+        return createWithUri(logicalSwitchPort, uri);
+    }
+
+    public void updateLogicalSwitchPort(final String logicalSwitchUuid, final LogicalSwitchPort logicalSwitchPort) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPort.getUuid();
+        updateWithUri(logicalSwitchPort, uri);
+    }
+
+    public void updateLogicalSwitchPortAttachment(final String logicalSwitchUuid, final String logicalSwitchPortUuid,
+            final Attachment attachment) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPortUuid + "/attachment";
+        updateWithUri(attachment, uri);
+    }
+
+    public void deleteLogicalSwitchPort(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport/" + logicalSwitchPortUuid;
+        deleteWithUri(uri);
+    }
+
+    public String findLogicalSwitchPortUuidByVifAttachmentUuid(final String logicalSwitchUuid, final String vifAttachmentUuid) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("attachment_vif_uuid", vifAttachmentUuid);
+        params.put("fields", "uuid");
+
+        NiciraNvpList<LogicalSwitchPort> lspl;
+        try {
+            lspl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        if (lspl == null || lspl.getResultCount() != 1) {
+            throw new NiciraNvpApiException("Unexpected response from API");
+        }
+
+        final LogicalSwitchPort lsp = lspl.getResults().get(0);
+        return lsp.getUuid();
+    }
+
+    public ControlClusterStatus getControlClusterStatus() throws NiciraNvpApiException {
+        final String uri = "/ws.v1/control-cluster/status";
+        ControlClusterStatus ccs;
+        try {
+            ccs = restConnector.executeRetrieveObject(new TypeToken<ControlClusterStatus>() {
+            }.getType(), uri, null);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        return ccs;
+    }
+
+    public NiciraNvpList<LogicalSwitchPort> findLogicalSwitchPortsByUuid(final String logicalSwitchUuid, final String logicalSwitchPortUuid) throws NiciraNvpApiException {
+        final String uri = SWITCH_URI_PREFIX + "/" + logicalSwitchUuid + "/lport";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("uuid", logicalSwitchPortUuid);
+        params.put("fields", "uuid");
+
+        NiciraNvpList<LogicalSwitchPort> lspl;
+        try {
+            lspl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalSwitchPort>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        if (lspl == null) {
+            throw new NiciraNvpApiException("Unexpected response from API");
+        }
+
+        return lspl;
+    }
+
+    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortsByUuid(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("uuid", logicalRouterPortUuid);
+        params.put("fields", "uuid");
+
+        NiciraNvpList<LogicalRouterPort> lrpl;
+        try {
+            lrpl = restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+
+        if (lrpl == null) {
+            throw new NiciraNvpApiException("Unexpected response from API");
+        }
+
+        return lrpl;
+    }
+
+    public LogicalRouter createLogicalRouter(final LogicalRouter logicalRouter) throws NiciraNvpApiException {
+        return create(logicalRouter);
+    }
+
+    /**
+     * GET list of {@link LogicalRouter}
+     *
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<LogicalRouter> findLogicalRouter() throws NiciraNvpApiException {
+        return findLogicalRouter(null);
+    }
+
+    /**
+     * GET list of {@link LogicalRouter} filtered by UUID
+     *
+     * @param uuid
+     * @return
+     * @throws NiciraNvpApiException
+     */
+    public NiciraNvpList<LogicalRouter> findLogicalRouter(final String uuid) throws NiciraNvpApiException {
+        return find(uuid, LogicalRouter.class);
+    }
+
+    public LogicalRouter findOneLogicalRouterByUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
+        return findLogicalRouter(logicalRouterUuid).getResults().get(0);
+    }
+
+    public void updateLogicalRouter(final LogicalRouter logicalRouter,
+            final String logicalRouterUuid)
+                    throws NiciraNvpApiException {
+        update(logicalRouter, logicalRouterUuid);
+    }
+
+    public void deleteLogicalRouter(final String logicalRouterUuid) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid;
+        deleteWithUri(uri);
+    }
+
+    public LogicalRouterPort createLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
+        return createWithUri(logicalRouterPort, uri);
+    }
+
+    public void deleteLogicalRouterPort(final String logicalRouterUuid, final String logicalRouterPortUuid) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPortUuid;
+        deleteWithUri(uri);
+    }
+
+    public void updateLogicalRouterPort(final String logicalRouterUuid, final LogicalRouterPort logicalRouterPort) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPort.getUuid();
+        updateWithUri(logicalRouterPort, uri);
+    }
+
+    public void updateLogicalRouterPortAttachment(final String logicalRouterUuid, final String logicalRouterPortUuid, final Attachment attachment)
+            throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport/" + logicalRouterPortUuid + "/attachment";
+        updateWithUri(attachment, uri);
+    }
+
+    public NatRule createLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat";
+        return createWithUri(natRule, uri);
+    }
+
+    public void updateLogicalRouterNatRule(final String logicalRouterUuid, final NatRule natRule) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat/" + natRule.getUuid();
+        updateWithUri(natRule, uri);
+    }
+
+    public void deleteLogicalRouterNatRule(final String logicalRouterUuid, final UUID natRuleUuid) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat/" + natRuleUuid.toString();
+        deleteWithUri(uri);
+    }
+
+    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortByGatewayServiceAndVlanId(final String logicalRouterUuid, final String gatewayServiceUuid,
+            final long vlanId) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("attachment_gwsvc_uuid", gatewayServiceUuid);
+        params.put("attachment_vlan", "0");
+        params.put("fields", "*");
+
+        try {
+            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+    }
+
+    public NiciraNvpList<NatRule> findNatRulesByLogicalRouterUuid(final String logicalRouterUuid) throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/nat";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("fields", "*");
+
+        try {
+            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<NatRule>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+    }
+
+    public NiciraNvpList<LogicalRouterPort> findLogicalRouterPortByGatewayServiceUuid(final String logicalRouterUuid, final String l3GatewayServiceUuid)
+            throws NiciraNvpApiException {
+        final String uri = ROUTER_URI_PREFIX + "/" + logicalRouterUuid + "/lport";
+        final Map<String, String> params = new HashMap<String, String>();
+        params.put("fields", "*");
+        params.put("attachment_gwsvc_uuid", l3GatewayServiceUuid);
+
+        try {
+            return restConnector.executeRetrieveObject(new TypeToken<NiciraNvpList<LogicalRouterPort>>() {
+            }.getType(), uri, params);
+        } catch (final CloudstackRESTException e) {
+            throw new NiciraNvpApiException(e);
+        }
+    }
+
+    public static class NatRuleAdapter implements JsonDeserializer<NatRule> {
+
+        @Override
+        public NatRule deserialize(final JsonElement jsonElement, final Type type, final JsonDeserializationContext context) throws JsonParseException {
+            final JsonObject jsonObject = jsonElement.getAsJsonObject();
+
+            if (!jsonObject.has("type")) {
+                throw new JsonParseException("Deserializing as a NatRule, but no type present in the json object");
+            }
+
+            final String natRuleType = jsonObject.get("type").getAsString();
+            if ("SourceNatRule".equals(natRuleType)) {
+                return context.deserialize(jsonElement, SourceNatRule.class);
+            } else if ("DestinationNatRule".equals(natRuleType)) {
+                return context.deserialize(jsonElement, DestinationNatRule.class);
+            }
+
+            throw new JsonParseException("Failed to deserialize type \"" + natRuleType + "\"");
+        }
+    }
+
+    public static class RoutingConfigAdapter implements JsonDeserializer<RoutingConfig> {
+
+        private static final String ROUTING_TABLE_ROUTING_CONFIG = "RoutingTableRoutingConfig";
+        private static final String SINGLE_DEFAULT_ROUTE_IMPLICIT_ROUTING_CONFIG = "SingleDefaultRouteImplicitRoutingConfig";
+
+        @Override
+        public RoutingConfig deserialize(final JsonElement jsonElement, final Type type, final JsonDeserializationContext context) throws JsonParseException {
+            final JsonObject jsonObject = jsonElement.getAsJsonObject();
+
+            if (!jsonObject.has("type")) {
+                throw new JsonParseException("Deserializing as a RoutingConfig, but no type present in the json object");
+            }
+
+            final String routingConfigType = jsonObject.get("type").getAsString();
+            if (SINGLE_DEFAULT_ROUTE_IMPLICIT_ROUTING_CONFIG.equals(routingConfigType)) {
+                return context.deserialize(jsonElement, SingleDefaultRouteImplicitRoutingConfig.class);
+            } else if (ROUTING_TABLE_ROUTING_CONFIG.equals(routingConfigType)) {
+                return context.deserialize(jsonElement, RoutingTableRoutingConfig.class);
+            }
+
+            throw new JsonParseException("Failed to deserialize type \"" + routingConfigType + "\"");
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApiException.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApiException.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApiException.java
new file mode 100644
index 0000000..0d27820
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpApiException.java
@@ -0,0 +1,39 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+public class NiciraNvpApiException extends Exception {
+
+    public NiciraNvpApiException() {
+    }
+
+    public NiciraNvpApiException(final String message) {
+        super(message);
+    }
+
+    public NiciraNvpApiException(final Throwable cause) {
+        super(cause);
+    }
+
+    public NiciraNvpApiException(final String message, final Throwable cause) {
+        super(message, cause);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpList.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpList.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpList.java
new file mode 100644
index 0000000..34b5e19
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpList.java
@@ -0,0 +1,48 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import java.util.List;
+
+public class NiciraNvpList<T> {
+    private List<T> results;
+    private int resultCount;
+
+    public List<T> getResults() {
+        return this.results;
+    }
+
+    public void setResults(List<T> results) {
+        this.results = results;
+    }
+
+    public int getResultCount() {
+        return resultCount;
+    }
+
+    public void setResultCount(int resultCount) {
+        this.resultCount = resultCount;
+    }
+
+    public boolean isEmpty() {
+        return this.resultCount == 0;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpTag.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpTag.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpTag.java
new file mode 100644
index 0000000..625e49c
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/NiciraNvpTag.java
@@ -0,0 +1,64 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import org.apache.log4j.Logger;
+
+public class NiciraNvpTag {
+    private static final int TAG_MAX_LEN = 40;
+    private static final Logger s_logger = Logger.getLogger(NiciraNvpTag.class);
+    private String scope;
+    private String tag;
+
+    public NiciraNvpTag() {
+    }
+
+    public NiciraNvpTag(String scope, String tag) {
+        this.scope = scope;
+        if (tag.length() > 40) {
+            s_logger.warn("tag \"" + tag + "\" too long, truncating to 40 characters");
+            this.tag = tag.substring(0, TAG_MAX_LEN);
+        } else {
+            this.tag = tag;
+        }
+    }
+
+    public String getScope() {
+        return scope;
+    }
+
+    public void setScope(String scope) {
+        this.scope = scope;
+    }
+
+    public String getTag() {
+        return tag;
+    }
+
+    public void setTag(String tag) {
+        if (tag.length() > 40) {
+            s_logger.warn("tag \"" + tag + "\" too long, truncating to 40 characters");
+            this.tag = tag.substring(0, 40);
+        } else {
+            this.tag = tag;
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/PatchAttachment.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/PatchAttachment.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/PatchAttachment.java
new file mode 100644
index 0000000..26fa048
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/PatchAttachment.java
@@ -0,0 +1,41 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+/**
+ *
+ */
+public class PatchAttachment extends Attachment {
+    private final String type = "PatchAttachment";
+    private String peerPortUuid;
+
+    public PatchAttachment(String peerPortUuid) {
+        this.peerPortUuid = peerPortUuid;
+    }
+
+    public String getPeerPortUuid() {
+        return peerPortUuid;
+    }
+
+    public void setPeerPortUuid(String peerPortUuid) {
+        this.peerPortUuid = peerPortUuid;
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RouterNextHop.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RouterNextHop.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RouterNextHop.java
new file mode 100644
index 0000000..8dd8840
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RouterNextHop.java
@@ -0,0 +1,40 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+/**
+ *
+ */
+public class RouterNextHop {
+    private String gatewayIpAddress;
+    private final String type = "RouterNextHop";
+
+    public RouterNextHop(String gatewayIpAddress) {
+        this.gatewayIpAddress = gatewayIpAddress;
+    }
+
+    public String getGatewayIpAddress() {
+        return gatewayIpAddress;
+    }
+
+    public void setGatewayIpAddress(String gatewayIpAddress) {
+        this.gatewayIpAddress = gatewayIpAddress;
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingConfig.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingConfig.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingConfig.java
new file mode 100644
index 0000000..5eaef0a
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingConfig.java
@@ -0,0 +1,24 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+public class RoutingConfig {
+
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingTableRoutingConfig.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingTableRoutingConfig.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingTableRoutingConfig.java
new file mode 100644
index 0000000..f0a80b8
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/RoutingTableRoutingConfig.java
@@ -0,0 +1,30 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+/**
+ *
+ */
+public class RoutingTableRoutingConfig extends RoutingConfig {
+    public final String type = "RoutingTableRoutingConfig";
+
+    public RoutingTableRoutingConfig() {
+    }
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityProfile.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityProfile.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityProfile.java
new file mode 100644
index 0000000..d83ce49
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityProfile.java
@@ -0,0 +1,24 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+@SuppressWarnings("serial")
+public class SecurityProfile extends AccessConfiguration<SecurityRule> {
+}

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/93b0989d/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityRule.java
----------------------------------------------------------------------
diff --git a/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityRule.java b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityRule.java
new file mode 100644
index 0000000..e23593c
--- /dev/null
+++ b/plugins/network-elements/nicira-nvp/src/main/java/com/cloud/network/nicira/SecurityRule.java
@@ -0,0 +1,138 @@
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF 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 com.cloud.network.nicira;
+
+import org.apache.commons.lang.builder.EqualsBuilder;
+import org.apache.commons.lang.builder.HashCodeBuilder;
+
+@SuppressWarnings("serial")
+public class SecurityRule extends AccessRule {
+
+    protected String ipPrefix;
+
+    protected int portRangeMin;
+
+    protected int portRangeMax;
+
+    protected String profileUuid;
+
+
+    /**
+     * Default constructor
+     */
+    public SecurityRule() {
+    }
+
+    /**
+     * Fully parameterized constructor
+     */
+    public SecurityRule(final String ethertype, final String ipPrefix, final String profileUuid,
+            final int portRangeMin, final int portRangeMax, final int protocol) {
+        this.ethertype = ethertype;
+        this.ipPrefix = ipPrefix;
+        this.portRangeMin = portRangeMin;
+        this.portRangeMax = portRangeMax;
+        this.profileUuid = profileUuid;
+        this.protocol = protocol;
+    }
+
+    @Override
+    public String getEthertype() {
+        return ethertype;
+    }
+
+    @Override
+    public void setEthertype(final String ethertype) {
+        this.ethertype = ethertype;
+    }
+
+    public String getIpPrefix() {
+        return ipPrefix;
+    }
+
+    public void setIpPrefix(final String ipPrefix) {
+        this.ipPrefix = ipPrefix;
+    }
+
+    public int getPortRangeMin() {
+        return portRangeMin;
+    }
+
+    public void setPortRangeMin(final int portRangeMin) {
+        this.portRangeMin = portRangeMin;
+    }
+
+    public int getPortRangeMax() {
+        return portRangeMax;
+    }
+
+    public void setPortRangeMax(final int portRangeMax) {
+        this.portRangeMax = portRangeMax;
+    }
+
+    public String getProfileUuid() {
+        return profileUuid;
+    }
+
+    public void setProfileUuid(final String profileUuid) {
+        this.profileUuid = profileUuid;
+    }
+
+    @Override
+    public int getProtocol() {
+        return protocol;
+    }
+
+    @Override
+    public void setProtocol(final int protocol) {
+        this.protocol = protocol;
+    }
+
+    @Override
+    public int hashCode() {
+        return new HashCodeBuilder(17, 31)
+            .append(ethertype).append(ipPrefix)
+            .append(portRangeMin).append(portRangeMax)
+            .append(profileUuid).append(protocol)
+            .toHashCode();
+    }
+
+    @Override
+    public boolean equals(final Object obj) {
+        if (obj == null) {
+            return false;
+        }
+        if (obj == this) {
+            return true;
+        }
+        if (!(obj instanceof SecurityRule)) {
+            return false;
+        }
+        final SecurityRule another = (SecurityRule) obj;
+        return new EqualsBuilder()
+                .append(ethertype, another.ethertype)
+                .append(ipPrefix, another.ipPrefix)
+                .append(portRangeMin, another.portRangeMin)
+                .append(portRangeMax, another.portRangeMax)
+                .append(profileUuid, another.profileUuid)
+                .append(protocol, another.protocol)
+                .isEquals();
+    }
+}


Mime
View raw message