/*- * ============LICENSE_START======================================================= * ONAP - SO * ================================================================================ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed 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. * ============LICENSE_END========================================================= */ package org.openecomp.mso.adapters.network; import java.util.List; import java.util.Map; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebParam.Mode; import javax.jws.WebService; import javax.xml.bind.annotation.XmlElement; import javax.xml.ws.Holder; import org.openecomp.mso.adapters.network.exceptions.NetworkException; import org.openecomp.mso.entity.MsoRequest; import org.openecomp.mso.openstack.beans.NetworkRollback; import org.openecomp.mso.openstack.beans.NetworkStatus; import org.openecomp.mso.openstack.beans.Subnet; import org.openecomp.mso.openstack.beans.RouteTarget; @WebService (name="NetworkAdapter", targetNamespace="http://org.openecomp.mso/network") public interface MsoNetworkAdapter { // TODO: Rename all of these to include Vlan in the service name? At least for the // create and update calls, since they are specific to VLAN-based provider networks. /** * This is the "Create Network" Web Service Endpoint definition. */ @WebMethod public void createNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid, @WebParam(name="networkName") @XmlElement(required=true) String networkName, @WebParam(name="physicalNetworkName") String physicalNetworkName, @WebParam(name="vlans") List vlans, @WebParam(name="failIfExists") Boolean failIfExists, @WebParam(name="backout") Boolean backout, @WebParam(name="subnets") List subnets, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="networkId", mode=Mode.OUT) Holder networkId, @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder neutronNetworkId, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; @WebMethod public void createNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid, @WebParam(name="networkName") @XmlElement(required=true) String networkName, @WebParam(name="routeTargets") List routeTargets, @WebParam(name="shared") String shared, @WebParam(name="external") String external, @WebParam(name="failIfExists") Boolean failIfExists, @WebParam(name="backout") Boolean backout, @WebParam(name="subnets") List subnets, @WebParam(name="policyFqdns") List policyFqdns, @WebParam(name="routeTableFqdns") List routeTableFqdns, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="networkId", mode=Mode.OUT) Holder networkId, @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder neutronNetworkId, @WebParam(name="networkFqdn", mode=Mode.OUT) Holder networkFqdn, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; /** * This is the "Update VLANs" Web Service Endpoint definition. * This webservice replaces the set of VLANs on a network. */ @WebMethod public void updateNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid, @WebParam(name="networkId") @XmlElement(required=true) String networkId, @WebParam(name="networkName") @XmlElement(required=true) String networkName, @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName, @WebParam(name="vlans") @XmlElement(required=true) List vlans, @WebParam(name="subnets") List subnets, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; @WebMethod public void updateNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid, @WebParam(name="networkId") @XmlElement(required=true) String networkId, @WebParam(name="networkName") @XmlElement(required=true) String networkName, @WebParam(name="routeTargets") List routeTargets, @WebParam(name="shared") String shared, @WebParam(name="external") String external, @WebParam(name="subnets") List subnets, @WebParam(name="policyFqdns") List policyFqdns, @WebParam(name="routeTableFqdns") List routeTableFqdns, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; /** * TODO: * This is the "Add VLAN" Web Service Endpoint definition. * This webservice adds a VLAN to a network. * This service assumes that PO supports querying the current vlans in real time. * Otherwise, the caller must have the complete list and should use updateVlans instead. @WebMethod public void addVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="networkId") @XmlElement(required=true) String networkId, @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName, @WebParam(name="vlan") @XmlElement(required=true) Integer vlan, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; */ /** * TODO: * This is the "Remove VLAN" Web Service Endpoint definition. * This webservice removes a VLAN from a network. * This service assumes that PO supports querying the current vlans in real time. * Otherwise, the caller must have the complete list and should use updateVlans instead. * * This service returns an indicator (noMoreVLans) if the VLAN that was removed was * the last one on the network. * * It is not clear that Rollback will work for delete. The network can be * recreated from the NetworkRollback object, but the network ID (and stack ID * for Heat-based orchestration) will be different. The caller will need to know * to update these identifiers in the inventory DB (A&AI). @WebMethod public void removeVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="networkId") @XmlElement(required=true) String networkId, @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName, @WebParam(name="vlan") @XmlElement(required=true) Integer vlan, @WebParam(name="noMoreVlans", mode=Mode.OUT) Holder noMoreVlans, @WebParam(name="rollback", mode=Mode.OUT) Holder rollback ) throws NetworkException; */ /** * This is the "Query Network" Web Service Endpoint definition. * TODO: Should this just return the NetworkInfo complete structure? */ @WebMethod public void queryNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="networkExists", mode=Mode.OUT) Holder networkExists, @WebParam(name="networkId", mode=Mode.OUT) Holder networkId, @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder neutronNetworkId, @WebParam(name="status", mode=Mode.OUT) Holder status, @WebParam(name="vlans", mode=Mode.OUT) Holder> vlans, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap) throws NetworkException; @WebMethod public void queryNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="networkExists", mode=Mode.OUT) Holder networkExists, @WebParam(name="networkId", mode=Mode.OUT) Holder networkId, @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder neutronNetworkId, @WebParam(name="status", mode=Mode.OUT) Holder status, @WebParam(name="routeTargets", mode=Mode.OUT) Holder> routeTargets, @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder> subnetIdMap) throws NetworkException; /** * This is the "Delete Network" Web Service endpoint definition. */ @WebMethod public void deleteNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId, @WebParam(name="tenantId") @XmlElement(required=true) String tenantId, @WebParam(name="networkType") @XmlElement(required=true) String networkType, @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid, @WebParam(name="networkId") @XmlElement(required=true) String networkId, @WebParam(name="request") MsoRequest msoRequest, @WebParam(name="networkDeleted", mode=Mode.OUT) Holder networkDeleted) throws NetworkException; /** * This is the "Rollback Network" Web Service endpoint definition. */ @WebMethod public void rollbackNetwork (@WebParam(name="rollback") @XmlElement(required=true) NetworkRollback rollback) throws NetworkException; @WebMethod public void healthCheck (); }