diff options
-rw-r--r-- | appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java | 195 |
1 files changed, 96 insertions, 99 deletions
diff --git a/appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java b/appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java index 2e822d032..fc4003ac4 100644 --- a/appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java +++ b/appc-outbound/appc-network-inventory-client/provider/src/main/java/org/onap/appc/instar/dme2client/Dme2Client.java @@ -23,176 +23,173 @@ */ package org.onap.appc.instar.dme2client; + +import com.att.eelf.configuration.EELFLogger; +import com.att.eelf.configuration.EELFManager; +import com.sun.jersey.api.client.Client; +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import com.sun.jersey.api.client.config.DefaultClientConfig; +import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; +import com.sun.jersey.client.urlconnection.HTTPSProperties; import java.io.FileInputStream; +import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.nio.charset.Charset; -import java.util.HashMap; +import java.util.Map; import java.util.Properties; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.SSLContext; import javax.ws.rs.HttpMethod; import javax.ws.rs.core.MediaType; - import org.apache.commons.io.IOUtils; import org.onap.appc.instar.utils.InstarClientConstant; - - -import com.att.eelf.configuration.EELFLogger; -import com.att.eelf.configuration.EELFManager; -import com.sun.jersey.api.client.Client; -import com.sun.jersey.api.client.ClientResponse; -import com.sun.jersey.api.client.WebResource; -import com.sun.jersey.api.client.config.DefaultClientConfig; -import com.sun.jersey.api.client.filter.HTTPBasicAuthFilter; - +import org.onap.ccsdk.sli.core.sli.SvcLogicException; public class Dme2Client { private static final EELFLogger log = EELFManager.getInstance().getLogger(Dme2Client.class); private static final String SDNC_CONFIG_DIR_VAR = "SDNC_CONFIG_DIR"; - //DME2Client client = null; - Properties props = new Properties(); - String operationName ; - String appendContext; -String mask; - String ipAddress; - public Dme2Client(String optName, String subCtxt, HashMap<String, String> data) throws Exception{ + private Properties properties = new Properties(); + private String operationName; + private String appendContext; + private String mask; + private String ipAddress; + + public Dme2Client(String optName, String subCtxt, Map<String, String> data) throws IOException { log.info("Setting Properties for DME2 Client for INSTAR connection"); - this.operationName=optName; + this.operationName = optName; this.appendContext = data.get(subCtxt); -if("getVnfbyIpadress".equals(optName)){ + if ("getVnfbyIpadress".equals(optName)) { this.ipAddress = data.get("ipAddress"); this.mask = data.get("mask"); } String propDir = System.getenv(SDNC_CONFIG_DIR_VAR); - if (propDir == null) - throw new Exception(" Cannot find Property file -" + SDNC_CONFIG_DIR_VAR); + if (propDir == null) { + throw new IOException("Cannot find Property file -" + SDNC_CONFIG_DIR_VAR); + } String propFile = propDir + InstarClientConstant.OUTBOUND_PROPERTIES; InputStream propStream = new FileInputStream(propFile); - try - { - props.load(propStream); - } - catch (Exception e) - { - throw new Exception("Could not load properties file " + propFile, e); - } - finally - { - try - { + try { + properties.load(propStream); + } catch (Exception e) { + throw new IOException("Could not load properties file " + propFile, e); + } finally { + try { propStream.close(); - } - catch (Exception e) - { + } catch (Exception e) { log.warn("Could not close FileInputStream", e); } } } - public ClientResponse sendtoInstar() throws Exception { - - log.info("Called Send with operation Name=" + this.operationName + "and = " + props.getProperty(operationName+InstarClientConstant.BASE_URL)); - String resourceUri = props.getProperty(operationName+InstarClientConstant.BASE_URL)+ - props.getProperty(operationName + InstarClientConstant.URL_SUFFIX); - if(this.ipAddress!=null && this.mask == null){ - //resourceUri = resourceUri.substring(0,resourceUri.length() - 1) + "?"; - resourceUri = resourceUri + props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYIPADDRESS); - resourceUri = resourceUri + ipAddress; - }else if(mask!=null){ - //resourceUri = resourceUri.substring(0,resourceUri.length() - 1) + "?"; - resourceUri = resourceUri + props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYIPADDRESS) + ipAddress+ props.getProperty(operationName+InstarClientConstant.SUB_CONTEXT_BYMASK); - resourceUri = resourceUri + mask ; - }else{ - resourceUri=resourceUri+ props.getProperty(operationName + InstarClientConstant.SUB_CONTEXT)+ appendContext; - } + public ClientResponse sendtoInstar() throws SvcLogicException { + + log.info("Called Send with operation Name=" + this.operationName + "and = " + + properties.getProperty(operationName + InstarClientConstant.BASE_URL)); + + String resourceUri = buildResourceUri(); log.info("DME Endpoint URI:" + resourceUri); + Client client = null; - WebResource webResource = null; + WebResource webResource; ClientResponse clientResponse = null; - String authorization = props.getProperty("authorization"); + String authorization = properties.getProperty("authorization"); String requestDataType = "application/json"; - String responseDataType= MediaType.APPLICATION_JSON; - String methodType = props.getProperty("getIpAddressByVnf_method"); + String responseDataType = MediaType.APPLICATION_JSON; + String methodType = properties.getProperty("getIpAddressByVnf_method"); String request = ""; - String userId=props.getProperty("MechID"); - String password=props.getProperty("MechPass"); + String userId = properties.getProperty("MechID"); + String password = properties.getProperty("MechPass"); + log.info("authorization = " + authorization + "methodType= " + methodType); - try{ + + try { DefaultClientConfig defaultClientConfig = new DefaultClientConfig(); System.setProperty("jsse.enableSNIExtension", "false"); - SSLContext sslContext = null; + SSLContext sslContext; SecureRestClientTrustManager secureRestClientTrustManager = new SecureRestClientTrustManager(); sslContext = SSLContext.getInstance("SSL"); - sslContext.init(null, new javax.net.ssl.TrustManager[] { secureRestClientTrustManager }, null); - defaultClientConfig.getProperties().put( - com.sun.jersey.client.urlconnection.HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, - new com.sun.jersey.client.urlconnection.HTTPSProperties(getHostnameVerifier(), sslContext)); + sslContext.init(null, new javax.net.ssl.TrustManager[]{secureRestClientTrustManager}, null); + defaultClientConfig + .getProperties() + .put(HTTPSProperties.PROPERTY_HTTPS_PROPERTIES, new HTTPSProperties(getHostnameVerifier(), sslContext)); client = Client.create(defaultClientConfig); client.addFilter(new HTTPBasicAuthFilter(userId, password)); webResource = client.resource(new URI(resourceUri)); webResource.setProperty("Content-Type", "application/json;charset=UTF-8"); - if(HttpMethod.GET.equalsIgnoreCase(methodType)){ + if (HttpMethod.GET.equalsIgnoreCase(methodType)) { clientResponse = webResource.accept(responseDataType).get(ClientResponse.class); - }else if(HttpMethod.POST.equalsIgnoreCase(methodType)){ + } else if (HttpMethod.POST.equalsIgnoreCase(methodType)) { clientResponse = webResource.type(requestDataType).post(ClientResponse.class, request); - }else if(HttpMethod.PUT.equalsIgnoreCase(methodType)){ - clientResponse = webResource.type(requestDataType).put(ClientResponse.class,request); - }else if(HttpMethod.DELETE.equalsIgnoreCase(methodType)){ + } else if (HttpMethod.PUT.equalsIgnoreCase(methodType)) { + clientResponse = webResource.type(requestDataType).put(ClientResponse.class, request); + } else if (HttpMethod.DELETE.equalsIgnoreCase(methodType)) { clientResponse = webResource.delete(ClientResponse.class); } - return clientResponse; - }catch (Exception e) { - log.info("failed in RESTCONT Action ("+methodType+") for the resource " + resourceUri + ", falut message :"+e.getMessage()); - throw new Exception("Error While gettting Data from INSTAR" + e.getMessage()); - } - finally { + } catch (Exception e) { + log.info( + "failed in RESTCONT Action (" + methodType + ") for the resource " + resourceUri + ", falut message :" + + e.getMessage()); + throw new SvcLogicException("Error While gettting Data from INSTAR", e); + + } finally { // clean up. - webResource = null; - if(client != null){ + if (client != null) { client.destroy(); - client = null; } } + } - + private String buildResourceUri() { + String resourceUri = properties.getProperty(operationName + InstarClientConstant.BASE_URL) + + properties.getProperty(operationName + InstarClientConstant.URL_SUFFIX); + + if (ipAddress != null && mask == null) { + resourceUri = resourceUri + + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYIPADDRESS) + ipAddress; + } else if (mask != null) { + resourceUri = resourceUri + + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYIPADDRESS) + + ipAddress + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT_BYMASK) + mask; + } else { + resourceUri = resourceUri + + properties.getProperty(operationName + InstarClientConstant.SUB_CONTEXT) + appendContext; + } + return resourceUri; } public String send() { String response = null; - try{ - - if(props !=null && - props.getProperty(InstarClientConstant.MOCK_INSTAR) != null && - props.getProperty(InstarClientConstant.MOCK_INSTAR).equalsIgnoreCase("true")) - return IOUtils.toString(Dme2Client.class.getClassLoader().getResourceAsStream("/tmp/sampleResponse"), Charset.defaultCharset()); - + try { + if (validateProperties()) { + return IOUtils.toString(Dme2Client.class.getClassLoader().getResourceAsStream("/tmp/sampleResponse"), + Charset.defaultCharset()); + } ClientResponse clientResponse = sendtoInstar(); - if(clientResponse != null){ + if (clientResponse != null) { response = clientResponse.getEntity(String.class); log.info(clientResponse.getStatus() + " Status, Response :" + response); - } } catch (Exception e) { - e.printStackTrace(); + log.error("Failed to send response", e); } return response; } - private HostnameVerifier getHostnameVerifier() { - return new HostnameVerifier() { - @Override - public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) { - return true; - } - }; + private boolean validateProperties() { + return properties != null + && properties.getProperty(InstarClientConstant.MOCK_INSTAR) != null + && "true".equalsIgnoreCase(properties.getProperty(InstarClientConstant.MOCK_INSTAR)); } - + private HostnameVerifier getHostnameVerifier() { + return (hostname, sslSession) -> true; + } } |