Mike Kolesnik has uploaded a new change for review.

Change subject: engine: Add command to add network on provider
......................................................................

engine: Add command to add network on provider

This command allows to add a new network to the external provider, so
that the provider will take care of the network connectivity.

Change-Id: I08ae38a304cd3cb05ee510f126661e77bd7c0940
Signed-off-by: Mike Kolesnik <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddNetworkOnProviderCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderClient.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumNetwork.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumProviderClient.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
5 files changed, 94 insertions(+), 1 deletion(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/11429/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddNetworkOnProviderCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddNetworkOnProviderCommand.java
new file mode 100644
index 0000000..970487b
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/AddNetworkOnProviderCommand.java
@@ -0,0 +1,22 @@
+package org.ovirt.engine.core.bll.provider;
+
+import org.ovirt.engine.core.bll.network.dc.AddNetworkCommand;
+import org.ovirt.engine.core.common.action.AddNetworkStoragePoolParameters;
+import org.ovirt.engine.core.common.businessentities.Provider;
+
+@SuppressWarnings("serial")
+public class AddNetworkOnProviderCommand<T extends 
AddNetworkStoragePoolParameters> extends AddNetworkCommand<T> {
+
+    public AddNetworkOnProviderCommand(T parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeCommand() {
+        Provider provider = 
getDbFacade().getNetworkProviderDao().get(getNetwork().getProvidedBy().getValue());
+        ProviderClient client = new 
ProviderClientFactory().createClient(provider);
+        getNetwork().setId(client.add(getNetwork()));
+
+        super.executeCommand();
+    }
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderClient.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderClient.java
index c540d53..2b58595 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderClient.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/ProviderClient.java
@@ -4,9 +4,19 @@
 
 import org.ovirt.engine.core.common.businessentities.network.Network;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
+import org.ovirt.engine.core.compat.Guid;
 
 public interface ProviderClient {
 
+    /**
+     * Add the network to the provider, who is responsible to provide the 
requested network.
+     *
+     * @param network
+     *            The network to add to the provider.
+     * @return The external ID of the added network.
+     */
+    Guid add(Network network);
+
     List<Network> getAll();
 
     /**
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumNetwork.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumNetwork.java
index 5eacf78..b45b68a 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumNetwork.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumNetwork.java
@@ -17,6 +17,15 @@
     @JsonProperty("tenant_id")
     private UUID tenantId;
 
+    @JsonProperty("provider:network_type")
+    private String providerNetworkType;
+
+    @JsonProperty("provider:physical_network")
+    private String providerPhysicalNetwork;
+
+    @JsonProperty("provider:segmentation_id")
+    private Integer providerSegmentationId;
+
     public String getStatus() {
         return status;
     }
@@ -48,4 +57,28 @@
     public void setTenantId(UUID tenantId) {
         this.tenantId = tenantId;
     }
+
+    public String getProviderNetworkType() {
+        return providerNetworkType;
+    }
+
+    public void setProviderNetworkType(String providerNetworkType) {
+        this.providerNetworkType = providerNetworkType;
+    }
+
+    public String getProviderPhysicalNetwork() {
+        return providerPhysicalNetwork;
+    }
+
+    public void setProviderPhysicalNetwork(String providerPhysicalNetwork) {
+        this.providerPhysicalNetwork = providerPhysicalNetwork;
+    }
+
+    public Integer getProviderSegmentationId() {
+        return providerSegmentationId;
+    }
+
+    public void setProviderSegmentationId(Integer providerSegmentationId) {
+        this.providerSegmentationId = providerSegmentationId;
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumProviderClient.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumProviderClient.java
index 1363b50..66efb4f 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumProviderClient.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/provider/quantum/QuantumProviderClient.java
@@ -41,6 +41,33 @@
     }
 
     @Override
+    public Guid add(Network network) {
+        QuantumNetwork quantumNetwork = new QuantumNetwork();
+        quantumNetwork.setName(network.getName());
+        quantumNetwork.setTenantId(Guid.Empty.getUuid());
+        if (network.getLabel() != null) {
+            quantumNetwork.setProviderPhysicalNetwork(network.getLabel());
+            if (network.getVlanId() == null) {
+                quantumNetwork.setProviderNetworkType("flat");
+            } else {
+                quantumNetwork.setProviderNetworkType("vlan");
+                quantumNetwork.setProviderSegmentationId(network.getVlanId());
+            }
+        }
+
+        try {
+            PostMethod method = new PostMethod(providerDetails.getApiAddress() 
+ "/networks");
+            method.setRequestEntity(
+                    new 
StringRequestEntity(objectMapper.writeValueAsString(quantumNetwork), 
"application/json", null));
+            httpClient.executeMethod(method);
+            
objectMapper.configure(DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
+            return new Guid(objectMapper.readValue(method.getResponseBody(), 
QuantumNetwork.class).getId());
+        } catch (IOException e) {
+            throw new VdcBLLException(VdcBllErrors.ENGINE, new 
RuntimeException(e));
+        }
+    }
+
+    @Override
     public List<Network> getAll() {
         HttpMethod method = new GetMethod(providerDetails.getApiAddress() + 
"/networks");
         try {
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index f6cd337..0db88cb 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -271,7 +271,8 @@
     // Providers
     AddProvider(1600, QuotaDependency.NONE),
     UpdateProvider(1601, QuotaDependency.NONE),
-    RemoveProvider(1602, QuotaDependency.NONE);
+    RemoveProvider(1602, QuotaDependency.NONE),
+    AddNetworkOnProvider(1603, ActionGroup.CREATE_STORAGE_POOL_NETWORK, false, 
QuotaDependency.NONE);
 
     private int intValue;
     private ActionGroup actionGroup;


--
To view, visit http://gerrit.ovirt.org/11429
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I08ae38a304cd3cb05ee510f126661e77bd7c0940
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Mike Kolesnik <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to