01f2e752e48653d449706daf8c97602b239f7289
[so.git] / adapters / mso-network-adapter / src / main / java / org / openecomp / mso / adapters / network / MsoNetworkAdapter.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * OPENECOMP - MSO
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
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
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=========================================================
19  */
20
21 package org.openecomp.mso.adapters.network;
22
23
24 import java.util.List;
25 import java.util.Map;
26
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;
33
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;
39
40 @WebService (name="NetworkAdapter", targetNamespace="http://org.openecomp.mso/network")
41 public interface MsoNetworkAdapter
42 {
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.
45
46         /**
47          * This is the "Create Network" Web Service Endpoint definition.
48          */
49         @WebMethod
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="modelCustomizationUuid") String modelCustomizationUuid,
54                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
55                                                         @WebParam(name="physicalNetworkName") String physicalNetworkName,
56                                                         @WebParam(name="vlans") List<Integer> vlans,
57                                                         @WebParam(name="failIfExists") Boolean failIfExists,
58                                                         @WebParam(name="backout") Boolean backout,
59                                                         @WebParam(name="subnets") List<Subnet> subnets,
60                                                         @WebParam(name="request") MsoRequest msoRequest,
61                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
62                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
63                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
64                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
65                 throws NetworkException;
66
67         @WebMethod
68         public void createNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
69                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
70                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
71                                                         @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid,
72                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
73                                                         @WebParam(name="routeTargets") List<String> routeTargets,
74                                                         @WebParam(name="shared") String shared,
75                                                         @WebParam(name="external") String external,
76                                                         @WebParam(name="failIfExists") Boolean failIfExists,
77                                                         @WebParam(name="backout") Boolean backout,
78                                                         @WebParam(name="subnets") List<Subnet> subnets,
79                                                         @WebParam(name="policyFqdns") List<String> policyFqdns,
80                                                         @WebParam(name="routeTableFqdns") List<String> routeTableFqdns,
81                                                         @WebParam(name="request") MsoRequest msoRequest,
82                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
83                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
84                                                         @WebParam(name="networkFqdn", mode=Mode.OUT) Holder<String> networkFqdn,
85                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
86                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
87                 throws NetworkException;
88
89         /**
90          * This is the "Update VLANs" Web Service Endpoint definition.
91          * This webservice replaces the set of VLANs on a network.
92          */
93         @WebMethod
94         public void updateNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
95                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
96                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
97                                                         @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid,
98                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
99                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
100                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
101                                                         @WebParam(name="vlans") @XmlElement(required=true) List<Integer> vlans,
102                                                         @WebParam(name="subnets") List<Subnet> subnets,
103                                                         @WebParam(name="request") MsoRequest msoRequest,
104                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
105                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
106                 throws NetworkException;
107
108         @WebMethod
109         public void updateNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
110                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
111                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
112                                                         @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid,
113                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
114                                                         @WebParam(name="networkName") @XmlElement(required=true) String networkName,
115                                                         @WebParam(name="routeTargets") List<String> routeTargets,
116                                                         @WebParam(name="shared") String shared,
117                                                         @WebParam(name="external") String external,
118                                                         @WebParam(name="subnets") List<Subnet> subnets,
119                                                         @WebParam(name="policyFqdns") List<String> policyFqdns,
120                                                         @WebParam(name="routeTableFqdns") List<String> routeTableFqdns,
121                                                         @WebParam(name="request") MsoRequest msoRequest,
122                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap,
123                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
124                 throws NetworkException;
125
126         /**
127          * TODO:
128          * This is the "Add VLAN" Web Service Endpoint definition.
129          * This webservice adds a VLAN to a network.
130          * This service assumes that PO supports querying the current vlans in real time.
131          * Otherwise, the caller must have the complete list and should use updateVlans instead.
132         @WebMethod
133         public void addVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
134                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
135                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
136                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
137                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
138                                                         @WebParam(name="vlan") @XmlElement(required=true) Integer vlan,
139                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
140                 throws NetworkException;
141          */
142
143         /**
144          * TODO:
145          * This is the "Remove VLAN" Web Service Endpoint definition.
146          * This webservice removes a VLAN from a network.
147          * This service assumes that PO supports querying the current vlans in real time.
148          * Otherwise, the caller must have the complete list and should use updateVlans instead.
149          *
150          * This service returns an indicator (noMoreVLans) if the VLAN that was removed was
151          * the last one on the network.
152          *
153          * It is not clear that Rollback will work for delete.  The network can be
154          * recreated from the NetworkRollback object, but the network ID (and stack ID
155          * for Heat-based orchestration) will be different.  The caller will need to know
156          * to update these identifiers in the inventory DB (A&AI).
157         @WebMethod
158         public void removeVlan (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
159                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
160                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
161                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
162                                                         @WebParam(name="physicalNetworkName") @XmlElement(required=true) String physicalNetworkName,
163                                                         @WebParam(name="vlan") @XmlElement(required=true) Integer vlan,
164                                                         @WebParam(name="noMoreVlans", mode=Mode.OUT) Holder<Boolean> noMoreVlans,
165                                                         @WebParam(name="rollback", mode=Mode.OUT) Holder<NetworkRollback> rollback )
166                 throws NetworkException;
167          */
168
169         /**
170          * This is the "Query Network" Web Service Endpoint definition.
171          * TODO: Should this just return the NetworkInfo complete structure?
172          */
173         @WebMethod
174         public void queryNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
175                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
176                                                         @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId,
177                                                         @WebParam(name="request") MsoRequest msoRequest,
178                                                         @WebParam(name="networkExists", mode=Mode.OUT) Holder<Boolean> networkExists,
179                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
180                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
181                                                         @WebParam(name="status", mode=Mode.OUT) Holder<NetworkStatus> status,
182                                                         @WebParam(name="vlans", mode=Mode.OUT) Holder<List<Integer>> vlans,
183                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap)
184                 throws NetworkException;
185
186         @WebMethod
187         public void queryNetworkContrail (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
188                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
189                                                         @WebParam(name="networkNameOrId") @XmlElement(required=true) String networkNameOrId,
190                                                         @WebParam(name="request") MsoRequest msoRequest,
191                                                         @WebParam(name="networkExists", mode=Mode.OUT) Holder<Boolean> networkExists,
192                                                         @WebParam(name="networkId", mode=Mode.OUT) Holder<String> networkId,
193                                                         @WebParam(name="neutronNetworkId", mode=Mode.OUT) Holder<String> neutronNetworkId,
194                                                         @WebParam(name="status", mode=Mode.OUT) Holder<NetworkStatus> status,
195                                                         @WebParam(name="routeTargets", mode=Mode.OUT) Holder<List<String>> routeTargets,
196                                                         @WebParam(name="subnetIdMap", mode=Mode.OUT) Holder<Map<String, String>> subnetIdMap)
197                 throws NetworkException;
198
199         /**
200          * This is the "Delete Network" Web Service endpoint definition.
201          */
202         @WebMethod
203         public void deleteNetwork (@WebParam(name="cloudSiteId") @XmlElement(required=true) String cloudSiteId,
204                                                         @WebParam(name="tenantId") @XmlElement(required=true) String tenantId,
205                                                         @WebParam(name="networkType") @XmlElement(required=true) String networkType,
206                                                         @WebParam(name="modelCustomizationUuid") String modelCustomizationUuid,
207                                                         @WebParam(name="networkId") @XmlElement(required=true) String networkId,
208                                                         @WebParam(name="request") MsoRequest msoRequest,
209                                                         @WebParam(name="networkDeleted", mode=Mode.OUT) Holder<Boolean> networkDeleted)
210                 throws NetworkException;
211
212         /**
213          * This is the "Rollback Network" Web Service endpoint definition.
214          */
215         @WebMethod
216         public void rollbackNetwork (@WebParam(name="rollback") @XmlElement(required=true) NetworkRollback rollback)
217                 throws NetworkException;
218
219         @WebMethod
220         public void healthCheck ();
221 }