From c7b8238781c15f710031079ec1e6396311a20aff Mon Sep 17 00:00:00 2001 From: Venkatesh Seetharam <venkatesh@apache.org> Date: Mon, 16 Mar 2015 22:02:52 -0700 Subject: [PATCH] BUG-33250 Apache Incubation Related changes. Contributed by Venkatesh Seetharam --- DISCLAIMER.txt | 16 ++++++++++++++++ LICENSE.txt | 218 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ NOTICE.txt | 6 ++++++ README | 24 ------------------------ README.txt | 32 ++++++++++++++++++++++++++++++++ pom.xml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- src/main/assemblies/standalone-package.xml | 2 +- webapp/pom.xml | 6 ++++-- webapp/src/main/java/org/apache/hadoop/metadata/web/resources/AdminResource.java | 17 +++++++++++++---- webapp/src/main/resources/metadata-buildinfo.properties | 16 ++++++++-------- webapp/src/test/java/org/apache/hadoop/metadata/web/resources/AdminJerseyResourceIT.java | 69 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 11 files changed, 427 insertions(+), 43 deletions(-) create mode 100644 DISCLAIMER.txt create mode 100644 LICENSE.txt create mode 100644 NOTICE.txt delete mode 100644 README create mode 100644 README.txt create mode 100644 webapp/src/test/java/org/apache/hadoop/metadata/web/resources/AdminJerseyResourceIT.java diff --git a/DISCLAIMER.txt b/DISCLAIMER.txt new file mode 100644 index 0000000..9243b3d --- /dev/null +++ b/DISCLAIMER.txt @@ -0,0 +1,16 @@ +Apache Metadata Governance is an effort undergoing incubation at the Apache +Software Foundation (ASF), sponsored by the Apache Incubator PMC. + +Incubation is required of all newly accepted projects until a further +review indicates that the infrastructure, communications, and decision +making process have stabilized in a manner consistent with other +successful ASF projects. + +While incubation status is not necessarily a reflection of the +completeness or stability of the code, it does indicate that the +project has yet to be fully endorsed by the ASF. + +For more information about the incubation status of the Metadata Governance +project you can go to the following page: + +http://incubator.apache.org/projects/Metadata-Governance.html \ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..a436832 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,218 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + + +APACHE DGI SUBCOMPONENTS: + +The Apache DGI project contains subcomponents with separate copyright +notices and license terms. Your use of the source code for the these +subcomponents is subject to the terms and conditions of the following +licenses. + + +================================ + +This product bundles d3 3.3.9, which is available under a +"3-clause BSD" license. For details, see docs/license/d3-LICENSE.txt + +This product bundles jquery 1.11.0, which is available under a +MIT license. For details, see docs/license/jquery-LICENSE.txt diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..025976c --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,6 @@ +Apache DGI (incubating) + +Copyright 2011-2014 The Apache Software Foundation + +This product includes software developed at +The Apache Software Foundation (http://www.apache.org/). diff --git a/README b/README deleted file mode 100644 index 128fde6..0000000 --- a/README +++ /dev/null @@ -1,24 +0,0 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you 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. - -Metadata and Governance Overview - -This aims to provide a simple repository for storing entities and associated -relationships among other entities. - -The goal is to capture lineage for both entities and its associated instances. -It also captures provenance, lineage, classification, etc. associated with each -of the entities in th metadata repository. diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..80e6596 --- /dev/null +++ b/README.txt @@ -0,0 +1,32 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you 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. + +Metadata and Governance Overview + +The Data Governance Initiative, DGI, framework is an extensible set of core +foundational governance services – enabling enterprises to effectively and +efficiently meet their compliance requirements within Hadoop and allows +integration with the whole enterprise data ecosystem. + +This will provide true visibility in Hadoop by using both a prescriptive +and forensic model, along with technical and operational audit as well as +lineage enriched by business taxonomical metadata. It also enables any +metadata consumer to work inter-operably without discrete interfaces to +each other -- the metadata store is common. + +The metadata veracity is maintained by leveraging Apache Ranger to prevent +non-authorized access paths to data at runtime. +Security is both role based (RBAC) and attribute based (ABAC). diff --git a/pom.xml b/pom.xml index 378abc8..10ee238 100644 --- a/pom.xml +++ b/pom.xml @@ -61,7 +61,13 @@ <url>https://builds.apache.org/job/XXX</url> </ciManagement> - <inceptionYear>2014</inceptionYear> + <inceptionYear>2015</inceptionYear> + + <scm> + <connection>scm:git:https://github.com/hortonworks/metadata</connection> + <developerConnection>scm:git:https://github.com/hortonworks/metadata</developerConnection> + <url>https://github.com/hortonworks/metadata</url> + </scm> <properties> <!-- platform encoding override --> @@ -723,7 +729,39 @@ </dependencyManagement> <build> - <finalName>metadata-governance</finalName> + <directory>target</directory> + <outputDirectory>target/classes</outputDirectory> + <finalName>${project.artifactId}-${project.version}</finalName> + <testOutputDirectory>target/test-classes</testOutputDirectory> + <resources> + <resource> + <directory>src/main/resources</directory> + <filtering>true</filtering> + </resource> + <resource> + <directory>src/conf</directory> + <filtering>false</filtering> + <includes> + <include>application.properties</include> + <include>graph.properties</include> + <include>log4j.xml</include> + </includes> + </resource> + <resource> + <directory>..</directory> + <targetPath>META-INF</targetPath> + <includes> + <include>LICENSE.txt</include> + <include>NOTICE.txt</include> + </includes> + </resource> + </resources> + <testResources> + <testResource> + <directory>src/test/resources</directory> + </testResource> + </testResources> + <pluginManagement> <plugins> <plugin> @@ -905,11 +943,11 @@ <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.7.2</version> -<!-- + <!-- <configuration> <skipTests>true</skipTests> </configuration> ---> + --> <dependencies> <dependency> <groupId>org.apache.maven.surefire</groupId> @@ -970,6 +1008,24 @@ <groupId>net.alchim31.maven</groupId> <artifactId>scala-maven-plugin</artifactId> </plugin> + + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>buildnumber-maven-plugin</artifactId> + <executions> + <execution> + <phase>validate</phase> + <goals> + <goal>create</goal> + </goals> + </execution> + </executions> + <configuration> + <revisionOnScmFailure>release</revisionOnScmFailure> + <doCheck>false</doCheck> + <doUpdate>false</doUpdate> + </configuration> + </plugin> </plugins> </build> diff --git a/src/main/assemblies/standalone-package.xml b/src/main/assemblies/standalone-package.xml index 1c194fe..4fbaa00 100644 --- a/src/main/assemblies/standalone-package.xml +++ b/src/main/assemblies/standalone-package.xml @@ -77,7 +77,7 @@ <files> <file> - <source>webapp/target/metadata-governance.war</source> + <source>webapp/target/metadata-webapp-${project.version}.war</source> <outputDirectory>server/webapp</outputDirectory> <destName>metadata.war</destName> </file> diff --git a/webapp/pom.xml b/webapp/pom.xml index ffaedb5..edc03cf 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -134,16 +134,19 @@ <groupId>org.testng</groupId> <artifactId>testng</artifactId> </dependency> + <dependency> <groupId>com.google.inject.extensions</groupId> <artifactId>guice-servlet</artifactId> <version>3.0</version> </dependency> + <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.3.1</version> </dependency> + <dependency> <groupId>com.sun.jersey.contribs</groupId> <artifactId>jersey-guice</artifactId> @@ -208,8 +211,7 @@ <goal>copy-resources</goal> </goals> <configuration> - <outputDirectory>${project.build.directory}/webapps - </outputDirectory> + <outputDirectory>${project.build.directory}/webapps</outputDirectory> <resources> <resource> <directory>src/conf</directory> diff --git a/webapp/src/main/java/org/apache/hadoop/metadata/web/resources/AdminResource.java b/webapp/src/main/java/org/apache/hadoop/metadata/web/resources/AdminResource.java index 7569b84..d1ed789 100644 --- a/webapp/src/main/java/org/apache/hadoop/metadata/web/resources/AdminResource.java +++ b/webapp/src/main/java/org/apache/hadoop/metadata/web/resources/AdminResource.java @@ -18,6 +18,8 @@ package org.apache.hadoop.metadata.web.resources; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.lang.StringUtils; import org.apache.hadoop.metadata.web.util.Servlets; import org.codehaus.jettison.json.JSONException; @@ -78,13 +80,20 @@ public class AdminResource { public Response getVersion() { if (version == null) { try { + PropertiesConfiguration configProperties = + new PropertiesConfiguration("metadata-buildinfo.properties"); + JSONObject response = new JSONObject(); - response.put("Version", "v0.1"); // todo: get version + response.put("Version", configProperties.getString("build.version", "UNKNOWN")); + response.put("Name", + configProperties.getString("project.name", "metadata-governance")); + response.put("Description", configProperties.getString("project.description", + "Metadata Management and Data Governance Platform over Hadoop")); + // todo: add hadoop version? - // response.put("Hadoop", VersionInfo.getVersion() + "-r" + VersionInfo - // .getRevision()); + // response.put("Hadoop", VersionInfo.getVersion() + "-r" + VersionInfo.getRevision()); version = Response.ok(response).build(); - } catch (JSONException e) { + } catch (JSONException | ConfigurationException e) { throw new WebApplicationException( Servlets.getErrorResponse(e, Response.Status.INTERNAL_SERVER_ERROR)); } diff --git a/webapp/src/main/resources/metadata-buildinfo.properties b/webapp/src/main/resources/metadata-buildinfo.properties index 5a7cb82..f179d53 100644 --- a/webapp/src/main/resources/metadata-buildinfo.properties +++ b/webapp/src/main/resources/metadata-buildinfo.properties @@ -17,12 +17,12 @@ # ###################### -*.domain=all - -*.build.user=${user.name} -*.build.epoch=${timestamp} -*.project.version=${pom.version} -*.build.version=${pom.version}-r${buildNumber} -*.vc.revision=${buildNumber} -*.vc.source.url=${scm.connection} +project.name=${pom.parent.name} +project.description=${pom.parent.description} +build.user=${user.name} +build.epoch=${timestamp} +project.version=${pom.version} +build.version=${pom.version}-r${buildNumber} +vc.revision=${buildNumber} +vc.source.url=${scm.connection} ###################### diff --git a/webapp/src/test/java/org/apache/hadoop/metadata/web/resources/AdminJerseyResourceIT.java b/webapp/src/test/java/org/apache/hadoop/metadata/web/resources/AdminJerseyResourceIT.java new file mode 100644 index 0000000..d5215d6 --- /dev/null +++ b/webapp/src/test/java/org/apache/hadoop/metadata/web/resources/AdminJerseyResourceIT.java @@ -0,0 +1,69 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.hadoop.metadata.web.resources; + +import com.sun.jersey.api.client.ClientResponse; +import com.sun.jersey.api.client.WebResource; +import org.apache.commons.configuration.PropertiesConfiguration; +import org.codehaus.jettison.json.JSONObject; +import org.testng.Assert; +import org.testng.annotations.BeforeClass; +import org.testng.annotations.Test; + +import javax.ws.rs.HttpMethod; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +/** + * Integration test for Admin jersey resource. + */ +public class AdminJerseyResourceIT extends BaseResourceIT { + + @BeforeClass + public void setUp() throws Exception { + super.setUp(); + } + + @Test + public void testGetVersion() throws Exception { + WebResource resource = service + .path("api/metadata/admin/version"); + + ClientResponse clientResponse = resource + .accept(MediaType.APPLICATION_JSON) + .type(MediaType.APPLICATION_JSON) + .method(HttpMethod.GET, ClientResponse.class); + Assert.assertEquals(clientResponse.getStatus(), Response.Status.OK.getStatusCode()); + + String responseAsString = clientResponse.getEntity(String.class); + Assert.assertNotNull(responseAsString); + + PropertiesConfiguration buildConfiguration = + new PropertiesConfiguration("metadata-buildinfo.properties"); + + + JSONObject response = new JSONObject(responseAsString); + Assert.assertEquals(response.get("Version"), + buildConfiguration.getString("build.version")); + Assert.assertEquals(response.get("Name"), + buildConfiguration.getString("project.name")); + Assert.assertEquals(response.get("Description"), + buildConfiguration.getString("project.description")); + } +} -- libgit2 0.27.1