Update sli-adaptor/aai-service package names
[ccsdk/sli/adaptors.git] / aai-service / provider / src / main / java / org / onap / ccsdk / sli / adaptors / aai / L3InterfaceIpv4AddressListRequest.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * openECOMP : SDN-C
4  * ================================================================================
5  * Copyright (C) 2017 ONAP Intellectual Property. All rights
6  *                                              reserved.
7  * ================================================================================
8  * Licensed under the Apache License, Version 2.0 (the "License");
9  * you may not use this file except in compliance with the License.
10  * You may obtain a copy of the License at
11  * 
12  *      http://www.apache.org/licenses/LICENSE-2.0
13  * 
14  * Unless required by applicable law or agreed to in writing, software
15  * distributed under the License is distributed on an "AS IS" BASIS,
16  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17  * See the License for the specific language governing permissions and
18  * limitations under the License.
19  * ============LICENSE_END=========================================================
20  */
21
22 package org.onap.ccsdk.sli.adaptors.aai;
23
24 import java.io.UnsupportedEncodingException;
25 import java.net.MalformedURLException;
26 import java.net.URL;
27 import java.util.Properties;
28
29 import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
30 import org.openecomp.aai.inventory.v11.L3InterfaceIpv4AddressList;
31
32 import com.fasterxml.jackson.core.JsonProcessingException;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34
35 public class L3InterfaceIpv4AddressListRequest extends AAIRequest {
36
37         /*
38          * Note: there are 3 possible paths:
39          * /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
40          * /network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
41          * /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
42          * /network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
43          * /inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
44          * /inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
45          * /inventory/cloud-infrastructure/cloud-regions/cloud-region/{cloud-owner}/{cloud-region-id}/tenants/tenant/{tenant-id}/vservers/vserver/{vserver-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
46          * /inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
47          * /inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
48          * /inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
49          * /inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
50          * /inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
51          * /inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
52          * /inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
53          * /inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
54          * /inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
55          * /inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
56          * /inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
57          * /inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
58          * /inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
59          * /inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
60          * /inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}
61          */
62
63         public static final String L3_INTERFACE_IPV4_ADDRESS_LIST_PATH  =     "org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv4.address.list";
64         public static final String VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH     = "org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv4.address.list";
65
66         private final String l3_interface_ipv4_address_list_path;
67         private final String vlan_l3_interface_ipv4_address_list_path;
68
69         public static final String L3_INTERFACE_IPV4_ADDRESS    = "l3-interface-ipv4-address";
70         public static final String LIST_L3_INTERFACE_IPV4_ADDRESS       = "l3-interface-ipv4-address-list.l3-interface-ipv4-address";
71         public static final String VLAN_INTERFACE       = "vlan-interface";
72         public static final String VLAN_VLAN_INTERFACE  = "vlan.vlan-interface";
73
74         public L3InterfaceIpv4AddressListRequest() {
75                 l3_interface_ipv4_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV4_ADDRESS_LIST_PATH);
76                 vlan_l3_interface_ipv4_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV4_ADDRESS_LIST_PATH);
77         }
78
79         @Override
80         public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
81                 return this.getRequestUrl(method, null);
82         }
83
84         @Override
85         public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
86
87                 String request_url = target_uri+l3_interface_ipv4_address_list_path;
88
89                 if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){
90                         request_url = target_uri+vlan_l3_interface_ipv4_address_list_path;
91                         request_url = processVLanRequestPathData(request_url, requestProperties);
92                 }
93
94                 request_url = processPathData(request_url, requestProperties);
95                 request_url = LInterfaceRequest.processPathData(request_url, requestProperties);
96 //              request_url = GenericVnfRequest.processPathData(request_url, requestProperties);
97
98                 if(resourceVersion != null) {
99                         request_url = request_url +"?resource-version="+resourceVersion;
100                 }
101                 URL http_req_url =      new URL(request_url);
102
103                 aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
104
105                 return http_req_url;
106         }
107
108         public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
109                 String key = null;
110
111                 if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) {
112                         key = VLAN_VLAN_INTERFACE;
113                 } else if(requestProperties.containsKey(VLAN_INTERFACE)) {
114                         key = VLAN_INTERFACE;
115                 } else {
116                         aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE));
117                 }
118
119                 String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
120
121                 request_url = request_url.replace("{vlan-interface}", encoded_vnf) ;
122                 aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key));
123                 return request_url;
124         }
125
126         @Override
127         public String toJSONString() {
128                 ObjectMapper mapper = getObjectMapper();
129                 L3InterfaceIpv4AddressList vnfc = (L3InterfaceIpv4AddressList)requestDatum;
130                 String json_text = null;
131                 try {
132                         json_text = mapper.writeValueAsString(vnfc);
133                 } catch (JsonProcessingException exc) {
134                         handleException(this, exc);
135                         return null;
136                 }
137                 return json_text;
138         }
139
140         @Override
141         public String[] getArgsList() {
142                 String[] args =
143                         {
144                                 L3_INTERFACE_IPV4_ADDRESS,
145                                 LIST_L3_INTERFACE_IPV4_ADDRESS,
146                                 VLAN_INTERFACE,
147                                 VLAN_VLAN_INTERFACE,
148                                 LInterfaceRequest.INTERFACE_NAME,
149                                 LInterfaceRequest.LINTERFACE_INTERFACE_NAME,
150                                 "generic-vnf.vnf-id"
151                         };
152
153                 return args;
154         }
155
156         @Override
157         public Class<? extends AAIDatum> getModelClass() {
158                 return L3InterfaceIpv4AddressList.class;
159         }
160
161         public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
162                 String key = L3_INTERFACE_IPV4_ADDRESS;
163                 if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV4_ADDRESS)) {
164                         key = LIST_L3_INTERFACE_IPV4_ADDRESS;
165                 }
166
167                 if(!requestProperties.containsKey(key)) {
168                         aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV4_ADDRESS, LIST_L3_INTERFACE_IPV4_ADDRESS));
169                 }
170
171                 String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
172
173                 request_url = request_url.replace("{l3-interface-ipv4-address}", encoded_vnf) ;
174
175                 aaiService.LOGwriteDateTrace("l3-interface-ipv4-address", requestProperties.getProperty(key));
176                 return request_url;
177         }
178
179         /*
180          * (non-Javadoc)
181          * @see org.onap.ccsdk.sli.adaptors.aai.PathConfigurator#configurePath(java.lang.String)
182          */
183 //      @Override
184 //      public void processRequestPathValues(Map<String, String> nameValues) {
185 //              String[] paths =
186 //              {
187 //               "/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}",
188 //               "/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}",
189 //               "/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}",
190 //               "/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv4-address-list/{l3-interface-ipv4-address}"
191 //              };
192 //
193 //              List<String>keys = new LinkedList<String>();
194 //              keys.addAll(nameValues.keySet());
195 //              for(String key : keys) {
196 //                      if(key.contains(".")) {
197 //                              key = key.replaceAll("_", "-");
198 //                              if(!LIST_L3_INTERFACE_IPV4_ADDRESS.equals(key)) {
199 //                                      int index = key.indexOf(".");
200 //                                      String resource = key.substring(0, index);
201 //                                      AAIRequest rx = createRequest(resource, nameValues);
202 //                                      if(rx != null) {
203 //                                              pathElements.add(rx);
204 //                                      }
205 //                              }
206 //                      }
207 //              }
208 //              super.processRequestPathValues(nameValues);
209 //      }
210 //      List<AAIRequest> pathElements = new LinkedList<AAIRequest>();
211
212 }