2  * ============LICENSE_START=======================================================
 
   4  * ================================================================================
 
   5  * Copyright (C) 2017 AT&T Intellectual Property. All rights
 
   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
 
  12  *      http://www.apache.org/licenses/LICENSE-2.0
 
  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=========================================================
 
  22 package org.onap.ccsdk.sli.adaptors.aai;
 
  24 import java.io.UnsupportedEncodingException;
 
  25 import java.net.MalformedURLException;
 
  27 import java.util.Properties;
 
  29 import org.onap.ccsdk.sli.adaptors.aai.data.AAIDatum;
 
  30 import org.openecomp.aai.inventory.v11.L3InterfaceIpv4AddressList;
 
  32 import com.fasterxml.jackson.core.JsonProcessingException;
 
  33 import com.fasterxml.jackson.databind.ObjectMapper;
 
  35 public class L3InterfaceIpv4AddressListRequest extends AAIRequest {
 
  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}
 
  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";
 
  66         private final String l3_interface_ipv4_address_list_path;
 
  67         private final String vlan_l3_interface_ipv4_address_list_path;
 
  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";
 
  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);
 
  80         public URL getRequestQueryUrl(String method) throws UnsupportedEncodingException, MalformedURLException {
 
  81                 return this.getRequestUrl(method, null);
 
  85         public URL getRequestUrl(String method, String resourceVersion) throws UnsupportedEncodingException, MalformedURLException {
 
  87                 String request_url = target_uri+l3_interface_ipv4_address_list_path;
 
  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);
 
  94                 request_url = processPathData(request_url, requestProperties);
 
  95                 request_url = LInterfaceRequest.processPathData(request_url, requestProperties);
 
  96 //              request_url = GenericVnfRequest.processPathData(request_url, requestProperties);
 
  98                 if(resourceVersion != null) {
 
  99                         request_url = request_url +"?resource-version="+resourceVersion;
 
 101                 URL http_req_url =      new URL(request_url);
 
 103                 aaiService.LOGwriteFirstTrace(method, http_req_url.toString());
 
 108         public static String processVLanRequestPathData(String request_url, Properties requestProperties) throws UnsupportedEncodingException {
 
 111                 if(requestProperties.containsKey(VLAN_VLAN_INTERFACE)) {
 
 112                         key = VLAN_VLAN_INTERFACE;
 
 113                 } else if(requestProperties.containsKey(VLAN_INTERFACE)) {
 
 114                         key = VLAN_INTERFACE;
 
 116                         aaiService.logKeyError(String.format("%s,%s", VLAN_INTERFACE, VLAN_VLAN_INTERFACE));
 
 119                 String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
 
 121                 request_url = request_url.replace("{vlan-interface}", encoded_vnf) ;
 
 122                 aaiService.LOGwriteDateTrace("vlan-interface", requestProperties.getProperty(key));
 
 127         public String toJSONString() {
 
 128                 ObjectMapper mapper = getObjectMapper();
 
 129                 L3InterfaceIpv4AddressList vnfc = (L3InterfaceIpv4AddressList)requestDatum;
 
 130                 String json_text = null;
 
 132                         json_text = mapper.writeValueAsString(vnfc);
 
 133                 } catch (JsonProcessingException exc) {
 
 134                         handleException(this, exc);
 
 141         public String[] getArgsList() {
 
 144                                 L3_INTERFACE_IPV4_ADDRESS,
 
 145                                 LIST_L3_INTERFACE_IPV4_ADDRESS,
 
 148                                 LInterfaceRequest.INTERFACE_NAME,
 
 149                                 LInterfaceRequest.LINTERFACE_INTERFACE_NAME,
 
 157         public Class<? extends AAIDatum> getModelClass() {
 
 158                 return L3InterfaceIpv4AddressList.class;
 
 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;
 
 167                 if(!requestProperties.containsKey(key)) {
 
 168                         aaiService.logKeyError(String.format("%s,%s", L3_INTERFACE_IPV4_ADDRESS, LIST_L3_INTERFACE_IPV4_ADDRESS));
 
 171                 String encoded_vnf = encodeQuery(requestProperties.getProperty(key));
 
 173                 request_url = request_url.replace("{l3-interface-ipv4-address}", encoded_vnf) ;
 
 175                 aaiService.LOGwriteDateTrace("l3-interface-ipv4-address", requestProperties.getProperty(key));
 
 181          * @see org.onap.ccsdk.sli.adaptors.aai.PathConfigurator#configurePath(java.lang.String)
 
 184 //      public void processRequestPathValues(Map<String, String> nameValues) {
 
 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}"
 
 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);
 
 203 //                                              pathElements.add(rx);
 
 208 //              super.processRequestPathValues(nameValues);
 
 210 //      List<AAIRequest> pathElements = new LinkedList<AAIRequest>();