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
