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