2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 
   6  * ================================================================================
 
   7  * Licensed under the Apache License, Version 2.0 (the "License");
 
   8  * you may not use this file except in compliance with the License.
 
   9  * You may obtain a copy of the License at
 
  11  *      http://www.apache.org/licenses/LICENSE-2.0
 
  13  * Unless required by applicable law or agreed to in writing, software
 
  14  * distributed under the License is distributed on an "AS IS" BASIS,
 
  15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 
  16  * See the License for the specific language governing permissions and
 
  17  * limitations under the License.
 
  18  * ============LICENSE_END=========================================================
 
  21 package org.openecomp.mso.adapters.network;
 
  24 import java.util.List;
 
  27 import javax.jws.WebMethod;
 
  28 import javax.jws.WebParam;
 
  29 import javax.jws.WebParam.Mode;
 
  30 import javax.jws.WebService;
 
  31 import javax.xml.bind.annotation.XmlElement;
 
  32 import javax.xml.ws.Holder;
 
  34 import org.openecomp.mso.adapters.network.exceptions.NetworkException;
 
  35 import org.openecomp.mso.entity.MsoRequest;
 
  36 import org.openecomp.mso.openstack.beans.NetworkRollback;
 
  37 import org.openecomp.mso.openstack.beans.NetworkStatus;
 
  38 import org.openecomp.mso.openstack.beans.Subnet;
 
  40 @WebService (name="NetworkAdapter", targetNamespace="http://org.openecomp.mso/network")
 
  41 public interface MsoNetworkAdapter
 
  43         // TODO:  Rename all of these to include Vlan in the service name?  At least for the
 
  44         // create and update calls, since they are specific to VLAN-based provider networks.
 
  47          * This is the "Create Network" Web Service Endpoint definition.
 
  50         public void createNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
  51                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
  52                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
  53                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
 
  54                                                         @WebParam(name="physicalNetworkName") String physicalNetworkName,
 
  55                                                         @WebParam(name="vlans") List<Integer> vlans,
 
  56                                                         @WebParam(name="failIfExists") Boolean failIfExists,
 
  57                                                         @WebParam(name="backout") Boolean backout,
 
  58                                                         @WebParam(name="subnets") List<Subnet> subnets,
 
  59                                                         @WebParam(name="request") MsoRequest msoRequest,
 
  60                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
 
  61                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
 
  62                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
 
  63                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
  64                 throws NetworkException;
 
  67         public void createNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
  68                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
  69                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
  70                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
 
  71                                                         @WebParam(name="routeTargets") List<String> routeTargets,
 
  72                                                         @WebParam(name="shared") String shared,
 
  73                                                         @WebParam(name="external") String external,
 
  74                                                         @WebParam(name="failIfExists") Boolean failIfExists,
 
  75                                                         @WebParam(name="backout") Boolean backout,
 
  76                                                         @WebParam(name="subnets") List<Subnet> subnets,
 
  77                                                         @WebParam(name="policyFqdns") List<String> policyFqdns,
 
  78                                                         @WebParam(name="routeTableFqdns") List<String> routeTableFqdns,
 
  79                                                         @WebParam(name="request") MsoRequest msoRequest,
 
  80                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
 
  81                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
 
  82                                                         @WebParam(name="networkFqdn", mode=Mode.OUT) Holder<String> networkFqdn,
 
  83                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
 
  84                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
  85                 throws NetworkException;
 
  88          * This is the "Update VLANs" Web Service Endpoint definition.
 
  89          * This webservice replaces the set of VLANs on a network.
 
  92         public void updateNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
  93                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
  94                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
  95                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
 
  96                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
 
  97                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
 
  98                                                         @WebParam(name="vlans") @XmlElement(required=true) List<Integer> vlans,
 
  99                                                         @WebParam(name="subnets") List<Subnet> subnets,
 
 100                                                         @WebParam(name="request") MsoRequest msoRequest,
 
 101                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
 
 102                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
 103                 throws NetworkException;
 
 106         public void updateNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 107                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 108                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
 109                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
 
 110                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
 
 111                                                         @WebParam(name="routeTargets") List<String> routeTargets,
 
 112                                                         @WebParam(name="shared") String shared,
 
 113                                                         @WebParam(name="external") String external,
 
 114                                                         @WebParam(name="subnets") List<Subnet> subnets,
 
 115                                                         @WebParam(name="policyFqdns") List<String> policyFqdns,
 
 116                                                         @WebParam(name="routeTableFqdns") List<String> routeTableFqdns,
 
 117                                                         @WebParam(name="request") MsoRequest msoRequest,
 
 118                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
 
 119                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
 120                 throws NetworkException;
 
 124          * This is the "Add VLAN" Web Service Endpoint definition.
 
 125          * This webservice adds a VLAN to a network.
 
 126          * This service assumes that PO supports querying the current vlans in real time.
 
 127          * Otherwise, the caller must have the complete list and should use updateVlans instead.
 
 129         public void addVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 130                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 131                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
 132                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
 
 133                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
 
 134                                                         @WebParam(name="vlan") @XmlElement(required=true) Integer vlan,
 
 135                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
 136                 throws NetworkException;
 
 141          * This is the "Remove VLAN" Web Service Endpoint definition.
 
 142          * This webservice removes a VLAN from a network.
 
 143          * This service assumes that PO supports querying the current vlans in real time.
 
 144          * Otherwise, the caller must have the complete list and should use updateVlans instead.
 
 146          * This service returns an indicator (noMoreVLans) if the VLAN that was removed was
 
 147          * the last one on the network.
 
 149          * It is not clear that Rollback will work for delete.  The network can be
 
 150          * recreated from the NetworkRollback object, but the network ID (and stack ID
 
 151          * for Heat-based orchestration) will be different.  The caller will need to know
 
 152          * to update these identifiers in the inventory DB (A&AI).
 
 154         public void removeVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 155                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 156                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
 157                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
 
 158                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
 
 159                                                         @WebParam(name="vlan") @XmlElement(required=true) Integer vlan,
 
 160                                                         @WebParam(name="noMoreVlans", mode=Mode.OUT) Holder<Boolean> noMoreVlans,
 
 161                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
 
 162                 throws NetworkException;
 
 166          * This is the "Query Network" Web Service Endpoint definition.
 
 167          * TODO: Should this just return the NetworkInfo complete structure?
 
 170         public void queryNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 171                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 172                                                         @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId,
 
 173                                                         @WebParam(name="request") MsoRequest msoRequest,
 
 174                                                         @WebParam(name="networkExists", mode=Mode.OUT) Holder<Boolean> networkExists,
 
 175                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
 
 176                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
 
 177                                                         @WebParam(name="status", mode=Mode.OUT) Holder<NetworkStatus> status,
 
 178                                                         @WebParam(name="vlans", mode=Mode.OUT) Holder<List<Integer>> vlans,
 
 179                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap)
 
 180                 throws NetworkException;
 
 183         public void queryNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 184                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 185                                                         @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId,
 
 186                                                         @WebParam(name="request") MsoRequest msoRequest,
 
 187                                                         @WebParam(name="networkExists", mode=Mode.OUT) Holder<Boolean> networkExists,
 
 188                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
 
 189                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
 
 190                                                         @WebParam(name="status", mode=Mode.OUT) Holder<NetworkStatus> status,
 
 191                                                         @WebParam(name="routeTargets", mode=Mode.OUT) Holder<List<String>> routeTargets,
 
 192                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap)
 
 193                 throws NetworkException;
 
 196          * This is the "Delete Network" Web Service endpoint definition.
 
 199         public void deleteNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
 
 200                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
 
 201                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
 
 202                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
 
 203                                                         @WebParam(name="request") MsoRequest msoRequest,
 
 204                                                         @WebParam(name="networkDeleted", mode=Mode.OUT) Holder<Boolean> networkDeleted)
 
 205                 throws NetworkException;
 
 208          * This is the "Rollback Network" Web Service endpoint definition.
 
 211         public void rollbackNetwork (@WebParam(name="rollback") @XmlElement(required=true) NetworkRollback rollback)
 
 212                 throws NetworkException;
 
 215         public void healthCheck ();