summaryrefslogtreecommitdiffstats
path: root/policy-utils
AgeCommit message (Collapse)AuthorFilesLines
2019-01-09Upgrade to policy/common 1.3.4 release3.0.1-ONAP1.3.5Pamela Dragosh1-1/+1
And update the license headers. Issue-ID: POLICY-1390 Change-Id: I8db52c3450b93355e61ec7eb9975d1b687e8fc38 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2019-01-07Move to 1.3.5-SNAPSHOT versionJorge Hernandez1-1/+1
Change-Id: I3c9b2c3ed9fb9b4c4011d6033ecda04243deacdc Issue-ID: POLICY-1390 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-11-14Move to 1.3.4-SNAPSHOT1.3.4Jorge Hernandez1-1/+1
Change-Id: I02f4e241c188a9d1330dc84e711cf672d2fcd172 Issue-ID: POLICY-1262 Signed-off-by: Jorge Hernandez <jorge.hernandez-herrero@att.com>
2018-11-07Upgrade policy/parent for dmaap1.3.3Pamela Dragosh1-1/+1
Released policy parent 2.0.1 includes the fix for dmaap 1.1.9. Bump version to 1.3.3 Issue-ID: POLICY-1229 Change-Id: I857ced0482c4f247c116d44473b92862c5e55b8f Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-10-31Step version for Casablanca supportliamfallon1-3/+2
Issue-ID: POLICY-1233 Change-Id: Iaf3903722b2077da7dde355079da54e2bef43277 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-10-24Fix refering to snapshot in policy/drools-pdp1.3.1ramverma1-2/+2
Issue-ID: POLICY-1213 Change-Id: I485c15044ba5cc0d3daceaf0876f543cc5c8af82 Signed-off-by: ramverma <ram.krishna.verma@ericsson.com>
2018-10-01Set drools-pdp checkstyle configPamela Dragosh4-26/+92
Fixed last remaining checkstyle issues along with setting the pom.xml to the correct path setting. Fixed forbidden summary fragments, not allowed to prepend summary with "This method returns" Issue-ID: POLICY-1153 Change-Id: I267842080494132a7b5507731e14f027a3f6fe44 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-09-08Fix checkstyle in utilsPamela Dragosh16-927/+908
Just focusing on the policy-utils submodule. Issue-ID: POLICY-882 Change-Id: I9f2ecac8f435f2d743b1fafc477d320b10852bdc Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-07-25Copy policy-endpoints from drools-pdp to commonmmis4-240/+93
Removed policy-endpoints, and 3 classes from policy-core. Replaced refenences to the deleted classes with references to the corresponding classes in policy-common Issue-ID: POLICY-967 Change-Id: I547cde4894424b8f40b7ddd4e2342ebb729cb588 Signed-off-by: mmis <michael.morris@ericsson.com>
2018-06-05Update drools-pdp to SNAPSHOT-1.3.0liamfallon1-1/+1
Snapshot updated for Casablanca. Change-Id: I75c0a41ce2c1a56ab658be8bfd27a5c81977f990 Issue-ID: POLICY-875 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-05-21Update Policy Drools PDP to 1.2.3-SNAPSHOTliamfallon1-1/+1
These reviews must be merged in order because of layering. This review should be merged SECOND. Change-Id: I3d3fb84622686b23d435aaf0cd43d307684a4a1f Issue-ID: POLICY-844 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-05-16Upgrade SNAPSHOT to 1.2.2liamfallon1-1/+1
These reviews must be merged in order because of layering. This review should be merged THIRD Change-Id: Icdb5c18106ade60bbc1eea67a1b42e70ac5383e5 Issue-ID: POLICY-798 Signed-off-by: liamfallon <liam.fallon@ericsson.com>
2018-04-13Update SNAPSHOT to 1.2.1Pamela Dragosh1-1/+1
Issue-ID: POLICY-736 Change-Id: Ic293a7347db4e5001a4084e1b98c5d44a145d16c Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2018-04-03Add api-resource-locks featureJim Hahn2-0/+156
Added ResourceLockFeatureAPI, to provide an interface for PolicyGuard to use to access other locking mechanisms. Move lock API to policy-core. Changed the interface and added Callback support. Added a class to invoke the API implementers. Changed to set a future instead of expecting the callback to implement the future interface. Also refactored, creating "lock" sub-package. Add junit tests. Increase junit coverage. IsLocked & isLockedBy should check all arguments. Make ImplFuture protected instead of public. Simplify locking - move callback support to an optional feature. Move Reference class to policy-utils. Return plain Future instead of LockRequestFuture. Change-Id: I65154d33833914b4332e02d1ef2512f4c5f09b16 Issue-ID: POLICY-577 Signed-off-by: Jim Hahn <jrh3@att.com>
2018-03-26l2 management maturity pdp-dJorge Hernandez9-96/+1758
configurable log location metric/audit log for transaction metrics conforming to new field definition. support metrics/audits records with custom logback filters so they are not intrusive with developer log testing. Change-Id: I7a4dcc6790b85539e613ad8705e731e7298ce106 Issue-ID: POLICY-533 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-02-20Sonar fixes to drools-pdpJim Hahn2-29/+15
Fixed most of the instances of the following sonar issues: Moved array designator Used diamond operator Changed System.out/err to use a logger Changed several Thread.sleep() in test code to a single sleep() Useless assignments Replaced comparison with "" to string.isEmpty() Merged if's Replaced ArrayList with List in method returns Reordered type modifiers Reordered constructor methods Defined constants for literals, or replaced them with method calls Removed "throws Xxx" for subclasses of RuntimeException Combined identical "catch" blocks Re-interrupted the current thread after catching an InterruptedException Removed tests against the literal "false" Fix indentation of new makeTopicOperError() method. Fix exception variable name in new methods, logNoUebEncoder() and logNoDmaapEncoder(). Change-Id: Iddae5210553662f733b67333b372dec8c3fe2c94 Issue-ID: POLICY-336 Signed-off-by: Jim Hahn <jrh3@att.com>
2018-02-08Merge "expose immutable list of filters to its users"Pamela Dragosh2-14/+115
2018-02-07expose immutable list of filters to its usersJorge Hernandez2-14/+115
+ additional related junits Change-Id: I00293cd9aa911dfb3d658cad4ee0441ad3410e9c Issue-ID: POLICY-164 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2018-02-01Reduce technical debt add coveragePamela Dragosh8-18/+119
* add empty constructor message * remove unnecessary exception declaration * add @FunctionalInterface declaration * switched around public static per java conventions * fixed up JUnit ordering * added some trivial JUnit tests to bump coverage > 70% Issue-ID: POLICY-460 Change-Id: I13b6de29f66d692143b06180feed76dd6332d6cf Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2017-11-29Fix Sonar issues in policy-utilsCharles Cole3-31/+35
Fixed the Sonar issues in policy-utils that required minimal refactoring of the code. Issue-ID: POLICY-460 Change-Id: Ie88fb1d819f343c8c0bc4d0b73e41089d79cdb6c Signed-off-by: Charles Cole <cc847m@att.com>
2017-11-21Merge "Fix fortify issues identified in drools"Pamela Dragosh1-9/+6
2017-11-21Bump minor versionJessica Wagantall1-1/+1
Bump minor version in preparation for Amsterdam branching. Change-Id: I7a10894837580ae898573156e47e31f32ae0d041 Issue-ID: CIMAN-120 Signed-off-by: Jessica Wagantall <jwagantall@linuxfoundation.org>
2017-11-15Update to 1.1.2-SNAPSHOTPamela Dragosh1-1/+1
Released 1.1.1, bump patch to 1.1.2 Issue-ID: POLICY-436 Change-Id: Idc58c1dc0cd66243ca1b94cce2ef4254ef2d87c8 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2017-11-10Fix fortify issues identified in droolsJoseph Chou1-9/+6
Fix code identified by Fortify as Privacy Violation Issue-ID: POLICY-442 Change-Id: I6097fb203a53a9643c4c4c38185515b1c8a90282 Signed-off-by: Joseph Chou <jc2555@att.com>
2017-11-08Update SNAPSHOT versionPamela Dragosh1-1/+1
Releasing v1.1.0 so we need to update SNAPSHOT Issue-ID: POLICY-436 Change-Id: I0c24b0c9a5bd67471ad0fb8b8c17b77e5b70b44f Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2017-09-22Added @Override methodrama-huawei3-17/+24
Added diamond symbol on RHS Removed useless parentheses Issue-ID: POLICY-239 Change-Id: I1c3360a9c7242ff0ee23ab5599352d36bdf8ad9c Signed-off-by: rama-huawei <rama.subba.reddy.s@huawei.com>
2017-09-13wait until port is open in HttpClient junit testsJorge Hernandez1-9/+44
As a note, HttpServer tests have retries at the http level. Hopefully this will resolve some timing issues and intermittent junits failures in LF jenkins environment. Issue-ID: POLICY-109 Change-Id: I44628b60d4912be5fc4639e0048791f5655bbd01 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-09-12Merge "Added junits for policy-util classes"Jorge Hernandez2-0/+127
2017-09-12Added junits for policy-util classesMagnusen, Drew (dm741q)2-0/+127
Added junits to increase coverage of the policy-util module. Patch 1: Moved Parent and Child class to within ReflectionUtilTest class. Issue-ID: POLICY-214 Change-Id: Ic5882c02a65ba1c924ec1381901a2a971fe72911 Signed-off-by: Magnusen, Drew (dm741q) <dm741q@att.com>
2017-09-07Support environment configurationsJorge Hernandez1-0/+54
This enables PDP-D to have knowledge of any installation property or else configured via OS environment variable or as an environment file. This allows the user to query or set via REST API of programmatically through PolicyEngine any environment variable. It also provides a means to make data globally available to all drools applications. For example: http://localhost:9696/policy/pdp/engine/environment> get HTTP/1.1 200 OK Content-Length: 749 Content-Type: application/json Date: Wed, 06 Sep 2017 23:53:57 GMT Server: Jetty(9.3.14.v20161028) { "DCAE_SERVERS": "", "DCAE_TOPIC": "", "DMAAP_SERVERS": "", "ENGINE_MANAGEMENT_HOST": "0.0.0.0", "ENGINE_MANAGEMENT_PASSWORD": "", "ENGINE_MANAGEMENT_PORT": "9696", "ENGINE_MANAGEMENT_USER": "", "HEALTHCHECK_PASSWORD": "", "HEALTHCHECK_USER": "", "JAVA_HOME": "/usr/lib/jvm/java-8-oracle", "M2_HOME": "/usr/share/maven", "PAP_HOST": "", "PAP_PASSWORD": "", "PAP_USERNAME": "", "PDPD_CONFIGURATION_API_KEY": "", "PDPD_CONFIGURATION_API_SECRET": "", "PDPD_CONFIGURATION_CONSUMER_GROUP": "", "PDPD_CONFIGURATION_CONSUMER_INSTANCE": "", "PDPD_CONFIGURATION_PARTITION_KEY": "", "PDPD_CONFIGURATION_SERVERS": "", "PDPD_CONFIGURATION_TOPIC": "PDPD-CONFIGURATION", "PDP_HOST": "", "PDP_PASSWORD": "", "PDP_USERNAME": "", "POLICY_HOME": "/home/policy/snapshot", "SQL_HOST": "", "SQL_PASSWORD": "", "SQL_USER": "" } policy@newton:~/snapshot/config$ echo -n "http://one.com/aai" | http --verbose PUT :9696/policy/pdp/engine/environment/AAI_URL Content-Type:text/plain Accept:text/plain PUT /policy/pdp/engine/environment/AAI_URL HTTP/1.1 Accept: text/plain Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 18 Content-Type: text/plain Host: localhost:9696 User-Agent: HTTPie/0.9.2 http://one.com/aai HTTP/1.1 200 OK Content-Length: 0 Content-Type: text/plain Date: Thu, 07 Sep 2017 00:05:05 GMT Server: Jetty(9.3.14.v20161028) policy@newton:~/snapshot/config$ echo -n "http://one.com/aai2" | http --verbose PUT :9696/policy/pdp/engine/environment/AAI_URL Content-Type:text/plain Accept:text/plain PUT /policy/pdp/engine/environment/AAI_URL HTTP/1.1 Accept: text/plain Accept-Encoding: gzip, deflate Connection: keep-alive Content-Length: 19 Content-Type: text/plain Host: localhost:9696 User-Agent: HTTPie/0.9.2 http://one.com/aai2 HTTP/1.1 200 OK Content-Length: 18 Content-Type: text/plain Date: Thu, 07 Sep 2017 00:05:45 GMT Server: Jetty(9.3.14.v20161028) http://one.com/aai policy@newton:~/snapshot/config$ http :9696/policy/pdp/engine/environment/AAI_URL HTTP/1.1 200 OK Content-Length: 19 Content-Type: application/json Date: Thu, 07 Sep 2017 05:14:57 GMT Server: Jetty(9.3.14.v20161028) http://one.com/aai2 Change-Id: I1fcd610938af751977bb2db925b57b4e5b3f7ba4 Issue-ID: POLICY-162 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-08-20sonar criticals and some majorsJorge Hernandez2-1/+36
Issue-ID: POLICY-114 Change-Id: I5fe12b6538379a4d018bb76173247fe53fba21d7 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-08-15add persistence libraries in the installation baseJorge Hernandez1-1/+0
to make db-enabled features to not worry about their packaging in the copy-dependencies plugin in the pom.xml Change-Id: Ie20a61978f75d4dbe82ac7aba5f6d259fb412f22 Issue-ID: POLICY-96 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-07-28[POLICY-72] replace openecomp for drools-pdpGuo Ruijing8-9/+9
Change-Id: I8aa8e32d3ba10f7c655b50e97aaf6865514d4777 Signed-off-by: Guo Ruijing <ruijing.guo@intel.com>
2017-06-22[POLICY-30] remove problematic layersJorge Hernandez6-103/+34
add configurability through telemetry API Change-Id: I77ebde12a417d421b98646c32dc74824f4494c2e Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-06-05[POLICY-8] cleaned up unused codeJorge Hernandez1-7/+8
Change-Id: Ifebf67db574e1c4eadf9d50ca0f178ab7ddba033 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-06-01[POLICY-9,POLICY-18] warnings + Controller hooksJorge Hernandez2-9/+8
1. clean up policy-utils warnings. drools-pdp project has no warnings now. 2. add new Policy Controller hooks for feature programmability. Change-Id: Ie991320e23e73118b235018d15ea66340a841a89 Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-05-10[POLICY-11] Fact queries with variables + featuresJorge Hernandez1-0/+6
GET/PUT/DELETE operations through REST API. Report on optional features (modules) attached to the engine. Added javadoc comments in Healthcheck module. Change-Id: Ic8d2c06779dda4024e94ad39bb316211522e4e4c Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-05-04[POLICY-11] New REST APIs to obtain facts infoJorge Hernandez1-1/+1
The following REST APIs have been added, shown by example: GET policy/pdp/engine/controllers/<controller-name>/drools : drools information for controller named <controller-name> For brevity in URL description, assume: DROOLS-REL-PATH=policy/pdp/engine/controllers/<controller-name>/drools GET ${DROOLS-REL-PATH}/<session-name>[?count=true] fact classes and count for <session-name> in controller <name> GET ${DROOLS-REL-PATH}/<session-name>/<classname> all fact objects of class <classname> for session <session-name> GET ${DROOLS-REL-PATH}/<session-name>/<query-name>/<query-id> all fact objects returned by drools query named <query-name> for the identifier <query-id> (need corresponding query definition in drl is necessary) Change-Id: I2f62931f54a65eec4ef80472ad1af05f30ed83ba Signed-off-by: Jorge Hernandez <jh1730@att.com>
2017-04-21Batch submit -- force rebuildRalph Straubs1-1/+32
[ECOMPD2TD-1126 1707] Delay the start of the election handler by one more update interval to allow updatedDate to be set and recoginized by other nodes. [ECOMPD2TD-1073 1707] Remove pessimistic locks from DB access to prevent DB deadlock [US867397-policy-management-feature-api] Split original FeatureAPI into three service interfaces. These are: - the original FeatureAPI for core - PolicyControllerFeatureAPI (additional interface methods yet to come ..) - PolicyEngineFeatureAPI (additional interface methods yet to come ..) Additional extensions will be done in the future. This is to have equivalent functionality with what it is already there. [US867397-policy-management-feature-api] Split original FeatureAPI into three service interfaces. These are: - the original FeatureAPI for core - PolicyControllerFeatureAPI (additional interface methods yet to come ..) - PolicyEngineFeatureAPI (additional interface methods yet to come ..) Additional extensions will be done in the future. This is to have equivalent functionality with what it is already there. [ECOMPD2TD-1167] Avoid redundant dependencies and remove obsolete sql scripts [ECOMPD2TD-848] Fix copied from ATT droolspdp repo -- add timestamp to metric and audit logs [ECOMPD2TD-1167] update jetty version to 9.3.14 [ECOMPD2TD-1167] pull in policy-core jar as a dependency of policy-management, instead of zip file [ECOMPD2TD-1159] Add property to ignore repository audit errors The property is called 'repository.audit.ignore.errors' -- it resides in 'IntegrityMonitor.properties', and it defaults to 'true'. When true, any errors that occur in the repository audit are logged, but not reported to integrity monitor. [US867397] additional hooks for policy engine, and support operation take over by feature bypassing further feature processing [US867397] additional hooks for policy engine, and support operation take over by feature bypassing further feature processing [US867397] fix reverse return javadoc comment [ECOMPD2TD-1192] Select correct persistent session information This is a modification to 'DroolsPdpsElectionHandler.DesignatedWaiter'. When going active, the list of persistent sessions needs to come from the most recent active DroolsPDP. The most recent active DroolsPDP is tracked in a local variable 'mostRecentPrimary', and the associated list of sessions needs to be extracted just prior to going active. The problem was that the list of sessions was extracted after the current DroolsPDP was set to 'mostRecentPrimary'. [ECOMPD2TD-1073 1707] Remove pessimistic locks from DB access to prevent DB deadlock [US860546] Add workaround for missing logger in message router [US860546] add DME2 properties to PolicyProperties [US860546] add DME2 support, pending unit testing [US860546] updated unit tests for dmaap/DME2 [US860546] removed System.out.println lines from BusConsumer and BusPublisher [US860546] modifications and additions to TopicEndpoint tests [US860546] remove block to append /events to serviceName in BusConsumer, BusPublisher [US860546] removing dmaap unit tests with ATT references [ECOMPD2TD-1167] Audit release repository by default [ECOMPD2TD-000] Cherry-pick versioning fixes from 1707.39.1 release branch [ECOMPD2TD-000] Fix policy-endpoints cambriaClient version [US865296] ECOMP Policy Logging Compliance, remove redundant timestamp from metric and audit log for logging compliance [US865296] ECOMP Policy Logging Compliance, remove TargetVirtualEntity from audit log, provide name to un-used column [US865296] ECOMP Policy Logging Compliance, remove Unused from AuditLogPattern, leave the column blank means un-used. [US000000] Cleanup and performance improvements 1) Changed 'OrderedServiceImpl' to ensure that the same service instance is used in every queue. This gets around the 'ServiceLoader' behavior that generates a new instance for each interface the service implements. 2) In 'PolicySession': add adaptive poll times within Drools sessions. Instead of always polling every 5 seconds, poll frequency increases when rules fire, and decreases when they don't. At present, the poll delay ranges from 100 milliseconds to 5 seconds, but at some point, it would be nice to make this configurable. 3) In 'PolicySession': add tests for 'logger.isDebugEnabled()' in session listener methods -- this results in a significant amount of real-time savings under load. [ECOMPD2TD-1126 1707] Changes to the election handler to deal with situations (race conditions) which can affect the site choice [ECOMPD2TD-1126 1707] Clean up of site afinity logic. Minor changes and a fix of the case where all pdpd are designated or all are hot standby. [ECOMPD2TD-1126 1707] Fixed issue with election handler and got all StandbyStateManagmentTest JUnits working. [ECOMPD2TD-1126 1707] Hopefully final changes to DroolsPdpsElectionHandler and StateManagementTest. Also removed the ResiliencyTestCases since they were redundant. [ECOMPD2TD-1126 1707] Found a minor bug in the computeMostRecentPrimary algorithm which I corrected and added a JUnit to confirm. [ECOMPD2TD-1126 1707] Removed code that was commented out of election handler to improve reability. Added an explanatory note to StandbyStateManagementTest. [US869183] Convert integrity monitor test endpoint to use HttpServletServer [US869183] add swagger-maven-plugin, update swagger annotation for IM test interface [US860371] Modified existing Dmaap and Ueb code to allow for https connectivity. HTTP/HTTPS is configurable via controller.properties file [US860520] Removed extra useHttps() method call from BusConsumer class where the consumer should be using http. Also, restored pom.xml to version at time feature branch was created. [US860520] Removed TopicEndpointTest.java. Added the ability to configure use of self-signed certificates for consumer topics. Functionality cannot be added for publisher at this time. Removed useHttps parameter field from multiple .builder methods to allow for greater ability to build source/sink objects without specifying http vs https connectivity. Other code cleanup and comments [US860520] -Deleted sys.out statements used in testing from BusConsumer/BusPublisher -Moved setProps method outside of if/else stub in BusConsumer -Could not add useHttps or selfSignedCerts to toString methods in BusConsumer -Move setProperty(contenttype, app/json) call outside of if/else branch in BusPublisher -Renamed doesAllowSelfSignedCerts method to is isAllowSelfSignedCerts and moved to BusTopicBase -Moved allowSelfSignedCerts member variable to BusTopicBase class. BusTopicBase is ancestor of SingleThreadedDmapp*/SingleThreadedUeb*/SingleThreadedBus* classes therefore, it will be inherited. -This changed resulted in cascading changes to the subclasses of BusTopicbase -Default is now set to disallow self-signed certs -Added several javadoc param annotations [US869183 1707] Changes to satisfy dependencies and correct pom syntax [ECOMPD2TD-1280] move DroolsPDPIntegrityMonitor.RestManager to its own class [ECOMPD2TD-1278] Resolve duplicate dependency issues (cherry-pick from 1707.40.1) [ECOMPD2TD-1278] revert cambriaClient back to 0.0.1 [ECOMPD2TD-1278] put dmaap version back to 0.2.12 [ECOMPD2TD-1280 1707] Fix Commons-lang3 version and common-modules version Conflicts: policy-endpoints/pom.xml policy-healthcheck/pom.xml policy-persistence/pom.xml pom.xml Change-Id: I803554bc64c55d2e82a3d6ad9120757f287144fb Signed-off-by: Ralph Straubs <rs8887@att.com>
2017-03-101.1.0-SNAPSHOTPamela Dragosh1-1/+1
Change-Id: I2289242f6542657c7d69cfe57b20f2e10178caf6 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2017-03-10upgrade to release-1.0.0Pamela Dragosh1-1/+1
Change-Id: I3fda7cab8bf56d5359dab353e0834874cfed4c94 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>
2017-02-14Initial OpenECOMP policy/drools-pdp commitPamela Dragosh9-0/+1048
Change-Id: I0072ccab6f40ed32da39667f9f8523b6d6dad2e2 Signed-off-by: Pamela Dragosh <pdragosh@research.att.com>