Update sli-adaptor/aai-service package names
[ccsdk/sli/adaptors.git] / aai-service / provider / src / main / java / org / onap / sli / adaptors / aai / L3InterfaceIpv6AddressListRequest.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.v10.L3InterfaceIpv6AddressList;
31
32 import com.fasterxml.jackson.core.JsonProcessingException;
33 import com.fasterxml.jackson.databind.ObjectMapper;
34
35 public class L3InterfaceIpv6AddressListRequest extends AAIRequest {
36
37         /*
38          * Note: there are 3 possible paths:
39          * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
40          * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
41          * /aai/v7/network/generic-vnfs/generic-vnf/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
42          * /aai/v7/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-ipv6-address-list/{l3-interface-ipv6-address}
43          * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
44          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
45          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
46          * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
47          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
48          * aaiv7:inventory/cloud-infrastructure/cloud-regions/pservers/pserver/{hostname}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
49          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
50          * aaiv7:inventory/network/newvces/newvce/{vnf-id2}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
51          * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
52          * aaiv7:inventory/network/vpes/vpe/{vnf-id}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
53          * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
54          * aaiv7:inventory/network/vpes/vpe/{vnf-id}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
55          * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
56          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
57          * aaiv7:inventory/network/vpls-pes/vpls-pe/{equipment-name}/lag-interfaces/lag-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
58          * aaiv7: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-ipv6-address-list/{l3-interface-ipv6-address}
59          * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
60          * aaiv7:inventory/network/pnfs/pnf/{pnf-name}/p-interfaces/p-interface/{interface-name}/l-interfaces/l-interface/{interface-name}/vlans/vlan/{vlan-interface}/l3-interface-ipv6-address-list/{l3-interface-ipv6-address}
61          */
62
63         public static final String L3_INTERFACE_IPV6_ADDRESS_LIST_PATH  = "org.onap.ccsdk.sli.adaptors.aai.path.l3.interface.ipv6.address.list";
64         public static final String VLAN_L3_INTERFACE_IPV6_ADDRESS_LIST_PATH     = "org.onap.ccsdk.sli.adaptors.aai.path.vlan.l3.interface.ipv6.address.list";
65
66         private final String l3_interface_ipv6_address_list_path;
67         private final String vlan_l3_interface_ipv6_address_list_path;
68
69         public static final String L3_INTERFACE_IPV6_ADDRESS            = "l3-interface-ipv6-address";
70         public static final String LIST_L3_INTERFACE_IPV6_ADDRESS       = "l3-interface-ipv6-address-list.l3-interface-ipv6-address";
71         public static final String VLAN_INTERFACE       = "vlan-interface";
72         public static final String VLAN_VLAN_INTERFACE  = "vlan.vlan-interface";
73
74         public L3InterfaceIpv6AddressListRequest() {
75                 l3_interface_ipv6_address_list_path = configProperties.getProperty(L3_INTERFACE_IPV6_ADDRESS_LIST_PATH);
76                 vlan_l3_interface_ipv6_address_list_path = configProperties.getProperty(VLAN_L3_INTERFACE_IPV6_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_ipv6_address_list_path;
88
89                 if(requestProperties.containsKey(VLAN_INTERFACE) || requestProperties.containsKey(VLAN_VLAN_INTERFACE)){
90                         request_url = target_uri+vlan_l3_interface_ipv6_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                 L3InterfaceIpv6AddressList vnfc = (L3InterfaceIpv6AddressList)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_IPV6_ADDRESS,
145                         LIST_L3_INTERFACE_IPV6_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
154                 return args;
155         }
156
157         @Override
158         public Class<? extends AAIDatum> getModelClass() {
159                 return L3InterfaceIpv6AddressList.class;
160         }
161
162         public static String processPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
163                 String key = L3_INTERFACE_IPV6_ADDRESS;
164                 if(requestProperties.containsKey(LIST_L3_INTERFACE_IPV6_ADDRESS)) {
165                         key = LIST_L3_INTERFACE_IPV6_ADDRESS;
166                 }
167
168                 if(!requestProperties.containsKey(key)) {
169                         aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV6_ADDRESS, LIST_L3_INTERFACE_IPV6_ADDRESS));
170                 }
171
172                 String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
173
174                 request_url = request_url.replace("{l3-interface-ipv6-address}", encoded_vnf) ;
175
176                 aaiService.LOGwriteDateTrace("l3-interface-ipv6-address", requestProperties.getProperty(key));
177                 return request_url;
178         }
179 }