diff options
author | Guo Ruijing <ruijing.guo@intel.com> | 2017-07-31 08:47:35 +0000 |
---|---|---|
committer | Pamela Dragosh <pdragosh@research.att.com> | 2017-07-31 15:51:10 -0400 |
commit | 073cc188efe9abb4c010cf674e34e2cf46ef1c52 (patch) | |
tree | 155c23fbdf3a838ecb5f4183fc3bb6b09aac41eb /ECOMP-PDP-REST/src/main/java/org/openecomp | |
parent | 4ca818fdfb9b807562166800a086b413593d6894 (diff) |
[POLICY-73] replace openecomp for policy-engine
Change-Id: I54072f6bcd388c0e05562614ee89b4ae7ad67004
Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
Diffstat (limited to 'ECOMP-PDP-REST/src/main/java/org/openecomp')
54 files changed, 0 insertions, 11017 deletions
diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/PapUrlResolver.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/PapUrlResolver.java deleted file mode 100644 index 924c2b5ff..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/PapUrlResolver.java +++ /dev/null @@ -1,377 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest; - -import java.net.URI; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.NoSuchElementException; -import java.util.Properties; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.rest.XACMLRestProperties; - -import com.att.research.xacml.util.XACMLProperties; - -public class PapUrlResolver { - private static final Logger LOGGER = FlexLogger.getLogger(PapUrlResolver.class); - //how long to keep a pap failed before making it un-failed, in milli-seconds - private static final long FAIL_TIMEOUT = 18000000; - - //thread locks - public static final Object propertyLock = new Object(); - - //keeping this here for backward compatibility - public static String extractIdFromUrl(String url){ - return extractQuery(url); - } - public static String extractQuery(String url){ - try{ - return URI.create(url).getQuery(); - } catch(Exception e){ - LOGGER.error("Exception occured while extracting query. So, empty string is returned"+e); - return ""; - } - } - public static String modifyUrl(String idUrl, String serverUrl){ - URI one = URI.create(idUrl); - String host = one.getPath()+one.getQuery(); - URI two = URI.create(serverUrl); - two.resolve(host); - return two.toString(); - } - - //get an instance of a new PapUrlResolver, using XACMLProperties to get the url lists - public static PapUrlResolver getInstance(){ - return new PapUrlResolver(null,null,null,true); - } - - //get an instance of a new PapUrlResolver, using the provides strings for the url lists - public static PapUrlResolver getInstance(String urlList, String failedList, String succeededList){ - return new PapUrlResolver(urlList, failedList, succeededList,false); - } - - //keeps track of our current location in the list of urls, allows for iterating - private int pointer; - - //should the XACML property lists be updated after anything changes or should we wait for the update - //method to be called. - private boolean autoUpdateProperties; - - //this list keeps the sorted, priority of PAP URLs - private PapUrlNode[] sortedUrlNodes; - //this list keeps the original list of nodes so that they can be entered into the property list correctly - private PapUrlNode[] originalUrlNodes; - - //private constructor to make an instance of a PapUrlResolver, called by static method getInstance. - //If the list property strings are not defined, we get the values from XACMLProperties. - //The instance acts as an iterator, with hasNext and next methods, but does not implement Iterable, - //because it is used for a difference purpose. - private PapUrlResolver(String urlList, String failedList, String succeededList, boolean autoUpdateProperties){ - this.autoUpdateProperties = autoUpdateProperties; - String papUrlLists = urlList; - String papUrlFailedList = failedList; - String papUrlSuccessList = succeededList; - if(papUrlLists == null){ - papUrlLists = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URLS); - if(papUrlLists == null){ - papUrlLists = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); - } - papUrlFailedList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_FAILED_URLS); - papUrlSuccessList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_SUCCEEDED_URLS); - } - - String[] urls = papUrlLists.split(","); - if(urls.length == 0){ - //log error - } - String[] failed = emptyOrSplit(papUrlFailedList,urls.length); - String[] succeeded = emptyOrSplit(papUrlSuccessList,urls.length); - - sortedUrlNodes = new PapUrlNode[urls.length]; - for(int i=0;i<urls.length;i++){ - - String userId = null; - String pass = null; - userId = XACMLProperties.getProperty(urls[i]+"."+XACMLRestProperties.PROP_PAP_USERID); - pass = XACMLProperties.getProperty(urls[i]+"."+XACMLRestProperties.PROP_PAP_PASS); - if(userId == null || pass == null){ - userId = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - pass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS); - } - if(userId == null || pass == null){ - userId = ""; - pass = ""; - } - PapUrlNode newNode = new PapUrlNode(urls[i],userId,pass); - newNode.setFailedTime(failed[i]); - newNode.setSucceededTime(succeeded[i]); - if(sortedUrlNodes[i] == null){ - sortedUrlNodes[i] = newNode; - } - } - originalUrlNodes = sortedUrlNodes.clone(); - sort(sortedUrlNodes); - pointer = 0; - } - - - //either split a list by commas, or fill an array to the expected length, if the property list is not long enough - private String[] emptyOrSplit(String list,int expectedLength){ - String[] ret; - if(list == null){ - ret = new String[expectedLength]; - for(int i=0;i<expectedLength;i++){ - ret[i] = "-1"; - } - } else { - ret = list.split(","); - if(ret.length != expectedLength){ - ret = emptyOrSplit(null,expectedLength); - } - } - return ret; - } - - private void sort(PapUrlNode[] array){ - - //O(n^2) double-loop most likely the best in this case, since number of records will be VERY small - for(int i=0;i<array.length;i++){ - for(int j=i;j<array.length;j++){ - if(array[j].compareTo(array[i])<0){ - PapUrlNode temp = array[i]; - array[i] = array[j]; - array[j] = temp; - } - } - } - } - - //returns whether this PapUrlResolver object has more PAP urls that can be tried - public boolean hasMoreUrls(){ - return pointer < sortedUrlNodes.length; - } - - //sets the current PAP url as being failed - //this will set the failed time to now and remove any succeeded time - public void failed(){ - LOGGER.error("PAP Server FAILED: "+sortedUrlNodes[pointer].getUrl()); - - sortedUrlNodes[pointer].setFailedTime(new Date()); - sortedUrlNodes[pointer].setSucceededTime(null); - propertiesUpdated(); - } - - //sets the current PAP url as being working - //this will set the succeeded time to now and remove any failed time - //Also, this will cause hasMoreUrls to return false, since a working one has been found - - public void succeeded(){ - registered(); - pointer = sortedUrlNodes.length; - } - public void registered(){ - sortedUrlNodes[pointer].setFailedTime(null); - sortedUrlNodes[pointer].setSucceededTime(new Date()); - LOGGER.info("PAP server SUCCEEDED "+sortedUrlNodes[pointer].getUrl()); - propertiesUpdated(); - } - - //returns a properties object with the properties that pertain to PAP urls - public Properties getProperties(){ - String failedPropertyString = ""; - String succeededPropertyString = ""; - String urlPropertyString = ""; - for(int i=0;i<originalUrlNodes.length;i++){ - failedPropertyString = failedPropertyString.concat(",").concat(originalUrlNodes[i].getFailedTime()); - succeededPropertyString = succeededPropertyString.concat(",").concat(originalUrlNodes[i].getSucceededTime()); - urlPropertyString = urlPropertyString.concat(",").concat(originalUrlNodes[i].getUrl()); - } - Properties prop = new Properties(); - failedPropertyString = failedPropertyString.substring(1); - succeededPropertyString = succeededPropertyString.substring(1); - urlPropertyString = urlPropertyString.substring(1); - prop.setProperty(XACMLRestProperties.PROP_PAP_FAILED_URLS,failedPropertyString); - prop.setProperty(XACMLRestProperties.PROP_PAP_URLS,urlPropertyString); - prop.setProperty(XACMLRestProperties.PROP_PAP_SUCCEEDED_URLS,succeededPropertyString); - return prop; - } - - //saves the updates urls to the correct properties - private void propertiesUpdated(){ - if(!autoUpdateProperties){ - return; - } - Properties prop = getProperties(); - - LOGGER.debug("Failed PAP Url List: "+prop.getProperty(XACMLRestProperties.PROP_PAP_FAILED_URLS)); - LOGGER.debug("Succeeded PAP Url List: "+prop.getProperty(XACMLRestProperties.PROP_PAP_SUCCEEDED_URLS)); - XACMLProperties.setProperty(XACMLRestProperties.PROP_PAP_FAILED_URLS,prop.getProperty(XACMLRestProperties.PROP_PAP_FAILED_URLS)); - XACMLProperties.setProperty(XACMLRestProperties.PROP_PAP_SUCCEEDED_URLS,prop.getProperty(XACMLRestProperties.PROP_PAP_SUCCEEDED_URLS)); - } - - //iterates to the next available PAP url, according to the priority order - public void getNext(){ - pointer++; - } - - //returns the url of the current PAP server that we are iterating over - //will append the provided policy id to the url - public String getUrl(String query){ - if(sortedUrlNodes[pointer]== null){ - throw new NoSuchElementException(); - } else { - return sortedUrlNodes[pointer].getUrl().concat("?").concat(query); - } - } - - //returns the url of the current PAP server that we are iterating over - //Just returns the url, with no id appended to it - public String getUrl(){ - if(sortedUrlNodes[pointer]== null){ - throw new NoSuchElementException(); - } else { - - return sortedUrlNodes[pointer].getUrl(); - } - } - public String getUserId(){ - if(sortedUrlNodes[pointer]== null){ - throw new NoSuchElementException(); - } else { - - return sortedUrlNodes[pointer].getUserId(); - } - } - public String getPass(){ - if(sortedUrlNodes[pointer]== null){ - throw new NoSuchElementException(); - } else { - - return sortedUrlNodes[pointer].getPass(); - } - } - - - //This is the class to hold the details of a single PAP URL - //including: the url itself, the last time it failed, and the last time it succeeded - //It also includes the custom comparer which can compare based on failed and succeeded times, and takes into account - //the timeout on failures. - private class PapUrlNode implements Comparable<PapUrlNode> { - private String papUrl; - private Date failedTime; - private Date succeededTime; - private String userId; - private String pass; - - public PapUrlNode(String url,String userId,String pass){ - this.papUrl = url; - failedTime = null; - this.succeededTime = null; - this.userId = userId; - this.pass = pass; - - } - public String getUserId(){ - return this.userId; - } - public String getPass(){ - return this.pass; - } - - public void setFailedTime(Object time){ - Date failedTimeAsDate = setHandler(time); - if(failedTimeAsDate == null){ - this.failedTime = null; - } else { - long timeDifference = new Date().getTime() - failedTimeAsDate.getTime(); - if(timeDifference < FAIL_TIMEOUT){ - this.failedTime = failedTimeAsDate; - } else { - this.failedTime = null; - } - } - } - - //set the time that this url succeeded at - public void setSucceededTime(Object time){ - this.succeededTime = setHandler(time); - } - - //parses string into a date or a null date, if the url never failed/succeeded (since -1 will be in the property) - private Date setHandler(Object time){ - if(time instanceof String){ - if("-1".equals((String)time)){ - return null; - } - try { - DateFormat df = new SimpleDateFormat(); - return df.parse((String)time); - } catch (ParseException e) { - return null; - } - } - if(time instanceof Date){ - return (Date)time; - } - return null; - } - - - public String getFailedTime(){ - return formatTime(this.failedTime); - } - - public String getSucceededTime(){ - return formatTime(this.succeededTime); - } - - //formats a Date into a string or a -1 if there is not date (-1 is used in properties for no date) - private String formatTime(Date d){ - if(d == null){ - return "-1"; - } - DateFormat df = new SimpleDateFormat(); - return df.format(d); - } - - public String getUrl(){ - return papUrl; - } - - @Override - public int compareTo(PapUrlNode other){ - if(this.failedTime == null && other.failedTime != null){ - return -1; - } - if(this.failedTime != null && other.failedTime == null){ - return 1; - } - if(this.failedTime != null){ - return this.failedTime.compareTo(other.failedTime); - } - return 0; - } - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpLoader.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpLoader.java deleted file mode 100644 index 5288d30aa..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpLoader.java +++ /dev/null @@ -1,645 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest; - -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.MalformedURLException; -import java.net.URI; -import java.net.URL; -import java.net.URLConnection; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.Base64; -import java.util.ConcurrentModificationException; -import java.util.HashMap; -import java.util.Properties; -import java.util.Set; - -import org.apache.commons.io.IOUtils; -import org.openecomp.policy.pdp.rest.notifications.NotificationController; -import org.openecomp.policy.rest.XACMLRest; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.att.research.xacml.api.pap.PAPException; -import com.att.research.xacml.api.pap.PDPStatus; -import com.att.research.xacml.api.pap.PDPStatus.Status; -import com.att.research.xacml.api.pdp.PDPEngine; -import com.att.research.xacml.api.pdp.PDPEngineFactory; -import com.att.research.xacml.api.pip.PIPEngine; -import com.att.research.xacml.api.pip.PIPException; -import com.att.research.xacml.api.pip.PIPFinder; -import com.att.research.xacml.api.pip.PIPFinderFactory; -import org.openecomp.policy.xacml.std.pap.StdPDPPIPConfig; -import org.openecomp.policy.xacml.std.pap.StdPDPPolicy; -import org.openecomp.policy.xacml.std.pap.StdPDPStatus; -import com.att.research.xacml.util.FactoryException; -import com.att.research.xacml.util.XACMLProperties; -import com.att.research.xacmlatt.pdp.policy.PolicyDef; -import com.att.research.xacmlatt.pdp.policy.dom.DOMPolicyDef; -import com.att.research.xacmlatt.pdp.std.StdPolicyFinderFactory; -import com.google.common.base.Splitter; - -/** - * Does the work for loading policy and PIP configurations sent from the PAP - * servlet. - * - * - * - */ -public class XACMLPdpLoader { - private static final Logger LOGGER = FlexLogger.getLogger(XACMLPdpLoader.class); - private static NotificationController notificationController = new NotificationController(); - private static final Long notifyDelay = (long) XACMLPdpServlet.getNotificationDelay(); - - - public static synchronized PDPEngine loadEngine(StdPDPStatus status, - Properties policyProperties, Properties pipProperties) { - LOGGER.info("loadEngine: " + policyProperties + " " + pipProperties); - // - // First load our policies - // - try { - // - // Were we given some properties? - // - if (policyProperties == null) { - // - // On init we have no incoming configuration, so just - // Load our current saved configuration - // - policyProperties = new Properties(); - try (InputStream is = Files.newInputStream(getPDPPolicyCache())) { - policyProperties.load(is); - } - } - - // - // Get our policy cache up-to-date - // - // Side effects of this include: - // - downloading of policies from remote locations, and - // - creating new "<PolicyId>.file" properties for files existing - // local - // - XACMLPdpLoader.cachePolicies(policyProperties); - // - // Validate the policies - // - XACMLPdpLoader.validatePolicies(policyProperties, status); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Status: " + status); - } - } catch (ConcurrentModificationException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e.getMessage() + e); - } catch (Exception e) { - String error = "Failed to load Policy Cache properties file: " - + e.getMessage(); - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + error, e); - status.addLoadError(error); - status.setStatus(PDPStatus.Status.LOAD_ERRORS); - } - // - // Load our PIP configuration - // - try { - // - // Were we given some properties to use? - // - if (pipProperties == null) { - // - // Load our current saved configuration - // - pipProperties = new Properties(); - try (InputStream is = Files.newInputStream(getPIPConfig())) { - pipProperties.load(is); - } - } - // - // Validate our PIP configurations - // - XACMLPdpLoader.validatePipConfiguration(pipProperties, status); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Status: " + status); - } - } catch (Exception e) { - String error = "Failed to load/validate Pip Config properties file: " - + e.getMessage(); - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + error, e); - status.addLoadError(XACMLErrorConstants.ERROR_PROCESS_FLOW + error); - status.setStatus(PDPStatus.Status.LOAD_ERRORS); - } - // - // Were they validated? - // - if (status.getStatus() == Status.LOAD_ERRORS) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW +"there were load errors"); - return null; - } - // - // Reset our official properties the PDP factory - // uses to configure the PDP engine. - // - XACMLRest.loadXacmlProperties(policyProperties, pipProperties); - // - // Dump ALL our properties that we are trying to load - // - try { - LOGGER.info(XACMLProperties.getProperties().toString()); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to get XACML Properties", e); - } - // - // Now load the PDP engine - // - PDPEngineFactory factory = null; - PDPEngine engine = null; - try { - factory = PDPEngineFactory.newInstance(); - engine = factory.newEngine(); - LOGGER.info("Loaded new PDP engine."); - status.setStatus(Status.UP_TO_DATE); - } catch (FactoryException e) { - String error = "Failed to create new PDP Engine"; - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +error, e); - status.addLoadError(error); - } - // Notification will be Sent Here. - sendNotification(); - return engine; - } - - private static HashMap<String, PolicyDef> policyContainer = null; - - private static void sendNotification(){ - Thread notify = new Thread(){ - public void run(){ - try{ - Thread.sleep(notifyDelay); - NotificationController.sendNotification(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_UNKNOWN + e); - } - } - }; - notify.start(); - } - - public static synchronized void validatePolicies(Properties properties, - StdPDPStatus status) throws PAPException { - Set<String> rootPolicies = XACMLProperties.getRootPolicyIDs(properties); - Set<String> refPolicies = XACMLProperties - .getReferencedPolicyIDs(properties); - policyContainer = new HashMap<String, PolicyDef>(); - - for (String id : rootPolicies) { - loadPolicy(properties, status, id, true); - } - // remember which policies were root policies - status.addAllLoadedRootPolicies(status.getLoadedPolicies()); - - for (String id : refPolicies) { - loadPolicy(properties, status, id, false); - } - LOGGER.info("Loaded " + status.getLoadedPolicies().size() - + " policies, failed to load " - + status.getFailedPolicies().size() + " policies, " - + status.getLoadedRootPolicies().size() + " root policies"); - notificationController.check(status, policyContainer); - if (status.getLoadedRootPolicies().size() == 0) { - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW +"NO ROOT POLICIES LOADED!!! Cannot serve PEP Requests."); - status.addLoadWarning("NO ROOT POLICIES LOADED!!! Cannot serve PEP Requests."); - } - policyContainer.clear(); - } - - - public static synchronized void loadPolicy(Properties properties, - StdPDPStatus status, String id, boolean isRoot) throws PAPException { - PolicyDef policy = null; - String location = null; - URI locationURI = null; - boolean isFile = false; - boolean rougeFile = false; - try { - location = properties.getProperty(id + ".file"); - if(location != null){ - isFile = true; - locationURI = Paths.get(location).toUri(); - try (InputStream is = Files.newInputStream(Paths.get(location))) { - policy = DOMPolicyDef.load(is); - } catch (Exception e){ - // This Happens if a any issue with the error policyFile. Lets remove it. - try { - LOGGER.error("Corrupted policy file, deleting: " + location + e); - Files.delete(Paths.get(location)); - properties.remove(id + ".file"); - rougeFile = true; - } catch (IOException e1) { - LOGGER.error(e1); - } - } - } - if(location==null || rougeFile){ - if(rougeFile){ - rougeFile = false; - } - location = properties.getProperty(id + ".url"); - if (location != null) { - // - // Construct the URL - // - int errorCount=0; - boolean error= false; - do{ - error=false; - PapUrlResolver papUrls = PapUrlResolver.getInstance(); - while(papUrls.hasMoreUrls()){ - String papID = papUrls.getUserId(); - String papPass = papUrls.getPass(); - Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); - locationURI = URI.create(papUrls.getUrl(PapUrlResolver.extractIdFromUrl(location))); - URL url = locationURI.toURL(); - URLConnection urlConnection = null; - try{ - urlConnection = url.openConnection(); - } catch (IOException e){ - LOGGER.error("Exception Occured while opening connection" +e); - papUrls.failed(); - papUrls.getNext(); - break; - } - urlConnection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID, - XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID)); - urlConnection.setRequestProperty("Authorization", "Basic " + encoding); - // - // Now construct the output file name - // - Path outFile = Paths.get(getPDPConfig().toAbsolutePath() - .toString(), id); - // - // Copy it to disk - // - try (FileOutputStream fos = new FileOutputStream( - outFile.toFile())) { - IOUtils.copy(urlConnection.getInputStream(), fos); - } catch(IOException e){ - LOGGER.error("Exception Occured while Copying input stream" +e); - papUrls.failed(); - papUrls.getNext(); - break; - } - // - // Now try to load - // - isFile = true; - try (InputStream fis = Files.newInputStream(outFile)) { - policy = DOMPolicyDef.load(fis); - }catch(Exception e){ - try { - LOGGER.error("Corrupted policy file, deleting: " + location +e); - Files.delete(outFile); - error = true; - errorCount++; - break; - } catch (IOException e1) { - LOGGER.error(e1); - } - } - // - // Save it - // - properties.setProperty(id + ".file", outFile - .toAbsolutePath().toString()); - error = false; - break; - } - }while(error && errorCount>2); - } - } - if (policy != null) { - status.addLoadedPolicy(new StdPDPPolicy(id, isRoot, - locationURI, properties)); - LOGGER.info("Loaded policy: " + policy.getIdentifier() - + " version: " + policy.getVersion().stringValue()); - // Sending the policy objects to the Notification Controller. - policyContainer.put(id, policy); - } else { - String error = "Failed to load policy " + location; - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + error); - status.setStatus(PDPStatus.Status.LOAD_ERRORS); - status.addLoadError(error); - status.addFailedPolicy(new StdPDPPolicy(id, isRoot)); - } - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW +"Failed to load policy '" + id + "' from location '" - + location + "'", e); - status.setStatus(PDPStatus.Status.LOAD_ERRORS); - status.addFailedPolicy(new StdPDPPolicy(id, isRoot)); - // - // Is it a file? - // - if (isFile) { - // - // Let's remove it - // - try { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Corrupted policy file, deleting: " + location); - Files.delete(Paths.get(location)); - - } catch (IOException e1) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e1); - } - } - } - } - - public static synchronized void validatePipConfiguration( - Properties properties, StdPDPStatus status) throws PAPException { - try { - PIPFinderFactory factory = PIPFinderFactory.newInstance(properties); - if (factory == null) { - throw new FactoryException( - "Could not create PIP Finder Factory: " - + properties - .getProperty(XACMLProperties.PROP_PIPFINDERFACTORY)); - } - PIPFinder finder = factory.getFinder(properties); - // - // Check for this, although it should always return something - // - if (finder == null) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "pip finder factory returned a null engine."); - throw new PIPException("Could not create PIP Finder"); - } else { - LOGGER.info("Loaded PIP finder"); - } - for (PIPEngine engine : finder.getPIPEngines()) { - LOGGER.info("Configured PIP Engine: " + engine.getName()); - StdPDPPIPConfig config = new StdPDPPIPConfig(); - config.setName(engine.getName()); - status.addLoadedPipConfig(config); - } - } catch (FactoryException | PIPException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "validate PIP configuration failed: " - + e.getLocalizedMessage()); - status.addLoadError(e.getLocalizedMessage()); - status.setStatus(Status.LOAD_ERRORS); - throw new PAPException(e); - } - } - - /** - * Iterates the policies defined in the props object to ensure they are - * loaded locally. Policies are searched for in the following order: - see - * if the current properties has a "<PolicyID>.file" entry and that - * file exists in the local directory - if not, see if the file exists in - * the local directory; if so create a ".file" property for it. - if not, - * get the "<PolicyID>.url" property and try to GET the policy from - * that location (and set the ".file" property) - * - * If the ".file" property is created, then true is returned to tell the - * caller that the props object changed. - * - * @param props - * @return true/false if anything was changed in the props object - * @throws PAPException - */ - public static synchronized boolean cachePolicies(Properties props) - throws PAPException { - boolean changed = false; - String[] lists = new String[2]; - lists[0] = props.getProperty(XACMLProperties.PROP_ROOTPOLICIES); - lists[1] = props.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); - for (String list : lists) { - // - // Check for a null or empty parameter - // - if (list == null || list.length() == 0) { - continue; - } - Iterable<String> policies = Splitter.on(',').trimResults() - .omitEmptyStrings().split(list); - for (String policy : policies) { - boolean policyExists = false; - - // First look for ".file" property and verify the file exists - String propLocation = props.getProperty(policy - + StdPolicyFinderFactory.PROP_FILE); - if (propLocation != null) { - // - // Does it exist? - // - policyExists = Files.exists(Paths.get(propLocation)); - if (policyExists == false) { - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Policy file " + policy + " expected at " - + propLocation + " does NOT exist."); - } - } - - // If ".file" property does not exist, try looking for the local - // file anyway - // (it might exist without having a ".file" property set for it) - if (policyExists == false) { - // - // Now construct the output file name - // - Path outFile = Paths.get(getPDPConfig().toAbsolutePath() - .toString(), policy); - // - // Double check to see if we pulled it at some point - // - policyExists = Files.exists(outFile); - if (policyExists) { - // - // Set the property so the PDP engine doesn't have - // to pull it from the URL but rather the FILE. - // - LOGGER.info("Policy does exist: " - + outFile.toAbsolutePath().toString()); - props.setProperty(policy - + StdPolicyFinderFactory.PROP_FILE, outFile - .toAbsolutePath().toString()); - // - // Indicate that there were changes made to the - // properties - // - changed = true; - } else { - - // File does not exist locally, so we need to get it - // from the location given in the ".url" property (which - // MUST exist) - - // - // There better be a URL to retrieve it - // - propLocation = props.getProperty(policy - + StdPolicyFinderFactory.PROP_URL); - if (propLocation != null) { - // - // Get it - // - PapUrlResolver papUrls = PapUrlResolver.getInstance(); - while(papUrls.hasMoreUrls()){ - String papID = papUrls.getUserId(); - String papPass = papUrls.getPass(); - Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); - URL url = null; - try { - // - // Create the URL - // - url = new URL(papUrls.getUrl(PapUrlResolver.extractIdFromUrl(propLocation))); - LOGGER.info("Pulling " + url.toString()); - // - // Open the connection - // - URLConnection urlConnection = url.openConnection(); - urlConnection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID, - XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID)); - urlConnection.setRequestProperty("Authorization", "Basic " + encoding); - // - // Copy it to disk - // - try (InputStream is = urlConnection - .getInputStream(); - OutputStream os = new FileOutputStream( - outFile.toFile())) { - IOUtils.copy(is, os); - } - // - // Now save it in the properties as a .file - // - LOGGER.info("Pulled policy: " - + outFile.toAbsolutePath().toString()); - props.setProperty(policy - + StdPolicyFinderFactory.PROP_FILE, - outFile.toAbsolutePath().toString()); - papUrls.succeeded(); - // - // Indicate that there were changes made to the - // properties - // - changed = true; - } catch (Exception e) { - papUrls.failed(); - if (e instanceof MalformedURLException) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Policy '" - + policy - + "' had bad URL in new configuration, URL='" - + propLocation + "'"); - - } else { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error while retrieving policy " - + policy - + " from URL " - + url + ", e=" + e); - } - } - papUrls.getNext(); - } - } else { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Policy " + policy - + " does NOT exist and does NOT have a URL"); - } - } - } - } - } - return changed; - } - - public static synchronized Path getPDPPolicyCache() throws PAPException { - Path config = getPDPConfig(); - Path policyProperties = Paths.get(config.toAbsolutePath().toString(), - "xacml.policy.properties"); - if (Files.notExists(policyProperties)) { - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + policyProperties.toAbsolutePath().toString() - + " does NOT exist."); - // - // Try to create the file - // - try { - Files.createFile(policyProperties); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create policy properties file: " - + policyProperties.toAbsolutePath().toString() +e); - throw new PAPException( - "Failed to create policy properties file: " - + policyProperties.toAbsolutePath().toString()); - } - } - return policyProperties; - } - - public static synchronized Path getPIPConfig() throws PAPException { - Path config = getPDPConfig(); - Path pipConfigProperties = Paths.get( - config.toAbsolutePath().toString(), "xacml.pip.properties"); - if (Files.notExists(pipConfigProperties)) { - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + pipConfigProperties.toAbsolutePath().toString() - + " does NOT exist."); - // - // Try to create the file - // - try { - Files.createFile(pipConfigProperties); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create pip properties file: " - + pipConfigProperties.toAbsolutePath().toString() +e); - throw new PAPException("Failed to create pip properties file: " - + pipConfigProperties.toAbsolutePath().toString()); - } - } - return pipConfigProperties; - } - - public static synchronized Path getPDPConfig() throws PAPException { - Path config = Paths.get(XACMLProperties - .getProperty(XACMLRestProperties.PROP_PDP_CONFIG)); - if (Files.notExists(config)) { - LOGGER.warn(XACMLErrorConstants.ERROR_PROCESS_FLOW + config.toAbsolutePath().toString() + " does NOT exist."); - // - // Try to create the directory - // - try { - Files.createDirectories(config); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to create config directory: " - + config.toAbsolutePath().toString(), e); - throw new PAPException("Failed to create config directory: " - + config.toAbsolutePath().toString()); - } - } - return config; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpRegisterThread.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpRegisterThread.java deleted file mode 100644 index 6bc8a6461..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpRegisterThread.java +++ /dev/null @@ -1,285 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - - -package org.openecomp.policy.pdp.rest; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.util.Base64; -import java.util.Properties; -import java.util.UUID; - -import org.apache.commons.io.IOUtils; -import org.openecomp.policy.pdp.rest.XACMLPdpServlet.PutRequest; -import org.openecomp.policy.rest.XACMLRestProperties; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.att.research.xacml.util.XACMLProperties; - -import org.openecomp.policy.common.logging.ECOMPLoggingContext; -import org.openecomp.policy.common.logging.eelf.PolicyLogger; -import org.openecomp.policy.common.logging.flexlogger.*; - -public class XACMLPdpRegisterThread implements Runnable { - private static final Logger LOGGER = FlexLogger.getLogger(XACMLPdpRegisterThread.class); - private static final Logger auditLogger = FlexLogger.getLogger("auditLogger"); - private ECOMPLoggingContext baseLoggingContext = null; - - - - public volatile boolean isRunning = false; - - public XACMLPdpRegisterThread(ECOMPLoggingContext baseLoggingContext) { - this.baseLoggingContext = baseLoggingContext; - } - - public synchronized boolean isRunning() { - return this.isRunning; - } - - public synchronized void terminate() { - this.isRunning = false; - } - - /** - * - * This is our thread that runs on startup to tell the PAP server we are up-and-running. - * - */ - @Override - public void run() { - synchronized(this) { - this.isRunning = true; - } - // get a new logging context for the thread - ECOMPLoggingContext loggingContext = new ECOMPLoggingContext(baseLoggingContext); - loggingContext.setServiceName("PDP:PAP.register"); - //are we registered with at least one - boolean registered = false; - boolean interrupted = false; - /* - int seconds; - try { - seconds = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_SLEEP)); - } catch (NumberFormatException e) { - LOGGER.error( XACMLErrorConstants.ERROR_SYSTEM_ERROR +"REGISTER_SLEEP: ", e); - seconds = 5; - } - if (seconds < 5) { - seconds = 5; - } - int retries; - try { - retries = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER_RETRIES)); - } catch (NumberFormatException e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +" REGISTER_SLEEP: ", e); - retries = -1; - } - */ - PapUrlResolver papUrls = PapUrlResolver.getInstance(); - //while (! registered && ! interrupted && this.isRunning()) { - String tempRootPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES); - String tempReferencedPoliciesProperty = XACMLProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES); - Properties tempPipConfigProperties = new Properties(); - try(InputStream pipFile = Files.newInputStream(XACMLPdpLoader.getPIPConfig())){ - tempPipConfigProperties.load(pipFile); - } catch(Exception e){ - LOGGER.error("Failed to open PIP property file", e); - } - while(papUrls.hasMoreUrls()){ - String papID = papUrls.getUserId(); - String papPass = papUrls.getPass(); - Base64.Encoder encoder = Base64.getEncoder(); - String encoding = encoder.encodeToString((papID+":"+papPass).getBytes(StandardCharsets.UTF_8)); - HttpURLConnection connection = null; - try { - // get a new transaction (request) ID and update the logging context. - // each time through the outer loop is considered a new transaction. - // each time through the inner loop (which handles redirects) is a - // continuation of the same transaction. - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - //PolicyLogger.info("Request Id generated in XACMLPdpRegisterThread under XACML-PDP-REST"); - loggingContext.transactionStarted(); - // - // Get the list of PAP Servlet URLs from the property file - // - //String papUrlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); - //String[] papUrls = papUrlList.split(","); - //PapUrlResolver.setPapUrls(papUrls); - URL url = new URL(papUrls.getUrl()); - LOGGER.info("Registering with " + url.toString()); - //PolicyLogger.info("new transaction (request) ID and update to logging context in XACMLPdpRegisterThread"); - boolean finished = false; - while (! finished) { - // - // Open up the connection - // - connection = (HttpURLConnection)url.openConnection(); - // - // Setup our method and headers - // - connection.setRequestMethod("POST"); - connection.setRequestProperty("Authorization", "Basic " + encoding); - connection.setRequestProperty("Accept", "text/x-java-properties"); - connection.setRequestProperty("Content-Type", "text/x-java-properties"); - connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_ID, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID)); - connection.setRequestProperty(XACMLRestProperties.PROP_PDP_HTTP_HEADER_JMX_PORT, XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_JMX_PORT)); - connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString()); - connection.setUseCaches(false); - // - // Adding this in. It seems the HttpUrlConnection class does NOT - // properly forward our headers for POST re-direction. It does so - // for a GET re-direction. - // - // So we need to handle this ourselves. - // - connection.setInstanceFollowRedirects(false); - connection.setDoOutput(true); - connection.setDoInput(true); - try { - // - // Send our current policy configuration - // - String lists = XACMLProperties.PROP_ROOTPOLICIES + "=" + tempRootPoliciesProperty; - lists = lists + "\n" + XACMLProperties.PROP_REFERENCEDPOLICIES + "=" + tempReferencedPoliciesProperty + "\n"; - try (InputStream listsInputStream = new ByteArrayInputStream(lists.getBytes()); - OutputStream os = connection.getOutputStream()) { - IOUtils.copy(listsInputStream, os); - - // - // Send our current PIP configuration - // - //IOUtils.copy(pipInputStream, os); - tempPipConfigProperties.store(os, ""); - } - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Failed to send property file", e); - } - // - // Do the connect - // - connection.connect(); - if (connection.getResponseCode() == 204) { - LOGGER.info("Success. We are configured correctly."); - loggingContext.transactionEnded(); - PolicyLogger.audit("Success. We are configured correctly."); - papUrls.registered(); - finished = true; - registered = true; - } else if (connection.getResponseCode() == 200) { - LOGGER.info("Success. We have a new configuration."); - loggingContext.transactionEnded(); - PolicyLogger.audit("Success. We have a new configuration."); - papUrls.registered(); - Properties properties = new Properties(); - properties.load(connection.getInputStream()); - LOGGER.info("New properties: " + properties.toString()); - // - // Queue it - // - // The incoming properties does NOT include urls - Properties returnedPolicyProperties = XACMLProperties.getPolicyProperties(properties, false); - tempRootPoliciesProperty = new String(returnedPolicyProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES)); - tempReferencedPoliciesProperty = new String(returnedPolicyProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES)); - Properties returnedPipProperties = XACMLProperties.getPipProperties(properties); - Properties threadSafeReturnedPipProperties = new Properties(); - ByteArrayOutputStream threadSafeReturnedPipPropertiesOs = new ByteArrayOutputStream(); - returnedPipProperties.store(threadSafeReturnedPipPropertiesOs, ""); - InputStream threadSafeReturnedPipPropertiesIs = new ByteArrayInputStream(threadSafeReturnedPipPropertiesOs.toByteArray()); - threadSafeReturnedPipProperties.load(threadSafeReturnedPipPropertiesIs); - tempPipConfigProperties = threadSafeReturnedPipProperties; - - PutRequest req = new PutRequest(returnedPolicyProperties,returnedPipProperties); - XACMLPdpServlet.queue.offer(req); - // - // We are now registered - // - finished = true; - registered=true; - } else if (connection.getResponseCode() >= 300 && connection.getResponseCode() <= 399) { - // - // Re-direction - // - String newLocation = connection.getHeaderField("Location"); - if (newLocation == null || newLocation.isEmpty()) { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); - loggingContext.transactionEnded(); - auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Did not receive a valid re-direction location"); - PolicyLogger.audit("Transaction Failed - See Error.log"); - finished = true; - } else { - LOGGER.info("New Location: " + newLocation); - url = new URL(newLocation); - } - } else { - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - loggingContext.transactionEnded(); - auditLogger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed: " + connection.getResponseCode() + " message: " + connection.getResponseMessage()); - PolicyLogger.audit("Transaction Failed - See Error.log"); - finished = true; - papUrls.failed(); - } - } - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - PolicyLogger.audit("Transaction Failed - See Error.log"); - loggingContext.transactionEnded(); - papUrls.failed(); - } finally { - // cleanup the connection - if (connection != null) { - try { - // For some reason trying to get the inputStream from the connection - // throws an exception rather than returning null when the InputStream does not exist. - InputStream is = null; - try { - is = connection.getInputStream(); - } catch (Exception e1) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to get Input Stream: " + e1); - } - if (is != null) { - is.close(); - } - - } catch (IOException ex) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to close connection: " + ex, ex); - } - connection.disconnect(); - } - } - - papUrls.getNext(); - } - synchronized(this) { - this.isRunning = false; - } - LOGGER.info("Thread exiting...(registered=" + registered + ", interrupted=" + interrupted + ", isRunning=" + this.isRunning() + ", retries=" + "0" + ")"); - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpServlet.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpServlet.java deleted file mode 100644 index bad8e6638..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/XACMLPdpServlet.java +++ /dev/null @@ -1,1266 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.OutputStream; -import java.lang.reflect.Constructor; -import java.net.InetAddress; -import java.net.UnknownHostException; -import java.nio.file.Files; -import java.util.Properties; -import java.util.UUID; -import java.util.concurrent.BlockingQueue; -import java.util.concurrent.LinkedBlockingQueue; - -import javax.servlet.Servlet; -import javax.servlet.ServletConfig; -import javax.servlet.ServletException; -import javax.servlet.annotation.WebInitParam; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.apache.http.entity.ContentType; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.im.AdministrativeStateException; -import org.openecomp.policy.common.im.ForwardProgressException; -import org.openecomp.policy.common.im.IntegrityMonitor; -import org.openecomp.policy.common.im.IntegrityMonitorProperties; -import org.openecomp.policy.common.im.StandbyStatusException; -import org.openecomp.policy.common.logging.ECOMPLoggingContext; -import org.openecomp.policy.common.logging.ECOMPLoggingUtils; -import org.openecomp.policy.common.logging.eelf.MessageCodes; -import org.openecomp.policy.common.logging.eelf.PolicyLogger; -import org.openecomp.policy.pdp.rest.jmx.PdpRestMonitor; -import org.openecomp.policy.rest.XACMLRest; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.pdp.std.functions.PolicyList; -import org.openecomp.policy.xacml.std.pap.StdPDPStatus; - -import com.att.research.xacml.api.Request; -import com.att.research.xacml.api.Response; -import com.att.research.xacml.api.pap.PDPStatus.Status; -import com.att.research.xacml.api.pdp.PDPEngine; -import com.att.research.xacml.api.pdp.PDPException; -import com.att.research.xacml.std.dom.DOMRequest; -import com.att.research.xacml.std.dom.DOMResponse; -import com.att.research.xacml.std.json.JSONRequest; -import com.att.research.xacml.std.json.JSONResponse; -import com.att.research.xacml.util.XACMLProperties; -import com.fasterxml.jackson.databind.ObjectMapper; - -/** - * Servlet implementation class XacmlPdpServlet - * - * This is an implementation of the XACML 3.0 RESTful Interface with added features to support - * simple PAP RESTful API for policy publishing and PIP configuration changes. - * - * If you are running this the first time, then we recommend you look at the xacml.pdp.properties file. - * This properties file has all the default parameter settings. If you are running the servlet as is, - * then we recommend setting up you're container to run it on port 8080 with context "/pdp". Wherever - * the default working directory is set to, a "config" directory will be created that holds the policy - * and pip cache. This setting is located in the xacml.pdp.properties file. - * - * When you are ready to customize, you can create a separate xacml.pdp.properties on you're local file - * system and setup the parameters as you wish. Just set the Java VM System variable to point to that file: - * - * -Dxacml.properties=/opt/app/xacml/etc/xacml.pdp.properties - * - * Or if you only want to change one or two properties, simply set the Java VM System variable for that property. - * - * -Dxacml.rest.pdp.register=false - * - * - */ -@WebServlet( - description = "Implements the XACML PDP RESTful API and client PAP API.", - urlPatterns = { "/" }, - loadOnStartup=1, - initParams = { - @WebInitParam(name = "XACML_PROPERTIES_NAME", value = "xacml.pdp.properties", description = "The location of the PDP xacml.pdp.properties file holding configuration information.") - }) -public class XACMLPdpServlet extends HttpServlet implements Runnable { - private static final long serialVersionUID = 1L; - private static final String DEFAULT_MAX_CONTENT_LENGTH = "999999999"; //32767 - private static final String CREATE_UPDATE_POLICY_SERVICE = "org.openecomp.policy.pdp.rest.api.services.CreateUpdatePolicyServiceImpl"; - // - // Our application debug log - // - private static final Log logger = LogFactory.getLog(XACMLPdpServlet.class); - // - // This logger is specifically only for Xacml requests and their corresponding response. - // It's output ideally should be sent to a separate file from the application logger. - // - private static final Log requestLogger = LogFactory.getLog("xacml.request"); - // - // audit logger - private static final Log auditLogger = LogFactory.getLog("auditLogger"); - - private static final PdpRestMonitor monitor = PdpRestMonitor.getSingleton(); - - // - // This thread may getting invoked on startup, to let the PAP know - // that we are up and running. - // - private Thread registerThread = null; - private XACMLPdpRegisterThread registerRunnable = null; - // - // This is our PDP engine pointer. There is a synchronized lock used - // for access to the pointer. In case we are servicing PEP requests while - // an update is occurring from the PAP. - // - private static PDPEngine pdpEngine = null; - private static final Object pdpEngineLock = new Object(); - // - // This is our PDP's status. What policies are loaded (or not) and - // what PIP configurations are loaded (or not). - // There is a synchronized lock used for access to the object. - // - private static volatile StdPDPStatus status = new StdPDPStatus(); - private static final Object pdpStatusLock = new Object(); - private static Constructor<?> createUpdatePolicyConstructor; - - private static final String ENVIORNMENT_HEADER = "Environment"; - private static String environment = null; - // - // Queue of PUT requests - // - public static class PutRequest { - private Properties policyProperties = null; - private Properties pipConfigProperties = null; - - PutRequest(Properties policies, Properties pips) { - this.policyProperties = policies; - this.pipConfigProperties = pips; - } - } - protected static volatile BlockingQueue<PutRequest> queue = null; - // For notification Delay. - private static int notificationDelay = 0; - public static int getNotificationDelay(){ - return XACMLPdpServlet.notificationDelay; - } - - private static String pdpResourceName; - private static String[] dependencyNodes = null; - - // - // This is our configuration thread that attempts to load - // a new configuration request. - // - private Thread configThread = null; - private volatile boolean configThreadTerminate = false; - private ECOMPLoggingContext baseLoggingContext = null; - private IntegrityMonitor im; - /** - * Default constructor. - */ - public XACMLPdpServlet() { - //Default constructor. - } - - /** - * @see Servlet#init(ServletConfig) - */ - @Override - public void init(ServletConfig config) throws ServletException { - String createUpdateResourceName = null; - String dependencyGroups = null; - // - // Initialize - // - XACMLRest.xacmlInit(config); - // Load the Notification Delay. - try{ - XACMLPdpServlet.notificationDelay = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_DELAY)); - }catch(Exception e){ - logger.info("Notification Delay Not set. Keeping it 0 as default."+e); - } - // Load Queue size. - int queueSize = 5; // Set default Queue Size here. - queueSize = Integer.parseInt(XACMLProperties.getProperty("REQUEST_BUFFER_SIZE",String.valueOf(queueSize))); - queue = new LinkedBlockingQueue<PutRequest>(queueSize); - // Load our engine - this will use the latest configuration - // that was saved to disk and set our initial status object. - // - PDPEngine engine = XACMLPdpLoader.loadEngine(XACMLPdpServlet.status, null, null); - if (engine != null) { - synchronized(pdpEngineLock) { - pdpEngine = engine; - } - } - // - // Logging stuff.... - // - baseLoggingContext = new ECOMPLoggingContext(); - // fixed data that will be the same in all logging output goes here - try { - String ipaddress = InetAddress.getLocalHost().getHostAddress(); - baseLoggingContext.setServer(ipaddress); - } catch (UnknownHostException e) { - logger.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get hostname for logging"+e); - } - - Properties properties; - try { - properties = XACMLProperties.getProperties(); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, - "Error loading properties with: XACMLProperties.getProperties()"); - throw new ServletException(e.getMessage(), e.getCause()); - } - if(properties.getProperty(XACMLRestProperties.PDP_RESOURCE_NAME)==null){ - XACMLProperties.reloadProperties(); - try { - properties = XACMLProperties.getProperties(); - } catch (IOException e) { - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, - "Error loading properties with: XACMLProperties.getProperties()"); - throw new ServletException(e.getMessage(), e.getCause()); - } - PolicyLogger.info("\n Properties Given : \n" + properties.toString()); - } - pdpResourceName = properties.getProperty(XACMLRestProperties.PDP_RESOURCE_NAME); - if(pdpResourceName == null){ - PolicyLogger.error(MessageCodes.MISS_PROPERTY_ERROR, XACMLRestProperties.PDP_RESOURCE_NAME, "xacml.pdp"); - throw new ServletException("pdpResourceName is null"); - } - - dependencyGroups = properties.getProperty(IntegrityMonitorProperties.DEPENDENCY_GROUPS); - if(dependencyGroups == null){ - PolicyLogger.error(MessageCodes.MISS_PROPERTY_ERROR, IntegrityMonitorProperties.DEPENDENCY_GROUPS, "xacml.pdp"); - throw new ServletException("dependency_groups is null"); - } - // dependency_groups is a semicolon-delimited list of groups, and - // each group is a comma-separated list of nodes. For our purposes - // we just need a list of dependencies without regard to grouping, - // so split the list into nodes separated by either comma or semicolon. - dependencyNodes = dependencyGroups.split("[;,]"); - for (int i = 0 ; i < dependencyNodes.length ; i++){ - dependencyNodes[i] = dependencyNodes[i].trim(); - } - - // CreateUpdatePolicy ResourceName - createUpdateResourceName = properties.getProperty("createUpdatePolicy.impl.className", CREATE_UPDATE_POLICY_SERVICE); - setCreateUpdatePolicyConstructor(createUpdateResourceName); - - // Create an IntegrityMonitor - try { - logger.info("Creating IntegrityMonitor"); - im = IntegrityMonitor.getInstance(pdpResourceName, properties); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "Failed to create IntegrityMonitor" +e); - throw new ServletException(e); - } - - environment = XACMLProperties.getProperty("ENVIRONMENT", "DEVL"); - // - // Kick off our thread to register with the PAP servlet. - // - if (Boolean.parseBoolean(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_REGISTER))) { - this.registerRunnable = new XACMLPdpRegisterThread(baseLoggingContext); - this.registerThread = new Thread(this.registerRunnable); - this.registerThread.start(); - } - // - // This is our thread that manages incoming configuration - // changes. - // - this.configThread = new Thread(this); - this.configThread.start(); - } - - /** - * @see Servlet#destroy() - */ - @Override - public void destroy() { - super.destroy(); - logger.info("Destroying...."); - // - // Make sure the register thread is not running - // - if (this.registerRunnable != null) { - try { - this.registerRunnable.terminate(); - if (this.registerThread != null) { - this.registerThread.interrupt(); - this.registerThread.join(); - } - } catch (InterruptedException e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - } - } - // - // Make sure the configure thread is not running - // - this.configThreadTerminate = true; - try { - this.configThread.interrupt(); - this.configThread.join(); - } catch (InterruptedException e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - } - logger.info("Destroyed."); - } - - /** - * PUT - The PAP engine sends configuration information using HTTP PUT request. - * - * One parameter is expected: - * - * config=[policy|pip|all] - * - * policy - Expect a properties file that contains updated lists of the root and referenced policies that the PDP should - * be using for PEP requests. - * - * Specifically should AT LEAST contain the following properties: - * xacml.rootPolicies - * xacml.referencedPolicies - * - * In addition, any relevant information needed by the PDP to load or retrieve the policies to store in its cache. - * - * EXAMPLE: - * xacml.rootPolicies=PolicyA.1, PolicyB.1 - * - * PolicyA.1.url=http://localhost:9090/PAP?id=b2d7b86d-d8f1-4adf-ba9d-b68b2a90bee1&version=1 - * PolicyB.1.url=http://localhost:9090/PAP/id=be962404-27f6-41d8-9521-5acb7f0238be&version=1 - * - * xacml.referencedPolicies=RefPolicyC.1, RefPolicyD.1 - * - * RefPolicyC.1.url=http://localhost:9090/PAP?id=foobar&version=1 - * RefPolicyD.1.url=http://localhost:9090/PAP/id=example&version=1 - * - * pip - Expect a properties file that contain PIP engine configuration properties. - * - * Specifically should AT LEAST the following property: - * xacml.pip.engines - * - * In addition, any relevant information needed by the PDP to load and configure the PIPs. - * - * EXAMPLE: - * xacml.pip.engines=foo,bar - * - * foo.classname=com.foo - * foo.sample=abc - * foo.example=xyz - * ...... - * - * bar.classname=com.bar - * ...... - * - * all - Expect ALL new configuration properties for the PDP - * - * @see HttpServlet#doPut(HttpServletRequest request, HttpServletResponse response) - */ - @Override - protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ECOMPLoggingContext loggingContext = ECOMPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - if ((loggingContext.getRequestID() == null) || "".equals(loggingContext.getRequestID())){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPdpSrvlet (doPut) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPdpSrvlet (doPut)"); - } - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 1 of 2"); - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 2 of 2"); - // - // Dump our request out - // - if (logger.isDebugEnabled()) { - XACMLRest.dumpRequest(request); - } - - try { - im.startTransaction(); - } - catch (AdministrativeStateException | StandbyStatusException e) { - String message = e.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message + e); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } - // - // What is being PUT? - // - String cache = request.getParameter("cache"); - // - // Should be a list of policy and pip configurations in Java properties format - // - if (cache != null && request.getContentType().equals("text/x-java-properties")) { - loggingContext.setServiceName("PDP.putConfig"); - try{ - if (request.getContentLength() > Integer.parseInt(XACMLProperties.getProperty("MAX_CONTENT_LENGTH", DEFAULT_MAX_CONTENT_LENGTH))) { - String message = "Content-Length larger than server will accept."; - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - loggingContext.transactionEnded(); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, message); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - im.endTransaction(); - return; - } - this.doPutConfig(cache, request, response, loggingContext); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction ended"); - - im.endTransaction(); - }catch(Exception e){ - logger.error("Exception Occured while getting Max Content lenght"+e); - } - } else { - String message = "Invalid cache: '" + cache + "' or content-type: '" + request.getContentType() + "'"; - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + message); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - } - - protected void doPutConfig(String config, HttpServletRequest request, HttpServletResponse response, ECOMPLoggingContext loggingContext) throws ServletException, IOException { - try { - // prevent multiple configuration changes from stacking up - if (XACMLPdpServlet.queue.remainingCapacity() <= 0) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Queue capacity reached"); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, "Queue capacity reached"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_CONFLICT, "Multiple configuration changes waiting processing."); - return; - } - // - // Read the properties data into an object. - // - Properties newProperties = new Properties(); - newProperties.load(request.getInputStream()); - // should have something in the request - if (newProperties.size() == 0) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No properties in PUT"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "No properties in PUT"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "PUT must contain at least one property"); - return; - } - // - // Which set of properties are they sending us? Whatever they send gets - // put on the queue (if there is room). - // For audit logging purposes, we consider the transaction done once the - // the request gets put on the queue. - // - if (config.equals("policies")) { - newProperties = XACMLProperties.getPolicyProperties(newProperties, true); - if (newProperties.size() == 0) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No policy properties in PUT"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "No policy properties in PUT"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "PUT with cache=policies must contain at least one policy property"); - return; - } - XACMLPdpServlet.queue.offer(new PutRequest(newProperties, null)); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - } else if (config.equals("pips")) { - newProperties = XACMLProperties.getPipProperties(newProperties); - if (newProperties.size() == 0) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No pips properties in PUT"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "No pips properties in PUT"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "PUT with cache=pips must contain at least one pip property"); - return; - } - XACMLPdpServlet.queue.offer(new PutRequest(null, newProperties)); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - } else if (config.equals("all")) { - Properties newPolicyProperties = XACMLProperties.getPolicyProperties(newProperties, true); - if (newPolicyProperties.size() == 0) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No policy properties in PUT"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "No policy properties in PUT"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "PUT with cache=all must contain at least one policy property"); - return; - } - Properties newPipProperties = XACMLProperties.getPipProperties(newProperties); - if (newPipProperties.size() == 0) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "No pips properties in PUT"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "No pips properties in PUT"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "PUT with cache=all must contain at least one pip property"); - return; - } - XACMLPdpServlet.queue.offer(new PutRequest(newPolicyProperties, newPipProperties)); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - } else { - // - // Invalid value - // - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid config value: " + config); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "Invalid config value: " + config); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Config must be one of 'policies', 'pips', 'all'"); - return; - } - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to process new configuration.", e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "Failed to process new configuration"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage()); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } - - } - - /** - * Parameters: type=hb|config|Status - * - * 1. HeartBeat Status - * HeartBeat - * OK - All Policies are Loaded, All PIPs are Loaded - * LOADING_IN_PROGRESS - Currently loading a new policy set/pip configuration - * LAST_UPDATE_FAILED - Need to track the items that failed during last update - * LOAD_FAILURE - ??? Need to determine what information is sent and how - * 2. Configuration - * 3. Status - * return the StdPDPStatus object in the Response content - * - * - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - ECOMPLoggingContext loggingContext = ECOMPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - if ((loggingContext.getRequestID() == null) || (loggingContext.getRequestID() == "")){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPdpSrvlet (doGet) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPdpSrvlet (doGet)"); - } - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 1 of 2"); - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 2 of 2"); - - XACMLRest.dumpRequest(request); - - String pathInfo = request.getRequestURI(); - if (pathInfo != null){ - // health check from Global Site Selector (iDNS). - // DO NOT do a im.startTransaction for the test request - if (pathInfo.equals("/pdp/test")) { - loggingContext.setServiceName("iDNS:PDP.test"); - try { - im.evaluateSanity(); - //If we make it this far, all is well - String message = "GET:/pdp/test called and PDP " + pdpResourceName + " is OK"; - PolicyLogger.debug(message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Success"); - response.setStatus(HttpServletResponse.SC_OK); - return; - } catch (ForwardProgressException fpe){ - //No forward progress is being made - String message = "GET:/pdp/test called and PDP " + pdpResourceName + " is not making forward progress." - + " Exception Message: " + fpe.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message + fpe); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - }catch (AdministrativeStateException ase){ - //Administrative State is locked - String message = "GET:/pdp/test called and PDP " + pdpResourceName + " Administrative State is LOCKED " - + " Exception Message: " + ase.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message + ase); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - }catch (StandbyStatusException sse){ - //Administrative State is locked - String message = "GET:/pdp/test called and PDP " + pdpResourceName + " Standby Status is NOT PROVIDING SERVICE " - + " Exception Message: " + sse.getMessage(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message + sse); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } catch (Exception e) { - //A subsystem is not making progress or is not responding - String eMsg = e.getMessage(); - if(eMsg == null){ - eMsg = "No Exception Message"; - } - String message = "GET:/pdp/test called and PDP " + pdpResourceName + " has had a subsystem failure." - + " Exception Message: " + eMsg; - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message ); - //Get the specific list of subsystems that failed - String failedNodeList = null; - for(String node : dependencyNodes){ - if(eMsg.contains(node)){ - if(failedNodeList == null){ - failedNodeList = node; - }else{ - failedNodeList = failedNodeList.concat(","+node); - } - } - } - if(failedNodeList == null){ - failedNodeList = "UnknownSubSystem"; - } - response.addHeader("X-ECOMP-SubsystemFailure", failedNodeList); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log" + e); - return; - } - } - } - - try { - im.startTransaction(); - } - catch (AdministrativeStateException | StandbyStatusException e) { - String message = e.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log" +e); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } - // - // What are they requesting? - // - boolean returnHB = false; - response.setHeader("Cache-Control", "no-cache"); - String type = request.getParameter("type"); - // type might be null, so use equals on string constants - if ("config".equals(type)) { - loggingContext.setServiceName("PDP.getConfig"); - response.setContentType("text/x-java-properties"); - try { - String lists = XACMLProperties.PROP_ROOTPOLICIES + "=" + XACMLProperties.getProperty(XACMLProperties.PROP_ROOTPOLICIES, ""); - lists = lists + "\n" + XACMLProperties.PROP_REFERENCEDPOLICIES + "=" + XACMLProperties.getProperty(XACMLProperties.PROP_REFERENCEDPOLICIES, "") + "\n"; - try (InputStream listInputStream = new ByteArrayInputStream(lists.getBytes()); - InputStream pipInputStream = Files.newInputStream(XACMLPdpLoader.getPIPConfig()); - OutputStream os = response.getOutputStream()) { - IOUtils.copy(listInputStream, os); - IOUtils.copy(pipInputStream, os); - } - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - response.setStatus(HttpServletResponse.SC_OK); - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Failed to copy property file", e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "Failed to copy property file"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(400, "Failed to copy Property file"); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - } - - } else if ("hb".equals(type)) { - returnHB = true; - response.setStatus(HttpServletResponse.SC_NO_CONTENT); - - } else if ("Status".equals(type)) { - loggingContext.setServiceName("PDP.getStatus"); - // convert response object to JSON and include in the response - synchronized(pdpStatusLock) { - ObjectMapper mapper = new ObjectMapper(); - try{ - mapper.writeValue(response.getOutputStream(), status); - }catch(Exception e1){ - logger.error("Exception occured while writing output stream" +e1); - } - } - response.setStatus(HttpServletResponse.SC_OK); - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - - } else { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid type value: " + type); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "Invalid type value: " + type); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "type not 'config' or 'hb'"); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - } - if (returnHB) { - synchronized(pdpStatusLock) { - response.addHeader(XACMLRestProperties.PROP_PDP_HTTP_HEADER_HB, status.getStatus().toString()); - } - } - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Ended"); - im.endTransaction(); - - } - - /** - * POST - We expect XACML requests to be posted by PEP applications. They can be in the form of XML or JSON according - * to the XACML 3.0 Specifications for both. - * - * - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - - ECOMPLoggingContext loggingContext = ECOMPLoggingUtils.getLoggingContextForRequest(request, baseLoggingContext); - loggingContext.transactionStarted(); - loggingContext.setServiceName("PDP.decide"); - if ((loggingContext.getRequestID() == null) || ("".equals(loggingContext.getRequestID()))){ - UUID requestID = UUID.randomUUID(); - loggingContext.setRequestID(requestID.toString()); - PolicyLogger.info("requestID not provided in call to XACMLPdpSrvlet (doPost) so we generated one"); - } else { - PolicyLogger.info("requestID was provided in call to XACMLPdpSrvlet (doPost)"); - } - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 1 of 2"); - loggingContext.metricStarted(); - loggingContext.metricEnded(); - PolicyLogger.metrics("Metric example posted here - 2 of 2"); - monitor.pdpEvaluationAttempts(); - - try { - im.startTransaction(); - } - catch (AdministrativeStateException | StandbyStatusException e) { - String message = e.toString(); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message + e); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } - // - // no point in doing any work if we know from the get-go that we cannot do anything with the request - // - if (status.getLoadedRootPolicies().isEmpty()) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Request from PEP at " + request.getRequestURI() + " for service when PDP has No Root Policies loaded"); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, "Request from PEP at " + request.getRequestURI() + " for service when PDP has No Root Policies loaded"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - - XACMLRest.dumpRequest(request); - // - // Set our no-cache header - // - response.setHeader("Cache-Control", "no-cache"); - // - // They must send a Content-Type - // - if (request.getContentType() == null) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Must specify a Content-Type"); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, "Must specify a Content-Type"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "no content-type given"); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - // - // Limit the Content-Length to something reasonable - // - try{ - if (request.getContentLength() > Integer.parseInt(XACMLProperties.getProperty("MAX_CONTENT_LENGTH", "32767"))) { - String message = "Content-Length larger than server will accept."; - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - im.endTransaction(); - return; - } - }catch(Exception e){ - logger.error("Exception occured while getting max content length"+e); - } - - if (request.getContentLength() <= 0) { - String message = "Content-Length is negative"; - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - ContentType contentType = null; - try { - contentType = ContentType.parse(request.getContentType()); - } - catch (Exception e) { - String message = "Parsing Content-Type: " + request.getContentType() + ", error=" + e.getMessage(); - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message, e); - loggingContext.transactionEnded(); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, message); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - // - // What exactly did they send us? - // - String incomingRequestString = null; - Request pdpRequest = null; - if (contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_JSON.getMimeType()) || - contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_XML.getMimeType()) || - contentType.getMimeType().equalsIgnoreCase("application/xacml+xml") ) { - // - // Read in the string - // - StringBuilder buffer = new StringBuilder(); - BufferedReader reader = new BufferedReader(new InputStreamReader(request.getInputStream())); - String line; - try{ - while((line = reader.readLine()) != null){ - buffer.append(line); - } - }catch(Exception e){ - logger.error("Exception Occured while reading line"+e); - } - - incomingRequestString = buffer.toString(); - logger.info(incomingRequestString); - // - // Parse into a request - // - try { - if (contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_JSON.getMimeType())) { - pdpRequest = JSONRequest.load(incomingRequestString); - } else if ( contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_XML.getMimeType()) || - contentType.getMimeType().equalsIgnoreCase("application/xacml+xml")) { - pdpRequest = DOMRequest.load(incomingRequestString); - } - } - catch(Exception e) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Could not parse request", e); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, e, "Could not parse request"); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, e.getMessage()); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - } else { - String message = "unsupported content type" + request.getContentType(); - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - // - // Did we successfully get and parse a request? - // - if (pdpRequest == null || pdpRequest.getRequestAttributes() == null || pdpRequest.getRequestAttributes().size() <= 0) { - String message = "Zero Attributes found in the request"; - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + message); - PolicyLogger.error(MessageCodes.ERROR_DATA_ISSUE, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_BAD_REQUEST, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - // - // Run it - // - try { - // - // Authenticating the Request here. - // - if(!authorizeRequest(request)){ - String message = "PEP not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - logger.error(XACMLErrorConstants.ERROR_PERMISSIONS + message ); - PolicyLogger.error(MessageCodes.ERROR_PERMISSIONS, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_FORBIDDEN, message); - im.endTransaction(); - return; - } - // - // Get the pointer to the PDP Engine - // - PDPEngine myEngine = null; - synchronized(pdpEngineLock) { - myEngine = XACMLPdpServlet.pdpEngine; - } - if (myEngine == null) { - String message = "No engine loaded."; - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + message); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - im.endTransaction(); - return; - } - // - // Send the request and save the response - // - long lTimeStart; - long lTimeEnd; - Response pdpResponse = null; - - synchronized(pdpEngineLock) { - myEngine = XACMLPdpServlet.pdpEngine; - try { - PolicyList.clearPolicyList(); - lTimeStart = System.currentTimeMillis(); - pdpResponse = myEngine.decide(pdpRequest); - lTimeEnd = System.currentTimeMillis(); - } catch (PDPException e) { - String message = "Exception during decide: " + e.getMessage(); - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + message +e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - im.endTransaction(); - return; - } - } - monitor.computeLatency(lTimeEnd - lTimeStart); - requestLogger.info(lTimeStart + "=" + incomingRequestString); - for(String policy : PolicyList.getpolicyList()){ - monitor.policyCountAdd(policy, 1); - } - - - logger.info("PolicyID triggered in Request: " + PolicyList.getpolicyList()); - - //need to go through the list and find out if the value is unique and then add it other wise - // monitor.policyCountAdd(PolicyList.getpolicyList(), 1); - - if (logger.isDebugEnabled()) { - logger.debug("Request time: " + (lTimeEnd - lTimeStart) + "ms"); - } - // - // Convert Response to appropriate Content-Type - // - if (pdpResponse == null) { - requestLogger.info(lTimeStart + "=" + "{}"); - try{ - throw new PDPException("Failed to get response from PDP engine."); - }catch(Exception e1){ - logger.error("Exception occured while throwing Exception" +e1); - } - } - // - // Set our content-type - // - response.setContentType(contentType.getMimeType()); - // - // Convert the PDP response object to a String to - // return to our caller as well as dump to our loggers. - // - String outgoingResponseString = ""; - try{ - if (contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_JSON.getMimeType())) { - // - // Get it as a String. This is not very efficient but we need to log our - // results for auditing. - // - outgoingResponseString = JSONResponse.toString(pdpResponse, logger.isDebugEnabled()); - if (logger.isDebugEnabled()) { - logger.debug(outgoingResponseString); - // - // Get rid of whitespace - // - outgoingResponseString = JSONResponse.toString(pdpResponse, false); - } - } else if ( contentType.getMimeType().equalsIgnoreCase(ContentType.APPLICATION_XML.getMimeType()) || - contentType.getMimeType().equalsIgnoreCase("application/xacml+xml")) { - // - // Get it as a String. This is not very efficient but we need to log our - // results for auditing. - // - outgoingResponseString = DOMResponse.toString(pdpResponse, logger.isDebugEnabled()); - if (logger.isDebugEnabled()) { - logger.debug(outgoingResponseString); - // - // Get rid of whitespace - // - outgoingResponseString = DOMResponse.toString(pdpResponse, false); - } - } - // adding the jmx values for NA, Permit and Deny - // - if (outgoingResponseString.contains("NotApplicable") || outgoingResponseString.contains("Decision not a Permit")){ - monitor.pdpEvaluationNA(); - } - - if (outgoingResponseString.contains("Permit") && !outgoingResponseString.contains("Decision not a Permit")){ - monitor.pdpEvaluationPermit(); - } - - if (outgoingResponseString.contains("Deny")){ - monitor.pdpEvaluationDeny(); - } - // - // lTimeStart is used as an ID within the requestLogger to match up - // request's with responses. - // - requestLogger.info(lTimeStart + "=" + outgoingResponseString); - response.getWriter().print(outgoingResponseString); - }catch(Exception e){ - logger.error("Exception Occured"+e ); - } - } - catch (Exception e) { - String message = "Exception executing request: " + e; - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + message, e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, message); - loggingContext.transactionEnded(); - PolicyLogger.audit("Transaction Failed - See Error.log"); - try{ - response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, message); - }catch(Exception e1){ - logger.error("Exception occured while sending error in response" +e1); - } - return; - } - - monitor.pdpEvaluationSuccess(); - response.setStatus(HttpServletResponse.SC_OK); - - loggingContext.transactionEnded(); - auditLogger.info("Success"); - PolicyLogger.audit("Success"); - - } - - /* - * Added for Authorizing the PEP Requests for Environment check. - */ - private boolean authorizeRequest(HttpServletRequest request) { - // Get the client Credentials from the Request header. - HttpServletRequest httpServletRequest = request; - String clientCredentials = httpServletRequest.getHeader(ENVIORNMENT_HEADER); - if(clientCredentials!=null && clientCredentials.equalsIgnoreCase(environment)){ - return true; - }else{ - return false; - } - } - - @Override - public void run() { - // - // Keep running until we are told to terminate - // - try { - // variable not used, but constructor has needed side-effects so don't remove: - while (! this.configThreadTerminate) { - PutRequest request = XACMLPdpServlet.queue.take(); - StdPDPStatus newStatus = new StdPDPStatus(); - - PDPEngine newEngine = null; - synchronized(pdpStatusLock) { - XACMLPdpServlet.status.setStatus(Status.UPDATING_CONFIGURATION); - newEngine = XACMLPdpLoader.loadEngine(newStatus, request.policyProperties, request.pipConfigProperties); - } - if (newEngine != null) { - synchronized(XACMLPdpServlet.pdpEngineLock) { - XACMLPdpServlet.pdpEngine = newEngine; - try { - logger.info("Saving configuration."); - if (request.policyProperties != null) { - try (OutputStream os = Files.newOutputStream(XACMLPdpLoader.getPDPPolicyCache())) { - request.policyProperties.store(os, ""); - } - } - if (request.pipConfigProperties != null) { - try (OutputStream os = Files.newOutputStream(XACMLPdpLoader.getPIPConfig())) { - request.pipConfigProperties.store(os, ""); - } - } - newStatus.setStatus(Status.UP_TO_DATE); - } catch (Exception e) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Failed to store new properties."+e); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, "Failed to store new properties"); - newStatus.setStatus(Status.LOAD_ERRORS); - newStatus.addLoadWarning("Unable to save configuration: " + e.getMessage()); - } - } - } else { - newStatus.setStatus(Status.LAST_UPDATE_FAILED); - } - synchronized(pdpStatusLock) { - XACMLPdpServlet.status.set(newStatus); - } - } - } catch (InterruptedException e) { - logger.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "interrupted"+e); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, "interrupted"); - Thread.currentThread().interrupt(); - } - } - - public static PDPEngine getPDPEngine(){ - PDPEngine myEngine = null; - synchronized(pdpEngineLock) { - myEngine = XACMLPdpServlet.pdpEngine; - } - return myEngine; - } - - public static Constructor<?> getCreateUpdatePolicyConstructor(){ - return createUpdatePolicyConstructor; - } - - private static void setCreateUpdatePolicyConstructor(String createUpdateResourceName) throws ServletException{ - try{ - Class<?> createUpdateclass = Class.forName(createUpdateResourceName); - createUpdatePolicyConstructor = createUpdateclass.getConstructor(PolicyParameters.class, String.class, boolean.class); - }catch(Exception e){ - PolicyLogger.error(MessageCodes.MISS_PROPERTY_ERROR, "createUpdatePolicy.impl.className", "xacml.pdp.init" +e); - throw new ServletException("Could not find the Class name : " +createUpdateResourceName + "\n" +e.getMessage()); - } - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/controller/PolicyEngineServices.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/controller/PolicyEngineServices.java deleted file mode 100644 index 48539ad83..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/controller/PolicyEngineServices.java +++ /dev/null @@ -1,658 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.controller; - -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiImplicitParam; -import io.swagger.annotations.ApiImplicitParams; -import io.swagger.annotations.ApiOperation; - -import java.lang.reflect.InvocationTargetException; -import java.util.Collection; -import java.util.concurrent.atomic.AtomicLong; - -import javax.servlet.http.HttpServletRequest; - -import org.openecomp.policy.api.ConfigRequestParameters; -import org.openecomp.policy.api.DecisionRequestParameters; -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.policy.api.DeletePolicyParameters; -import org.openecomp.policy.api.DictionaryParameters; -import org.openecomp.policy.api.DictionaryResponse; -import org.openecomp.policy.api.EventRequestParameters; -import org.openecomp.policy.api.MetricsResponse; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PushPolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.XACMLPdpServlet; -import org.openecomp.policy.pdp.rest.api.models.ConfigFirewallPolicyAPIRequest; -import org.openecomp.policy.pdp.rest.api.models.ConfigNameRequest; -import org.openecomp.policy.pdp.rest.api.models.ConfigPolicyAPIRequest; -import org.openecomp.policy.pdp.rest.api.models.PolicyConfig; -import org.openecomp.policy.pdp.rest.api.services.CreateUpdateConfigPolicyService; -import org.openecomp.policy.pdp.rest.api.services.CreateUpdateDictionaryService; -import org.openecomp.policy.pdp.rest.api.services.CreateUpdateFirewallPolicyService; -import org.openecomp.policy.pdp.rest.api.services.CreateUpdatePolicyService; -import org.openecomp.policy.pdp.rest.api.services.DeletePolicyService; -import org.openecomp.policy.pdp.rest.api.services.GetConfigService; -import org.openecomp.policy.pdp.rest.api.services.GetDecisionService; -import org.openecomp.policy.pdp.rest.api.services.GetDictionaryService; -import org.openecomp.policy.pdp.rest.api.services.GetMetricsService; -import org.openecomp.policy.pdp.rest.api.services.ListConfigService; -import org.openecomp.policy.pdp.rest.api.services.NotificationService; -import org.openecomp.policy.pdp.rest.api.services.NotificationService.NotificationServiceType; -import org.openecomp.policy.pdp.rest.api.services.PolicyEngineImportService; -import org.openecomp.policy.pdp.rest.api.services.PushPolicyService; -import org.openecomp.policy.pdp.rest.api.services.SendEventService; -import org.openecomp.policy.pdp.rest.config.PDPApiAuth; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.http.converter.HttpMessageNotReadableException; -import org.springframework.web.bind.annotation.ExceptionHandler; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestHeader; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.ResponseBody; -import org.springframework.web.bind.annotation.RestController; -import org.springframework.web.multipart.MultipartFile; - -import springfox.documentation.annotations.ApiIgnore; - -@RestController -@Api(value = "Policy Engine Services") -@RequestMapping("/") -public class PolicyEngineServices { - private static Logger logger = FlexLogger.getLogger(PolicyEngineServices.class.getName()); - private static final String NOTIFICATIONPERM = "notification"; - - private final AtomicLong configCounter = new AtomicLong(); - private final AtomicLong configNameCounter = new AtomicLong(); - private final AtomicLong eventCounter = new AtomicLong(); - private final AtomicLong decisionCounter = new AtomicLong(); - private final AtomicLong pushCounter = new AtomicLong(); - private final AtomicLong deleteCounter = new AtomicLong(); - private final AtomicLong createPolicyCounter = new AtomicLong(); - private final AtomicLong updatePolicyCounter = new AtomicLong(); - private final AtomicLong createDictionaryCounter = new AtomicLong(); - private final AtomicLong updateDictionaryCounter = new AtomicLong(); - private final AtomicLong getDictionaryCounter = new AtomicLong(); - private final AtomicLong policyEngineImportCounter = new AtomicLong(); - private final AtomicLong deprecatedCounter = new AtomicLong(); - private final AtomicLong metricCounter = new AtomicLong(); - private final AtomicLong notificationCounter = new AtomicLong(); - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP)") - @RequestMapping(value = "/getConfig", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<Collection<PolicyConfig>> getConfig( - @RequestBody ConfigRequestParameters configRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - Collection<PolicyConfig> policyConfig = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "getConfig")) { - GetConfigService getConfigService = new GetConfigService( - configRequestParameters, requestID); - policyConfig = getConfigService.getResult(); - status = getConfigService.getResponseCode(); - } - configCounter.incrementAndGet(); - return new ResponseEntity<>(policyConfig, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Gets the configuration from the PolicyDecisionPoint(PDP) using PolicyName") - @RequestMapping(value = "/getConfigByPolicyName", method = RequestMethod.POST) - @ResponseBody - @Deprecated - public ResponseEntity<Collection<PolicyConfig>> getConfigByPolicyName( - @RequestBody ConfigNameRequest configNameRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - Collection<PolicyConfig> policyConfig = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID,"getConfigByPolicyName")) { - ConfigRequestParameters configRequestParameters = new ConfigRequestParameters(); - configRequestParameters.setPolicyName(configNameRequest - .getPolicyName()); - GetConfigService getConfigService = new GetConfigService( - configRequestParameters, requestID); - policyConfig = getConfigService.getResult(); - status = getConfigService.getResponseCode(); - } - configNameCounter.incrementAndGet(); - return new ResponseEntity<>(policyConfig, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Gets the list of configuration policies from the PDP") - @RequestMapping(value = "/listConfig", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<Collection<String>> listConfig( - @RequestBody ConfigRequestParameters configRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - Collection<String> results = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth - .checkPermissions(clientEncoding, requestID, "listConfig")) { - ListConfigService listConfigService = new ListConfigService( - configRequestParameters, requestID); - results = listConfigService.getResult(); - status = listConfigService.getResponseCode(); - } - configCounter.incrementAndGet(); - return new ResponseEntity<>(results, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name ="Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name ="Environment", required = true, paramType = "Header") - }) - @ApiOperation(value= "Gets the policy metrics from the PolicyAccessPoint(PAP)") - @RequestMapping(value="/getMetrics", method=RequestMethod.GET) - @ResponseBody - public ResponseEntity<MetricsResponse> getMetrics( - @RequestHeader(value="ClientAuth", required=true)String clientEncoding, - @RequestHeader(value="X-ECOMP-RequestID", required=false)String requestID) { - MetricsResponse response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if(PDPApiAuth.checkPermissions(clientEncoding, requestID, "getMetrics")){ - GetMetricsService getMetricsService = new GetMetricsService(requestID); - response = getMetricsService.getResult(); - status = getMetricsService.getResponseCode(); - } - metricCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Registers DMaaP Topic to recieve notification from Policy Engine") - @RequestMapping(value = "/getNotification", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<String> getNotification( - @RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Notification Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.ADD); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } - notificationCounter.incrementAndGet(); - return new ResponseEntity<>(policyResponse, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "De-Registers DMaaP Topic to stop recieving notifications from Policy Engine") - @RequestMapping(value = "/stopNotification", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<String> stopNotification( - @RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Notification Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.REMOVE); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } - notificationCounter.incrementAndGet(); - return new ResponseEntity<>(policyResponse, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Sends Heartbeat to DMaaP Topic Registry to continue recieving notifications from Policy Engine") - @RequestMapping(value = "/sendHeartbeat", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<String> sendHeartbeat( - @RequestBody String notificationTopic, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String policyResponse = "Error Unauthorized to use Heartbeat Service."; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, NOTIFICATIONPERM)) { - NotificationService notificationService = new NotificationService(notificationTopic, requestID, NotificationServiceType.HB); - policyResponse = notificationService.getResult(); - status = notificationService.getResponseCode(); - } - return new ResponseEntity<>(policyResponse, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Sends the Events specified to the Policy Engine") - @RequestMapping(value = "/sendEvent", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<Collection<PolicyResponse>> sendEvent( - @RequestBody EventRequestParameters eventRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - Collection<PolicyResponse> policyResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, "sendEvent")) { - SendEventService sendEventService = new SendEventService( - eventRequestParameters, requestID); - policyResponse = sendEventService.getResult(); - status = sendEventService.getResponseCode(); - } - eventCounter.incrementAndGet(); - return new ResponseEntity<>(policyResponse, - status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Gets the Decision using specified decision parameters") - @RequestMapping(value = "/getDecision", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<DecisionResponse> getDecision( - @RequestBody DecisionRequestParameters decisionRequestParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - DecisionResponse decisionResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "getDecision")) { - GetDecisionService getDecisionService = new GetDecisionService( - decisionRequestParameters, requestID); - decisionResponse = getDecisionService.getResult(); - status = getDecisionService.getResponseCode(); - } - decisionCounter.incrementAndGet(); - return new ResponseEntity<>(decisionResponse, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Pushes the specified policy to the PDP Group.") - @RequestMapping(value = "/pushPolicy", method = RequestMethod.PUT) - @ResponseBody - public ResponseEntity<String> pushPolicy( - @RequestBody PushPolicyParameters pushPolicyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth - .checkPermissions(clientEncoding, requestID, "pushPolicy")) { - PushPolicyService pushPolicyService = new PushPolicyService( - pushPolicyParameters, requestID); - response = pushPolicyService.getResult(); - status = pushPolicyService.getResponseCode(); - } - pushCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Deletes the specified policy from the PDP Group or PAP.") - @RequestMapping(value = "/deletePolicy", method = RequestMethod.DELETE) - @ResponseBody - public ResponseEntity<String> deletePolicy( - @RequestBody DeletePolicyParameters deletePolicyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "deletePolicy")) { - DeletePolicyService deletePolicyService = new DeletePolicyService( - deletePolicyParameters, requestID); - response = deletePolicyService.getResult(); - status = deletePolicyService.getResponseCode(); - } - deleteCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Creates a Policy based on given Policy Parameters.") - @RequestMapping(value = "/createPolicy", method = RequestMethod.PUT) - @ResponseBody - public ResponseEntity<String> createPolicy( - @RequestBody PolicyParameters policyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "createPolicy")) { - CreateUpdatePolicyService createPolicyService; - try { - createPolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance( - policyParameters, requestID, false); - response = createPolicyService.getResult(); - status = createPolicyService.getResponseCode(); - } catch (InstantiationException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - logger.error(e.getMessage(), e); - response = "Problem with CreateUpdate Policy Service. "; - status = HttpStatus.INTERNAL_SERVER_ERROR; - } - } - createPolicyCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Updates a Policy based on given Policy Parameters.") - @RequestMapping(value = "/updatePolicy", method = RequestMethod.PUT) - @ResponseBody - public ResponseEntity<String> updatePolicy( - @RequestBody PolicyParameters policyParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "updatePolicy")) { - CreateUpdatePolicyService updatePolicyService; - try { - updatePolicyService = (CreateUpdatePolicyService) XACMLPdpServlet.getCreateUpdatePolicyConstructor().newInstance( - policyParameters, requestID, true); - response = updatePolicyService.getResult(); - status = updatePolicyService.getResponseCode(); - } catch (InstantiationException | IllegalAccessException - | IllegalArgumentException | InvocationTargetException e) { - logger.error(e.getMessage(), e); - response = "Problem with CreateUpdate Policy Service. "; - status = HttpStatus.INTERNAL_SERVER_ERROR; - } - } - updatePolicyCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Creates a Dictionary Item for a specific dictionary based on given Parameters.") - @RequestMapping(value = "/createDictionaryItem", method = RequestMethod.PUT) - @ResponseBody - public ResponseEntity<String> createDictionaryItem( - @RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "createDictionary")) { - CreateUpdateDictionaryService createDictionaryService = new CreateUpdateDictionaryService( - dictionaryParameters, requestID, false); - response = createDictionaryService.getResult(); - status = createDictionaryService.getResponseCode(); - } - createDictionaryCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Updates a Dictionary Item for a specific dictionary based on given Parameters.") - @RequestMapping(value = "/updateDictionaryItem", method = RequestMethod.PUT) - @ResponseBody - public ResponseEntity<String> updateDictionaryItem( - @RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "updateDictionary")) { - CreateUpdateDictionaryService updateDictionaryService = new CreateUpdateDictionaryService( - dictionaryParameters, requestID, true); - response = updateDictionaryService.getResult(); - status = updateDictionaryService.getResponseCode(); - } - updateDictionaryCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Gets the dictionary items from the PAP") - @RequestMapping(value = "/getDictionaryItems", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<DictionaryResponse> getDictionaryItems( - @RequestBody DictionaryParameters dictionaryParameters, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - DictionaryResponse dictionaryResponse = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "getDictionary")) { - GetDictionaryService getDictionaryService = new GetDictionaryService( - dictionaryParameters, requestID); - dictionaryResponse = getDictionaryService.getResult(); - status = getDictionaryService.getResponseCode(); - } - getDictionaryCounter.incrementAndGet(); - return new ResponseEntity<>(dictionaryResponse, - status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Imports Policy based on the parameters which represent the service used to create a policy Service.") - @RequestMapping(value = "/policyEngineImport", method = RequestMethod.POST) - @ResponseBody - public ResponseEntity<String> policyEngineImport( - @RequestParam("importParametersJson") String importParametersJson, - @RequestParam("file") MultipartFile file, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "policyEngineImport")) { - PolicyEngineImportService policyEngineImportService = new PolicyEngineImportService( - importParametersJson, file, requestID); - response = policyEngineImportService.getResult(); - status = policyEngineImportService.getResponseCode(); - } - policyEngineImportCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Creates a Config Policy based on given Policy Parameters.") - @RequestMapping(value = "/createConfig", method = RequestMethod.PUT) - @ResponseBody - @Deprecated - public ResponseEntity<String> createConfig( - @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "createPolicy")) { - CreateUpdateConfigPolicyService createPolicyService = new CreateUpdateConfigPolicyService( - configPolicyAPIRequest, requestID, false); - response = createPolicyService.getResult(); - status = createPolicyService.getResponseCode(); - } - deprecatedCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Updates a Config Policy based on given Policy Parameters.") - @RequestMapping(value = "/updateConfig", method = RequestMethod.PUT) - @ResponseBody - @Deprecated - public ResponseEntity<String> updateConfig( - @RequestBody ConfigPolicyAPIRequest configPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "updatePolicy")) { - CreateUpdateConfigPolicyService updatePolicyService = new CreateUpdateConfigPolicyService( - configPolicyAPIRequest, requestID, true); - response = updatePolicyService.getResult(); - status = updatePolicyService.getResponseCode(); - } - deprecatedCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Creates a Config Firewall Policy") - @RequestMapping(value = "/createFirewallConfig", method = RequestMethod.PUT) - @ResponseBody - @Deprecated - public ResponseEntity<String> createFirewallConfig( - @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "createPolicy")) { - CreateUpdateFirewallPolicyService createFirewallPolicyService = new CreateUpdateFirewallPolicyService( - configFirewallPolicyAPIRequest, requestID, false); - response = createFirewallPolicyService.getResult(); - status = createFirewallPolicyService.getResponseCode(); - } - deprecatedCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiImplicitParams({ - @ApiImplicitParam(name = "Authorization", required = true, paramType = "Header"), - @ApiImplicitParam(name = "Environment", required = true, paramType = "Header") }) - @ApiOperation(value = "Updates a Config Firewall Policy") - @RequestMapping(value = "/updateFirewallConfig", method = RequestMethod.PUT) - @ResponseBody - @Deprecated - public ResponseEntity<String> updateFirewallConfig( - @RequestBody ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - @RequestHeader(value = "ClientAuth", required = true) String clientEncoding, - @RequestHeader(value = "X-ECOMP-RequestID", required = false) String requestID) { - String response = null; - HttpStatus status = HttpStatus.UNAUTHORIZED; - // Check Permissions. - if (PDPApiAuth.checkPermissions(clientEncoding, requestID, - "updatePolicy")) { - CreateUpdateFirewallPolicyService updateFirewallPolicyService = new CreateUpdateFirewallPolicyService( - configFirewallPolicyAPIRequest, requestID, true); - response = updateFirewallPolicyService.getResult(); - status = updateFirewallPolicyService.getResponseCode(); - } - deprecatedCounter.incrementAndGet(); - return new ResponseEntity<>(response, status); - } - - @ApiOperation(value = "Gets the API Services usage Information") - @ApiIgnore - @RequestMapping(value = "/count", method = RequestMethod.GET) - public String getCount() { - return "Total Config Calls : " + configCounter + "\n" - + "Total Config calls made using Policy File Name: " - + configNameCounter + "\n" + "Total Event Calls : " - + eventCounter + "\nTotal Decision Calls: " + decisionCounter - + "\nTotal Push policy Calls: " + pushCounter - + "\nTotal Delete Policy Calls: " + deleteCounter - + "\nTotal Create Policy Calls: " + createPolicyCounter - + "\nTotal Update Policy Calls: " + updatePolicyCounter - + "\nTotal Create Dictionary Calls: " + createDictionaryCounter - + "\nTotal Update Dictionary Calls: " + updateDictionaryCounter - + "\nTotal Get Dictionary Calls: " + getDictionaryCounter - + "\nTotal PolicyEngine Import Calls: " - + policyEngineImportCounter - + "\nTotal Deprecated Policy Calls: " + deprecatedCounter - + "\nTotal Metrics Calls:" + metricCounter - + "\nTotal Notification Calls:" + notificationCounter; - } - - @ExceptionHandler({ HttpMessageNotReadableException.class }) - public ResponseEntity<String> messageNotReadableExceptionHandler( - HttpServletRequest req, HttpMessageNotReadableException exception) { - logger.error("Request not readable: {}", exception); - StringBuilder message = new StringBuilder(); - message.append(exception.getMessage()); - if (exception.getCause() != null) { - message.append(" Reason Caused: " - + exception.getCause().getMessage()); - } - return new ResponseEntity<>(message.toString(), HttpStatus.BAD_REQUEST); - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigFirewallPolicyAPIRequest.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigFirewallPolicyAPIRequest.java deleted file mode 100644 index 4ae368ae7..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigFirewallPolicyAPIRequest.java +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.models; - -import io.swagger.annotations.ApiModel; - -import java.io.Serializable; - -@ApiModel -public class ConfigFirewallPolicyAPIRequest implements Serializable{ - private static final long serialVersionUID = -7460640390070215401L; - - private String policyName = null; - private String policyScope = null; - private String firewallJson = null; - private String riskType = "default"; - private String riskLevel = "5"; - private String guard = "false"; - private String ttlDate = null; - - public String getPolicyName() { - return policyName; - } - public String getPolicyScope() { - return policyScope; - } - public String getFirewallJson() { - return firewallJson; - } - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - public void setPolicyScope(String policyScope) { - this.policyScope = policyScope; - } - public void setFirewallJson(String firewallJson) { - this.firewallJson = firewallJson; - } - public String getRiskType() { - return riskType; - } - public void setRiskType(String riskType) { - this.riskType = riskType; - } - public String getRiskLevel() { - return riskLevel; - } - public void setRiskLevel(String riskLevel) { - this.riskLevel = riskLevel; - } - public String getGuard() { - return guard; - } - public void setGuard(String guard) { - this.guard = guard; - } - public String getTtlDate() { - return ttlDate; - } - public void setTtlDate(String ttlDate) { - this.ttlDate = ttlDate; - } -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigNameRequest.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigNameRequest.java deleted file mode 100644 index 91881a3b2..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigNameRequest.java +++ /dev/null @@ -1,39 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.models; - -import io.swagger.annotations.ApiModel; - -import java.io.Serializable; - -@ApiModel -public class ConfigNameRequest implements Serializable{ - private static final long serialVersionUID = 4487978240532425305L; - - private String policyName = null; - - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - public String getPolicyName() { - return policyName; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigPolicyAPIRequest.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigPolicyAPIRequest.java deleted file mode 100644 index ed5d0ccaf..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/ConfigPolicyAPIRequest.java +++ /dev/null @@ -1,188 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.models; - -import io.swagger.annotations.ApiModel; - -import java.io.Serializable; -import java.util.Map; - -@ApiModel -public class ConfigPolicyAPIRequest implements Serializable{ - private static final long serialVersionUID = -4103391389984557025L; - - private String policyScope = null; - private String policyName = null; - private String policyDescription = null; - private String ecompName = null; - private String configName = null; - private Map<String,String> configAttributes = null; - private String configType = null; - private String body = null; - private String riskType = "default"; - private String riskLevel = "5"; - private String guard = "false"; - private String ttlDate = null; - - /** - * @return the policyScope - */ - public String getPolicyScope() { - return policyScope; - } - /** - * @return the policyName - */ - public String getPolicyName() { - return policyName; - } - /** - * @return the policyDescription - */ - public String getPolicyDescription() { - return policyDescription; - } - /** - * @return the ecompName - */ - public String getEcompName() { - return ecompName; - } - /** - * @return the configName - */ - public String getConfigName() { - return configName; - } - /** - * @return the configAttributes - */ - public Map<String, String> getConfigAttributes() { - return configAttributes; - } - /** - * @return the configType - */ - public String getConfigType() { - return configType; - } - /** - * @return the body - */ - public String getBody() { - return body; - } - /** - * @param policyScope the policyScope to set - */ - public void setPolicyScope(String policyScope) { - this.policyScope = policyScope; - } - /** - * @param policyName the policyName to set - */ - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - /** - * @param policyDescription the policyDescription to set - */ - public void setPolicyDescription(String policyDescription) { - this.policyDescription = policyDescription; - } - /** - * @param ecompName the ecompName to set - */ - public void setEcompName(String ecompName) { - this.ecompName = ecompName; - } - /** - * @param configName the configName to set - */ - public void setConfigName(String configName) { - this.configName = configName; - } - /** - * @param configAttributes the configAttributes to set - */ - public void setConfigAttributes(Map<String, String> configAttributes) { - this.configAttributes = configAttributes; - } - /** - * @param configType the configType to set - */ - public void setConfigType(String configType) { - this.configType = configType; - } - /** - * @param body the body to set - */ - public void setBody(String body) { - this.body = body; - } - /** - * @return the guard - */ - public String getGuard() { - return guard; - } - /** - * @param guard the guard to set - */ - public void setGuard(String guard) { - this.guard = guard; - } - /** - * @return the riskLevel - */ - public String getRiskLevel() { - return riskLevel; - } - /** - * @param riskLevel the riskLevel to set - */ - public void setRiskLevel(String riskLevel) { - this.riskLevel = riskLevel; - } - /** - * @return the ttlDate - */ - public String getTtlDate() { - return ttlDate; - } - /** - * @param ttlDate the ttlDate to set - */ - public void setTtlDate(String ttlDate) { - this.ttlDate = ttlDate; - } - /** - * @return the riskType - */ - public String getRiskType() { - return riskType; - } - /** - * @param riskType the riskType to set - */ - public void setRiskType(String riskType) { - this.riskType = riskType; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PDPResponse.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PDPResponse.java deleted file mode 100644 index 2301d003c..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PDPResponse.java +++ /dev/null @@ -1,159 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.models; - -import java.util.Map; - -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.policy.api.PolicyDecision; -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PolicyResponseStatus; -import org.openecomp.policy.api.PolicyType; -import org.openecomp.policy.models.APIConfigResponse; - -public class PDPResponse implements APIConfigResponse, PolicyResponse, DecisionResponse{ - private String policyConfigMessage; - private PolicyConfigStatus policyConfigStatus; - private PolicyType type; - private String config; - private String policyName; - private String policyVersion; - private Map<String, String> matchingConditions; - private Map<String, String> responseAttributes; - private Map<String, String> property; - private PolicyResponseStatus policyResponseStatus; - private String policyResponseMessage; - private Map<String,String> actionAdvised; - private Map<String,String> actionTaken; - private Map<String,String> requestAttributes; - private PolicyDecision policyDecision; - private String details; - - public void setStatus(String message, PolicyResponseStatus policyResponseStatus, PolicyConfigStatus policyConfigStatus) { - this.policyConfigMessage = message; - this.policyResponseMessage = message; - this.policyResponseStatus = policyResponseStatus; - this.policyConfigStatus = policyConfigStatus; - } - public String getConfig() { - return config; - } - public void setConfig(String config) { - this.config = config; - } - public PolicyType getType() { - return type; - } - public void setType(PolicyType type) { - this.type = type; - } - public PolicyConfigStatus getPolicyConfigStatus() { - return policyConfigStatus; - } - public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) { - this.policyConfigStatus = policyConfigStatus; - } - public String getPolicyConfigMessage() { - return policyConfigMessage; - } - public void setPolicyConfigMessage(String policyConfigMessage) { - this.policyConfigMessage = policyConfigMessage; - } - public Map<String, String> getProperty() { - return property; - } - public void setProperty(Map<String, String> property) { - this.property = property; - } - public String getPolicyName(){ - return policyName; - } - public void setPolicyName(String policyName){ - this.policyName = policyName; - } - public String getPolicyVersion(){ - return policyVersion; - } - public void setPolicyVersion(String policyVersion){ - this.policyVersion = policyVersion; - } - public Map<String, String> getMatchingConditions(){ - return matchingConditions; - } - public void setMatchingConditions(Map<String, String> matchingConditions){ - this.matchingConditions = matchingConditions; - } - public void setResponseAttributes(Map<String,String> responseAttributes){ - this.responseAttributes = responseAttributes; - } - public Map<String,String> getResponseAttributes(){ - return responseAttributes; - } - public void setPolicyResponseStatus(PolicyResponseStatus policyResponseStatus) { - this.policyResponseStatus = policyResponseStatus; - } - @Override - public PolicyResponseStatus getPolicyResponseStatus() { - return policyResponseStatus; - } - public void setDecision(PolicyDecision policyDecision){ - this.policyDecision = policyDecision; - } - @Override - public PolicyDecision getDecision() { - return policyDecision; - } - public void setDetails(String details){ - this.details = details; - } - @Override - public String getDetails() { - return details; - } - public void setActionAdvised(Map<String, String> actionAdvised) { - this.actionAdvised = actionAdvised; - } - @Override - public Map<String, String> getActionAdvised() { - return actionAdvised; - } - public void setActionTaken(Map<String, String> actionTaken) { - this.actionTaken = actionTaken; - } - @Override - public Map<String, String> getActionTaken() { - return actionTaken; - } - public void setRequestAttributes(Map<String, String> requestAttributes) { - this.requestAttributes = requestAttributes; - } - @Override - public Map<String, String> getRequestAttributes() { - return requestAttributes; - } - public void setPolicyResponseMessage(String policyResponseMessage) { - this.policyResponseMessage = policyResponseMessage; - } - @Override - public String getPolicyResponseMessage() { - return policyResponseMessage; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PolicyConfig.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PolicyConfig.java deleted file mode 100644 index 729ffbb6f..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/models/PolicyConfig.java +++ /dev/null @@ -1,95 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.models; - -import io.swagger.annotations.ApiModel; - -import java.util.Map; - -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.policy.api.PolicyType; -import org.openecomp.policy.models.APIConfigResponse; - -@ApiModel -public class PolicyConfig implements APIConfigResponse{ - private String policyConfigMessage; - private PolicyConfigStatus policyConfigStatus; - private PolicyType type; - private String config; - private String policyName; - private String policyVersion; - private Map<String, String> matchingConditions; - private Map<String, String> responseAttributes; - private Map<String, String> property; - public String getConfig() { - return config; - } - public void setConfig(String config) { - this.config = config; - } - public PolicyType getType() { - return type; - } - public void setType(PolicyType type) { - this.type = type; - } - public PolicyConfigStatus getPolicyConfigStatus() { - return policyConfigStatus; - } - public void setPolicyConfigStatus(PolicyConfigStatus policyConfigStatus) { - this.policyConfigStatus = policyConfigStatus; - } - public String getPolicyConfigMessage() { - return policyConfigMessage; - } - public void setPolicyConfigMessage(String policyConfigMessage) { - this.policyConfigMessage = policyConfigMessage; - } - public Map<String, String> getProperty() { - return property; - } - public void setProperty(Map<String, String> property) { - this.property = property; - } - public String getPolicyName(){ - return policyName; - } - public void setPolicyName(String policyName){ - this.policyName = policyName; - } - public String getPolicyVersion(){ - return policyVersion; - } - public void setPolicyVersion(String policyVersion){ - this.policyVersion = policyVersion; - } - public Map<String, String> getMatchingConditions(){ - return matchingConditions; - } - public void setMatchingConditions(Map<String, String> matchingConditions){ - this.matchingConditions = matchingConditions; - } - public void setResponseAttributes(Map<String,String> responseAttributes){ - this.responseAttributes = responseAttributes; - } - public Map<String,String> getResponseAttributes(){ - return responseAttributes; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ActionPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ActionPolicyService.java deleted file mode 100644 index 7640cad0e..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ActionPolicyService.java +++ /dev/null @@ -1,105 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Action Policy Implementation. - * - * @version 0.1 - */ -public class ActionPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(ActionPolicyService.class.getName()); - private PAPServices papServices = null; - - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private Map<String,String> componentAttributes = null; - private String actionAttribute = null; - private String actionPerformer = null; - - public ActionPolicyService(String policyScope, String policyName, - PolicyParameters policyParameters) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getAttributes()==null || policyParameters.getAttributes().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Component Attributes given."; - return false; - } - componentAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING); - if (componentAttributes==null||componentAttributes.isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Component Attributes given."; - return false; - } - actionAttribute = policyParameters.getActionAttribute(); - if (actionAttribute==null||actionAttribute.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Action Attribute given."; - return false; - } - actionPerformer = policyParameters.getActionPerformer(); - if (actionPerformer==null||actionPerformer.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Action Performer given."; - return false; - } - if(!"PEP".equalsIgnoreCase(actionPerformer)&& !"PDP".equalsIgnoreCase(actionPerformer)){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Invalid Action Performer given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - // Create Policy - StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyName, policyParameters.getPolicyDescription(), - componentAttributes, policyParameters.getDynamicRuleAlgorithmLabels(), policyParameters.getDynamicRuleAlgorithmFunctions(), - policyParameters.getDynamicRuleAlgorithmField1(), policyParameters.getDynamicRuleAlgorithmField2(), actionPerformer, actionAttribute, updateFlag, policyScope, 0); - // send Json to PAP - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Action"}, policyParameters.getRequestID(), "Action"); - LOGGER.info(response); - return response; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSParamPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSParamPolicyService.java deleted file mode 100644 index 37d07660d..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSParamPolicyService.java +++ /dev/null @@ -1,96 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * BRMS Param Policy Implementation. - * - * @version 0.1 - */ -public class BRMSParamPolicyService{ - private static final Logger LOGGER = FlexLogger.getLogger(BRMSParamPolicyService.class.getName()); - private PAPServices papServices = null; - - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private Map<AttributeType, Map<String, String>> drlRuleAndUIParams = null; - - public BRMSParamPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - boolean levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if(!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - return false; - } - drlRuleAndUIParams = policyParameters.getAttributes(); - if(drlRuleAndUIParams==null || drlRuleAndUIParams.isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Rule Attributes given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - // Create Policy - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Param",policyName, policyParameters.getPolicyDescription(), - "BRMS_PARAM_RULE",updateFlag,policyScope, - drlRuleAndUIParams.get(AttributeType.MATCHING), 0, "DROOLS", - null, drlRuleAndUIParams.get(AttributeType.RULE), policyParameters.getRiskLevel(), - policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date, policyParameters.getControllerName(), policyParameters.getDependencyNames()); - // Send JSON to PAP - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigBrmsParam"); - LOGGER.info(response); - return response; - } - -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSRawPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSRawPolicyService.java deleted file mode 100644 index c68b1695b..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/BRMSRawPolicyService.java +++ /dev/null @@ -1,106 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * BRMS RAW Policy Implementation. - * - * @version 0.1 - */ -public class BRMSRawPolicyService{ - private static Logger LOGGER = FlexLogger.getLogger(BRMSRawPolicyService.class.getName()); - private static PAPServices papServices = null; - - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private boolean levelCheck = false; - private String brmsRawBody = null; - - public BRMSRawPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - brmsRawBody = policyParameters.getConfigBody(); - if(brmsRawBody==null || brmsRawBody.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " No Rule Body given"; - return false; - } - message = PolicyUtils.brmsRawValidate(brmsRawBody); - if(message.contains("[ERR")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Raw rule given is invalid" +message; - return false; - } - levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if(!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - Map<String,String> ruleAttributes = null; - if(policyParameters.getAttributes()!=null){ - ruleAttributes = policyParameters.getAttributes().get(AttributeType.RULE); - } - // Create Policy - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("BRMS_Raw",policyName,policyParameters.getPolicyDescription(), - "BRMS_RAW_RULE",updateFlag,policyScope, ruleAttributes, 0, "DROOLS", - brmsRawBody, policyParameters.getRiskLevel(), - policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date, policyParameters.getControllerName(), policyParameters.getDependencyNames()); - // Send JSON to PAP - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigBrmsRaw"); - LOGGER.info(response); - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopFaultPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopFaultPolicyService.java deleted file mode 100644 index b2ff00ed5..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopFaultPolicyService.java +++ /dev/null @@ -1,121 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Closed Loop Fault Policy Implementation. - * - * @version 0.1 - */ -public class ClosedLoopFaultPolicyService{ - private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopFaultPolicyService.class.getName()); - private PAPServices papServices = null; - - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private JsonObject configBody = null; - - public ClosedLoopFaultPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getConfigBody()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " No Config Body Present"; - return false; - } - if(!PolicyApiUtils.validateNONASCIICharactersAndAllowSpaces(policyParameters.getConfigBody())){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - return false; - } - try{ - configBody = PolicyApiUtils.stringToJsonObject(policyParameters.getConfigBody()); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - LOGGER.error("Json Parse Exception.", e); - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - String oldPolicyName = null; - if (updateFlag){ - operation = "update"; - if (policyName.endsWith("_Draft")) { - oldPolicyName = policyName + "_Draft.1"; - } - } else { - operation = "create"; - } - // get values and attributes from the JsonObject - if(!configBody.containsKey("ecompname")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Ecomp Name given."; - LOGGER.error(message); - return message; - } - String ecompName = configBody.get("ecompname").toString().trim().replace("\"", ""); - if (ecompName==null||ecompName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Ecomp Name given."; - LOGGER.error(message); - return message; - } - boolean levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if (!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - LOGGER.error(message); - return message; - } - String jsonBody = configBody.toString(); - // Create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("ClosedLoop_Fault", policyName, policyParameters.getPolicyDescription(), ecompName, - jsonBody, false, oldPolicyName, null, updateFlag, policyScope, 0, policyParameters.getRiskLevel(), - policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date); - //send JSON object to PAP - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigClosedLoop"); - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopPMPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopPMPolicyService.java deleted file mode 100644 index 3fb8f461c..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ClosedLoopPMPolicyService.java +++ /dev/null @@ -1,122 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Closed Loop PM policy Implementation. - * - * @version 0.1 - */ -public class ClosedLoopPMPolicyService{ - private static final Logger LOGGER = FlexLogger.getLogger(ClosedLoopPMPolicyService.class.getName()); - - private PAPServices papServices = null; - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private JsonObject configBody = null; - - public ClosedLoopPMPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getConfigBody()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " No Config Body Present"; - return false; - } - if(!PolicyApiUtils.validateNONASCIICharactersAndAllowSpaces(policyParameters.getConfigBody())){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - return false; - } - try{ - configBody = PolicyApiUtils.stringToJsonObject(policyParameters.getConfigBody()); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - LOGGER.error("Error during parsing JSON config body for Closed loop PM policy " , e); - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException{ - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - // get values and attributes from the JsonObject - if(!configBody.containsKey("ecompname")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Ecomp Name given."; - LOGGER.error(message); - return message; - } - if(!configBody.containsKey("serviceTypePolicyName")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Service Type Policy Name given."; - LOGGER.error(message); - return message; - } - String ecompName = configBody.get("ecompname").toString().trim().replace("\"", ""); - if (ecompName==null||ecompName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Ecomp Name given."; - LOGGER.error(message); - return message; - } - boolean levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if (!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - LOGGER.error(message); - return message; - } - String jsonBody = configBody.toString(); - String serviceType = configBody.get("serviceTypePolicyName").toString().replace("\"", ""); - // Create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("ClosedLoop_PM", policyName, policyParameters.getPolicyDescription(), ecompName, - jsonBody, false, null, serviceType, updateFlag, policyScope, 0, policyParameters.getRiskLevel(), - policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date); - //send JSON object to PAP - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigClosedLoop"); - return response; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ConfigPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ConfigPolicyService.java deleted file mode 100644 index 3401d55b9..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ConfigPolicyService.java +++ /dev/null @@ -1,136 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Config Base Policy Implementation. - * - * @version 0.1 - */ -public class ConfigPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(ConfigPolicyService.class.getName()); - private PAPServices papServices = null; - - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private String ecompName = null; - private String configName = null; - - public ConfigPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getConfigBody()==null || policyParameters.getConfigBody().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ "No Config Body given."; - return false; - } - if(policyParameters.getConfigBodyType()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ "No Config Body Type given."; - return false; - } - boolean levelCheck = false; - levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if (!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - return false; - } - ecompName = policyParameters.getEcompName(); - configName = policyParameters.getConfigName(); - if(ecompName==null || ecompName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No ECOMP Name given."; - return false; - } - if(configName==null || configName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Config Name given."; - return false; - } - message = PolicyUtils.emptyPolicyValidator(ecompName); - if(!message.contains("success")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message; - return false; - } - message = PolicyUtils.emptyPolicyValidator(configName); - if(!message.contains("success")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - String configType = policyParameters.getConfigBodyType().toString(); - String body = policyParameters.getConfigBody(); - String configBody = null; - //check body for JSON form and remove single quotes if present - if ("JSON".equalsIgnoreCase(configType)) { - if (body.contains("'")) { - configBody = body.replace("'", "\""); - } else { - configBody = body; - } - } else { - configBody = body; - } - Map<String,String> configAttributes = null; - if(policyParameters.getAttributes()!=null){ - configAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING); - } - // create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("Base", policyName, policyParameters.getPolicyDescription(), ecompName, configName, configAttributes, configType, - configBody, updateFlag, policyScope,0, policyParameters.getRiskLevel(),policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date); - // Send Json to PAP. - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "Config"); - LOGGER.info(response); - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateConfigPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateConfigPolicyService.java deleted file mode 100644 index 6dde8a276..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateConfigPolicyService.java +++ /dev/null @@ -1,118 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyClass; -import org.openecomp.policy.api.PolicyConfigType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.api.PolicyType; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.ConfigPolicyAPIRequest; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class CreateUpdateConfigPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(CreateUpdateConfigPolicyService.class.getName()); - - private String response = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - - public CreateUpdateConfigPolicyService( - ConfigPolicyAPIRequest configPolicyAPIRequest, String requestID, - boolean updateFlag) { - try{ - run(configPolicyAPIRequest, requestID, updateFlag); - }catch(PolicyException e){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void run(ConfigPolicyAPIRequest configPolicyAPIRequest, - String requestID, boolean updateFlag) throws PolicyException{ - PolicyParameters policyParameters = new PolicyParameters(); - policyParameters.setPolicyClass(PolicyClass.Config); - policyParameters.setPolicyConfigType(PolicyConfigType.Base); - if(configPolicyAPIRequest.getPolicyScope()==null|| configPolicyAPIRequest.getPolicyScope().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - LOGGER.error(message); - throw new PolicyException(message); - } - if(configPolicyAPIRequest.getPolicyName()==null|| configPolicyAPIRequest.getPolicyName().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - LOGGER.error(message); - throw new PolicyException(message); - } - policyParameters.setPolicyName(configPolicyAPIRequest.getPolicyScope()+"."+configPolicyAPIRequest.getPolicyName()); - policyParameters.setPolicyDescription(configPolicyAPIRequest.getPolicyDescription()); - policyParameters.setEcompName(configPolicyAPIRequest.getEcompName()); - policyParameters.setConfigName(configPolicyAPIRequest.getConfigName()); - Map<AttributeType, Map<String, String>> attributes = new HashMap<>(); - attributes.put(AttributeType.MATCHING, configPolicyAPIRequest.getConfigAttributes()); - policyParameters.setAttributes(attributes); - if(configPolicyAPIRequest.getConfigType()==null){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy ConfigType given."; - LOGGER.error(message); - throw new PolicyException(message); - } - try{ - policyParameters.setConfigBodyType(PolicyType.valueOf(configPolicyAPIRequest.getConfigType())); - }catch(IllegalArgumentException e){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Improper ConfigType given."; - LOGGER.error(message, e); - throw new PolicyException(message); - } - policyParameters.setConfigBody(configPolicyAPIRequest.getBody()); - policyParameters.setRiskLevel(configPolicyAPIRequest.getRiskLevel()); - policyParameters.setRiskType(configPolicyAPIRequest.getRiskType()); - policyParameters.setGuard(Boolean.parseBoolean(configPolicyAPIRequest.getGuard())); - if(configPolicyAPIRequest.getTtlDate()==null){ - LOGGER.warn("No TTL date given "); - policyParameters.setTtlDate(null); - }else{ - try { - policyParameters.setTtlDate(new SimpleDateFormat("dd-MM-yyyy").parse(configPolicyAPIRequest.getTtlDate())); - } catch (ParseException e) { - LOGGER.warn("Error Parsing date given " + configPolicyAPIRequest.getTtlDate(), e); - policyParameters.setTtlDate(null); - } - } - CreateUpdatePolicyService createUpdatePolicyService = new CreateUpdatePolicyServiceImpl(policyParameters, requestID, updateFlag); - status = createUpdatePolicyService.getResponseCode(); - response = createUpdatePolicyService.getResult(); - } - - public String getResult() { - return response; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateDictionaryService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateDictionaryService.java deleted file mode 100644 index 3c102fa68..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateDictionaryService.java +++ /dev/null @@ -1,153 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.ByteArrayInputStream; -import java.util.UUID; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.DictionaryParameters; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class CreateUpdateDictionaryService { - private static final Logger LOGGER = FlexLogger.getLogger(CreateUpdateDictionaryService.class.getName()); - - private String dictionaryResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private String message = null; - private Boolean updateFlag = false; - private DictionaryParameters dictionaryParameters = null; - - public CreateUpdateDictionaryService( - DictionaryParameters dictionaryParameters, String requestID, - boolean updateFlag) { - this.updateFlag = updateFlag; - this.dictionaryParameters = dictionaryParameters; - if(dictionaryParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(),e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.dictionaryParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - dictionaryResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(dictionaryResult== null || dictionaryResult.contains("BAD REQUEST")||dictionaryResult.contains("PE300")){ - status = HttpStatus.BAD_REQUEST; - } else if (dictionaryResult.contains("Policy Exist Error")) { - status = HttpStatus.CONFLICT; - } else if (dictionaryResult.contains("PE200")){ - status = HttpStatus.INTERNAL_SERVER_ERROR; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Get Result. - try{ - status = HttpStatus.OK; - dictionaryResult = processResult(); - }catch (Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private String processResult() throws PolicyException{ - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - JsonObject json = null; - try{ - json = PolicyApiUtils.stringToJsonObject(dictionaryParameters.getDictionaryJson()); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper Dictionary JSON object : " + dictionaryParameters.getDictionaryJson(); - LOGGER.error(message, e); - return message; - } - String dictionaryFields = json.toString(); - PAPServices papServices = new PAPServices(); - return (String) papServices.callPAP(new ByteArrayInputStream(dictionaryFields.getBytes()), new String[] {"operation="+operation, "apiflag=api", "dictionaryType="+dictionaryParameters.getDictionary()}, dictionaryParameters.getRequestID(), "dictionaryItem"); - } - - private boolean getValidation() { - if(dictionaryParameters==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Dictionary Parameters are not given."; - return false; - } - if(dictionaryParameters.getDictionaryType()==null || dictionaryParameters.getDictionaryType().toString().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary Type given."; - return false; - } - if(dictionaryParameters.getDictionary()==null || dictionaryParameters.getDictionary().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary given."; - return false; - } - if(dictionaryParameters.getDictionaryJson()==null || dictionaryParameters.getDictionaryJson().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary JSON given."; - return false; - } - if (updateFlag && "MicroServiceDictionary".equalsIgnoreCase(dictionaryParameters.getDictionary())&& !dictionaryParameters.getDictionaryJson().contains("initialFields")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Mising the required field initialFields."; - return false; - } - return true; - } - - public String getResult() { - return dictionaryResult; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateFirewallPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateFirewallPolicyService.java deleted file mode 100644 index 3e5dce15b..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdateFirewallPolicyService.java +++ /dev/null @@ -1,92 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.text.ParseException; -import java.text.SimpleDateFormat; - -import org.openecomp.policy.api.PolicyClass; -import org.openecomp.policy.api.PolicyConfigType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.ConfigFirewallPolicyAPIRequest; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class CreateUpdateFirewallPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(CreateUpdateFirewallPolicyService.class.getName()); - - private String response = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - - public CreateUpdateFirewallPolicyService( - ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - String requestID, boolean updateFlag) { - try{ - run(configFirewallPolicyAPIRequest, requestID, updateFlag); - }catch(PolicyException e){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void run( - ConfigFirewallPolicyAPIRequest configFirewallPolicyAPIRequest, - String requestID, boolean updateFlag) throws PolicyException{ - PolicyParameters policyParameters = new PolicyParameters(); - policyParameters.setPolicyClass(PolicyClass.Config); - policyParameters.setPolicyConfigType(PolicyConfigType.Firewall); - if(configFirewallPolicyAPIRequest.getPolicyScope()==null|| configFirewallPolicyAPIRequest.getPolicyScope().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - LOGGER.error(message); - throw new PolicyException(message); - } - if(configFirewallPolicyAPIRequest.getPolicyName()==null|| configFirewallPolicyAPIRequest.getPolicyName().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - LOGGER.error(message); - throw new PolicyException(message); - } - policyParameters.setPolicyName(configFirewallPolicyAPIRequest.getPolicyScope()+"."+configFirewallPolicyAPIRequest.getPolicyName()); - policyParameters.setConfigBody(configFirewallPolicyAPIRequest.getFirewallJson()); - policyParameters.setRiskLevel(configFirewallPolicyAPIRequest.getRiskLevel()); - policyParameters.setRiskType(configFirewallPolicyAPIRequest.getRiskType()); - policyParameters.setGuard(Boolean.parseBoolean(configFirewallPolicyAPIRequest.getGuard())); - try { - policyParameters.setTtlDate(new SimpleDateFormat("dd-MM-yyyy").parse(configFirewallPolicyAPIRequest.getTtlDate())); - } catch (NullPointerException | ParseException e) { - LOGGER.warn("Error Parsing date given " + configFirewallPolicyAPIRequest.getTtlDate(), e); - policyParameters.setTtlDate(null); - } - CreateUpdatePolicyService createUpdatePolicyService = new CreateUpdatePolicyServiceImpl(policyParameters, requestID, updateFlag); - status = createUpdatePolicyService.getResponseCode(); - response = createUpdatePolicyService.getResult(); - } - - public String getResult() { - return response; - } - - public HttpStatus getResponseCode() { - return status; - } - -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyService.java deleted file mode 100644 index 73f9e7448..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyService.java +++ /dev/null @@ -1,35 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import org.openecomp.policy.api.PolicyException; -import org.springframework.http.HttpStatus; - -public interface CreateUpdatePolicyService { - - public void run() throws PolicyException; - - public String processResult() throws PolicyException; - - public String getResult(); - - public HttpStatus getResponseCode(); - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java deleted file mode 100644 index cf2171137..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/CreateUpdatePolicyServiceImpl.java +++ /dev/null @@ -1,293 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.UUID; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class CreateUpdatePolicyServiceImpl implements CreateUpdatePolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(CreateUpdatePolicyServiceImpl.class.getName()); - - private String policyResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private Boolean updateFlag = false; - private String message = null; - private PolicyParameters policyParameters = new PolicyParameters(); - private String policyName = null; - private String policyScope = null; - private String date = null; - - public CreateUpdatePolicyServiceImpl(PolicyParameters policyParameters, - String requestID, boolean updateFlag) { - this.updateFlag = updateFlag; - this.policyParameters = policyParameters; - if(policyParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.policyParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - policyResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - public void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Get Result. - try{ - status = HttpStatus.OK; - policyResult = processResult(); - }catch (Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - @SuppressWarnings("incomplete-switch") - public String processResult() throws PolicyException{ - String response = null; - if(policyParameters.getPolicyConfigType()!=null){ - // This is a Config Type Policy. - switch(policyParameters.getPolicyConfigType()){ - case BRMS_PARAM: - BRMSParamPolicyService bRMSParamPolicyService = new BRMSParamPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!bRMSParamPolicyService.getValidation()){ - LOGGER.error(bRMSParamPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return bRMSParamPolicyService.getMessage(); - } - // Get Result. - response = bRMSParamPolicyService.getResult(updateFlag); - break; - case BRMS_RAW: - BRMSRawPolicyService bRMSRawPolicyService = new BRMSRawPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!bRMSRawPolicyService.getValidation()){ - LOGGER.error(bRMSRawPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return bRMSRawPolicyService.getMessage(); - } - // Get Result. - response = bRMSRawPolicyService.getResult(updateFlag); - break; - case Base: - ConfigPolicyService configPolicyService = new ConfigPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!configPolicyService.getValidation()){ - LOGGER.error(configPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return configPolicyService.getMessage(); - } - // Get Result. - response = configPolicyService.getResult(updateFlag); - break; - case ClosedLoop_Fault: - ClosedLoopFaultPolicyService closedLoopFaultPolicyService = new ClosedLoopFaultPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!closedLoopFaultPolicyService.getValidation()){ - LOGGER.error(closedLoopFaultPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return closedLoopFaultPolicyService.getMessage(); - } - // Get Result. - response = closedLoopFaultPolicyService.getResult(updateFlag); - break; - case ClosedLoop_PM: - ClosedLoopPMPolicyService closedLoopPMPolicyService = new ClosedLoopPMPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!closedLoopPMPolicyService.getValidation()){ - LOGGER.error(closedLoopPMPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return closedLoopPMPolicyService.getMessage(); - } - // Get Result. - response = closedLoopPMPolicyService.getResult(updateFlag); - break; - case Firewall: - FirewallPolicyService firewallPolicyService = new FirewallPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!firewallPolicyService.getValidation()){ - LOGGER.error(firewallPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return firewallPolicyService.getMessage(); - } - // Get Result. - response = firewallPolicyService.getResult(updateFlag); - break; - case MicroService: - MicroServicesPolicyService microServicesPolicyService = new MicroServicesPolicyService(policyName, policyScope, policyParameters, date); - // Check Validation. - if(!microServicesPolicyService.getValidation()){ - LOGGER.error(microServicesPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return microServicesPolicyService.getMessage(); - } - // Get Result. - response = microServicesPolicyService.getResult(updateFlag); - break; - default: - String message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " Invalid Config Type Present"; - LOGGER.error(message); - status = HttpStatus.BAD_REQUEST; - return message; - } - }else if (policyParameters.getPolicyClass()!=null){ - switch (policyParameters.getPolicyClass()){ - case Action: - ActionPolicyService actionPolicyService = new ActionPolicyService(policyScope, policyName, policyParameters); - // Check Validation. - if(!actionPolicyService.getValidation()){ - LOGGER.error(actionPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return actionPolicyService.getMessage(); - } - // Get Result. - response = actionPolicyService.getResult(updateFlag); - break; - case Decision: - DecisionPolicyService decisionPolicyService = new DecisionPolicyService(policyScope, policyName, policyParameters); - // Check Validation. - if(!decisionPolicyService.getValidation()){ - LOGGER.error(decisionPolicyService.getMessage()); - status = HttpStatus.BAD_REQUEST; - return decisionPolicyService.getMessage(); - } - // Get Result. - response = decisionPolicyService.getResult(updateFlag); - break; - } - }else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Class found."; - LOGGER.error(message); - status = HttpStatus.BAD_REQUEST; - response = message; - } - return response; - } - - protected boolean getValidation() { - if(policyParameters == null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy parameters given. "; - return false; - } - if(policyParameters.getPolicyName() == null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - return false; - } - if (policyParameters.getPolicyName().contains(".")) { - policyName = policyParameters.getPolicyName().substring(policyParameters.getPolicyName().lastIndexOf('.') + 1, - policyParameters.getPolicyName().length()); - policyScope = policyParameters.getPolicyName().substring(0,policyParameters.getPolicyName().lastIndexOf('.')); - LOGGER.info("Name is " + policyName + " scope is " + policyScope); - } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - return false; - } - if (policyName==null||policyName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - return false; - } - message = PolicyUtils.emptyPolicyValidator(policyScope); - if(!message.contains("success")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message; - return false; - } - message = PolicyUtils.emptyPolicyValidator(policyName); - if(!message.contains("success")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message; - return false; - } - if(policyParameters.getPolicyDescription()!=null){ - message = PolicyUtils.descriptionValidator(policyParameters.getPolicyDescription()); - if(!message.contains("success")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ message; - return false; - } - } - if(!PolicyApiUtils.validateNONASCIICharactersAndAllowSpaces(policyParameters.toString())){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ "This requests contains Non ASCII Characters. Please review your input parameter" - + " values and correct the illegal characters."; - return false; - } - // Set some default Values. - if (policyParameters.getTtlDate()!=null){ - date = convertDate(policyParameters.getTtlDate()); - } - return true; - } - - protected String convertDate(Date date) { - String strDate = null; - if (date!=null) { - SimpleDateFormat dateformatJava = new SimpleDateFormat("dd-MM-yyyy"); - strDate = dateformatJava.format(date); - } - return (strDate==null) ? "NA": strDate; - } - - protected void specialCheck() { - if(policyResult== null || policyResult.contains("BAD REQUEST")||policyResult.contains("PE300")){ - status = HttpStatus.BAD_REQUEST; - } else if (policyResult.contains("Policy Exist Error")) { - status = HttpStatus.CONFLICT; - } else if (policyResult.contains("PE200")||policyResult.contains("PE900")){ - status = HttpStatus.INTERNAL_SERVER_ERROR; - } - } - - public String getResult() { - return policyResult; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DecisionPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DecisionPolicyService.java deleted file mode 100644 index c6789a0b8..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DecisionPolicyService.java +++ /dev/null @@ -1,100 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Map; - -import org.openecomp.policy.api.AttributeType; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.api.RuleProvider; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Decision Policy Implementation - * - * @version 0.1 - */ -public class DecisionPolicyService{ - private static Logger LOGGER = FlexLogger.getLogger(DecisionPolicyService.class.getName()); - private static PAPServices papServices = null; - - private String message = null; - private String policyScope = null; - private String policyName = null; - private PolicyParameters policyParameters = null; - private String ecompName = null; - - public DecisionPolicyService(String policyScope, String policyName, - PolicyParameters policyParameters) { - this.policyScope = policyScope; - this.policyName = policyName; - this.policyParameters = policyParameters; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - ecompName = policyParameters.getEcompName(); - if (ecompName==null||ecompName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No ECOMP Name given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - RuleProvider ruleProvider = policyParameters.getRuleProvider(); - if (ruleProvider==null) { - ruleProvider = RuleProvider.CUSTOM ; - } - Map<String,String> matchingAttributes = null; - Map<String,String> settingsAttributes = null; - if (policyParameters.getAttributes()!=null && policyParameters.getAttributes().containsKey(AttributeType.MATCHING) && policyParameters.getAttributes().containsKey(AttributeType.SETTINGS)) { - matchingAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING); - settingsAttributes = policyParameters.getAttributes().get(AttributeType.SETTINGS); - }else if(policyParameters.getAttributes()!=null && !policyParameters.getAttributes().containsKey(AttributeType.MATCHING) && policyParameters.getAttributes().containsKey(AttributeType.SETTINGS)){ - settingsAttributes = policyParameters.getAttributes().get(AttributeType.SETTINGS); - }else if(policyParameters.getAttributes()!=null && policyParameters.getAttributes().containsKey(AttributeType.MATCHING) && !policyParameters.getAttributes().containsKey(AttributeType.SETTINGS)){ - matchingAttributes = policyParameters.getAttributes().get(AttributeType.MATCHING); - } - // Create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy(policyName, policyParameters.getPolicyDescription(), ecompName, ruleProvider.toString(), matchingAttributes, settingsAttributes, policyParameters.getDynamicRuleAlgorithmLabels(), - policyParameters.getDynamicRuleAlgorithmFunctions(), policyParameters.getDynamicRuleAlgorithmField1(), policyParameters.getDynamicRuleAlgorithmField2(), null, null, null, updateFlag, policyScope, 0); - // Send JSON to PAP. - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Decision"}, policyParameters.getRequestID(), "Decision"); - LOGGER.info(message); - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DeletePolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DeletePolicyService.java deleted file mode 100644 index 3b1ea23fb..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/DeletePolicyService.java +++ /dev/null @@ -1,258 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.File; -import java.util.UUID; - -import org.openecomp.policy.api.DeletePolicyParameters; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; -import org.springframework.http.HttpStatus; - -public class DeletePolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(DeletePolicyService.class.getName()); - - private String deleteResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private DeletePolicyParameters deletePolicyParameters = null; - private String message = null; - private String filePrefix = null; - private String clientScope = null; - private String policyType = null; - private String policyName = null; - private String policyScope = null; - - public DeletePolicyService(DeletePolicyParameters deletePolicyParameters, - String requestID) { - this.deletePolicyParameters = deletePolicyParameters; - if(deletePolicyParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.deletePolicyParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - deleteResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(deleteResult==null){ - return; - } - if (deleteResult.contains("BAD REQUEST")||deleteResult.contains("PE300")||deleteResult.contains("PE200")||deleteResult.contains("not exist")||deleteResult.contains("Invalid policyName")) { - status = HttpStatus.BAD_REQUEST; - } else if (deleteResult.contains("locked down")){ - status = HttpStatus.ACCEPTED; - } else if (deleteResult.contains("not Authorized")) { - status = HttpStatus.FORBIDDEN; - } else if (deleteResult.contains("groupId")) { - status = HttpStatus.NOT_FOUND; - } else if (deleteResult.contains("JPAUtils")||deleteResult.contains("database")||deleteResult.contains("policy file")|| - deleteResult.contains("unknown")||deleteResult.contains("configuration")) { - status = HttpStatus.INTERNAL_SERVER_ERROR; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Get Result. - try{ - status = HttpStatus.OK; - deleteResult = processResult(); - }catch (Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private String processResult() throws PolicyException{ - String response = null; - String fullPolicyName = null; - String pdpGroup = deletePolicyParameters.getPdpGroup(); - // PDP Group Check. - if (pdpGroup==null){ - pdpGroup="NA"; - } - PAPServices papServices = new PAPServices(); - if (!deletePolicyParameters.getPolicyName().contains("xml")) { - - String activeVersion = papServices.getActiveVersion(policyScope, filePrefix, policyName, clientScope, deletePolicyParameters.getRequestID()); - LOGGER.debug("The active version of " + policyScope + File.separator + filePrefix + policyName + " is " + activeVersion); - String id = null; - if ("pe100".equalsIgnoreCase(activeVersion)) { - response = XACMLErrorConstants.ERROR_PERMISSIONS + "response code of the URL is 403. PEP is not Authorized for making this Request!! " - + "Contact Administrator for this Scope. "; - LOGGER.error(response); - return response; - } else if ("pe300".equalsIgnoreCase(activeVersion)) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " - + "This indicates a problem with getting the version from the PAP or the policy does not exist."; - LOGGER.error(response); - return response; - } - if (!activeVersion.equalsIgnoreCase("0")) { - id = policyScope + "." + filePrefix + policyName + "." + activeVersion + ".xml"; - LOGGER.debug("The policyId is " + id); - } else { - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "could not retrieve the activeVersion for this policy. could not retrieve the activeVersion for this policy. " - + "This indicates the policy does not exist, please verify the policy exists."; - LOGGER.error(response); - return response; - } - - fullPolicyName = policyScope + "." + filePrefix + policyName + "." + activeVersion + ".xml"; - - } else { - fullPolicyName = policyName; - } - - if ("PAP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent())) { - if (deletePolicyParameters.getDeleteCondition()==null||deletePolicyParameters.getDeleteCondition().toString().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Delete Condition given."; - LOGGER.error(message); - return message; - } - - StdPAPPolicy deletePapPolicy = new StdPAPPolicy(fullPolicyName, deletePolicyParameters.getDeleteCondition().toString()); - //send JSON object to PAP - response = (String) papServices.callPAP(deletePapPolicy, new String[] {"groupId="+pdpGroup, "apiflag=deletePapApi", "operation=delete" }, deletePolicyParameters.getRequestID(), clientScope); - } else if ("PDP".equalsIgnoreCase(deletePolicyParameters.getPolicyComponent())) { - if (deletePolicyParameters.getPdpGroup()==null||deletePolicyParameters.getPdpGroup().trim().isEmpty()){ - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PDP Group given."; - LOGGER.error(message); - return message; - } - //send JSON object to PAP - response = (String) papServices.callPAP(null, new String[] {"policyName="+fullPolicyName, "groupId="+pdpGroup, "apiflag=deletePdpApi", "operation=delete" }, deletePolicyParameters.getRequestID(), clientScope); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Policy Component does not exist. Please enter either PAP or PDP to delete the policy from a specified Policy Component."; - LOGGER.error(message); - response = message; - } - return response; - } - - private boolean getValidation() { - // While Validating, extract the required values. - if (deletePolicyParameters.getPolicyName()==null||deletePolicyParameters.getPolicyName().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - return false; - } - if (!deletePolicyParameters.getPolicyName().contains("xml")) { - if (deletePolicyParameters.getPolicyName() != null - && deletePolicyParameters.getPolicyName().contains(".")) { - policyName = deletePolicyParameters.getPolicyName().substring(deletePolicyParameters.getPolicyName().lastIndexOf(".") + 1, - deletePolicyParameters.getPolicyName().length()); - policyScope = deletePolicyParameters.getPolicyName().substring(0,deletePolicyParameters.getPolicyName().lastIndexOf(".")); - LOGGER.info("Name is " + policyName + " scope is " + policyScope); - } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - return false; - } - } else { - policyName = deletePolicyParameters.getPolicyName(); - } - policyType = deletePolicyParameters.getPolicyType(); - if(policyType== null || policyType.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PolicyType given."; - return false; - } - setClientScope(); - if (clientScope==null||clientScope.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + deletePolicyParameters.getPolicyType() + " is not a valid Policy Type."; - LOGGER.error(message); - return false; - } - LOGGER.debug("clientScope is " + clientScope); - LOGGER.debug("filePrefix is " + filePrefix); - if(deletePolicyParameters.getPolicyComponent()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Component given."; - return false; - } - return true; - } - - private void setClientScope() { - if ("Firewall".equalsIgnoreCase(policyType)) { - clientScope = "ConfigFirewall"; - filePrefix = "Config_FW_"; - } else if ("Action".equalsIgnoreCase(policyType)) { - clientScope = "Action"; - filePrefix = "Action_"; - } else if ("Decision".equalsIgnoreCase(policyType)) { - clientScope = "Decision"; - filePrefix = "Decision_"; - } else if ("Base".equalsIgnoreCase(policyType)) { - clientScope = "Config"; - filePrefix = "Config_"; - } else if ("ClosedLoop_Fault".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_Fault_"; - } else if ("ClosedLoop_PM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_PM_"; - } else if ("MicroService".equalsIgnoreCase(policyType)) { - clientScope = "ConfigMS"; - filePrefix = "Config_MS_"; - }else if ("BRMS_RAW".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsRaw"; - filePrefix = "Config_BRMS_Raw_"; - } else if ("BRMS_PARAM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsParam"; - filePrefix = "Config_BRMS_Param_"; - } else { - clientScope = null; - message = XACMLErrorConstants.ERROR_DATA_ISSUE + policyType - + " is not a valid Policy Type."; - } - } - - public String getResult() { - return deleteResult; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/FirewallPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/FirewallPolicyService.java deleted file mode 100644 index f301bf05d..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/FirewallPolicyService.java +++ /dev/null @@ -1,113 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * Firewall Policy Implementation. - * - * @version 0.1 - */ -public class FirewallPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(FirewallPolicyService.class.getName()); - - private PAPServices papServices = null; - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private JsonObject firewallJson = null; - - public FirewallPolicyService(String policyName, String policyScope, - PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getConfigBody()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ "No Config Body given."; - return false; - } - try{ - firewallJson = PolicyApiUtils.stringToJsonObject(policyParameters.getConfigBody()); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - LOGGER.error("Error while parsing JSON body for creating Firewall Policy " , e); - return false; - } - if(firewallJson==null|| firewallJson.isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Config-Body given."; - return false; - } - boolean levelCheck = false; - levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if (!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException { - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - //set values for basic policy information - if(!firewallJson.containsKey("configName")){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No configName given in firwall JSON."; - LOGGER.error(message); - return message; - } - String configName = firewallJson.get("configName").toString(); - String configDescription = ""; - String json = firewallJson.toString(); - // Create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("Firewall Config", policyName, configDescription, configName, updateFlag, policyScope, json, 0, - policyParameters.getRiskLevel(),policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date); - // Send Json to PAP. - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigFirewall"); - LOGGER.info(response); - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetConfigService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetConfigService.java deleted file mode 100644 index 2363877b2..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetConfigService.java +++ /dev/null @@ -1,318 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.json.Json; -import javax.json.JsonArrayBuilder; -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; - -import org.openecomp.policy.api.ConfigRequestParameters; -import org.openecomp.policy.api.PolicyConfigException; -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.PDPResponse; -import org.openecomp.policy.pdp.rest.api.models.PolicyConfig; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class GetConfigService { - private static final Logger LOGGER = FlexLogger.getLogger(GetConfigService.class.getName()); - - private ConfigRequestParameters configRequestParameters = null; - private String message = null; - private HttpStatus responseCode = HttpStatus.BAD_REQUEST; - private Collection<PolicyConfig> policyConfigs = null; - private boolean unique = false; - - public GetConfigService(ConfigRequestParameters configRequestParameters, - String requestID){ - this.configRequestParameters = configRequestParameters; - if(configRequestParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(),e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.configRequestParameters.setRequestID(requestUUID); - } - policyConfigs = new ArrayList<>(); - try{ - run(); - specialCheck(); - }catch(PolicyConfigException e){ - LOGGER.error(e); - PolicyConfig policyConfig = new PolicyConfig(); - policyConfig.setPolicyConfigMessage(e.getMessage()); - policyConfig.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - policyConfigs.add(policyConfig); - responseCode = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(policyConfigs==null || policyConfigs.isEmpty()){ - responseCode = HttpStatus.BAD_REQUEST; - }else if(policyConfigs.size()==1){ - for(PolicyConfig policyConfig: policyConfigs){ - if(policyConfig.getPolicyConfigMessage()!=null && policyConfig.getPolicyConfigMessage().contains("PE300")){ - responseCode = HttpStatus.BAD_REQUEST; - } - } - }else{ - responseCode = HttpStatus.OK; - } - } - - private void run() throws PolicyConfigException{ - // getValidation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyConfigException(message); - } - // Generate Request. - String modelString = getModel().toString(); - LOGGER.debug("Generated JSON Request is: " + modelString); - if(configRequestParameters.getUnique()){ - LOGGER.info("Requested for Unique Result only. "); - unique = true; - } - // Process Result. - try { - PDPServices pdpServices = new PDPServices(); - responseCode = HttpStatus.OK; - policyConfigs = configResult(pdpServices.generateRequest(modelString, configRequestParameters.getRequestID(), unique, false)); - // Filter addition. - policyConfigs = filterResults(policyConfigs, configRequestParameters); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - responseCode = HttpStatus.BAD_REQUEST; - throw new PolicyConfigException(XACMLErrorConstants.ERROR_DATA_ISSUE +e); - } - } - - private Collection<PolicyConfig> configResult( - Collection<PDPResponse> generateRequest) { - Collection<PolicyConfig> result = new HashSet<>(); - if (generateRequest == null) { - return null; - } - if (!generateRequest.isEmpty()) { - for (PDPResponse stdStatus : generateRequest) { - PolicyConfig policyConfig = new PolicyConfig(); - policyConfig.setConfig(stdStatus.getConfig()); - policyConfig.setMatchingConditions(stdStatus.getMatchingConditions()); - policyConfig.setPolicyConfigMessage(stdStatus.getPolicyConfigMessage()); - policyConfig.setPolicyConfigStatus(stdStatus.getPolicyConfigStatus()); - policyConfig.setPolicyName(stdStatus.getPolicyName()); - policyConfig.setPolicyVersion(stdStatus.getPolicyVersion()); - policyConfig.setProperty(stdStatus.getProperty()); - policyConfig.setResponseAttributes(stdStatus.getResponseAttributes()); - policyConfig.setType(stdStatus.getType()); - result.add(policyConfig); - } - } - return result; - } - - // Filter logic required for results comparing with requests. - private Collection<PolicyConfig> filterResults( - Collection<PolicyConfig> policyConfigs, - ConfigRequestParameters configRequestParameters) { - List<PolicyConfig> policyConfig = new ArrayList<>(); - for(PolicyConfig config: policyConfigs){ - if(config.getPolicyName()!=null && configRequestParameters.getPolicyName()!=null && configRequestParameters.getPolicyName().trim().length()>0){ - if(!config.getPolicyName().matches(configRequestParameters.getPolicyName())){ - continue; - } - } - if(config.getMatchingConditions()!=null && config.getMatchingConditions().size()>0){ - if(configRequestParameters.getEcompName()!=null && configRequestParameters.getEcompName().trim().length()>0 && config.getMatchingConditions().containsKey("ECOMPName")){ - if(!config.getMatchingConditions().get("ECOMPName").matches(configRequestParameters.getEcompName())){ - continue; - } - } - if(configRequestParameters.getConfigName()!=null && configRequestParameters.getConfigName().trim().length()>0 && config.getMatchingConditions().containsKey("ConfigName")){ - if(!config.getMatchingConditions().get("ConfigName").matches(configRequestParameters.getConfigName())){ - continue; - } - } - if(configRequestParameters.getConfigAttributes()!=null && configRequestParameters.getConfigAttributes().size()>0){ - boolean flag = false; - for(String key: configRequestParameters.getConfigAttributes().keySet()){ - if(key.equals("RiskType")||key.equals("RiskLevel")||key.equals("guard")||key.equals("TTLDate")){ - continue; - } - if(config.getMatchingConditions().containsKey(key)){ - if(config.getMatchingConditions().get(key).contains(",")){ - List<String> elements = Arrays.asList(config.getMatchingConditions().get(key).split(",")); - if(!elements.contains(configRequestParameters.getConfigAttributes().get(key))){ - flag=true; - } - }else if(!config.getMatchingConditions().get(key).matches(configRequestParameters.getConfigAttributes().get(key))){ - flag = true; - } - }else{ - flag = true; - } - if(flag){ - break; - } - } - if(flag){ - continue; - } - } - } - policyConfig.add(config); - } - if(policyConfig.isEmpty()){ - PolicyConfig pConfig = new PolicyConfig(); - pConfig.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - pConfig.setPolicyConfigMessage(XACMLErrorConstants.ERROR_DATA_ISSUE+"No Match Found, for the parameters sent."); - policyConfig.add(pConfig); - } - return policyConfig; - } - - private JsonObject getModel() throws PolicyConfigException{ - String policyName = configRequestParameters.getPolicyName(); - if(policyName!= null && !policyName.trim().isEmpty() && !policyName.endsWith("xml")){ - policyName = policyName + ".[\\d].*"; - configRequestParameters.setPolicyName(policyName); - } - JsonArrayBuilder subjectArray = Json.createArrayBuilder(); - JsonArrayBuilder resourceArray = Json.createArrayBuilder(); - if(configRequestParameters.getPolicyName()!=null){ - JsonObjectBuilder subjectBuilder = Json.createObjectBuilder(); - subjectBuilder.add("Value", policyName); - subjectBuilder.add("AttributeId", "PolicyName"); - subjectArray.add(subjectBuilder); - }else{ - LOGGER.info("PolicyName values are not given. "); - } - if(configRequestParameters.getEcompName()!=null){ - JsonObjectBuilder subjectBuilder = Json.createObjectBuilder(); - subjectBuilder.add("Value", configRequestParameters.getEcompName()); - subjectBuilder.add("AttributeId", "ECOMPName"); - subjectArray.add(subjectBuilder); - if(configRequestParameters.getConfigName()!=null){ - subjectBuilder = Json.createObjectBuilder(); - subjectBuilder.add("Value", configRequestParameters.getConfigName()); - subjectBuilder.add("AttributeId", "ConfigName"); - subjectArray.add(subjectBuilder); - resourceArray = getResourceArray(configRequestParameters.getConfigAttributes()); - }else{ - LOGGER.info("Config Name is not given. "); - } - }else{ - LOGGER.info("Ecomp Name is not given. "); - } - return Json.createObjectBuilder() - .add("Request",Json.createObjectBuilder() - .add("AccessSubject",Json.createObjectBuilder() - .add("Attribute",subjectArray)) - .add("Action",Json.createObjectBuilder() - .add("Attribute",Json.createObjectBuilder() - .add("Value","ACCESS") - .add("AttributeId","urn:oasis:names:tc:xacml:1.0:action:action-id"))) - .add("Resource",Json.createObjectBuilder() - .add("Attribute",resourceArray - .add(Json.createObjectBuilder() - .add("Value","Config") - .add("AttributeId","urn:oasis:names:tc:xacml:1.0:resource:resource-id"))))) - .build(); - } - - private JsonArrayBuilder getResourceArray(Map<String, String> configAttributes) throws PolicyConfigException{ - JsonArrayBuilder resourceArray = Json.createArrayBuilder(); - configAttributes = configRequestParameters.getConfigAttributes(); - if (configAttributes != null && !configAttributes.isEmpty()) { - if(!configAttributes.containsKey("RiskType")){ - configAttributes.put("RiskType", ".*"); - } - if(!configAttributes.containsKey("RiskLevel")){ - configAttributes.put("RiskLevel", ".*"); - } - if(!configAttributes.containsKey("guard")){ - configAttributes.put("guard", ".*"); - } - if(!configAttributes.containsKey("TTLDate")){ - configAttributes.put("TTLDate", ".*"); - } - }else{ - // ConfigAttributes is Null. So add basic values. - configAttributes = new HashMap<>(); - configAttributes.put("RiskType", ".*"); - configAttributes.put("RiskLevel", ".*"); - configAttributes.put("guard", ".*"); - configAttributes.put("TTLDate", ".*"); - } - for (String key : configAttributes.keySet()) { - if (key.isEmpty()) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot have an Empty Key"; - LOGGER.error(message); - throw new PolicyConfigException(message); - } - JsonObjectBuilder resourceBuilder = Json.createObjectBuilder(); - resourceBuilder.add("Value", configAttributes.get(key)); - resourceBuilder.add("AttributeId", key); - resourceArray.add(resourceBuilder); - } - return resourceArray; - } - - private Boolean getValidation(){ - if(configRequestParameters==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No config Request Parameters given."; - return false; - } - if(configRequestParameters.getEcompName()==null && configRequestParameters.getPolicyName()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot proceed without eCOMPComponentName or PolicyName"; - return false; - } - return true; - } - - public Collection<PolicyConfig> getResult() { - return policyConfigs; - } - - public HttpStatus getResponseCode() { - return responseCode; - } -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDecisionService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDecisionService.java deleted file mode 100644 index 1ef5e53cf..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDecisionService.java +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.Collection; -import java.util.Map; -import java.util.Map.Entry; -import java.util.UUID; - -import javax.json.Json; -import javax.json.JsonArrayBuilder; -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; - -import org.openecomp.policy.api.DecisionRequestParameters; -import org.openecomp.policy.api.DecisionResponse; -import org.openecomp.policy.api.PolicyDecision; -import org.openecomp.policy.api.PolicyDecisionException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.PDPResponse; -import org.openecomp.policy.std.StdDecisionResponse; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class GetDecisionService { - private static final Logger LOGGER = FlexLogger.getLogger(GetDecisionService.class.getName()); - - private DecisionResponse decisionResponse = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private DecisionRequestParameters decisionRequestParameters = null; - private String message = null; - private String eCOMPComponentName = null; - private Map<String,String> decisionAttributes = null; - - public GetDecisionService( - DecisionRequestParameters decisionRequestParameters, - String requestID) { - this.decisionRequestParameters = decisionRequestParameters; - if(decisionRequestParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(),e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.decisionRequestParameters.setRequestID(requestUUID); - } - try{ - run(); - }catch(PolicyDecisionException e){ - StdDecisionResponse decisionResponse = new StdDecisionResponse(); - decisionResponse.setDecision(PolicyDecision.ERROR); - decisionResponse.setDetails(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - this.decisionResponse = decisionResponse; - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyDecisionException{ - // Get Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyDecisionException(message); - } - // Generate Request. - String modelString = getModel().toString(); - LOGGER.debug("Generated JSON Request is: " + modelString); - // Process Result. - try { - PDPServices pdpServices = new PDPServices(); - status = HttpStatus.OK; - decisionResponse = decisionResult(pdpServices.generateRequest(modelString, decisionRequestParameters.getRequestID(), false, true)); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyDecisionException(e); - } - } - - private DecisionResponse decisionResult( - Collection<PDPResponse> generateRequest) { - StdDecisionResponse policyDecision = new StdDecisionResponse(); - if (generateRequest == null) { - return policyDecision; - } - if (!generateRequest.isEmpty()) { - for (PDPResponse stdStatus : generateRequest) { - policyDecision.setDecision(stdStatus.getDecision()); - policyDecision.setDetails(stdStatus.getDetails()); - } - } - return policyDecision; - } - - private JsonObject getModel() throws PolicyDecisionException{ - JsonArrayBuilder resourceArray = Json.createArrayBuilder(); - for (Entry<String,String> key : decisionAttributes.entrySet()) { - if (key.getKey().isEmpty()) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot have an Empty Key"; - LOGGER.error(message); - throw new PolicyDecisionException(message); - } - JsonObjectBuilder resourceBuilder = Json.createObjectBuilder(); - if (key.getValue().matches("[0-9]+")) { - - if ((key.getKey().equals("ErrorCode")) || (key.getKey().equals("WorkStep"))) { - - resourceBuilder.add("Value", key.getValue()); - - } else { - - int val = Integer.parseInt(key.getValue()); - resourceBuilder.add("Value", val); - - } - - } else { - resourceBuilder.add("Value", key.getValue()); - } - resourceBuilder.add("AttributeId", key.getKey()); - resourceArray.add(resourceBuilder); - } - return Json.createObjectBuilder() - .add("Request", Json.createObjectBuilder() - .add("AccessSubject", Json.createObjectBuilder() - .add("Attribute", Json.createObjectBuilder() - .add("Value", eCOMPComponentName) - .add("AttributeId", "ECOMPName"))) - .add("Resource", Json.createObjectBuilder() - .add("Attribute", resourceArray)) - .add("Action", Json.createObjectBuilder() - .add("Attribute", Json.createObjectBuilder() - .add("Value", "DECIDE") - .add("AttributeId", "urn:oasis:names:tc:xacml:1.0:action:action-id")))) - .build(); - } - - private boolean getValidation() { - if(decisionRequestParameters==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Decision Request Paramaters"; - return false; - } - eCOMPComponentName = decisionRequestParameters.getECOMPComponentName(); - decisionAttributes = decisionRequestParameters.getDecisionAttributes(); - if (eCOMPComponentName == null || eCOMPComponentName.isEmpty()) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No eCOMPComponentName given : " + eCOMPComponentName; - return false; - } - if (decisionAttributes == null || decisionAttributes.isEmpty()) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Decision Attributes Given. "; - return false; - } - return true; - } - - public DecisionResponse getResult() { - return decisionResponse; - } - - public HttpStatus getResponseCode() { - return status; - } - -} - diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDictionaryService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDictionaryService.java deleted file mode 100644 index 04567e2e1..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetDictionaryService.java +++ /dev/null @@ -1,276 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.UUID; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.DictionaryParameters; -import org.openecomp.policy.api.DictionaryResponse; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.std.StdDictionaryResponse; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class GetDictionaryService { - private static final Logger LOGGER = FlexLogger.getLogger(GetDictionaryService.class.getName()); - - private DictionaryResponse dictionaryResponse = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private String message = null; - private DictionaryParameters dictionaryParameters = null; - - public GetDictionaryService(DictionaryParameters dictionaryParameters, - String requestID) { - this.dictionaryParameters = dictionaryParameters; - if(dictionaryParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.dictionaryParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - StdDictionaryResponse dictionaryResponse = new StdDictionaryResponse(); - dictionaryResponse.setResponseMessage(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - this.dictionaryResponse = dictionaryResponse; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(dictionaryResponse!=null && (dictionaryResponse.getResponseMessage()!=null && dictionaryResponse.getResponseMessage().contains("PE300"))){ - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Get Result. - try{ - status = HttpStatus.OK; - dictionaryResponse = processResult(); - }catch (Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private DictionaryResponse processResult() throws PolicyException{ - StdDictionaryResponse response = new StdDictionaryResponse(); - PAPServices papServices = new PAPServices(); - String result = (String) papServices.callPAP(null, new String[] {"operation=get", "apiflag=api", "dictionaryType="+dictionaryParameters.getDictionary()}, dictionaryParameters.getRequestID(), "dictionaryItem"); - - if (result!=null && result.contains("data")) { - String jsonString = formatDictionaryJson(result); - String responseMessage = result.substring(0, 82); - JsonObject json = null; - try{ - json = PolicyApiUtils.stringToJsonObject(jsonString.replace("\\\\\\", "\\")); - String datas = json.getString("data").replaceFirst("\"\\[", "["); - int i = datas.lastIndexOf("]"); - if( i>=0 ) { - datas = new StringBuilder(datas).replace(i, i+2,"]").toString(); - } - json = PolicyApiUtils.stringToJsonObject(datas); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper Dictionary JSON object : " + dictionaryParameters.getDictionaryJson(); - LOGGER.error(message, e); - response.setResponseMessage(message); - response.setResponseCode(400); - return response; - } - response.setResponseCode(papServices.getResponseCode()); - response.setDictionaryJson(json); - response.setResponseMessage(responseMessage); - } else { - response.setResponseCode(400); - response.setResponseMessage(result); - if(result!=null && result.contains("PE200")){ - status=HttpStatus.INTERNAL_SERVER_ERROR; - }else{ - status=HttpStatus.BAD_REQUEST; - } - } - return response; - } - - private String formatDictionaryJson(String result) { - String jsonString = result.substring(82); - String dictionary = dictionaryParameters.getDictionary(); - - switch (dictionary) { - case "EcompName": - jsonString = jsonString.replace("ecompNameDictionaryDatas", "DictionaryDatas"); - break; - case "Attribute": - jsonString = jsonString.replace("attributeDictionaryDatas", "DictionaryDatas"); - break; - case "Action": - jsonString = jsonString.replace("actionPolicyDictionaryDatas", "DictionaryDatas"); - break; - case "BRMSParamTemplate": - jsonString = jsonString.replace("brmsParamDictionaryDatas", "DictionaryDatas"); - break; - case "VSCLAction": - jsonString = jsonString.replace("vsclActionDictionaryDatas", "DictionaryDatas"); - break; - case "VNFType": - jsonString = jsonString.replace("vnfTypeDictionaryDatas", "DictionaryDatas"); - break; - case "PEPOptions": - jsonString = jsonString.replace("pepOptionsDictionaryDatas", "DictionaryDatas"); - break; - case "Varbind": - jsonString = jsonString.replace("varbindDictionaryDatas", "DictionaryDatas"); - break; - case "Service": - jsonString = jsonString.replace("closedLoopServiceDictionaryDatas", "DictionaryDatas"); - break; - case "Site": - jsonString = jsonString.replace("closedLoopSiteDictionaryDatas", "DictionaryDatas"); - break; - case "Settings": - jsonString = jsonString.replace("settingsDictionaryDatas", "DictionaryDatas"); - break; - case "DescriptiveScope": - jsonString = jsonString.replace("descriptiveScopeDictionaryDatas", "DictionaryDatas"); - break; - case "Enforcer": - jsonString = jsonString.replace("enforcerDictionaryDatas", "DictionaryDatas"); - break; - case "ActionList": - jsonString = jsonString.replace("actionListDictionaryDatas", "DictionaryDatas"); - break; - case "ProtocolList": - jsonString = jsonString.replace("protocolListDictionaryDatas", "DictionaryDatas"); - break; - case "Zone": - jsonString = jsonString.replace("zoneDictionaryDatas", "DictionaryDatas"); - break; - case "SecurityZone": - jsonString = jsonString.replace("securityZoneDictionaryDatas", "DictionaryDatas"); - break; - case "PrefixList": - jsonString = jsonString.replace("prefixListDictionaryDatas", "DictionaryDatas"); - break; - case "AddressGroup": - jsonString = jsonString.replace("addressGroupDictionaryDatas", "DictionaryDatas"); - break; - case "ServiceGroup": - jsonString = jsonString.replace("serviceGroupDictionaryDatas", "DictionaryDatas"); - break; - case "ServiceList": - jsonString = jsonString.replace("serviceListDictionaryDatas", "DictionaryDatas"); - break; - case "TermList": - case "RuleList": - case "FirewallRuleList": - case "Term": - jsonString = jsonString.replace("termListDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceLocation": - jsonString = jsonString.replace("microServiceLocationDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceConfigName": - jsonString = jsonString.replace("microServiceCongigNameDictionaryDatas", "DictionaryDatas"); - break; - case "DCAEUUID": - jsonString = jsonString.replace("dcaeUUIDDictionaryDatas", "DictionaryDatas"); - break; - case "MicroServiceModels": - jsonString = jsonString.replace("microServiceModelsDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeService": - jsonString = jsonString.replace("psServiceDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeResource": - jsonString = jsonString.replace("psResourceDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeType": - jsonString = jsonString.replace("psTypeDictionaryDatas", "DictionaryDatas"); - break; - case "PolicyScopeClosedLoop": - jsonString = jsonString.replace("psClosedLoopDictionaryDatas", "DictionaryDatas"); - break; - case "GroupPolicyScopeList": - jsonString = jsonString.replace("groupPolicyScopeListDatas", "DictionaryDatas"); - break; - case "RiskType": - jsonString = jsonString.replace("riskTypeDictionaryDatas", "DictionaryDatas"); - break; - case "SafePolicyWarning": - jsonString = jsonString.replace("safePolicyWarningDatas", "DictionaryDatas"); - break; - case "MicroServiceDictionary": - jsonString = jsonString.replace("microServiceDictionaryDatas", "DictionaryDatas"); - break; - default: - return null; - } - return jsonString; - } - - private boolean getValidation() { - if(dictionaryParameters==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Dictionary Parameters are not given."; - return false; - } - if(dictionaryParameters.getDictionaryType()==null || dictionaryParameters.getDictionaryType().toString().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary Type given."; - return false; - } - if(dictionaryParameters.getDictionary()==null || dictionaryParameters.getDictionary().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Dictionary given."; - return false; - } - return true; - } - - public DictionaryResponse getResult() { - return dictionaryResponse; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetMetricsService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetMetricsService.java deleted file mode 100644 index 5a90bfac9..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/GetMetricsService.java +++ /dev/null @@ -1,157 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.UUID; - -import javax.json.JsonException; - -import org.json.JSONObject; -import org.openecomp.policy.api.MetricsRequestParameters; -import org.openecomp.policy.api.MetricsResponse; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.std.StdMetricsResponse; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class GetMetricsService { - private static final Logger LOGGER = FlexLogger - .getLogger(GetMetricsService.class.getName()); - - private MetricsResponse response = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private MetricsRequestParameters metricsParameters = null; - - public GetMetricsService(String requestID) { - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - } else { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - metricsParameters = new MetricsRequestParameters(); - this.metricsParameters.setRequestID(requestUUID); - - try { - run(); - specialCheck(); - } catch (PolicyException e) { - StdMetricsResponse metricsResponse = new StdMetricsResponse(); - metricsResponse - .setResponseMessage(XACMLErrorConstants.ERROR_DATA_ISSUE - + e); - this.response = metricsResponse; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if (response != null && (response.getResponseMessage() != null - && response.getResponseMessage().contains("PE300"))) { - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyException { - // Get Result. - try { - status = HttpStatus.OK; - response = processResult(); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private MetricsResponse processResult() throws PolicyException { - StdMetricsResponse metricsResponse = new StdMetricsResponse(); - PAPServices papServices = new PAPServices(); - String result = (String) papServices.callPAP(null, new String[] { - "operation=get", "apiflag=getMetrics" }, - metricsParameters.getRequestID(), "metrics"); - - JSONObject json = null; - String message = null; - if (result != null) { - if (result.length() > 81 && result.contains("{")) { - try { - String responseMessage = result.substring(0, 82); - String jsonString = result.substring(result.indexOf('{'), - result.length()); - json = new JSONObject(jsonString); - - int papCount = (int) json.get("papCount"); - int pdpCount = (int) json.get("pdpCount"); - - metricsResponse.setResponseCode(papServices - .getResponseCode()); - metricsResponse.setResponseMessage(responseMessage); - metricsResponse.setPapMetrics(papCount); - metricsResponse.setPdpMetrics(pdpCount); - - } catch (JsonException | IllegalStateException e) { - String jsonString = null; - if(json != null){ - jsonString = json.toString(); - } - message = XACMLErrorConstants.ERROR_DATA_ISSUE - + " improper JSON object : " + jsonString; - LOGGER.error(message + e); - metricsResponse.setResponseMessage(message); - metricsResponse.setResponseCode(400); - return metricsResponse; - } - } else { - message = result; - metricsResponse.setResponseCode(400); - metricsResponse.setResponseMessage(message); - return metricsResponse; - } - - } else { - message = XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "There was an issue with connecting to the PAP, " - + "review the logs for further debugging."; - metricsResponse.setResponseCode(500); - metricsResponse.setResponseMessage(message); - return metricsResponse; - } - - return metricsResponse; - } - - public MetricsResponse getResult() { - return response; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ListConfigService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ListConfigService.java deleted file mode 100644 index 9aca4c049..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/ListConfigService.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.ArrayList; -import java.util.Collection; - -import org.openecomp.policy.api.ConfigRequestParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.PolicyConfig; -import org.springframework.http.HttpStatus; - -public class ListConfigService { - private static Logger LOGGER = FlexLogger.getLogger(ListConfigService.class.getName()); - - private Collection<String> results = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - - public ListConfigService(ConfigRequestParameters configRequestParameters, - String requestID) { - GetConfigService getConfigService = new GetConfigService(configRequestParameters,requestID); - Collection<PolicyConfig> policyConfigs = getConfigService.getResult(); - LOGGER.info("Transferring Config Results to List. "); - if(policyConfigs!=null){ - results = new ArrayList<String>(); - status = HttpStatus.OK; - for(PolicyConfig policyConfig : policyConfigs){ - if(policyConfig.getPolicyConfigMessage()!=null && policyConfig.getPolicyConfigMessage().contains("PE300")){ - results.add(policyConfig.getPolicyConfigMessage()); - status = HttpStatus.BAD_REQUEST; - } else { - results.add("Policy Name: " + policyConfig.getPolicyName()); - } - } - } - } - - public Collection<String> getResult() { - return results; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/MicroServicesPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/MicroServicesPolicyService.java deleted file mode 100644 index 3188292d7..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/MicroServicesPolicyService.java +++ /dev/null @@ -1,135 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import javax.json.JsonException; -import javax.json.JsonObject; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.utils.PolicyApiUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; - -/** - * MicroServices Policy implementation. - * - * @version 0.1 - */ -public class MicroServicesPolicyService{ - private static final Logger LOGGER = FlexLogger.getLogger(MicroServicesPolicyService.class.getName()); - - private PAPServices papServices = null; - private PolicyParameters policyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String date = null; - private String ecompName = null; - private JsonObject microServiceAttributes = null; - - public MicroServicesPolicyService(String policyName, String policyScope, PolicyParameters policyParameters, String date) { - this.policyParameters = policyParameters; - this.policyName = policyName; - this.policyScope = policyScope; - this.date = date; - papServices = new PAPServices(); - } - - public Boolean getValidation() { - if(policyParameters.getConfigBody()==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " No Micro Service or Attributes Config Body Present"; - return false; - } - try{ - microServiceAttributes = PolicyApiUtils.stringToJsonObject(policyParameters.getConfigBody()); - } catch(JsonException| IllegalStateException e){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE+ " improper JSON object : " + policyParameters.getConfigBody(); - LOGGER.error("Error while parsing JSON body for MicroService Policy creation. ", e); - return false; - } - ecompName = policyParameters.getEcompName(); - if (ecompName==null||ecompName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Ecomp Name given."; - return false; - } - boolean levelCheck = false; - levelCheck = PolicyApiUtils.isNumeric(policyParameters.getRiskLevel()); - if (!levelCheck){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Risk Level given."; - return false; - } - return true; - } - - public String getMessage() { - return message; - } - - public String getResult(boolean updateFlag) throws PolicyException{ - String response = null; - String operation = null; - if (updateFlag){ - operation = "update"; - } else { - operation = "create"; - } - // get values and attributes from the JsonObject - String uuid = null; - String msLocation = null; - String configName = null; - String microService = null; - String policyDescription=null; - String priority=null; - String version=null; - if (microServiceAttributes.get("service")!=null){ - microService = microServiceAttributes.get("service").toString().replace("\"", ""); - } - if (microServiceAttributes.get("uuid")!=null){ - uuid = microServiceAttributes.get("uuid").toString().replace("\"", ""); - } - if (microServiceAttributes.get("location")!=null){ - msLocation = microServiceAttributes.get("location").toString().replace("\"", ""); - } - if (microServiceAttributes.get("configName")!=null){ - configName = microServiceAttributes.get("configName").toString().replace("\"", ""); - } - if(microServiceAttributes.containsKey("description")){ - policyDescription = microServiceAttributes.get("description").toString().replace("\"", ""); - } - if(microServiceAttributes.containsKey("priority")){ - priority = microServiceAttributes.get("priority").toString().replace("\"", ""); - } - if(microServiceAttributes.containsKey("version")){ - version = microServiceAttributes.get("version").toString().replace("\"", ""); - } - // Create Policy. - StdPAPPolicy newPAPPolicy = new StdPAPPolicy("Micro Service", policyName, policyDescription, ecompName, - configName, microService, uuid, msLocation, microServiceAttributes.toString(), priority, - version, updateFlag, policyScope, 0, policyParameters.getRiskLevel(), - policyParameters.getRiskType(), String.valueOf(policyParameters.getGuard()), date); - // Send JSON Object to PAP. - response = (String) papServices.callPAP(newPAPPolicy, new String[] {"operation="+operation, "apiflag=api", "policyType=Config"}, policyParameters.getRequestID(), "ConfigMS"); - LOGGER.info("Policy MS created Response: " + response); - return response; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/NotificationService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/NotificationService.java deleted file mode 100644 index 4b453fa87..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/NotificationService.java +++ /dev/null @@ -1,314 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.File; -import java.io.IOException; -import java.io.PrintWriter; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardOpenOption; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.util.UUID; -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.TimeUnit; -import java.util.stream.Collectors; -import java.util.stream.Stream; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.utils.BusPublisher; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -import com.att.research.xacml.util.XACMLProperties; - -public class NotificationService { - public static final String BACKUPFILE = "topicBackup.txt"; - private static Logger logger = FlexLogger.getLogger(GetDictionaryService.class.getName()); - private static ConcurrentHashMap<String, Date> topicQueue = new ConcurrentHashMap<>(); - private static int interval = 15000; - private static Thread backUpthread = null; - private static Object resourceLock = new Object(); - private static List<String> dmaapList = null; - private static String dmaapServers = null; - private static String aafLogin = null; - private static String aafPassword = null; - - private String notificationResponse = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - - /** - * NotificationService Constructor. - * - * @param notificationTopic Topic Name in String format. - * @param requestID Request ID in String format. - * @param serviceType Needs to be NotificationServiceType based enumeration value. - */ - public NotificationService(String notificationTopic, String requestID, NotificationServiceType serviceType) { - init(); - if(dmaapServers==null || aafLogin==null || aafPassword==null){ - notificationResponse = XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file"; - return; - } - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - logger.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - logger.info("Generated Random UUID: " + requestUUID.toString()); - } - try{ - run(notificationTopic, serviceType); - }catch(PolicyException e){ - notificationResponse = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private static void init() { - if(dmaapServers==null || aafLogin==null || aafPassword==null){ - dmaapServers = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS); - aafLogin = XACMLProperties.getProperty("DMAAP_AAF_LOGIN"); - aafPassword = XACMLProperties.getProperty("DMAAP_AAF_PASSWORD"); - interval = Integer.parseInt(XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_DELAY, Integer.toString(interval))); - if(dmaapServers==null || aafLogin==null || aafPassword==null){ - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file "); - return; - } - // Cleanup Values. - dmaapServers= dmaapServers.trim(); - aafLogin = aafLogin.trim(); - aafPassword = aafPassword.trim(); - // Get servers to List. - if(dmaapServers.contains(",")) { - dmaapList = new ArrayList<>(Arrays.asList(dmaapServers.split("\\s*,\\s*"))); - } else { - dmaapList = new ArrayList<>(); - dmaapList.add(dmaapServers); - } - callThread(); - } - } - - private void run(String notificationTopic, NotificationServiceType serviceType) throws PolicyException{ - // Check Validation - if(notificationTopic==null){ - String message = "Notification Topic is null"; - logger.error(message); - throw new PolicyException(message); - } - notificationTopic = notificationTopic.trim(); - if(notificationTopic.isEmpty()){ - String message = "Notification Topic is not valid. "; - logger.error(message); - throw new PolicyException(message); - } - // if already exists give error.Saying already registered. - // Get Result. - try{ - status = HttpStatus.OK; - switch (serviceType) { - case ADD: - addTopic(notificationTopic); - notificationResponse = "Success!! Please give permissions to " + aafLogin + " that PDP will use to publish on given topic :" + notificationTopic + - "\n Start calling /sendHeartbeat API at an interval less than " + Integer.toString(interval) + "ms"; - break; - case REMOVE: - removeTopic(notificationTopic); - notificationResponse = "Notification Topic :" + notificationTopic + " has been removed and PDP will not publish notifications to this Topic."; - break; - case HB: - heartBeat(notificationTopic); - notificationResponse = "Success!! HeartBeat registered."; - break; - } - }catch (Exception e){ - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - // Used to register Heart beat. - private void heartBeat(String notificationTopic) throws PolicyException{ - if(!topicQueue.isEmpty()&& topicQueue.containsKey(notificationTopic)){ - topicQueue.put(notificationTopic, new Date()); - }else{ - logger.info("Failed HeartBeat, Topic " + notificationTopic + "is not registered."); - throw new PolicyException("Failed HeartBeat, Topic " + notificationTopic + "is not registered."); - } - } - - // Used to remove Topic. - private static void removeTopic(String notificationTopic) throws PolicyException{ - if(topicQueue.containsKey(notificationTopic)){ - topicQueue.remove(notificationTopic); - removeTopicFromBackup(notificationTopic); - }else{ - logger.info("Failed Removal, Topic " + notificationTopic + " is not registered."); - throw new PolicyException("Failed Removal, Topic " + notificationTopic + " is not registered."); - } - } - - private static void removeTopicFromBackup(String notificationTopic) { - synchronized (resourceLock) { - try (Stream<String> lines = Files.lines(Paths.get(BACKUPFILE))) { - List<String> replaced = lines.map(line-> (line.split("=")[0].equals(notificationTopic)?"":line)).collect(Collectors.toList()); - try (PrintWriter pw = new PrintWriter( BACKUPFILE, "UTF-8")) { - replaced.forEach(line-> { - if(line.trim().isEmpty()){ - return; - } - pw.println(line); - }); - } - lines.close(); - } catch (IOException e) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + " Could not remove/recreate the backup. ", e); - } - } - } - - // Used to add Topic. - private void addTopic(String notificationTopic) throws PolicyException{ - // validate if topic exists. - if(!topicQueue.isEmpty()&& topicQueue.containsKey(notificationTopic)){ - topicQueue.put(notificationTopic, new Date()); - logger.info("Topic " + notificationTopic + " is already registered."); - throw new PolicyException("Topic " + notificationTopic + " is already registered."); - } - topicQueue.put(notificationTopic, new Date()); - addTopictoBackUp(notificationTopic); - } - - private void addTopictoBackUp(String notificationTopic) { - synchronized (resourceLock) { - try { - Files.write(Paths.get(BACKUPFILE),( notificationTopic+"="+new Date().toString()+"\n").getBytes() , StandardOpenOption.APPEND); - } catch (IOException e) { - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + " Could not add to the backup. ", e); - } - } - } - - // Maintains BackUp and Queue Topic. - private static void callThread() { - // Create the backup file if it not exists. - backup(); - if(backUpthread==null){ - Runnable task = () -> { - logger.info("BackUpThread not set. Starting now !"); - threadTask(); - }; - backUpthread = new Thread(task); - backUpthread.start(); - } - } - - private static void backup(){ - synchronized (resourceLock) { - try{ - File backUpFile = new File(BACKUPFILE); - if(!backUpFile.exists() && backUpFile.createNewFile()){ - logger.info(" BackUp File for topic's has been created !"); - }else{ - // File Already exists. Process file and load the Memory. - Stream<String> stream = Files.lines(Paths.get(BACKUPFILE)); - Map<String,Date> data = stream.map(line -> line.split(",")).collect(Collectors.toMap(e->e[0],e-> new Date())); - stream.close(); - data.forEach((key, value)->logger.debug("Topic retrieved from backUp : " + key + " with Time : " + value)); - topicQueue.putAll(data); - } - }catch(IOException e){ - logger.error(XACMLErrorConstants.ERROR_DATA_ISSUE + " Could not process the backup. ", e); - } - } - } - - private static void threadTask() { - while(true){ - try { - TimeUnit.MILLISECONDS.sleep(interval); - for(Map.Entry<String, Date> map : topicQueue.entrySet()){ - Date currentTime = new Date(); - long timeDiff = 0; - timeDiff = currentTime.getTime()-map.getValue().getTime(); - if(timeDiff < (interval+1500)){ - removeTopic(map.getKey()); - } - } - } catch (InterruptedException | PolicyException e) { - logger.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error during thread execution ", e); - } - } - } - - public String getResult() { - return notificationResponse; - } - - public HttpStatus getResponseCode() { - return status; - } - - /** - * Entry point for sending Notifications from Notification Server. - * @param notification String JSON format of notification message which needs to be sent. - */ - public static void sendNotification(String notification) { - init(); - for (String topic: topicQueue.keySet()){ - sendDmaapMessage(topic, notification); - } - } - - private static void sendDmaapMessage(String topic, String notification) { - BusPublisher publisher = new BusPublisher.DmaapPublisherWrapper(dmaapList, - topic, - aafLogin, - aafPassword); - // Sending notification through DMaaP Message Router - publisher.send( "MyPartitionKey", notification); - logger.debug("Message Published on DMaaP :" + dmaapList.get(0) + "for Topic: " + topic); - publisher.close(); - } - - /** - * Notification service Type Enumeration - */ - public enum NotificationServiceType{ - ADD, - REMOVE, - HB - } - -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PAPServices.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PAPServices.java deleted file mode 100644 index aea058d37..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PAPServices.java +++ /dev/null @@ -1,656 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.OutputStream; -import java.net.HttpURLConnection; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.util.Arrays; -import java.util.Base64; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import org.apache.commons.io.IOUtils; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.config.PDPApiAuth; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPDPPolicy; - -import com.att.research.xacml.util.XACMLProperties; -import com.fasterxml.jackson.databind.ObjectMapper; - -public class PAPServices { - private static final String SUCCESS = "success"; - private static Logger LOGGER = FlexLogger.getLogger(PAPServices.class - .getName()); - - private int responseCode = 0; - private static String environment = "DEVL"; - private static Boolean junit = false; - private static List<String> paps = null; - private static final Object papResourceLock = new Object(); - private String operation = null; - private String requestMethod = null; - private String encoding = null; - - public PAPServices() { - environment = PDPApiAuth.getEnvironment(); - if(paps == null){ - synchronized (papResourceLock) { - String urlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URLS); - if(urlList == null){ - urlList = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL); - } - paps = Arrays.asList(urlList.split(",")); - } - } - } - - private String getPAPEncoding(){ - if(encoding == null){ - String userID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_USERID); - String pass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_PASS); - Base64.Encoder encoder = Base64.getEncoder(); - encoding = encoder.encodeToString((userID+":"+pass).getBytes(StandardCharsets.UTF_8)); - } - return encoding; - } - - private void rotatePAPList(){ - synchronized (papResourceLock) { - Collections.rotate(paps, -1); - } - } - - private String getPAP(){ - String result; - synchronized (papResourceLock) { - result = paps.get(0); - } - return result; - } - - public int getResponseCode() { - return responseCode; - } - - public Object callPAP(Object content, String[] parameters, UUID requestID, - String clientScope) throws PolicyException { - String response = null; - HttpURLConnection connection = null; - responseCode = 0; - // Checking for the available PAPs is done during the first Request and - // the List is going to have the connected PAP as first element. - // This makes it Real-Time to change the list depending on their - // availability. - if (paps == null || paps.isEmpty()) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty."; - LOGGER.error(message); - throw new PolicyException(message); - } - int papsCount = 0; - boolean connected = false; - while (papsCount < paps.size()) { - try { - String fullURL = getPAP(); - fullURL = checkParameter(parameters, fullURL); - URL url = new URL(fullURL); - LOGGER.debug("--- Sending Request to PAP : "+ url.toString() + " ---"); - // Open the connection - connection = (HttpURLConnection) url.openConnection(); - // Setting Content-Type - connection.setRequestProperty("Content-Type","application/json"); - // Adding Authorization - connection.setRequestProperty("Authorization", "Basic "+ getPAPEncoding()); - connection.setRequestProperty("Environment", environment); - connection.setRequestProperty("ClientScope", clientScope); - // set the method and headers - connection.setRequestMethod(requestMethod); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(false); - connection.setDoOutput(true); - connection.setDoInput(true); - // Adding RequestID - if (requestID == null) { - requestID = UUID.randomUUID(); - LOGGER.info("No request ID provided, sending generated ID: " - + requestID.toString()); - } else { - LOGGER.info("Using provided request ID: " - + requestID.toString()); - } - connection.setRequestProperty("X-ECOMP-RequestID", - requestID.toString()); - if (content != null && (content instanceof InputStream)) { - // send current configuration - try (OutputStream os = connection.getOutputStream()) { - int count = IOUtils.copy((InputStream) content, os); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("copied to output, bytes=" + count); - } - } - } else if(content != null){ - // the content is an object to be encoded in JSON - ObjectMapper mapper = new ObjectMapper(); - if (!junit) { - mapper.writeValue(connection.getOutputStream(), - content); - } - } - // DO the connect - connection.connect(); - responseCode = connection.getResponseCode(); - // If Connected to PAP then break from the loop and continue - // with the Request - if (connection.getResponseCode() > 0 || junit) { - connected = true; - break; - } else { - LOGGER.debug(XACMLErrorConstants.ERROR_PERMISSIONS+ "PAP Response Code : " + connection.getResponseCode()); - rotatePAPList(); - } - } catch (Exception e) { - // This means that the PAP is not working - if (junit) { - connected = true; - break; - } - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "PAP connection Error : " + e); - rotatePAPList(); - } - papsCount++; - } - if (connected) { - // Read the Response - LOGGER.debug("connected to the PAP : " + getPAP()); - LOGGER.debug("--- Response: ---"); - if(connection != null){ - Map<String, List<String>> headers = connection.getHeaderFields(); - for (String key : headers.keySet()) { - LOGGER.debug("Header :" + key + " Value: " + headers.get(key)); - } - - try { - response = checkResponse(connection, requestID); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - response = XACMLErrorConstants.ERROR_SYSTEM_ERROR + e; - throw new PolicyException( - XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "Decoding the result ", e); - } - if (junit) { - response = SUCCESS; - } - }else{ - response = XACMLErrorConstants.ERROR_SYSTEM_ERROR + "connection is null"; - } - return response; - } else { - response = XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "Unable to get valid response from PAP(s) " + paps; - return response; - } - } - - public String getActiveVersion(String policyScope, String filePrefix, String policyName, String clientScope, UUID requestID) { - String version = null; - HttpURLConnection connection = null; - String [] parameters = {"apiflag=version","policyScope="+policyScope, "filePrefix="+filePrefix, "policyName="+policyName}; - if (paps == null || paps.isEmpty()) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty."); - try { - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"PAPs List is empty."); - } catch (Exception e) { - LOGGER.error(e.getMessage() + e); - } - }else { - int papsCount = 0; - boolean connected = false; - while (papsCount < paps.size()) { - try { - String fullURL = getPAP(); - if (parameters != null && parameters.length > 0) { - String queryString = ""; - for (String p : parameters) { - queryString += "&" + p; - } - fullURL += "?" + queryString.substring(1); - } - - URL url = new URL (fullURL); - - //Open the connection - connection = (HttpURLConnection)url.openConnection(); - - // Setting Content-Type - connection.setRequestProperty("Content-Type", - "application/json"); - - // Adding Authorization - connection.setRequestProperty("Authorization", "Basic " - + getPAPEncoding()); - - connection.setRequestProperty("Environment", environment); - connection.setRequestProperty("ClientScope", clientScope); - - - //set the method and headers - connection.setRequestMethod("GET"); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(false); - connection.setDoOutput(true); - connection.setDoInput(true); - connection.setRequestProperty("X-ECOMP-RequestID", requestID.toString()); - - //DO the connect - connection.connect(); - - // If Connected to PAP then break from the loop and continue with the Request - if (connection.getResponseCode() > 0) { - connected = true; - break; - - } else { - LOGGER.debug(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error"); - } - } catch (Exception e) { - // This means that the PAP is not working - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "PAP connection Error : " + e); - rotatePAPList(); - } - papsCount++; - } - - if (connected) { - //Read the Response - LOGGER.debug("connected to the PAP : " + getPAP()); - LOGGER.debug("--- Response: ---"); - Map<String, List<String>> headers = connection.getHeaderFields(); - for (String key : headers.keySet()) { - LOGGER.debug("Header :" + key + " Value: " + headers.get(key)); - } - try { - if (connection.getResponseCode() == 200) { - // Check for successful creation of policy - version = connection.getHeaderField("version"); - LOGGER.debug("ActiveVersion from the Header: " + version); - } else if (connection.getResponseCode() == 403) { - LOGGER.error(XACMLErrorConstants.ERROR_PERMISSIONS + "response code of the URL is " - + connection.getResponseCode() + ". PEP is not Authorized for making this Request!! \n Contact Administrator for this Scope. "); - version = "pe100"; - } else if (connection.getResponseCode() == 404) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is " - + connection.getResponseCode() + ". This indicates a problem with getting the version from the PAP"); - version = "pe300"; - } else { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "BAD REQUEST: Error occured while getting the version from the PAP. The request may be incorrect."); - } - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - try { - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"ERROR in connecting to the PAP ", e); - } catch (Exception e1) { - LOGGER.error(e1.getMessage() + e1); - } - } - - } else { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to get valid response from PAP(s) " + paps); - try { - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE +"ERROR in connecting to the PAP "); - } catch (Exception e) { - LOGGER.error(e.getMessage() + e); - } - } - } - return version; - } - - private String checkResponse(HttpURLConnection connection, UUID requestID) throws IOException { - String response = null; - if (responseCode == 200 || junit) { - // Check for successful creation of policy - String isSuccess = null; - if (!junit) { // is this a junit test? - isSuccess = connection.getHeaderField("successMapKey"); - operation = connection.getHeaderField("operation"); - } else { - isSuccess = SUCCESS; - } - if (SUCCESS.equals(isSuccess)) { - if ("update".equals(operation)) { - response = "Transaction ID: " + requestID + " --Policy with the name "+ connection.getHeaderField("policyName") - + " was successfully updated. "; - if (connection.getHeaderField("safetyChecker")!=null) { - response = response - + "\n\nPolicy Safety Checker Warning: This closedLoopControlName " - + "is potentially in conflict with " + connection.getHeaderField("conflictCLName") - + " that already exists." + " See detailed information on ClosedLoop Pairs below: " - +"\n\n"+connection.getHeaderField("safetyChecker"); - } - } else if ("create".equals(operation)) { - response = "Transaction ID: " + requestID + " --Policy with the name "+ connection.getHeaderField("policyName") - + " was successfully created."; - if (connection.getHeaderField("safetyChecker")!=null) { - response = response - + "\n\nPolicy Safety Checker Warning: This closedLoopControlName " - + "is potentially in conflict with " + connection.getHeaderField("conflictCLName") - + " that already exists. " + "See detailed information on ClosedLoop Pairs below: " - +"\n\n"+connection.getHeaderField("safetyChecker"); - } - } else if ("delete".equals(operation)) { - response = "Transaction ID: " + requestID + " --The policy was successfully deleted."; - } else if ("import".equals(operation)) { - response = "Transaction ID: " + requestID + " --The policy engine import for "+ connection.getHeaderField("service") - + " was successfull."; - } else if ("createDictionary".equals(operation)) { - response = "Transaction ID: " + requestID + " --Dictionary Item was added successfully!"; - } else if ("updateDictionary".equals(operation)) { - response = "Transaction ID: " + requestID + " --Dictionary Item was updated successfully!"; - } else if ("getDictionary".equals(operation)) { - String json = null; - try { - - //get the json string from the response - InputStream is = connection.getInputStream(); - - // read the inputStream into a buffer (trick found online scans entire input looking for end-of-file) - java.util.Scanner scanner = new java.util.Scanner(is); - scanner.useDelimiter("\\A"); - json = scanner.hasNext() ? scanner.next() : ""; - scanner.close(); - - } catch (IOException e1) { - LOGGER.error(e1.getMessage() + e1); - } - response = "Transaction ID: " + requestID + " --Dictionary Items Retrieved " + json; - } else if ("getMetrics".equals(operation)) { - response = "Transaction ID: " + requestID + " --Policy Metrics Retrieved " + connection.getHeaderField("metrics"); - } - LOGGER.info(response); - } else { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Operation unsuccessful, unable to complete the request!"; - LOGGER.error(message); - response = message; - } - } else if (connection.getResponseCode() == 202) { - if ("delete".equalsIgnoreCase(connection.getHeaderField("operation")) && - "true".equals(connection.getHeaderField("lockdown"))) { - response = "Transaction ID: " - + requestID - + " --Policies are locked down, please try again later."; - LOGGER.warn(response); - } - } else if (connection.getResponseCode() == 204) { - if ("push".equals(connection.getHeaderField("operation"))) { - response = "Transaction ID: " - + requestID - + " --Policy '" - + connection.getHeaderField("policyId") - + "' was successfully pushed to the PDP group '" - + connection.getHeaderField("groupId") + "'."; - LOGGER.info(response); - } - } else if (connection.getResponseCode() == 400 && connection.getHeaderField("error") != null) { - response = connection.getHeaderField("error"); - LOGGER.error(response); - } else if (connection.getResponseCode() == 403) { - response = XACMLErrorConstants.ERROR_PERMISSIONS - + "response code of the URL is " - + connection.getResponseCode() - + ". PEP is not Authorized for making this Request!! \n Contact Administrator for this Scope. "; - LOGGER.error(response); - } else if (connection.getResponseCode() == 404 && connection.getHeaderField("error") != null) { - if ("unknownGroupId".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + connection.getHeaderField("message") - + " Please check the pdpGroup you are requesting to move the policy to."; - LOGGER.error(response); - } - } else if (connection.getResponseCode() == 409 && connection.getHeaderField("error") != null) { - if ("modelExistsDB".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Import Value Exist Error: The import value " - + connection.getHeaderField("service") - + " already exist on the PAP. " - + "Please create a new import value."; - } else if ("policyExists".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Policy Exist Error: The Policy " - + connection.getHeaderField("policyName") - + " already exist on the PAP. " - + "Please create a new policy or use the update API to modify the existing one."; - } else if ("dictionaryItemExists".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Dictionary Item Exist Error: The Dictionary Item already exist in the database. " - + "Please create a new Dictionary Item or use the update API to modify the existing one."; - } else if ("duplicateGroup".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Group Policy Scope List Exist Error: The Group Policy Scope List for this Dictionary Item already exist in the database. " - + "Duplicate Group Policy Scope Lists for multiple groupNames is not allowed. " - + "Please review the request and verify that the groupPolicyScopeListData1 is unique compared to existing groups."; - } else if("PolicyInPDP".equals(connection.getHeaderField("error"))){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Policy Exist Error: The Policy trying to be deleted is active in PDP. " - + "Active PDP Polcies are not allowed to be deleted from PAP. " - + "Please First remove the policy from PDP in order to successfully delete the Policy from PAP."; - } - LOGGER.error(response); - } else if (connection.getResponseCode() == 500 && connection.getHeaderField("error") != null) { - if ("jpautils".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "Could not create JPAUtils instance on the PAP"; - } else if ("deleteDB".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "Failed to delete Policy from database."; - } else if ("deleteFile".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Cannot delete the policy file"; - } else if ("groupUpdate".equals(connection.getHeaderField("error"))) { - response = connection.getHeaderField("message"); - } else if ("unknown".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_UNKNOWN - + "Failed to delete the policy for an unknown reason. Check the file system and other logs for further information."; - } else if ("deleteConfig".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Cannot delete the configuration or action body file in specified location."; - } else if ("missing".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Failed to create value in database because service does match a value in file"; - } else if ("importDB".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Database errors during policy engine import"; - } else if ("policyCopyError".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_PROCESS_FLOW - + connection.getHeaderField("message"); - } else if ("addGroupError".equals(connection.getHeaderField("error"))) { - response = connection.getHeaderField("message"); - } else if ("validation".equals(connection.getHeaderField("error"))){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "Validation errors during policy engine " + connection.getHeaderField("operation") + - " for " + connection.getHeaderField("service"); - } else if ("error".equals(connection.getHeaderField("error"))) { - response = XACMLErrorConstants.ERROR_UNKNOWN - + "Could not create or update the policy for and unknown reason"; - }else{ - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "BAD REQUEST: Error occured while attempting perform this operation.. the request may be incorrect. " + connection.getHeaderField("error"); - } - LOGGER.error(response); - } else { - response = XACMLErrorConstants.ERROR_DATA_ISSUE - + "BAD REQUEST: Error occured while attempting perform this operation.. the request may be incorrect."; - LOGGER.error(response); - } - return response; - } - - private String checkParameter(String[] parameters, String fullURL) { - if (parameters != null && parameters.length > 0) { - String queryString = ""; - for (String p : parameters) { - queryString += "&" + p; - if (p.equalsIgnoreCase("operation=post")) { - requestMethod = "POST"; - } else if (p.equalsIgnoreCase("operation=delete")) { - requestMethod = "DELETE"; - operation = "delete"; - } else if (p.equalsIgnoreCase("operation=get")) { - requestMethod = "GET"; - operation = "get"; - } else if (p.equalsIgnoreCase("operation=put")||p.equalsIgnoreCase("operation=create") - ||p.equalsIgnoreCase("operation=update")||p.equalsIgnoreCase("operation=createDictionary")){ - requestMethod = "PUT"; - if (p.equalsIgnoreCase("operation=create")) { - operation = "create"; - } else if (p.equalsIgnoreCase("operation=update")) { - operation = "update"; - } else if (p.equalsIgnoreCase("operation=createDictionary")){ - operation = "createDictionary"; - } - }else if (p.equalsIgnoreCase("importService=MICROSERVICE")||p.equalsIgnoreCase("importService=BRMSPARAM")){ - requestMethod = "PUT"; - } - } - fullURL += "?" + queryString.substring(1); - } - return fullURL; - } - - public StdPDPPolicy pushPolicy(String policyScope, String filePrefix, - String policyName, String clientScope, String pdpGroup, - UUID requestID) throws PolicyException { - String json = "{ " - + "\"apiflag\": \"api\"," - + "\"policyScope\": \""+policyScope+"\"," - + "\"filePrefix\": \""+filePrefix+"\"," - + "\"policyName\": \""+policyName+"\"," - + "\"clientScope\": \""+clientScope+"\"," - + "\"pdpGroup\": \""+pdpGroup+"\"}"; - //String response = null; - HttpURLConnection connection = null; - responseCode = 0; - if (paps == null || paps.isEmpty()) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "PAPs List is Empty."; - LOGGER.error(message); - throw new PolicyException(message); - } - int papsCount = 0; - boolean connected = false; - while (papsCount < paps.size()) { - try { - String fullURL = getPAP(); - fullURL = (fullURL.endsWith("/"))? fullURL+"ecomp/pushPolicy" : fullURL+"/ecomp/pushPolicy"; - URL url = new URL(fullURL); - LOGGER.debug("--- Sending Request to PAP : "+ url.toString() + " ---"); - // Open the connection - connection = (HttpURLConnection) url.openConnection(); - // Setting Content-Type - connection.setRequestProperty("Content-Type","application/json"); - // Adding Authorization - connection.setRequestProperty("Authorization", "Basic "+ getPAPEncoding()); - connection.setRequestProperty("Environment", environment); - connection.setRequestProperty("ClientScope", clientScope); - // set the method and headers - connection.setRequestMethod("POST"); - connection.setUseCaches(false); - connection.setInstanceFollowRedirects(false); - connection.setDoOutput(true); - // Adding RequestID - if (requestID == null) { - requestID = UUID.randomUUID(); - LOGGER.info("No request ID provided, sending generated ID: " - + requestID.toString()); - } else { - LOGGER.info("Using provided request ID: " - + requestID.toString()); - } - connection.setRequestProperty("X-ECOMP-RequestID", - requestID.toString()); - // DO the connect - try (OutputStream os = connection.getOutputStream()) { - int count = IOUtils.copy(new ByteArrayInputStream(json.getBytes(StandardCharsets.UTF_8)), os); - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("copied to output, bytes=" + count); - } - } - connection.connect(); - responseCode = connection.getResponseCode(); - // If Connected to PAP then break from the loop and continue - // with the Request - if (connection.getResponseCode() > 0 || junit) { - connected = true; - break; - } else { - LOGGER.debug(XACMLErrorConstants.ERROR_PERMISSIONS+ "PAP Response Code : " + connection.getResponseCode()); - rotatePAPList(); - } - } catch (Exception e) { - // This means that the PAP is not working - if (junit) { - connected = true; - break; - } - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "PAP connection Error : " + e); - rotatePAPList(); - } - papsCount++; - } - if (connected) { - // Read the Response - LOGGER.debug("connected to the PAP : " + getPAP()); - LOGGER.debug("--- Response: ---"); - if(connection != null){ - Map<String, List<String>> headers = connection.getHeaderFields(); - for (String key : headers.keySet()) { - LOGGER.debug("Header :" + key + " Value: " + headers.get(key)); - } - try { - if(responseCode==202){ - StdPDPPolicy policy = (StdPDPPolicy) new ObjectInputStream(connection.getInputStream()).readObject(); - return policy; - } - } catch (IOException | ClassNotFoundException e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + e); - throw new PolicyException( - XACMLErrorConstants.ERROR_SYSTEM_ERROR - + "Decoding the result ", e); - } - } - return null; - } else { - return null; - } - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PDPServices.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PDPServices.java deleted file mode 100644 index fb7b8e270..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PDPServices.java +++ /dev/null @@ -1,439 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.StringWriter; -import java.net.MalformedURLException; -import java.util.Collection; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Properties; -import java.util.UUID; - -import javax.json.Json; -import javax.json.JsonReader; -import javax.xml.XMLConstants; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import org.apache.commons.io.IOUtils; -import org.openecomp.policy.api.PolicyConfigStatus; -import org.openecomp.policy.api.PolicyDecision; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PolicyResponseStatus; -import org.openecomp.policy.api.PolicyType; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.XACMLPdpServlet; -import org.openecomp.policy.pdp.rest.api.models.PDPResponse; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.std.Matches; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.w3c.dom.Document; - -import com.att.research.xacml.api.Advice; -import com.att.research.xacml.api.AttributeAssignment; -import com.att.research.xacml.api.Decision; -import com.att.research.xacml.api.Obligation; -import com.att.research.xacml.api.Request; -import com.att.research.xacml.api.Response; -import com.att.research.xacml.api.Result; -import com.att.research.xacml.api.pdp.PDPEngine; -import com.att.research.xacml.std.json.JSONRequest; -import com.att.research.xacml.std.json.JSONResponse; -import com.att.research.xacml.util.XACMLProperties; - -public class PDPServices { - private static final Logger LOGGER = FlexLogger.getLogger(PDPServices.class.getName()); - // Change the default Priority value here. - private static final int DEFAULT_PRIORITY = 9999; - private boolean unique = false; - private Boolean decide = false; - private Request rainydayRequest = null; - - public Collection<PDPResponse> generateRequest(String jsonString, UUID requestID, boolean unique, boolean decide) throws PolicyException{ - this.unique = unique; - this.decide = decide; - Collection<PDPResponse> results = null; - Response response = null; - // Create Request. We need XACML API here. - try { - Request request = JSONRequest.load(jsonString); - // Assign a rainy day treatment request to parse the decided treatment - if (jsonString.contains("BB_ID")) { - rainydayRequest = request; - } - // Call the PDP - LOGGER.info("--- Generating Request: ---\n" + JSONRequest.toString(request)); - response = callPDP(request, requestID); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID + e); - PDPResponse pdpResponse = new PDPResponse(); - results = new HashSet<>(); - pdpResponse.setPolicyConfigMessage("Unable to Call PDP. Error with the URL"); - pdpResponse.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - pdpResponse.setPolicyResponseStatus(PolicyResponseStatus.NO_ACTION_REQUIRED); - results.add(pdpResponse); - throw new PolicyException(e); - } - if (response != null) { - results = checkResponse(response); - } else { - LOGGER.info("No Response Received from PDP"); - PDPResponse pdpResponse = new PDPResponse(); - results = new HashSet<>(); - pdpResponse.setPolicyConfigMessage("No Response Received"); - pdpResponse.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - pdpResponse.setPolicyResponseStatus(PolicyResponseStatus.NO_ACTION_REQUIRED); - results.add(pdpResponse); - } - return results; - } - - private Collection<PDPResponse> checkResponse(Response response) throws PolicyException{ - String pdpConfigLocation = null; - Collection<PDPResponse> combinedResult = new HashSet<>(); - int priority = DEFAULT_PRIORITY; - Map<Integer, PDPResponse> uniqueResult = new HashMap<>(); - for (Result result : response.getResults()) { - if (!result.getDecision().equals(Decision.PERMIT)) { - LOGGER.info("Decision not a Permit. " + result.getDecision().toString()); - PDPResponse pdpResponse = new PDPResponse(); - if (decide) { - String indeterminatePropValue = XACMLProperties.getProperty("decision.inStringdeterminate.response"); - if(result.getDecision().equals(Decision.INDETERMINATE)&& indeterminatePropValue != null){ - if("PERMIT".equalsIgnoreCase(indeterminatePropValue)){ - pdpResponse.setDecision(PolicyDecision.PERMIT); - }else{ - pdpResponse.setDecision(PolicyDecision.DENY); - } - }else{ - pdpResponse.setDecision(PolicyDecision.DENY); - } - for(Advice advice: result.getAssociatedAdvice()){ - for(AttributeAssignment attribute: advice.getAttributeAssignments()){ - pdpResponse.setDetails(attribute.getAttributeValue().getValue().toString()); - break; - } - } - combinedResult.add(pdpResponse); - return combinedResult; - } - pdpResponse.setStatus(XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect Params passed: Decision not a Permit.",PolicyResponseStatus.NO_ACTION_REQUIRED,PolicyConfigStatus.CONFIG_NOT_FOUND); - combinedResult.add(pdpResponse); - return combinedResult; - } else { - if (decide) { - // check for Decision for decision based calls. - PDPResponse pdpResponse = new PDPResponse(); - pdpResponse.setDecision(PolicyDecision.PERMIT); - - //if this is a Rainy Day treatment decision we need to get the selected treatment - if(rainydayRequest!=null){ - pdpResponse.setDetails(getRainyDayTreatment(result)); - } else { - pdpResponse.setDetails("Decision Permit. OK!"); - } - combinedResult.add(pdpResponse); - return combinedResult; - } - if (!result.getAssociatedAdvice().isEmpty()) { - // Configurations should be in advice. - // Also PDP took actions could be here. - for (Advice advice : result.getAssociatedAdvice()) { - int config = 0, uri = 0; - String configURL = null; - String policyName = null; - String policyVersion = null; - Matches match = new Matches(); - Map<String, String> matchingConditions = new HashMap<>(); - Map<String, String> configAttributes = new HashMap<>(); - Map<String, String> responseAttributes = new HashMap<>(); - Map<String, String> actionTaken = new HashMap<>(); - PDPResponse pdpResponse = new PDPResponse(); - Map<String, String> adviseAttributes = new HashMap<>(); - for (AttributeAssignment attribute : advice.getAttributeAssignments()) { - adviseAttributes.put(attribute.getAttributeId().stringValue(), attribute.getAttributeValue().getValue().toString()); - if ("CONFIGURATION".equalsIgnoreCase(attribute.getAttributeValue().getValue().toString())) { - config++; - } else if (attribute.getDataTypeId().stringValue().endsWith("anyURI")) { - uri++; - if (uri == 1) { - configURL = attribute.getAttributeValue().getValue().toString(); - pdpConfigLocation = configURL.replace("$URL", XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)); - } else { - if (!("PDP".equalsIgnoreCase(attribute.getIssuer()))) { - throw new PolicyException(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error having multiple URI in the Policy"); - } - } - } else if ("PolicyName".equalsIgnoreCase(attribute.getAttributeId().stringValue())) { - policyName = attribute.getAttributeValue().getValue().toString(); - } else if ("VersionNumber".equalsIgnoreCase(attribute.getAttributeId().stringValue())) { - policyVersion = attribute.getAttributeValue().getValue().toString(); - } else if ("Priority".equalsIgnoreCase(attribute.getAttributeId().stringValue())){ - try{ - priority = Integer.parseInt(attribute.getAttributeValue().getValue().toString()); - } catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE+ "Unable to Parse Integer for Priority. Setting to default value",e); - priority = DEFAULT_PRIORITY; - } - } else if (attribute.getAttributeId().stringValue().startsWith("matching")) { - matchingConditions.put(attribute.getAttributeId().stringValue() - .replaceFirst("(matching).", ""),attribute.getAttributeValue().getValue().toString()); - if ("ECOMPName".equals(attribute.getAttributeId().stringValue() - .replaceFirst("(matching).", ""))) { - match.setEcompName(attribute.getAttributeValue().getValue().toString()); - } else if ("ConfigName".equals(attribute.getAttributeId().stringValue() - .replaceFirst("(matching).", ""))) { - match.setConfigName(attribute.getAttributeValue().getValue().toString()); - } else { - configAttributes.put(attribute.getAttributeId().stringValue() - .replaceFirst("(matching).", ""),attribute.getAttributeValue().getValue().toString()); - } - } else if (attribute.getAttributeId().stringValue().startsWith("key:")) { - responseAttributes.put(attribute.getAttributeId().stringValue().replaceFirst("(key).", ""), - attribute.getAttributeValue().getValue().toString()); - } else if (attribute.getAttributeId().stringValue().startsWith("controller:")) { - responseAttributes.put("$"+ attribute.getAttributeId().stringValue(), - attribute.getAttributeValue().getValue().toString()); - } else if (attribute.getAttributeId().stringValue().startsWith("dependencies:")) { - responseAttributes.put("$dependency$", - attribute.getAttributeValue().getValue().toString()); - } - } - if (!configAttributes.isEmpty()) { - match.setConfigAttributes(configAttributes); - } - if ((config == 1) && (uri == 1)) { - // If there is a configuration. - try { - LOGGER.debug("Configuration Call to : " + configURL); - pdpResponse = configCall(pdpConfigLocation); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+ e); - pdpResponse.setStatus("Error in Calling the Configuration URL "+ e, - PolicyResponseStatus.NO_ACTION_REQUIRED, - PolicyConfigStatus.CONFIG_NOT_FOUND); - } - pdpResponse.setPolicyName(policyName); - pdpResponse.setPolicyVersion(policyVersion); - pdpResponse.setMatchingConditions(matchingConditions); - pdpResponse.setResponseAttributes(responseAttributes); - if(!unique){ - combinedResult.add(pdpResponse); - }else{ - if(!uniqueResult.isEmpty()){ - if(uniqueResult.containsKey(priority)){ - // Not any more unique, check the matching conditions size - int oldSize = uniqueResult.get(priority).getMatchingConditions().size(); - int newSize = matchingConditions.size(); - if(oldSize < newSize){ - uniqueResult.put(priority, pdpResponse); - }else if(oldSize == newSize){ - pdpResponse = new PDPResponse(); - pdpResponse.setStatus("Two/more Policies have Same Priority and matching conditions, Please correct your policies.", - PolicyResponseStatus.NO_ACTION_REQUIRED, - PolicyConfigStatus.CONFIG_NOT_FOUND); - combinedResult.add(pdpResponse); - unique = false; - return combinedResult; - } - }else{ - uniqueResult.put(priority, pdpResponse); - } - }else{ - uniqueResult.put(priority, pdpResponse); - } - } - } else { - // Else it is Action Taken. - LOGGER.info("Action Taken by PDP. "); - actionTaken.putAll(adviseAttributes); - pdpResponse.setActionTaken(actionTaken); - pdpResponse.setPolicyResponseStatus(PolicyResponseStatus.ACTION_TAKEN); - pdpResponse.setPolicyResponseMessage("Action Taken by the PDP"); - combinedResult.add(pdpResponse); - } - } - } - if (!result.getObligations().isEmpty()) { - // Obligation actions - // Action advised should be in obligations. - for (Obligation obligation : result.getObligations()) { - Map<String, String> actionAdvised = new HashMap<>(); - PDPResponse pdpResponse = new PDPResponse(); - for (AttributeAssignment attribute : obligation.getAttributeAssignments()) { - actionAdvised.put(attribute.getAttributeId().stringValue(), - attribute.getAttributeValue().getValue().toString()); - } - pdpResponse.setActionAdvised(actionAdvised); - pdpResponse.setPolicyResponseStatus(PolicyResponseStatus.ACTION_ADVISED); - pdpResponse.setPolicyResponseMessage("Action has been Advised "); - combinedResult.add(pdpResponse); - } - } - } - } - if(unique){ - // Select Unique policy. - int minNum = DEFAULT_PRIORITY; - for(int num: uniqueResult.keySet()){ - if(num < minNum){ - minNum = num; - } - } - combinedResult.add(uniqueResult.get(minNum)); - // Turn off Unique - unique = false; - } - - return combinedResult; - } - - private String getRainyDayTreatment(Result result) { - String treatment = null; - if (rainydayRequest!=null&& !result.getAssociatedAdvice().isEmpty()) { - // Get the desired treatment for requested errorCode from the Advice - for (Advice advice : result.getAssociatedAdvice()) { - Map<String, String> adviseAttributes = new HashMap<>(); - for (AttributeAssignment attribute : advice.getAttributeAssignments()) { - adviseAttributes.put(attribute.getAttributeId().stringValue(), attribute.getAttributeValue().getValue().toString()); - if ("treatment".equalsIgnoreCase(attribute.getAttributeId().stringValue())){ - treatment = attribute.getAttributeValue().getValue().toString(); - } - } - } - } - return treatment; - } - - private PDPResponse configCall(String pdpConfigLocation) throws Exception{ - PDPResponse pdpResponse = new PDPResponse(); - if(pdpConfigLocation.contains("/")){ - pdpConfigLocation = pdpConfigLocation.replace("/", File.separator); - } - InputStream inputStream = null; - try { - inputStream = new FileInputStream(new File(pdpConfigLocation)); - try { - if (pdpConfigLocation.endsWith("json")) { - pdpResponse.setType(PolicyType.JSON); - JsonReader jsonReader = Json.createReader(inputStream); - pdpResponse.setConfig(jsonReader.readObject().toString()); - jsonReader.close(); - } else if (pdpConfigLocation.endsWith("xml")) { - pdpResponse.setType(PolicyType.XML); - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - dbf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); - dbf.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true); - DocumentBuilder db = null; - try { - db = dbf.newDocumentBuilder(); - Document document = db.parse(inputStream); - DOMSource domSource = new DOMSource(document); - StringWriter writer = new StringWriter(); - StreamResult result = new StreamResult(writer); - TransformerFactory tf = TransformerFactory.newInstance(); - Transformer transformer; - transformer = tf.newTransformer(); - transformer.transform(domSource, result); - pdpResponse.setConfig(writer.toString()); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ e); - throw new Exception(XACMLErrorConstants.ERROR_SCHEMA_INVALID+ "Unable to parse the XML config", e); - } - } else if (pdpConfigLocation.endsWith("properties")) { - pdpResponse.setType(PolicyType.PROPERTIES); - Properties configProp = new Properties(); - configProp.load(inputStream); - Map<String, String> propVal = new HashMap<>(); - for(String name: configProp.stringPropertyNames()) { - propVal.put(name, configProp.getProperty(name)); - } - pdpResponse.setProperty(propVal); - } else if (pdpConfigLocation.endsWith("txt")) { - pdpResponse.setType(PolicyType.OTHER); - String other = IOUtils.toString(inputStream); - IOUtils.closeQuietly(inputStream); - pdpResponse.setConfig(other); - } else { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Config Not Found"); - pdpResponse.setPolicyConfigStatus(PolicyConfigStatus.CONFIG_NOT_FOUND); - pdpResponse.setPolicyConfigMessage("Illegal form of Configuration Type Found."); - inputStream.close(); - return pdpResponse; - } - LOGGER.info("config Retrieved " + pdpConfigLocation); - pdpResponse.setStatus("Config Retrieved! ", - PolicyResponseStatus.NO_ACTION_REQUIRED, - PolicyConfigStatus.CONFIG_RETRIEVED); - return pdpResponse; - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - throw new Exception(XACMLErrorConstants.ERROR_PROCESS_FLOW + - "Cannot open a connection to the configURL", e); - } - } catch (MalformedURLException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in ConfigURL", e); - }finally{ - if(inputStream != null){ - inputStream.close(); - } - } - } - - private Response callPDP(Request request, - UUID requestID) throws Exception{ - Response response = null; - // Get the PDPEngine - if (requestID == null) { - requestID = UUID.randomUUID(); - LOGGER.debug("No request ID provided, sending generated ID: " + requestID.toString()); - } else { - LOGGER.debug("Using provided request ID: " + requestID.toString()); - } - PDPEngine pdpEngine = XACMLPdpServlet.getPDPEngine(); - if (pdpEngine == null) { - String message = "PDPEngine not loaded."; - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message); - return response; - } - // call the PDPEngine to decide and give the response on the Request. - try { - response = pdpEngine.decide(request); - LOGGER.info("Response from the PDP is: \n" + JSONResponse.toString(response)); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + e); - return null; - } - return response; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PolicyEngineImportService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PolicyEngineImportService.java deleted file mode 100644 index 2a526f751..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PolicyEngineImportService.java +++ /dev/null @@ -1,186 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.io.BufferedInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.UUID; - -import org.openecomp.policy.api.ImportParameters; -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.ImportParameters.IMPORT_TYPE; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; -import org.springframework.web.multipart.MultipartFile; - -public class PolicyEngineImportService { - private static Logger LOGGER = FlexLogger.getLogger(PolicyEngineImportService.class.getName()); - - private String importResponse = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private String message = null; - private ImportParameters importParameters = null; - private MultipartFile file = null; - - public PolicyEngineImportService(String importParametersJson, - MultipartFile file, - String requestID) { - try { - this.importParameters = PolicyUtils.jsonStringToObject(importParametersJson, ImportParameters.class); - } catch (Exception e) { - importResponse = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - // This needs to stop here in case if there a issue here. Avoiding Null pointer exceptions. - return; - } - this.file = file; - if(importParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.importParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - importResponse = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(importResponse==null || importResponse.contains("PE200")){ - status = HttpStatus.INTERNAL_SERVER_ERROR; - }else if(importResponse.contains("BAD REQUEST") || importResponse.contains("PE300")){ - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Get Result. - try{ - status = HttpStatus.OK; - importResponse = processResult(); - }catch (Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private String processResult() throws PolicyException{ - String response = null; - InputStream targetStream = null; - String fileName = file.getOriginalFilename(); - switch (importParameters.getServiceType()){ - case MICROSERVICE: - if (fileName.endsWith(".xmi") || fileName.endsWith(".zip")){ - try { - targetStream = new BufferedInputStream(file.getInputStream()); - } catch (IOException e) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in reading in the file provided"; - LOGGER.error(response + e); - return response; - } - }else{ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect File Type Given. Please use a file of type .xmi or .zip."; - LOGGER.error(response); - return response; - } - break; - case BRMSPARAM: - if (fileName.endsWith(".drl")){ - try { - targetStream = new BufferedInputStream(file.getInputStream()); - } catch (IOException e) { - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in reading in the file provided"; - LOGGER.error(response + e); - return response; - } - }else{ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect File Type Given. Please use a file of type .drl"; - LOGGER.error(response); - return response; - } - break; - default: - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "Incorrect ServiceType Given. "; - LOGGER.error(response); - return response; - } - String[] parameters = new String[] {"importService=" + importParameters.getServiceType(), "serviceName=" - + importParameters.getServiceName(), "fileName=" + fileName, "version=" + importParameters.getVersion(), "description=" + importParameters.getDescription()}; - PAPServices papServices = new PAPServices(); - response = (String) papServices.callPAP(targetStream, parameters, importParameters.getRequestID(), "importMS"); - return response; - } - - private boolean getValidation() { - if(importParameters==null){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + " no Import Parameters given. "; - return false; - } - if(importParameters.getServiceName()==null || importParameters.getServiceName().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing service name value."; - return false; - } - if(importParameters.getServiceType()==null || importParameters.getServiceType().toString().trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing service Type value."; - return false; - } - if(importParameters.getServiceType().equals(IMPORT_TYPE.MICROSERVICE) && (importParameters.getVersion()==null || importParameters.getVersion().trim().isEmpty())){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing version value."; - return false; - } - if(file==null || file.isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Missing File."; - return false; - } - return true; - } - - public String getResult() { - return importResponse; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PushPolicyService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PushPolicyService.java deleted file mode 100644 index a703c50d6..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/PushPolicyService.java +++ /dev/null @@ -1,236 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.UUID; - -import org.openecomp.policy.api.PolicyException; -import org.openecomp.policy.api.PushPolicyParameters; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.openecomp.policy.xacml.std.pap.StdPAPPolicy; -import org.openecomp.policy.xacml.std.pap.StdPDPPolicy; -import org.springframework.http.HttpStatus; - -import com.att.research.xacml.api.pap.PAPException; -import com.att.research.xacml.api.pap.PDPPolicy; - -public class PushPolicyService { - private static final Logger LOGGER = FlexLogger.getLogger(PushPolicyService.class.getName()); - - private String pushResult = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private PushPolicyParameters pushPolicyParameters = null; - private String message = null; - private String policyName = null; - private String policyScope = null; - private String pdpGroup = null; - private String policyType = null; - private String filePrefix = null; - private String clientScope = null; - - public PushPolicyService(PushPolicyParameters pushPolicyParameters, - String requestID) { - this.pushPolicyParameters = pushPolicyParameters; - if(pushPolicyParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.pushPolicyParameters.setRequestID(requestUUID); - } - try{ - run(); - specialCheck(); - }catch(PolicyException e){ - pushResult = XACMLErrorConstants.ERROR_DATA_ISSUE + e; - status = HttpStatus.BAD_REQUEST; - } - } - - private void specialCheck() { - if(pushResult.contains("BAD REQUEST") || pushResult.contains("PE300")){ - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyException{ - // Check Validation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyException(message); - } - // Process Results. - try{ - status = HttpStatus.OK; - pushResult = processResult(); - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyException(e); - } - } - - private String processResult() throws PolicyException{ - PAPServices papServices = new PAPServices(); - String response = null; - StdPDPPolicy selectedPolicy = papServices.pushPolicy(policyScope, filePrefix, policyName, clientScope, pdpGroup, pushPolicyParameters.getRequestID()); - if(selectedPolicy==null){ - response = XACMLErrorConstants.ERROR_DATA_ISSUE + "response code of the URL is 404. " - + "This indicates a problem with getting the version from the PAP or the policy does not exist."; - LOGGER.error(response); - return response; - } - try { - LOGGER.debug("StdPDPPolicy object contains: " + selectedPolicy.getId() + ", " + selectedPolicy.getName() + ", " + selectedPolicy.getLocation().toString()); - response = copyPolicy(selectedPolicy, pdpGroup, clientScope, pushPolicyParameters.getRequestID()); - } catch (PAPException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+e.getMessage()); - throw new PolicyException(e); - } - LOGGER.debug("copyPolicy response: " + response); - if(response.contains("successfully")){ - response = (String) papServices.callPAP(selectedPolicy, new String[]{"groupId=" + pdpGroup, "policyId="+selectedPolicy.getId(), "apiflag=addPolicyToGroup", "operation=PUT"}, pushPolicyParameters.getRequestID(), clientScope); - } - LOGGER.debug("Final API response: " + response); - return response; - } - - private String copyPolicy(PDPPolicy policy, String group, String policyType, UUID requestID) throws PAPException { - String response = null; - if (policy == null || group == null) { - throw new PAPException("Null input policy="+policy+" group="+group); - } - try { - StdPAPPolicy location = new StdPAPPolicy(policy.getLocation()); - response = copyFile(policy.getId(), group, location, policyType, requestID); - } catch (Exception e) { - String message = "Unable to PUT policy '" + policy.getId() + "', e:" + e; - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e); - throw new PAPException(message); - } - return response; - } - - private String copyFile(String policyId, String group, StdPAPPolicy location, String clientScope, UUID requestID) throws PAPException { - String response = null; - // send the policy file to the PAP Servlet - PAPServices papService = new PAPServices(); - try { - response = (String) papService.callPAP(location, new String[] {"groupId=" + group, "policyId="+policyId, "apiflag=api", "operation=post"}, requestID, clientScope); - } catch (Exception e) { - String message = "Unable to PUT policy '" + policyId + "', e:" + e; - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + message, e); - throw new PAPException(message); - } - return response; - } - - private boolean getValidation() { - // While Validating, extract the required values. - if (pushPolicyParameters.getPolicyName() != null - && pushPolicyParameters.getPolicyName().contains(".")) { - policyName = pushPolicyParameters.getPolicyName().substring(pushPolicyParameters.getPolicyName().lastIndexOf('.') + 1, - pushPolicyParameters.getPolicyName().length()); - policyScope = pushPolicyParameters.getPolicyName().substring(0,pushPolicyParameters.getPolicyName().lastIndexOf('.')); - LOGGER.info("Name is " + policyName + " scope is " + policyScope); - } else { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Scope given."; - return false; - } - if (policyName==null||policyName.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No Policy Name given."; - return false; - } - policyType = pushPolicyParameters.getPolicyType(); - if(policyType== null || policyType.trim().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No PolicyType given."; - return false; - } - - setClientScope(); - if(clientScope==null){ - return false; - } - - pdpGroup = pushPolicyParameters.getPdpGroup(); - if(pdpGroup==null || pdpGroup.trim().isEmpty()){ - pdpGroup = "default"; - } - - LOGGER.debug("clientScope is " + clientScope); - LOGGER.debug("filePrefix is " + filePrefix); - - return true; - } - - private void setClientScope() { - if ("Firewall".equalsIgnoreCase(policyType)) { - clientScope = "ConfigFirewall"; - filePrefix = "Config_FW_"; - } else if ("Action".equalsIgnoreCase(policyType)) { - clientScope = "Action"; - filePrefix = "Action_"; - } else if ("Decision".equalsIgnoreCase(policyType)) { - clientScope = "Decision"; - filePrefix = "Decision_"; - } else if ("Base".equalsIgnoreCase(policyType)) { - clientScope = "Config"; - filePrefix = "Config_"; - } else if ("ClosedLoop_Fault".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_Fault_"; - } else if ("ClosedLoop_PM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigClosedLoop"; - filePrefix = "Config_PM_"; - } else if ("MicroService".equalsIgnoreCase(policyType)) { - clientScope = "ConfigMS"; - filePrefix = "Config_MS_"; - } else if ("BRMS_RAW".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsRaw"; - filePrefix = "Config_BRMS_Raw_"; - } else if ("BRMS_PARAM".equalsIgnoreCase(policyType)) { - clientScope = "ConfigBrmsParam"; - filePrefix = "Config_BRMS_Param_"; - } else { - clientScope = null; - message = XACMLErrorConstants.ERROR_DATA_ISSUE + policyType - + " is not a valid Policy Type."; - } - } - - public String getResult() { - return pushResult; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/SendEventService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/SendEventService.java deleted file mode 100644 index c16872ebc..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/services/SendEventService.java +++ /dev/null @@ -1,170 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.services; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashSet; -import java.util.Map; -import java.util.Map.Entry; -import java.util.UUID; - -import javax.json.Json; -import javax.json.JsonArrayBuilder; -import javax.json.JsonObject; -import javax.json.JsonObjectBuilder; - -import org.openecomp.policy.api.EventRequestParameters; -import org.openecomp.policy.api.PolicyEventException; -import org.openecomp.policy.api.PolicyResponse; -import org.openecomp.policy.api.PolicyResponseStatus; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.models.PDPResponse; -import org.openecomp.policy.std.StdPolicyResponse; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import org.springframework.http.HttpStatus; - -public class SendEventService { - private static final Logger LOGGER = FlexLogger.getLogger(SendEventService.class.getName()); - - private Collection<PolicyResponse> policyResponses = null; - private HttpStatus status = HttpStatus.BAD_REQUEST; - private EventRequestParameters eventRequestParameters = null; - private String message = null; - - public SendEventService(EventRequestParameters eventRequestParameters, - String requestID) { - this.eventRequestParameters=eventRequestParameters; - if(eventRequestParameters.getRequestID()==null){ - UUID requestUUID = null; - if (requestID != null && !requestID.isEmpty()) { - try { - requestUUID = UUID.fromString(requestID); - } catch (IllegalArgumentException e) { - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString(), e); - } - }else{ - requestUUID = UUID.randomUUID(); - LOGGER.info("Generated Random UUID: " + requestUUID.toString()); - } - this.eventRequestParameters.setRequestID(requestUUID); - } - policyResponses = new ArrayList<>(); - try{ - run(); - }catch(PolicyEventException e){ - StdPolicyResponse policyResponse = new StdPolicyResponse(); - policyResponse.setPolicyResponseMessage(XACMLErrorConstants.ERROR_DATA_ISSUE+e); - policyResponse.setPolicyResponseStatus(PolicyResponseStatus.NO_ACTION_REQUIRED); - policyResponses.add(policyResponse); - status = HttpStatus.BAD_REQUEST; - } - } - - private void run() throws PolicyEventException{ - // getValidation. - if(!getValidation()){ - LOGGER.error(message); - throw new PolicyEventException(message); - } - // Generate Request. - String modelString = getModel().toString(); - LOGGER.debug("Generated JSON Request is: " + modelString); - // Process Result. - try { - PDPServices pdpServices = new PDPServices(); - status = HttpStatus.OK; - policyResponses = eventResult(pdpServices.generateRequest(modelString, eventRequestParameters.getRequestID(),false, false)); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e); - status = HttpStatus.BAD_REQUEST; - throw new PolicyEventException(XACMLErrorConstants.ERROR_DATA_ISSUE +e); - } - } - - private Collection<PolicyResponse> eventResult( - Collection<PDPResponse> generateRequest) { - Collection<PolicyResponse> result = new HashSet<>(); - if (generateRequest == null) { - return result; - } - if (!generateRequest.isEmpty()) { - for (PDPResponse stdStatus : generateRequest) { - StdPolicyResponse policyResponse = new StdPolicyResponse(); - policyResponse.setActionAdvised(stdStatus.getActionAdvised()); - policyResponse.setActionTaken(stdStatus.getActionTaken()); - policyResponse.setPolicyResponseMessage(stdStatus.getPolicyResponseMessage()); - policyResponse.setPolicyResponseStatus(stdStatus.getPolicyResponseStatus()); - policyResponse.setRequestAttributes(eventRequestParameters.getEventAttributes()); - result.add(policyResponse); - } - } - return result; - } - - private JsonObject getModel() throws PolicyEventException{ - JsonArrayBuilder resourceArray = Json.createArrayBuilder(); - Map<String,String> eventAttributes = eventRequestParameters.getEventAttributes(); - for (Entry<String,String> key : eventAttributes.entrySet()) { - if (key.getKey().isEmpty()) { - String message = XACMLErrorConstants.ERROR_DATA_ISSUE + "Cannot have an Empty Key"; - LOGGER.error(message); - throw new PolicyEventException(message); - } - JsonObjectBuilder resourceBuilder = Json.createObjectBuilder(); - if (key.getValue().matches("[0-9]+")) { - int val = Integer.parseInt(key.getValue()); - resourceBuilder.add("Value", val); - } else { - resourceBuilder.add("Value", key.getValue()); - } - resourceBuilder.add("AttributeId", key.getKey()); - resourceArray.add(resourceBuilder); - } - return Json.createObjectBuilder() - .add("Request", Json.createObjectBuilder() - .add("Resource",Json.createObjectBuilder() - .add("Attribute",resourceArray))) - .build(); - } - - private boolean getValidation() { - if (eventRequestParameters == null) { - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No event Parameters Given. "; - return false; - } - if (eventRequestParameters.getEventAttributes() == null || eventRequestParameters.getEventAttributes().isEmpty()){ - message = XACMLErrorConstants.ERROR_DATA_ISSUE + "No event Attributes Given. "; - return false; - } - return true; - } - - public Collection<PolicyResponse> getResult() { - return policyResponses; - } - - public HttpStatus getResponseCode() { - return status; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/utils/PolicyApiUtils.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/utils/PolicyApiUtils.java deleted file mode 100644 index 984cc907b..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/api/utils/PolicyApiUtils.java +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.api.utils; - -import java.io.StringReader; - -import javax.json.Json; -import javax.json.JsonException; -import javax.json.JsonObject; -import javax.json.JsonReader; -import javax.json.stream.JsonParsingException; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; - -import com.google.common.base.CharMatcher; - -public class PolicyApiUtils { - private static Logger LOGGER = FlexLogger.getLogger(PolicyApiUtils.class - .getName()); - - public static Boolean validateNONASCIICharactersAndAllowSpaces( - String jsonString) { - Boolean isValidForm = false; - if (jsonString.isEmpty()) { - LOGGER.error("The Value is empty."); - return false; - } else { - if (CharMatcher.ASCII.matchesAllOf((CharSequence) jsonString)) { - LOGGER.info("The Value does not contain ASCII Characters"); - isValidForm = true; - } else { - LOGGER.error("The Value Contains Non ASCII Characters"); - isValidForm = false; - } - } - return isValidForm; - } - - public static boolean isNumeric(String str) { - for (char c : str.toCharArray()) { - if (!Character.isDigit(c)) - return false; - } - return true; - } - - public static JsonObject stringToJsonObject(String value) - throws JsonException, JsonParsingException, IllegalStateException { - JsonReader jsonReader = Json.createReader(new StringReader(value)); - JsonObject object = jsonReader.readObject(); - jsonReader.close(); - return object; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPApiAuth.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPApiAuth.java deleted file mode 100644 index 5c3dcad60..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPApiAuth.java +++ /dev/null @@ -1,189 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.config; - -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Base64; -import java.util.HashMap; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; - -import org.openecomp.policy.api.PolicyEngineException; -import org.openecomp.policy.common.logging.eelf.MessageCodes; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.utils.AAFPolicyClient; -import org.openecomp.policy.utils.AAFPolicyException; -import org.openecomp.policy.utils.PolicyUtils; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import com.att.research.xacml.util.XACMLProperties; - -public class PDPApiAuth { - private static final Logger LOGGER = FlexLogger.getLogger(PDPApiAuth.class); - - private static String environment = null; - private static Path clientPath = null; - private static Map<String,ArrayList<String>> clientMap = null; - private static Long oldModified = null; - private static AAFPolicyClient aafClient = null; - - private PDPApiAuth(){ - // Private Constructor - } - - /* - * Set Property by reading the properties File. - */ - public static void setProperty() { - environment = XACMLProperties.getProperty("ENVIRONMENT", "DEVL"); - String clientFile = XACMLProperties.getProperty(XACMLRestProperties.PROP_PEP_IDFILE); - if(clientFile!=null){ - clientPath = Paths.get(clientFile); - } - try { - aafClient = AAFPolicyClient.getInstance(XACMLProperties.getProperties()); - } catch (AAFPolicyException | IOException e) { - LOGGER.error(MessageCodes.ERROR_SYSTEM_ERROR, e, "AAF Client Not instantiated properly."); - } - } - - /* - * Return Environment value of the PDP servlet. - */ - public static String getEnvironment() { - if(environment==null){ - setProperty(); - } - return environment; - } - - /* - * Security check for authentication and authorizations. - */ - public static boolean checkPermissions(String clientEncoding, String requestID, - String resource) { - try{ - String[] userNamePass = PolicyUtils.decodeBasicEncoding(clientEncoding); - if(userNamePass==null || userNamePass.length==0){ - String usernameAndPassword = null; - byte[] decodedBytes = Base64.getDecoder().decode(clientEncoding); - usernameAndPassword = new String(decodedBytes, "UTF-8"); - StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); - String username = tokenizer.nextToken(); - String password = tokenizer.nextToken(); - userNamePass= new String[]{username, password}; - } - LOGGER.info("User " + userNamePass[0] + " is Accessing Policy Engine API."); - Boolean result = false; - // Check Backward Compatibility. - try{ - result = clientAuth(userNamePass); - }catch(Exception e){ - LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); - } - if(!result){ - String aafPolicyNameSpace = XACMLProperties.getProperty("policy.aaf.namespace"); - String aafResource = XACMLProperties.getProperty("policy.aaf.resource"); - if(!userNamePass[0].contains("@") && aafPolicyNameSpace!= null){ - userNamePass[0] = userNamePass[0] + "@" + aafPolicyNameSpace; - }else{ - LOGGER.info("No AAF NameSpace specified in properties"); - } - if(aafResource != null){ - resource = aafResource + resource; - }else{ - LOGGER.info("No AAF Resource specified in properties"); - } - LOGGER.info("Contacting AAF in : " + environment); - result = aafClient.checkAuthPerm(userNamePass[0], userNamePass[1], resource, environment, ".*"); - } - return result; - }catch(Exception e){ - LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); - return false; - } - } - - private static Boolean clientAuth(String[] userNamePass){ - if(clientPath==null){ - setProperty(); - } - if (!clientPath.toFile().exists()) { - return false; - }else if(clientPath.toString().endsWith(".properties")) { - try { - readProps(clientPath); - if (clientMap.containsKey(userNamePass[0]) && clientMap.get(userNamePass[0]).get(0).equals(userNamePass[1])) { - return true; - } - }catch(PolicyEngineException e){ - LOGGER.error(MessageCodes.ERROR_PERMISSIONS, e); - return false; - } - } - return false; - } - - private static Map<String, ArrayList<String>> readProps(Path clientPath) throws PolicyEngineException{ - if(oldModified!=null){ - Long newModified = clientPath.toFile().lastModified(); - if (newModified == oldModified) { - return clientMap; - } - } - InputStream in; - Properties clientProp = new Properties(); - try { - in = new FileInputStream(clientPath.toFile()); - clientProp.load(in); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR , e); - throw new PolicyEngineException(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"Cannot Load the Properties file", e); - } - // Read the Properties and Load the Clients and their scopes. - clientMap = new HashMap<>(); - // - for (Object propKey : clientProp.keySet()) { - String clientID = (String)propKey; - String clientValue = clientProp.getProperty(clientID); - if (clientValue != null && clientValue.contains(",")) { - ArrayList<String> clientValues = new ArrayList<>(Arrays.asList(clientValue.split("\\s*,\\s*"))); - if(clientValues.get(0)!=null || clientValues.get(1)!=null || clientValues.get(0).isEmpty() || clientValues.get(1).isEmpty()){ - clientMap.put(clientID, clientValues); - } - } - } - if (clientMap.isEmpty()) { - LOGGER.debug(XACMLErrorConstants.ERROR_PERMISSIONS + "No Clients ID , Client Key and Scopes are available. Cannot serve any Clients !!"); - throw new PolicyEngineException("Empty Client file"); - } - oldModified = clientPath.toFile().lastModified(); - return clientMap; - } -}
\ No newline at end of file diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestConfig.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestConfig.java deleted file mode 100644 index 6686673d3..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestConfig.java +++ /dev/null @@ -1,77 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.config; - -import javax.servlet.MultipartConfigElement; - -import org.openecomp.policy.common.logging.eelf.PolicyLogger; -import org.openecomp.policy.pdp.rest.api.controller.PolicyEngineServices; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.web.servlet.config.annotation.EnableWebMvc; -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; - -import springfox.documentation.builders.ApiInfoBuilder; -import springfox.documentation.builders.PathSelectors; -import springfox.documentation.builders.RequestHandlerSelectors; -import springfox.documentation.service.ApiInfo; -import springfox.documentation.spi.DocumentationType; -import springfox.documentation.spring.web.plugins.Docket; -import springfox.documentation.swagger2.annotations.EnableSwagger2; - -@Configuration -@EnableWebMvc -@EnableSwagger2 -@ComponentScan(basePackageClasses = PolicyEngineServices.class) -public class PDPRestConfig extends WebMvcConfigurerAdapter{ - @Override - public void addResourceHandlers(ResourceHandlerRegistry registry) { - registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/"); - registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); - } - - private ApiInfo apiInfo(){ - return new ApiInfoBuilder() - .title("Policy Engine REST API") - .description("This API helps to make queries against Policy Engine") - .version("3.0") - .build(); - } - - @Bean - public Docket policyAPI(){ - PolicyLogger.info("Setting up Swagger... "); - return new Docket(DocumentationType.SWAGGER_2) - .select() - .apis(RequestHandlerSelectors.basePackage("org.openecomp.policy.pdp.rest.api")) - .paths(PathSelectors.any()) - .build() - .apiInfo(apiInfo()); - } - - @Bean - public MultipartConfigElement multipartConfigElement(){ - String location = System.getProperty("java.io.tmpdir"); - MultipartConfigElement mp = new MultipartConfigElement(location); - return mp; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestInitializer.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestInitializer.java deleted file mode 100644 index e6acc61bd..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/config/PDPRestInitializer.java +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.config; - -import javax.servlet.MultipartConfigElement; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRegistration; - -import org.openecomp.policy.common.logging.eelf.PolicyLogger; -import org.springframework.web.WebApplicationInitializer; -import org.springframework.web.context.support.AnnotationConfigWebApplicationContext; -import org.springframework.web.servlet.DispatcherServlet; - -/** - * PDP REST API configuration initialization. - * - * @version 0.1 - */ -public class PDPRestInitializer implements WebApplicationInitializer { - @Override - public void onStartup(ServletContext container) throws ServletException { - PolicyLogger.info("PDP-REST Application Initialization Started... "); - AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext(); - ctx.register(PDPRestConfig.class); - ctx.setServletContext(container); - ctx.refresh(); - ServletRegistration.Dynamic servlet = container.addServlet( - "dispatcher", new DispatcherServlet(ctx)); - servlet.setLoadOnStartup(1); - servlet.addMapping("/api/*"); - servlet.setMultipartConfig(ctx.getBean(MultipartConfigElement.class)); - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPIPFinderFactory.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPIPFinderFactory.java deleted file mode 100644 index 6de84d174..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPIPFinderFactory.java +++ /dev/null @@ -1,88 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ -package org.openecomp.policy.pdp.rest.impl; - -import java.util.Properties; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.openecomp.policy.common.logging.eelf.MessageCodes; -import org.openecomp.policy.common.logging.eelf.PolicyLogger; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.att.research.xacml.api.pip.PIPException; -import com.att.research.xacml.api.pip.PIPFinder; -import com.att.research.xacml.api.pip.PIPFinderFactory; -import com.att.research.xacml.std.pip.finders.ConfigurableEngineFinder; -import com.att.research.xacml.util.XACMLProperties; - -public class XACMLPdpPIPFinderFactory extends PIPFinderFactory { - private ConfigurableEngineFinder pipFinder; - - private static Log LOGGER = LogFactory.getLog(XACMLPdpPIPFinderFactory.class); - - public XACMLPdpPIPFinderFactory() { - } - - public XACMLPdpPIPFinderFactory(Properties properties) { - } - - @Override - public PIPFinder getFinder() throws PIPException { - if (pipFinder == null) { - synchronized(this) { - if (pipFinder == null) { - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Creating default configurable engine finder"); - } - pipFinder = new ConfigurableEngineFinder(); - Properties xacmlProperties = null; - try { - xacmlProperties = XACMLProperties.getProperties(); - } catch (Exception ex) { - LOGGER.error( XACMLErrorConstants.ERROR_SYSTEM_ERROR+ "Exception getting XACML properties: " + ex.getMessage(), ex); - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, ex, "Exception getting XACML properties"); - return null; - } - if (xacmlProperties != null) { - ((ConfigurableEngineFinder)pipFinder).configure(xacmlProperties); - } - } - } - } - return pipFinder; - } - - @Override - public PIPFinder getFinder(Properties properties) throws PIPException { - if (pipFinder == null) { - synchronized(this) { - if (pipFinder == null) { - if (LOGGER.isDebugEnabled()) { - LOGGER.debug("Creating configurable engine finder using: " + properties); - } - pipFinder = new ConfigurableEngineFinder(); - ((ConfigurableEngineFinder)pipFinder).configure(properties); - } - } - } - return this.pipFinder; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPolicyFinderFactory.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPolicyFinderFactory.java deleted file mode 100644 index 0d6d12a63..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/impl/XACMLPdpPolicyFinderFactory.java +++ /dev/null @@ -1,208 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.impl; - -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.net.MalformedURLException; -import java.net.URL; -import java.net.URLConnection; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -import com.att.research.xacml.std.StdStatusCode; -import com.att.research.xacml.std.dom.DOMStructureException; -import com.att.research.xacml.util.FactoryException; -import com.att.research.xacml.util.XACMLProperties; -import com.att.research.xacmlatt.pdp.policy.Policy; -import com.att.research.xacmlatt.pdp.policy.PolicyDef; -import com.att.research.xacmlatt.pdp.policy.PolicyFinder; -import com.att.research.xacmlatt.pdp.policy.PolicyFinderFactory; -import com.att.research.xacmlatt.pdp.policy.dom.DOMPolicyDef; -import com.att.research.xacmlatt.pdp.std.StdPolicyFinder; -import com.google.common.base.Splitter; - -public class XACMLPdpPolicyFinderFactory extends PolicyFinderFactory { - public static final String PROP_FILE = ".file"; - public static final String PROP_URL = ".url"; - - private static Log LOGGER = LogFactory.getLog(XACMLPdpPolicyFinderFactory.class); - private List<PolicyDef> rootPolicies; - private List<PolicyDef> referencedPolicies; - private boolean needsInit = true; - - private Properties properties = null; - - public XACMLPdpPolicyFinderFactory() { - // - // Here we differ from the StdPolicyFinderFactory in that we initialize right away. - // We do not wait for a policy request to happen to look for and load policies. - // - this.init(); - } - - public XACMLPdpPolicyFinderFactory(Properties properties) { - // - // Save our properties - // - this.properties = properties; - // - // Here we differ from the StdPolicyFinderFactory in that we initialize right away. - // We do not wait for a policy request to happen to look for and load policies. - // - this.init(); - } - - /** - * Loads the <code>PolicyDef</code> for the given <code>String</code> identifier by looking first - * for a ".file" property associated with the ID and using that to load from a <code>File</code> and - * looking for a ".url" property associated with the ID and using that to load from a <code>URL</code>. - * - * @param policyId the <code>String</code> identifier for the policy - * @return a <code>PolicyDef</code> loaded from the given identifier - */ - protected PolicyDef loadPolicyDef(String policyId) { - String propLocation = null; - if (this.properties == null) { - propLocation = XACMLProperties.getProperty(policyId + PROP_FILE); - } else { - propLocation = this.properties.getProperty(policyId + PROP_FILE); - } - if (propLocation != null) { - File fileLocation = new File(propLocation); - if (!fileLocation.exists()) { - XACMLPdpPolicyFinderFactory.LOGGER.error("Policy file " + fileLocation.getAbsolutePath() + " does not exist."); - } else if (!fileLocation.canRead()) { - XACMLPdpPolicyFinderFactory.LOGGER.error("Policy file " + fileLocation.getAbsolutePath() + " cannot be read."); - } else { - try { - XACMLPdpPolicyFinderFactory.LOGGER.info("Loading policy file " + fileLocation); - PolicyDef policyDef = DOMPolicyDef.load(fileLocation); - if (policyDef != null) { - return policyDef; - } - } catch (DOMStructureException ex) { - XACMLPdpPolicyFinderFactory.LOGGER.error( XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Error loading policy file " + fileLocation.getAbsolutePath() + ": " + ex.getMessage(), ex); - return new Policy(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); - } - } - } - if (this.properties == null) { - propLocation = XACMLProperties.getProperty(policyId + PROP_URL); - } else { - propLocation = this.properties.getProperty(policyId + PROP_URL); - } - if (propLocation != null) { - InputStream is = null; - try { - URL url = new URL(propLocation); - URLConnection urlConnection = url.openConnection(); - XACMLPdpPolicyFinderFactory.LOGGER.info("Loading policy file " + url.toString()); - is = urlConnection.getInputStream(); - PolicyDef policyDef = DOMPolicyDef.load(is); - if (policyDef != null) { - return policyDef; - } - } catch (MalformedURLException ex) { - XACMLPdpPolicyFinderFactory.LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Invalid URL " + propLocation + ": " + ex.getMessage(), ex); - } catch (IOException ex) { - XACMLPdpPolicyFinderFactory.LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "IOException opening URL " + propLocation + ": " + ex.getMessage(), ex); - } catch (DOMStructureException ex) { - XACMLPdpPolicyFinderFactory.LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Invalid Policy " + propLocation + ": " + ex.getMessage(), ex); - return new Policy(StdStatusCode.STATUS_CODE_SYNTAX_ERROR, ex.getMessage()); - } finally { - if (is != null) { - try { - is.close(); - } catch (IOException e) { - XACMLPdpPolicyFinderFactory.LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Exception closing InputStream for GET of url " + propLocation + " : " + e.getMessage() + " (May be memory leak)", e); - } - } - } - } - - XACMLPdpPolicyFinderFactory.LOGGER.error(XACMLErrorConstants.ERROR_SYSTEM_ERROR +"No known location for Policy " + policyId); - return null; - } - - /** - * Finds the identifiers for all of the policies referenced by the given property name in the - * <code>XACMLProperties</code> and loads them using the requested loading method. - * - * @param propertyName the <code>String</code> name of the property containing the list of policy identifiers - * @return a <code>List</code> of <code>PolicyDef</code>s loaded from the given property name - */ - protected List<PolicyDef> getPolicyDefs(String propertyName) { - String policyIds = XACMLProperties.getProperty(propertyName); - if (policyIds == null || policyIds.length() == 0) { - return null; - } - - Iterable<String> policyIdArray = Splitter.on(',').trimResults().omitEmptyStrings().split(policyIds); - if (policyIdArray == null) { - return null; - } - - List<PolicyDef> listPolicyDefs = new ArrayList<>(); - for (String policyId : policyIdArray) { - PolicyDef policyDef = this.loadPolicyDef(policyId); - if (policyDef != null) { - listPolicyDefs.add(policyDef); - } - } - return listPolicyDefs; - } - - protected synchronized void init() { - if (this.needsInit) { - if (XACMLPdpPolicyFinderFactory.LOGGER.isDebugEnabled()) { - XACMLPdpPolicyFinderFactory.LOGGER.debug("Initializing"); - } - this.rootPolicies = this.getPolicyDefs(XACMLProperties.PROP_ROOTPOLICIES); - this.referencedPolicies = this.getPolicyDefs(XACMLProperties.PROP_REFERENCEDPOLICIES); - if (XACMLPdpPolicyFinderFactory.LOGGER.isDebugEnabled()) { - XACMLPdpPolicyFinderFactory.LOGGER.debug("Root Policies: " + this.rootPolicies); - XACMLPdpPolicyFinderFactory.LOGGER.debug("Referenced Policies: " + this.referencedPolicies); - } - this.needsInit = false; - } - } - - @Override - public PolicyFinder getPolicyFinder() throws FactoryException { - // - // Force using any properties that were passed upon construction - // - return new StdPolicyFinder(this.rootPolicies, this.referencedPolicies, this.properties); - } - - @Override - public PolicyFinder getPolicyFinder(Properties properties) throws FactoryException { - return new StdPolicyFinder(this.rootPolicies, this.referencedPolicies, properties); - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMBeanListener.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMBeanListener.java deleted file mode 100644 index c56ddba9a..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMBeanListener.java +++ /dev/null @@ -1,85 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.jmx; - -import java.lang.management.ManagementFactory; - -import javax.management.MBeanServer; -import javax.management.ObjectName; -import javax.servlet.ServletContextEvent; -import javax.servlet.ServletContextListener; -import javax.servlet.annotation.WebListener; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; -/** - * - * - */ - -@WebListener -public class PdpRestMBeanListener implements ServletContextListener { - private static final String JMX_OBJECT_NAME = "PdpRest:type=PdpRestMonitor"; - private static final Logger LOGGER = FlexLogger.getLogger(PdpRestMBeanListener.class); - - private ObjectName objectName; - - @Override - public void contextInitialized(ServletContextEvent contextEvent) { - if (LOGGER.isInfoEnabled()) - LOGGER.info("Registering."); - - final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); - try { - objectName = new ObjectName(JMX_OBJECT_NAME); - server.registerMBean(PdpRestMonitor.getSingleton(), objectName); - LOGGER.info("MBean registered: " + objectName); - } catch (Exception e) { - - LOGGER.warn(e.getMessage(), e); - - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to Register " +e.getMessage(), e); - - } - } - // mark - @Override - public void contextDestroyed(ServletContextEvent contextEvent) { - if (LOGGER.isInfoEnabled()) - LOGGER.info("Unregistering"); - final MBeanServer server = ManagementFactory.getPlatformMBeanServer(); - try { - objectName = new ObjectName(JMX_OBJECT_NAME); - server.unregisterMBean(objectName); - if (LOGGER.isInfoEnabled()) - LOGGER.info("MBean unregistered: " + objectName); - } catch (Exception e) { - - LOGGER.warn(e.getMessage(), e); - - LOGGER.warn(XACMLErrorConstants.ERROR_SYSTEM_ERROR + "Unable to Destroy Context" +e.getMessage(), e); - - } - } - -} - diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitor.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitor.java deleted file mode 100644 index 1c088b24e..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitor.java +++ /dev/null @@ -1,162 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.jmx; - -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.atomic.AtomicLong; - -import org.openecomp.policy.xacml.util.MetricsUtil.AvgLatency; -import org.openecomp.policy.xacml.util.MetricsUtil.MaxLatency; -import org.openecomp.policy.xacml.util.MetricsUtil.MinLatency; - -public class PdpRestMonitor implements PdpRestMonitorMBean { - private static PdpRestMonitor singleton = new PdpRestMonitor(); - - private final AtomicLong pdpEvaluationAttempts = new AtomicLong(); - private final AtomicLong pdpEvaluationSuccesses = new AtomicLong(); - private final AtomicLong pdpEvaluationNA = new AtomicLong(); - private final AtomicLong pdpEvaluationPermit = new AtomicLong(); - private final AtomicLong pdpEvaluationDeny = new AtomicLong(); - private final Map<String, Integer> policyCount = new HashMap<>(); - - private final MinLatency pdpEngineDecisionMinLatency = new MinLatency(); - private final MaxLatency pdpEngineDecisionMaxLatency = new MaxLatency(); - private final AvgLatency pdpEngineDecisionAvgLatency = new AvgLatency(); - - private volatile long lastDecisionLatency = 0; - - @Override - public long getPdpEvaluationAttempts() { - return pdpEvaluationAttempts.longValue(); - } - @Override - public long getPdpEvaluationPermit() { - return pdpEvaluationPermit.longValue(); - } - @Override - public long getPdpEvaluationDeny() { - return pdpEvaluationDeny.longValue(); - } - @Override - public long getPdpEvaluationSuccesses() { - return pdpEvaluationSuccesses.longValue(); - } - - @Override - public long getpdpEvaluationNA() { - return pdpEvaluationNA.longValue(); - } - @Override - public long getLastDecisionLatency() { - return lastDecisionLatency; - } - - /** - * @return the pdpEngineDecisionMinLatency - */ - @Override - public long getPdpEngineDecisionMinLatency() { - return pdpEngineDecisionMinLatency.min(); - } - - /** - * @return the pdpEngineDecisionMaxLatency - */ - @Override - public long getPdpEngineDecisionMaxLatency() { - return pdpEngineDecisionMaxLatency.max(); - } - - /** - * @return the pdpEngineDecisionAvgLatency - */ - @Override - public long getPdpEngineDecisionAvgLatency() { - return pdpEngineDecisionAvgLatency.avg(); - } - - @Override - public synchronized void resetLatency() { - this.lastDecisionLatency = 0; - this.pdpEngineDecisionMinLatency.reset(); - this.pdpEngineDecisionMaxLatency.reset(); - this.pdpEngineDecisionAvgLatency.reset(); - } - - @Override - public synchronized void resetCounters() { - this.pdpEvaluationAttempts.set(0); - this.pdpEvaluationSuccesses.set(0); - this.pdpEvaluationNA.set(0); - this.policyCount.clear(); - } - - public void pdpEvaluationAttempts() { - pdpEvaluationAttempts.incrementAndGet(); - } - - public void pdpEvaluationSuccess() { - pdpEvaluationSuccesses.incrementAndGet(); - } - - public void pdpEvaluationNA(){ - pdpEvaluationNA.incrementAndGet(); - } - public void pdpEvaluationPermit(){ - pdpEvaluationPermit.incrementAndGet(); - } - public void pdpEvaluationDeny(){ - pdpEvaluationDeny.incrementAndGet(); - } - - public synchronized void computeLatency(long latency) { - this.lastDecisionLatency = latency; - this.pdpEngineDecisionMinLatency.compute(latency); - this.pdpEngineDecisionMaxLatency.compute(latency); - this.pdpEngineDecisionAvgLatency.compute(latency); - } - - public void policyCountAdd(String policyID, Integer count){ - int countValue = count; - if (policyCount.containsKey(policyID)){ - countValue = countValue + policyCount.get(policyID); - } - policyCount.put(policyID, countValue); - } - public Map<String, Integer> getpolicyMap() { - return policyCount; - } - public Integer getpolicyCount(String policyID) { - if (policyCount.containsKey(policyID)){ - return policyCount.get(policyID); - } - return null; - } - - public static PdpRestMonitor getSingleton() { - return singleton; - } - public static void setSingleton(PdpRestMonitor singleton) { - PdpRestMonitor.singleton = singleton; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitorMBean.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitorMBean.java deleted file mode 100644 index e7db09d24..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/jmx/PdpRestMonitorMBean.java +++ /dev/null @@ -1,40 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.jmx; - -import java.util.Map; - -public interface PdpRestMonitorMBean { - public long getPdpEvaluationAttempts(); - public long getPdpEvaluationSuccesses(); - public long getLastDecisionLatency(); - public long getPdpEngineDecisionMinLatency(); - public long getPdpEngineDecisionMaxLatency(); - public long getPdpEngineDecisionAvgLatency(); - public Integer getpolicyCount(String policyID); - - public void resetLatency(); - public void resetCounters(); - public long getpdpEvaluationNA(); - public long getPdpEvaluationPermit(); - public long getPdpEvaluationDeny(); - public Map<String, Integer> getpolicyMap(); -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/ManualNotificationUpdateThread.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/ManualNotificationUpdateThread.java deleted file mode 100644 index a1d0ece83..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/ManualNotificationUpdateThread.java +++ /dev/null @@ -1,229 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.GeneralSecurityException; -import java.util.ArrayList; -import java.util.LinkedList; -import java.util.List; -import java.util.UUID; - -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.utils.BusConsumer; -import org.openecomp.policy.utils.BusPublisher; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import com.att.nsa.cambria.client.CambriaClientFactory; -import com.att.nsa.cambria.client.CambriaConsumer; -import com.att.nsa.cambria.client.CambriaPublisher; -import com.att.research.xacml.util.XACMLProperties; - -@SuppressWarnings("deprecation") -public class ManualNotificationUpdateThread implements Runnable { - - private static final Logger LOGGER = FlexLogger.getLogger(ManualNotificationUpdateThread.class); - - private static String topic = null; - private static CambriaConsumer CConsumer = null; - private static String clusterList = null; - private static String update = null; - private static BusConsumer dmaapConsumer = null; - private static List<String> dmaapList = null; - private static String propNotificationType = null; - private static String aafLogin = null; - private static String aafPassword = null; - - public volatile boolean isRunning = false; - - public synchronized boolean isRunning() { - return this.isRunning; - } - - public synchronized void terminate() { - this.isRunning = false; - } - - /** - * - * This is our thread that runs on startup if the system is configured to UEB to accept manual update requests - * - */ - @Override - public void run() { - synchronized(this) { - this.isRunning = true; - } - - URL aURL = null; - String group = UUID.randomUUID ().toString (); - String id = "0"; - String returnTopic = null; - propNotificationType = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TYPE); - if ("ueb".equals(propNotificationType)){ - try { - clusterList = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS).trim(); - String url = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID); - aURL = new URL(url); - topic = aURL.getHost() + aURL.getPort(); - } catch (NumberFormatException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Unable to get UEB cluster list or pdp url: ", e); - this.isRunning = false; - } catch (MalformedURLException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in processing URL to create topic for Notification ", e); - } - if(aURL != null){ - String consumerTopic = aURL.getHost() + aURL.getPort() + "UpdateRequest"; - SendMessage(consumerTopic, "Starting-Topic"); - final LinkedList<String> urlList = new LinkedList<> (); - for ( String u : clusterList.split ( "," ) ){ - urlList.add ( u ); - } - - try { - CConsumer = CambriaClientFactory.createConsumer ( null, urlList, consumerTopic , group, id, 20*1000, 1000 ); - } catch (MalformedURLException | GeneralSecurityException e1) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to create UEB Consumer: ", e1); - } - - while (this.isRunning()) { - LOGGER.debug("While loop test _ take out "); - try { - for ( String msg : CConsumer.fetch () ){ - LOGGER.debug("Manual Notification Recieved Message " + msg + " from UEB cluster : "); - returnTopic = processMessage(msg); - if(returnTopic != null){ - SendMessage(returnTopic, update); - } - } - } catch (IOException e) { - LOGGER.debug(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in processing UEB message" + e); - } - } - LOGGER.debug("Stopping UEB Consumer loop will no longer fetch messages from the cluster"); - } - } else if ("dmaap".equals(propNotificationType)) { - String dmaapServers = null; - try { - dmaapServers = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS); - topic = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TOPIC); - aafLogin = XACMLProperties.getProperty("DMAAP_AAF_LOGIN"); - aafPassword = XACMLProperties.getProperty("DMAAP_AAF_PASSWORD"); - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Unable to get DMaaP servers list:", e); - this.isRunning = false; - } - - if(dmaapServers==null || topic==null){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file "); - try { - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file "); - } catch (Exception e) { - LOGGER.error(e); - } - } - - dmaapServers.trim(); - topic.trim(); - aafLogin.trim(); - aafPassword.trim(); - - String consumerTopic = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TOPIC).trim(); - SendMessage(consumerTopic, "Starting-Topic"); - dmaapList = new ArrayList<>(); - for ( String u : dmaapServers.split ( "," ) ){ - dmaapList.add ( u ); - } - - try { - - dmaapConsumer = new BusConsumer.DmaapConsumerWrapper(dmaapList, consumerTopic, aafLogin, aafPassword, group, id, 20*1000, 1000); - } catch (Exception e1) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Unable to create DMaaP Consumer: ", e1); - } - - while (this.isRunning()) { - LOGGER.debug("While loop test _ take out "); - try { - for ( String msg : dmaapConsumer.fetch () ){ - LOGGER.debug("Manual Notification Recieved Message " + msg + " from DMaaP server : "); - returnTopic = processMessage(msg); - if(returnTopic != null){ - SendMessage(returnTopic, update); - } - } - }catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "Error in processing DMaaP message: ", e); } - } - LOGGER.debug("Stopping DMaaP Consumer loop will no longer fetch messages from the servers"); - } - } - - private void SendMessage( String topic, String message) { - CambriaPublisher pub = null; - BusPublisher publisher = null; - try { - if ("ueb".equals(propNotificationType)) { - pub = CambriaClientFactory.createSimplePublisher (null, clusterList, topic ); - pub.send( "pdpReturnMessage", message ); - LOGGER.debug("Sending Message to UEB topic: " + topic); - pub.close(); - - } else if ("dmaap".equals(propNotificationType)){ - publisher = new BusPublisher.DmaapPublisherWrapper(dmaapList,topic,aafLogin,aafPassword); - publisher.send( "pdpReturnMessage", message ); - LOGGER.debug("Sending to Message to DMaaP topic: " + topic); - publisher.close(); - } - - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+ "Error sending notification update: ", e); - } - if(pub != null){ - try { - pub.send( "pdpReturnMessage", message ); - LOGGER.debug("Sending to Message to tpoic" + topic); - pub.close(); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW+ "Error sending notification update" +e); - } - } - } - - private String processMessage(String msg) { - LOGGER.debug("notification message: " + msg); - String[] UID = msg.split("=")[1].split("\""); - - String returnTopic = topic + UID[0]; - if(msg.contains("Starting-Topic")){ - return null; - } - return returnTopic; - } - public static void setUpdate(String update) { - ManualNotificationUpdateThread.update = update; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Notification.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Notification.java deleted file mode 100644 index c9b510ec3..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Notification.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import java.util.Collection; - -import org.openecomp.policy.api.NotificationType; - -/** - * Notification is the POJO which will be used to send the Notifications to the Server. - * Notification must contain the Removal and Updated policies. - * - * @version 0.2 - * - */ -public class Notification { - private Collection<Removed> removedPolicies = null; - private Collection<Updated> loadedPolicies = null; - private NotificationType notificationType= null; - - public Collection<Removed> getRemovedPolicies() { - return removedPolicies; - } - - public void setRemovedPolicies(Collection<Removed> removedPolicies) { - this.removedPolicies = removedPolicies; - } - - public Collection<Updated> getLoadedPolicies() { - return loadedPolicies; - } - - public void setLoadedPolicies(Collection<Updated> loadedPolicies) { - this.loadedPolicies = loadedPolicies; - } - - public NotificationType getNotificationType() { - return notificationType; - } - - public void setNotificationType(NotificationType notificationType){ - this.notificationType= notificationType; - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationController.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationController.java deleted file mode 100644 index 57678461d..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationController.java +++ /dev/null @@ -1,415 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import java.io.File; -import java.io.FileFilter; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.net.URL; -import java.net.URLConnection; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.Paths; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.io.filefilter.WildcardFileFilter; -import org.openecomp.policy.api.NotificationType; -import org.openecomp.policy.api.RemovedPolicy; -import org.openecomp.policy.api.UpdateType; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.PapUrlResolver; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import com.att.research.xacml.api.pap.PDPPolicy; -import com.att.research.xacml.api.pap.PDPStatus; -import com.att.research.xacml.util.XACMLProperties; -import com.att.research.xacmlatt.pdp.policy.AllOf; -import com.att.research.xacmlatt.pdp.policy.AnyOf; -import com.att.research.xacmlatt.pdp.policy.Match; -import com.att.research.xacmlatt.pdp.policy.PolicyDef; -import com.fasterxml.jackson.core.JsonProcessingException; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.ObjectWriter; - -/** - * NotificationController Checks for the Updated and Removed policies. It - * notifies the Server to send Notifications to the Client. - * - * @version 0.2 - * - */ -public class NotificationController { - private static final Logger LOGGER = FlexLogger.getLogger(NotificationController.class); - private static Notification record = new Notification(); - private PDPStatus oldStatus = null; - private Removed removed = null; - private Updated updated = null; - private ManualNotificationUpdateThread registerMaunualNotificationRunnable = null; - private Thread manualNotificationThread = null; - private boolean manualThreadStarted = false; - - private static String notificationJSON = null; - private static String propNotificationType = null; - private static String pdpURL = null; - private static Boolean notificationFlag = false; - - public void check(PDPStatus newStatus,Map<String, PolicyDef> policyContainer) { - boolean updated = false; - boolean removed = false; - Notification notification = new Notification(); - HashSet<Removed> removedPolicies = new HashSet<>(); - HashSet<Updated> updatedPolicies = new HashSet<>(); - - if (oldStatus == null) { - oldStatus = newStatus; - } - // Debugging purpose only. - LOGGER.debug("old config Status :" + oldStatus.getStatus()); - LOGGER.debug("new config Status :" + newStatus.getStatus()); - - // Depending on the above condition taking the Change as an Update. - if (oldStatus.getStatus().toString() != newStatus.getStatus().toString()) { - LOGGER.info("There is an Update to the PDP"); - LOGGER.debug(oldStatus.getLoadedPolicies()); - LOGGER.debug(newStatus.getLoadedPolicies()); - // Check if there is an Update/additions in the policy. - for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) { - boolean change = true; - for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) { - // Check if there are same policies. - if (oldPolicy.getId().equals(newPolicy.getId())) { - // Check if they have same version. - if (oldPolicy.getVersion().equals(newPolicy.getVersion())) { - change = false; - } - } - } - // if there is a change Send the notifications to the Client. - if (change) { - sendUpdate(newPolicy, policyContainer); - updated = true; - updatedPolicies.add(this.updated); - } - } - // Check if there is any removal of policy. - for (PDPPolicy oldPolicy : oldStatus.getLoadedPolicies()) { - boolean change = true; - for (PDPPolicy newPolicy : newStatus.getLoadedPolicies()) { - // Check if there are same policies. - if (oldPolicy.getId().equals(newPolicy.getId())) { - // Check if they have same version. - if (oldPolicy.getVersion().equals(newPolicy.getVersion())) { - change = false; - } - } - } - // if there is a change Send the notifications to the Client. - if (change) { - sendremove(oldPolicy); - removed = true; - removedPolicies.add(this.removed); - } - } - } - // At the end the oldStatus must be updated with the newStatus. - oldStatus = newStatus; - // Sending Notification to the Server to pass over to the clients - if (updated || removed) { - // Call the Notification Server.. - notification.setRemovedPolicies(removedPolicies); - notification.setLoadedPolicies(updatedPolicies); - notification = setUpdateTypes(updated, removed, notification); - ObjectWriter om = new ObjectMapper().writer(); - try { - notificationJSON = om.writeValueAsString(notification); - LOGGER.info(notificationJSON); - // NotificationServer Method here. - propNotificationType = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TYPE); - pdpURL = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_ID); - if (("ueb".equals(propNotificationType)||"dmaap".equals(propNotificationType)) && !manualThreadStarted) { - LOGGER.debug("Starting Thread to accept UEB or DMAAP notfications."); - this.registerMaunualNotificationRunnable = new ManualNotificationUpdateThread(); - this.manualNotificationThread = new Thread(this.registerMaunualNotificationRunnable); - this.manualNotificationThread.start(); - manualThreadStarted = true; - } - String notificationJSON= null; - notificationFlag = true; - try{ - notificationJSON= record(notification); - }catch(Exception e){ - LOGGER.error(e); - } - NotificationServer.setUpdate(notificationJSON); - ManualNotificationUpdateThread.setUpdate(notificationJSON); - } catch (JsonProcessingException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() +e); - } - } - } - - public static void sendNotification(){ - if(notificationFlag){ - try { - NotificationServer.sendNotification(notificationJSON, propNotificationType, pdpURL); - } catch (Exception e) { - LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in sending the Event Notification: "+ e.getMessage() + e); - } - notificationFlag = false; - } - } - - private void sendremove(PDPPolicy oldPolicy) { - removed = new Removed(); - // Want to know what is removed ? - LOGGER.info("Policy removed: " + oldPolicy.getId()+ " with version number: " + oldPolicy.getVersion()); - removed.setPolicyName(oldPolicy.getId()); - removed.setVersionNo(oldPolicy.getVersion()); - removeFile(oldPolicy); - } - - private void sendUpdate(PDPPolicy newPolicy,Map<String, PolicyDef> policyContainer) { - updated = new Updated(); - // Want to know what is new ? - LOGGER.info("The new Policy is: " + newPolicy.getId()); - LOGGER.info("The version no. is: " + newPolicy.getVersion()); - updated.setPolicyName(newPolicy.getId()); - updated.setVersionNo(newPolicy.getVersion()); - updated.setUpdateType(UpdateType.NEW); - // If the policy is of Config type then retrieve its matches. - if (newPolicy.getName().contains(".Config_")) { - // Take a Configuration copy to PDP webapps. - final String urlStart = "attributeId=URLID,expression"; - final String urlEnd = "}}},{"; - String policy = policyContainer.get(newPolicy.getId()).toString(); - if(policy.contains(urlStart)){ - String urlFinePartOne = policy.substring(policy.indexOf(urlStart)+urlStart.length()); - String urlFinePart = urlFinePartOne.substring(0,urlFinePartOne.indexOf(urlEnd)); - String urlString = urlFinePart.substring(urlFinePart.indexOf("value=$URL")+6); - callPap(urlString, "Config"); - } - Iterator<AnyOf> anyOfs = policyContainer.get(newPolicy.getId()).getTarget().getAnyOfs(); - while (anyOfs.hasNext()) { - AnyOf anyOf = anyOfs.next(); - Iterator<AllOf> allOfs = anyOf.getAllOfs(); - while (allOfs.hasNext()) { - AllOf allOf = allOfs.next(); - Iterator<Match> matches = allOf.getMatches(); - HashMap<String, String> matchValues = new HashMap<>(); - while (matches.hasNext()) { - Match match = matches.next(); - LOGGER.info("Attribute Value is: "+ match.getAttributeValue().getValue().toString()); - String[] result = match.getAttributeRetrievalBase().toString().split("attributeId="); - result[1] = result[1].replaceAll("}", ""); - if (!result[1].equals("urn:oasis:names:tc:xacml:1.0:subject:subject-id")) { - LOGGER.info("Attribute id is: " + result[1]); - } - matchValues.put(result[1], match.getAttributeValue().getValue().toString()); - LOGGER.info("Match is : "+ result[1]+ " , " + match.getAttributeValue().getValue().toString()); - } - updated.setMatches(matchValues); - } - } - }else if(newPolicy.getName().contains(".Action_")){ - // Take Configuration copy to PDP Webapps. - // Action policies have .json as extension. - String urlString = "$URL/Action/" + newPolicy.getId().substring(0, newPolicy.getId().lastIndexOf(".")) + ".json"; - callPap(urlString, "Action"); - } - } - - // Adding this for Recording the changes to serve Polling requests.. - private static String record(Notification notification) throws Exception { - // Initialization with updates. - if (record.getRemovedPolicies() == null || record.getLoadedPolicies() == null) { - record.setRemovedPolicies(notification.getRemovedPolicies()); - record.setLoadedPolicies(notification.getLoadedPolicies()); - } else { - // Check if there is anything new and update the record.. - if (record.getLoadedPolicies() != null || record.getRemovedPolicies() != null) { - HashSet<Removed> removedPolicies = (HashSet<Removed>) record.getRemovedPolicies(); - HashSet<Updated> updatedPolicies = (HashSet<Updated>) record.getLoadedPolicies(); - - // Checking with New updated policies. - if (notification.getLoadedPolicies() != null && !notification.getLoadedPolicies().isEmpty()) { - for (Updated newUpdatedPolicy : notification.getLoadedPolicies()) { - // If it was removed earlier then we need to remove from our record - Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator(); - while (oldRemovedPolicy.hasNext()) { - Removed policy = oldRemovedPolicy.next(); - if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) { - if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) { - oldRemovedPolicy.remove(); - } - } - } - // If it was previously updated need to Overwrite it to the record. - Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator(); - while (oldUpdatedPolicy.hasNext()) { - Updated policy = oldUpdatedPolicy.next(); - if (newUpdatedPolicy.getPolicyName().equals(policy.getPolicyName())) { - if (newUpdatedPolicy.getVersionNo().equals(policy.getVersionNo())) { - oldUpdatedPolicy.remove(); - } - } - } - updatedPolicies.add(newUpdatedPolicy); - } - } - // Checking with New Removed policies. - if (notification.getRemovedPolicies() != null && !notification.getRemovedPolicies().isEmpty()) { - for (Removed newRemovedPolicy : notification.getRemovedPolicies()) { - // If it was previously removed Overwrite it to the record. - Iterator<Removed> oldRemovedPolicy = removedPolicies.iterator(); - while (oldRemovedPolicy.hasNext()) { - Removed policy = oldRemovedPolicy.next(); - if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) { - if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) { - oldRemovedPolicy.remove(); - } - } - } - // If it was added earlier then we need to remove from our record. - Iterator<Updated> oldUpdatedPolicy = updatedPolicies.iterator(); - while (oldUpdatedPolicy.hasNext()) { - Updated policy = oldUpdatedPolicy.next(); - if (newRemovedPolicy.getPolicyName().equals(policy.getPolicyName())) { - if (newRemovedPolicy.getVersionNo().equals(policy.getVersionNo())) { - oldUpdatedPolicy.remove(); - } - } - } - removedPolicies.add(newRemovedPolicy); - } - } - record.setRemovedPolicies(removedPolicies); - record.setLoadedPolicies(updatedPolicies); - } - } - // Send the Result to the caller. - ObjectWriter om = new ObjectMapper().writer(); - String json = null; - try { - json = om.writeValueAsString(record); - } catch (JsonProcessingException e) { - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + e.getMessage() + e); - } - LOGGER.info(json); - return json; - } - - private static Notification setUpdateTypes(boolean updated, boolean removed, Notification notification) { - if(notification!=null){ - if(updated && removed){ - notification.setNotificationType(NotificationType.BOTH); - if(notification.getLoadedPolicies()!=null){ - HashSet<Updated> updatedPolicies = new HashSet<>(); - for(Updated oldUpdatedPolicy: notification.getLoadedPolicies()){ - Updated updatePolicy = oldUpdatedPolicy; - if(notification.getRemovedPolicies()!=null){ - for(RemovedPolicy removedPolicy: notification.getRemovedPolicies()){ - String regex = ".(\\d)*.xml"; - if(removedPolicy.getPolicyName().replaceAll(regex, "").equals(oldUpdatedPolicy.getPolicyName().replaceAll(regex, ""))){ - updatePolicy.setUpdateType(UpdateType.UPDATE); - break; - } - } - } - updatedPolicies.add(updatePolicy); - } - notification.setLoadedPolicies(updatedPolicies); - } - }else if(updated){ - notification.setNotificationType(NotificationType.UPDATE); - }else if(removed){ - notification.setNotificationType(NotificationType.REMOVE); - } - } - return notification; - } - - private void removeFile(PDPPolicy oldPolicy) { - try{ - Path removedPolicyFile = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_CONFIG)+File.separator+oldPolicy.getId()); - Files.deleteIfExists(removedPolicyFile); - boolean delete=false; - File dir= null; - if(oldPolicy.getName().startsWith("Config")){ - delete = true; - dir = new File(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+"Config"); - }else if(oldPolicy.getName().startsWith("Action")){ - delete = true; - dir = new File(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+"Action"); - } - if(delete){ - FileFilter fileFilter = new WildcardFileFilter(oldPolicy.getId().substring(0, oldPolicy.getId().lastIndexOf("."))+".*"); - File[] configFile = dir.listFiles(fileFilter); - if(configFile.length==1){ - Files.deleteIfExists(configFile[0].toPath()); - } - } - }catch(Exception e){ - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Couldn't remove the policy/config file " + oldPolicy.getName() + e); - } - } - - private void callPap(String urlString, String type) { - Path configLocation = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_WEBAPPS)+File.separator+type); - if(Files.notExists(configLocation)){ - try { - Files.createDirectories(configLocation); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW +"Failed to create config directory: " + configLocation.toAbsolutePath().toString(), e); - } - } - PapUrlResolver papUrls = PapUrlResolver.getInstance(); - while(papUrls.hasMoreUrls()){ - String papPath = papUrls.getUrl(); - papPath = papPath.substring(0, papPath.lastIndexOf("/pap")); - String papAddress= urlString.replace("$URL", papPath); - String fileName = papAddress.substring(papAddress.lastIndexOf("/")+1); - String fileLocation = configLocation.toString() + File.separator + fileName; - try { - URL papURL = new URL(papAddress); - LOGGER.info("Calling " +papAddress + " for Configuration Copy."); - URLConnection urlConnection = papURL.openConnection(); - File file= new File(fileLocation); - try (InputStream is = urlConnection.getInputStream(); - OutputStream os = new FileOutputStream(file)) { - IOUtils.copy(is, os); - break; - } - } catch (Exception e) { - LOGGER.error(e + e.getMessage()); - } - papUrls.getNext(); - } - } -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationServer.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationServer.java deleted file mode 100644 index 9bd2e1f20..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/NotificationServer.java +++ /dev/null @@ -1,224 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import java.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.GeneralSecurityException; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Queue; -import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.TimeUnit; - -import javax.websocket.OnClose; -import javax.websocket.OnError; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; - -import org.openecomp.policy.common.logging.eelf.MessageCodes; -import org.openecomp.policy.common.logging.eelf.PolicyLogger; -import org.openecomp.policy.common.logging.flexlogger.FlexLogger; -import org.openecomp.policy.common.logging.flexlogger.Logger; -import org.openecomp.policy.pdp.rest.api.services.NotificationService; -import org.openecomp.policy.rest.XACMLRestProperties; -import org.openecomp.policy.utils.BusPublisher; -import org.openecomp.policy.xacml.api.XACMLErrorConstants; - -import com.att.nsa.cambria.client.CambriaBatchingPublisher; -import com.att.nsa.cambria.client.CambriaClientBuilders; -import com.att.research.xacml.util.XACMLProperties; - - -/** - * The NotificationServer sends the Server Notifications to the Clients once there is any Event. - * WebSockets is being used as a medium for sending Notifications. - * UEB is being used as a medium for sending Notifications. - * DMAAP is being used as a medium for sending Notifications. - * - * @version 0.2 - * - **/ -@ServerEndpoint(value = "/notifications") -public class NotificationServer { - private static final Logger LOGGER = FlexLogger.getLogger(NotificationServer.class); - private static Queue<Session> queue = new ConcurrentLinkedQueue<>(); - private static String update = null; - private static String hosts = null; - private static URL aURL = null; - - @OnOpen - public void openConnection(Session session) { - LOGGER.info("Session Connected: " + session.getId()); - queue.add(session); - } - - @OnClose - public void closeConnection(Session session) { - queue.remove(session); - } - - @OnError - public void error(Session session, Throwable t) { - queue.remove(session); - LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Session Error for : " + session.getId() + " Error: " + t.getMessage()); - - } - - @OnMessage - public void Message(String message, Session session) { - - if(message.equalsIgnoreCase("Manual")) { - try { - session.getBasicRemote().sendText(update); - session.close(); - } catch (IOException e) { - LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in sending the Event Notification: "+ e.getMessage() + e); - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error sending Message update"); - } - } - } - - public static void sendNotification(String notification, String propNotificationType, String pdpURL) throws Exception { - - LOGGER.debug("Notification set to " + propNotificationType); - if (propNotificationType.equals("ueb")){ - - String topic = null; - try { - aURL = new URL(pdpURL); - topic = aURL.getHost() + aURL.getPort(); - } catch (MalformedURLException e1) { - pdpURL = pdpURL.replace("/", ""); - topic = pdpURL.replace(":", ""); - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in parsing out pdpURL for UEB notfication "); - PolicyLogger.error(MessageCodes.ERROR_PROCESS_FLOW, e1, "Error in parsing out pdpURL for UEB notfication "); - } - hosts = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS); - String apiKey = XACMLProperties.getProperty(XACMLRestProperties.PROP_UEB_API_KEY); - String apiSecret = XACMLProperties.getProperty(XACMLRestProperties.PROP_UEB_API_SECRET); - - LOGGER.debug("Creating Publisher for host: " + hosts + " with topic: " + topic); - CambriaBatchingPublisher pub = null; - try { - if(hosts==null || topic==null || apiKey==null || apiSecret==null){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "UEB properties are missing from the property file "); - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE + "UEB properties are missing from the property file "); - } - - hosts.trim(); - topic.trim(); - apiKey.trim(); - apiSecret.trim(); - pub = new CambriaClientBuilders.PublisherBuilder () - .usingHosts ( hosts ) - .onTopic ( topic ) - .authenticatedBy ( apiKey, apiSecret ) - .build () - ; - - } catch (MalformedURLException e1) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error creating the UEB publisher" + e1.getMessage()); - } catch (GeneralSecurityException e1) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error creating the UEB publisher" + e1.getMessage() +e1); - } - if(pub != null){ - try { - pub.send( "MyPartitionKey", notification ); - } catch (IOException e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error sending notification update" + e.getMessage() + e); - } - // close the publisher. The batching publisher does not send events - // immediately, so you MUST use close to send any remaining messages. - // You provide the amount of time you're willing to wait for the sends - // to succeed before giving up. If any messages are unsent after that time, - // they're returned to your app. You could, for example, persist to disk - // and try again later. - final List<?> stuck = pub.close ( 20, TimeUnit.SECONDS ); - - if (!stuck.isEmpty()){ - LOGGER.error( stuck.size() + " messages unsent" ); - }else{ - LOGGER.info( "Clean exit; all messages sent: " + notification ); - } - } - } else if (propNotificationType.equals("dmaap")) { - - // Setting up the Publisher for DMaaP MR - String dmaapServers = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_SERVERS); - String topic = XACMLProperties.getProperty(XACMLRestProperties.PROP_NOTIFICATION_TOPIC); - String aafLogin = XACMLProperties.getProperty("DMAAP_AAF_LOGIN"); - String aafPassword = XACMLProperties.getProperty("DMAAP_AAF_PASSWORD"); - - try { - if(dmaapServers==null || topic==null){ - LOGGER.error(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file "); - throw new Exception(XACMLErrorConstants.ERROR_DATA_ISSUE + "DMaaP properties are missing from the property file "); - } - - dmaapServers.trim(); - topic.trim(); - aafLogin.trim(); - aafPassword.trim(); - - List<String> dmaapList = null; - if(dmaapServers.contains(",")) { - dmaapList = new ArrayList<>(Arrays.asList(dmaapServers.split("\\s*,\\s*"))); - } else { - dmaapList = new ArrayList<>(); - dmaapList.add(dmaapServers); - } - - BusPublisher publisher = - new BusPublisher.DmaapPublisherWrapper(dmaapList, - topic, - aafLogin, - aafPassword); - - // Sending notification through DMaaP Message Router - publisher.send( "MyPartitionKey", notification); - LOGGER.debug("Message Published on DMaaP :" + dmaapList.get(0) + "for Topic: " + topic); - publisher.close(); - - } catch (Exception e) { - LOGGER.error(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error sending notification update" + e.getMessage() + e); - } - } - - for(Session session: queue) { - try { - session.getBasicRemote().sendText(notification); - } catch (IOException e) { - LOGGER.info(XACMLErrorConstants.ERROR_PROCESS_FLOW + "Error in sending the Event Notification: "+ e.getMessage() + e); - } - } - NotificationService.sendNotification(notification); - } - - public static void setUpdate(String update) { - NotificationServer.update = update; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Removed.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Removed.java deleted file mode 100644 index 151b40125..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Removed.java +++ /dev/null @@ -1,54 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import org.openecomp.policy.api.RemovedPolicy; - - -/** - * Removal is the POJO for removal updates of the Policy. - * It must have the Policy removed and its Version number. - * - * @version 0.2 - * - */ -public class Removed implements RemovedPolicy{ - - private String policyName = null; - private String versionNo = null; - - public String getVersionNo() { - return versionNo; - } - - public void setVersionNo(String versionNo) { - this.versionNo = versionNo; - } - - public String getPolicyName() { - return policyName; - } - - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Updated.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Updated.java deleted file mode 100644 index f0d9aa38d..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/Updated.java +++ /dev/null @@ -1,74 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.notifications; - -import java.util.HashMap; - -import org.openecomp.policy.api.LoadedPolicy; -import org.openecomp.policy.api.UpdateType; - -/** - * Updated is the POJO which consists of any new or Updated Policy information. - * It must hold the Policy Name, version Number, Matches. - * - * @version 0.2 - * - */ -public class Updated implements LoadedPolicy{ - private String policyName = null; - private String versionNo = null; - private HashMap<String,String> matches = null; - private UpdateType updateType = null; - - public String getPolicyName() { - return policyName; - } - - public void setPolicyName(String policyName) { - this.policyName = policyName; - } - - public String getVersionNo() { - return versionNo; - } - - public void setVersionNo(String versionNo) { - this.versionNo = versionNo; - } - - public HashMap<String,String> getMatches() { - return matches; - } - - public void setMatches(HashMap<String,String> matches) { - this.matches = matches; - } - - @Override - public UpdateType getUpdateType() { - return this.updateType; - } - - public void setUpdateType(UpdateType updateType){ - this.updateType = updateType; - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/package-info.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/package-info.java deleted file mode 100644 index 7d3995ec6..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/notifications/package-info.java +++ /dev/null @@ -1,28 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -/** - * This is the new Addition to the PDP Server added for sending Notifications to the Clients - * about the policy Updates/ Removals. - * - * @version 0.1 - * - */ -package org.openecomp.policy.pdp.rest.notifications; diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/AuthenticationService.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/AuthenticationService.java deleted file mode 100644 index 5a6258032..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/AuthenticationService.java +++ /dev/null @@ -1,62 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.restAuth; - -import java.util.Base64; -import java.util.StringTokenizer; - -import org.openecomp.policy.rest.XACMLRestProperties; - -import com.att.research.xacml.util.XACMLProperties; - -import org.openecomp.policy.common.logging.eelf.MessageCodes; -import org.openecomp.policy.common.logging.eelf.PolicyLogger; - -public class AuthenticationService { - private String pdpID = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_USERID); - private String pdpPass = XACMLProperties.getProperty(XACMLRestProperties.PROP_PDP_PASS); - - public boolean authenticate(String authCredentials) { - - if (null == authCredentials) - return false; - // header value format will be "Basic encodedstring" for Basic authentication. - final String encodedUserPassword = authCredentials.replaceFirst("Basic" + " ", ""); - String usernameAndPassword = null; - try { - byte[] decodedBytes = Base64.getDecoder().decode(encodedUserPassword); - usernameAndPassword = new String(decodedBytes, "UTF-8"); - } catch (Exception e) { - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - return false; - } - try { - final StringTokenizer tokenizer = new StringTokenizer(usernameAndPassword, ":"); - final String username = tokenizer.nextToken(); - final String password = tokenizer.nextToken(); - return pdpID.equals(username) && pdpPass.equals(password); - }catch (Exception e){ - PolicyLogger.error(MessageCodes.ERROR_SYSTEM_ERROR, e, ""); - return false; - } - } - -} diff --git a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java b/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java deleted file mode 100644 index 4bc14df02..000000000 --- a/ECOMP-PDP-REST/src/main/java/org/openecomp/policy/pdp/rest/restAuth/PDPAuthenticationFilter.java +++ /dev/null @@ -1,117 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ECOMP-PDP-REST - * ================================================================================ - * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============LICENSE_END========================================================= - */ - -package org.openecomp.policy.pdp.rest.restAuth; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.openecomp.policy.pdp.rest.config.PDPApiAuth; - -/** - * Servlet Filter implementation class PDPAuthenticationFilter - */ -@WebFilter("/*") -public class PDPAuthenticationFilter implements Filter { - - public static final String AUTHENTICATION_HEADER = "Authorization"; - public static final String ENVIRONMENT_HEADER = "Environment"; - - @Override - public void doFilter(ServletRequest request, ServletResponse response, - FilterChain filter) throws IOException, ServletException { - if (request instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - String environment = httpServletRequest.getHeader(ENVIRONMENT_HEADER); - String authCredentials = httpServletRequest.getHeader(AUTHENTICATION_HEADER); - String path = ((HttpServletRequest) request).getRequestURI(); - // better injected - AuthenticationService authenticationService = new AuthenticationService(); - - boolean authenticationStatus = authenticationService.authenticate(authCredentials); - - if (authenticationStatus) { - if (check(path)) { - // New API request. - path = path.substring(path.substring(1).indexOf("/") + 1); - if (environment == null) { - // Allow Old clients. - if(!path.contains("/api/")){ - request.getRequestDispatcher("/api/" + path).forward(request,response); - }else{ - request.getRequestDispatcher(path).forward(request,response); - } - } else if (environment.equalsIgnoreCase(PDPApiAuth.getEnvironment())) { - // Validated new Clients. - if(!path.contains("/api/")){ - request.getRequestDispatcher("/api/" + path).forward(request,response); - }else{ - request.getRequestDispatcher(path).forward(request,response); - } - } else if(response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - } - } else { - filter.doFilter(request, response); - } - } else if (path.contains("swagger") || path.contains("api-docs") - || path.contains("configuration") || path.contains("count")) { - path = path.substring(path.substring(1).indexOf("/") + 2); - request.getRequestDispatcher("/api/" + path).forward(request,response); - } else if(path.contains("notifications")){ - filter.doFilter(request, response); - } else { - if (response instanceof HttpServletResponse) { - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - httpServletResponse.setStatus(HttpServletResponse.SC_UNAUTHORIZED); - } - } - } - } - - private boolean check(String path) { - if(path.endsWith("/pdp/")|| path.endsWith("/pdp")|| path.endsWith("/test")){ - return false; - }else{ - return true; - } - } - - @Override - public void destroy() { - // Do nothing. - } - - @Override - public void init(FilterConfig arg0) throws ServletException { - // Do nothing. - } - -} |