diff --git a/plugins/hypervisors/kvm/pom.xml b/plugins/hypervisors/kvm/pom.xml
index 6082a761a47b..cf4c7a823da8 100644
--- a/plugins/hypervisors/kvm/pom.xml
+++ b/plugins/hypervisors/kvm/pom.xml
@@ -83,11 +83,6 @@
${project.version}
compile
-
- org.apache.cloudstack
- cloud-plugin-network-tungsten
- ${project.version}
-
diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTfRouteCommand.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTfRouteCommand.java
new file mode 100644
index 000000000000..8ccbff96d790
--- /dev/null
+++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTfRouteCommand.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 org.apache.cloudstack.network.tungsten.agent.api;
+
+import com.cloud.agent.api.Command;
+
+import java.util.Objects;
+
+public class SetupTfRouteCommand extends Command {
+ private final String privateIp;
+ private final String publicIp;
+ private final String srcNetwork;
+
+ public SetupTfRouteCommand(final String privateIp, final String publicIp, final String srcNetwork) {
+ this.privateIp = privateIp;
+ this.publicIp = publicIp;
+ this.srcNetwork = srcNetwork;
+ }
+
+ public String getPrivateIp() {
+ return privateIp;
+ }
+
+ public String getPublicIp() {
+ return publicIp;
+ }
+
+ public String getSrcNetwork() {
+ return srcNetwork;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+ SetupTfRouteCommand that = (SetupTfRouteCommand) o;
+ return Objects.equals(privateIp, that.privateIp) && Objects.equals(publicIp, that.publicIp) && Objects.equals(srcNetwork, that.srcNetwork);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), privateIp, publicIp, srcNetwork);
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return false;
+ }
+}
diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTungstenVRouterCommand.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTungstenVRouterCommand.java
new file mode 100644
index 000000000000..00fc522363d3
--- /dev/null
+++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/SetupTungstenVRouterCommand.java
@@ -0,0 +1,77 @@
+// 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 org.apache.cloudstack.network.tungsten.agent.api;
+
+import com.cloud.agent.api.Command;
+
+import java.util.Objects;
+
+public class SetupTungstenVRouterCommand extends Command {
+ private final String oper;
+ private final String inf;
+ private final String subnet;
+ private final String route;
+ private final String vrf;
+
+ public SetupTungstenVRouterCommand(final String oper, final String inf, final String subnet, final String route,
+ final String vrf) {
+ this.oper = oper;
+ this.inf = inf;
+ this.subnet = subnet;
+ this.route = route;
+ this.vrf = vrf;
+ }
+
+ public String getOper() {
+ return oper;
+ }
+
+ public String getInf() {
+ return inf;
+ }
+
+ public String getSubnet() {
+ return subnet;
+ }
+
+ public String getRoute() {
+ return route;
+ }
+
+ public String getVrf() {
+ return vrf;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+ SetupTungstenVRouterCommand that = (SetupTungstenVRouterCommand) o;
+ return Objects.equals(oper, that.oper) && Objects.equals(inf, that.inf) && Objects.equals(subnet, that.subnet) && Objects.equals(route, that.route) && Objects.equals(vrf, that.vrf);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), oper, inf, subnet, route, vrf);
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return false;
+ }
+}
diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerSslCommand.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerSslCommand.java
new file mode 100644
index 000000000000..5ab24c18aa04
--- /dev/null
+++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerSslCommand.java
@@ -0,0 +1,83 @@
+// 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 org.apache.cloudstack.network.tungsten.agent.api;
+
+import com.cloud.agent.api.Command;
+
+import java.util.Objects;
+
+public class UpdateTungstenLoadbalancerSslCommand extends Command {
+ private final String lbUuid;
+ private final String sslCertName;
+ private final String certificateKey;
+ private final String privateKey;
+ private final String privateIp;
+ private final String port;
+
+ public UpdateTungstenLoadbalancerSslCommand(final String lbUuid, final String sslCertName,
+ final String certificateKey, final String privateKey, final String privateIp, final String port) {
+ this.lbUuid = lbUuid;
+ this.sslCertName = sslCertName;
+ this.certificateKey = certificateKey;
+ this.privateKey = privateKey;
+ this.privateIp = privateIp;
+ this.port = port;
+ }
+
+ public String getLbUuid() {
+ return lbUuid;
+ }
+
+ public String getSslCertName() {
+ return sslCertName;
+ }
+
+ public String getCertificateKey() {
+ return certificateKey;
+ }
+
+ public String getPrivateKey() {
+ return privateKey;
+ }
+
+ public String getPrivateIp() {
+ return privateIp;
+ }
+
+ public String getPort() {
+ return port;
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return false;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+ UpdateTungstenLoadbalancerSslCommand that = (UpdateTungstenLoadbalancerSslCommand) o;
+ return Objects.equals(lbUuid, that.lbUuid) && Objects.equals(sslCertName, that.sslCertName) && Objects.equals(certificateKey, that.certificateKey) && Objects.equals(privateKey, that.privateKey) && Objects.equals(privateIp, that.privateIp) && Objects.equals(port, that.port);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), lbUuid, sslCertName, certificateKey, privateKey, privateIp, port);
+ }
+}
diff --git a/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerStatsCommand.java b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerStatsCommand.java
new file mode 100644
index 000000000000..d7b2088bcd7d
--- /dev/null
+++ b/plugins/hypervisors/kvm/src/main/java/org/apache/cloudstack/network/tungsten/agent/api/UpdateTungstenLoadbalancerStatsCommand.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 org.apache.cloudstack.network.tungsten.agent.api;
+
+import com.cloud.agent.api.Command;
+
+import java.util.Objects;
+
+public class UpdateTungstenLoadbalancerStatsCommand extends Command {
+ private final String lbUuid;
+ private final String lbStatsPort;
+ private final String lbStatsUri;
+ private final String lbStatsAuth;
+
+ public UpdateTungstenLoadbalancerStatsCommand(final String lbUuid, final String lbStatsPort,
+ final String lbStatsUri, final String lbStatsAuth) {
+ this.lbUuid = lbUuid;
+ this.lbStatsPort = lbStatsPort;
+ this.lbStatsUri = lbStatsUri;
+ this.lbStatsAuth = lbStatsAuth;
+ }
+
+ public String getLbUuid() {
+ return lbUuid;
+ }
+
+ public String getLbStatsPort() {
+ return lbStatsPort;
+ }
+
+ public String getLbStatsUri() {
+ return lbStatsUri;
+ }
+
+ public String getLbStatsAuth() {
+ return lbStatsAuth;
+ }
+
+ @Override
+ public boolean executeInSequence() {
+ return false;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ if (!super.equals(o)) return false;
+ UpdateTungstenLoadbalancerStatsCommand that = (UpdateTungstenLoadbalancerStatsCommand) o;
+ return Objects.equals(lbUuid, that.lbUuid) && Objects.equals(lbStatsPort, that.lbStatsPort) && Objects.equals(lbStatsUri, that.lbStatsUri) && Objects.equals(lbStatsAuth, that.lbStatsAuth);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(super.hashCode(), lbUuid, lbStatsPort, lbStatsUri, lbStatsAuth);
+ }
+}