You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by al...@apache.org on 2016/06/29 14:37:09 UTC
[10/11] ambari git commit: Revert "AMBARI-17079. Moved Hue to Ambari
migrator to standard view architecture (Pradarttana Panda via dipayanb)"
Revert "AMBARI-17079. Moved Hue to Ambari migrator to standard view architecture (Pradarttana Panda via dipayanb)"
This reverts commit 424afb471ac76da5ca4d4cafb93b103b543b910e.
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/283256c8
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/283256c8
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/283256c8
Branch: refs/heads/branch-2.4
Commit: 283256c83436bfccde5f8c74706e2698265a139d
Parents: 6b6ce80
Author: Alex Antonenko <hi...@gmail.com>
Authored: Wed Jun 29 17:36:27 2016 +0300
Committer: Alex Antonenko <hi...@gmail.com>
Committed: Wed Jun 29 17:36:51 2016 +0300
----------------------------------------------------------------------
contrib/views/hueambarimigration/pom.xml | 142 ++--
.../configurationcheck/ConfigurationCheck.java | 182 +++++
.../configurationcheck/ProgressBarStatus.java | 54 ++
.../controller/hive/HiveHistoryMigration.java | 222 ++++++
.../hive/HiveSavedQueryMigration.java | 231 ++++++
.../controller/pig/PigJobMigration.java | 201 +++++
.../controller/pig/PigScriptMigration.java | 208 +++++
.../controller/revertchange/RevertChange.java | 217 ++++++
.../datasource/DataSourceAmbariDatabase.java | 2 +
.../datasource/DataSourceHueDatabase.java | 2 +
.../historyqueryset/MysqlQuerySetAmbariDB.java | 46 --
.../historyqueryset/OracleQuerySetAmbariDB.java | 44 --
.../PostgressQuerySetAmbariDB.java | 22 -
.../hive/historyqueryset/QuerySetAmbariDB.java | 79 --
.../instancedetail/MysqlQuerySetAmbariDB.java | 23 -
.../instancedetail/OracleQuerySetAmbariDB.java | 31 -
.../PostgressQuerySetAmbariDB.java | 22 -
.../hive/instancedetail/QuerySetAmbariDB.java | 48 --
.../savedqueryset/MysqlQuerySetAmbariDB.java | 65 --
.../savedqueryset/OracleQuerySetAmbariDB.java | 58 --
.../PostgressQuerySetAmbariDB.java | 22 -
.../hive/savedqueryset/QuerySetAmbariDB.java | 131 ----
.../instancedetail/MysqlQuerySetAmbariDB.java | 23 -
.../instancedetail/OracleQuerySetAmbariDB.java | 30 -
.../PostgressQuerySetAmbariDB.java | 22 -
.../pig/instancedetail/QuerySetAmbariDB.java | 39 -
.../pig/jobqueryset/MysqlQuerySetAmbariDB.java | 43 -
.../pig/jobqueryset/OracleQuerySetAmbariDB.java | 41 -
.../jobqueryset/PostgressQuerySetAmbariDB.java | 22 -
.../pig/jobqueryset/QuerySetAmbariDB.java | 80 --
.../MysqlQuerySetAmbariDB.java | 43 -
.../OracleQuerySetAmbariDB.java | 41 -
.../PostgressQuerySetAmbariDB.java | 22 -
.../savedscriptqueryset/QuerySetAmbariDB.java | 70 --
.../hive/historyqueryset/MysqlQuerySet.java | 23 -
.../hive/historyqueryset/OracleQuerySet.java | 61 --
.../hive/historyqueryset/PostgressQuerySet.java | 22 -
.../hive/historyqueryset/QuerySet.java | 130 ----
.../hive/historyqueryset/SqliteQuerySet.java | 22 -
.../hive/savedqueryset/MysqlQuerySet.java | 23 -
.../hive/savedqueryset/OracleQuerySet.java | 65 --
.../hive/savedqueryset/PostgressQuerySet.java | 22 -
.../hive/savedqueryset/QuerySet.java | 134 ----
.../hive/savedqueryset/SqliteQuerySet.java | 22 -
.../pig/jobqueryset/MysqlQuerySet.java | 22 -
.../pig/jobqueryset/OracleQuerySet.java | 65 --
.../pig/jobqueryset/PostgressQuerySet.java | 22 -
.../huequeryset/pig/jobqueryset/QuerySet.java | 132 ----
.../pig/jobqueryset/SqliteQuerySet.java | 22 -
.../pig/savedscriptqueryset/MysqlQuerySet.java | 22 -
.../pig/savedscriptqueryset/OracleQuerySet.java | 60 --
.../savedscriptqueryset/PostgressQuerySet.java | 67 --
.../pig/savedscriptqueryset/QuerySet.java | 135 ----
.../pig/savedscriptqueryset/SqliteQuerySet.java | 24 -
.../huequeryset/userdetails/MysqlQuerySet.java | 24 -
.../huequeryset/userdetails/OracleQuerySet.java | 28 -
.../userdetails/PostgressQuerySet.java | 22 -
.../huequeryset/userdetails/QuerySet.java | 42 -
.../huequeryset/userdetails/SqliteQuerySet.java | 22 -
.../migration/CreateJobId.java | 85 --
.../migration/CreateJobIdRevertChange.java | 84 --
.../migration/InitiateJobMigration.java | 102 ---
.../InitiateJobMigrationforRevertchange.java | 85 --
.../configuration/AllInstanceDetailsAmbari.java | 59 --
.../configuration/AmbariDatabaseCheck.java | 62 --
.../configuration/AmbariWebHdfsCheck.java | 60 --
.../configuration/CheckProgresStatus.java | 70 --
.../ConfigurationCheckImplementation.java | 134 ----
.../HiveInstanceDetailsAmbari.java | 53 --
.../HiveInstanceDetailsUtility.java | 106 ---
.../configuration/HueDatabaseCheck.java | 60 --
.../configuration/HueHttpUrlCheck.java | 60 --
.../configuration/HueWebHdfsCheck.java | 60 --
.../configuration/PigInstanceDetailsAmbari.java | 61 --
.../PigInstanceDetailsUtility.java | 79 --
.../migration/configuration/UserDetailHue.java | 58 --
.../configuration/UserDetailsUtility.java | 80 --
.../HiveHistoryMigrationUtility.java | 255 ------
...HiveHistoryQueryMigrationImplementation.java | 551 -------------
.../hive/historyquery/HiveHistoryStartJob.java | 74 --
.../HiveSavedQueryMigrationImplementation.java | 673 ----------------
.../HiveSavedQueryMigrationUtility.java | 281 -------
.../hive/savedquery/HiveSavedQueryStartJob.java | 77 --
.../pigjob/PigJobMigrationImplementation.java | 532 -------------
.../pig/pigjob/PigJobMigrationUtility.java | 238 ------
.../migration/pig/pigjob/PigJobStartJob.java | 68 --
.../pig/pigscript/PigSavedScriptStartJob.java | 70 --
.../PigScriptMigrationImplementation.java | 504 ------------
.../pigscript/PigScriptMigrationUtility.java | 229 ------
.../revertchange/RevertChangeStartJob.java | 70 --
.../revertchange/RevertChangeUtility.java | 225 ------
.../huetoambarimigration/model/PojoHive.java | 51 ++
.../huetoambarimigration/model/PojoPig.java | 72 ++
.../persistence/DataStoreStorage.java | 151 ----
.../persistence/InstanceKeyValueStorage.java | 132 ----
.../persistence/KeyValueStorage.java | 162 ----
.../persistence/LocalKeyValueStorage.java | 70 --
.../persistence/PersistentConfiguration.java | 52 --
.../persistence/SmokeTestEntity.java | 45 --
.../persistence/Storage.java | 78 --
.../utils/ContextConfigurationAdapter.java | 260 -------
.../persistence/utils/FilteringStrategy.java | 31 -
.../persistence/utils/Indexed.java | 36 -
.../persistence/utils/ItemNotFound.java | 25 -
.../utils/OnlyOwnersFilteringStrategy.java | 33 -
.../persistence/utils/Owned.java | 36 -
.../persistence/utils/PersonalResource.java | 22 -
.../persistence/utils/StorageUtil.java | 94 ---
.../resources/CRUDResourceManager.java | 123 ---
.../resources/PersonalCRUDResourceManager.java | 105 ---
.../resources/SharedCRUDResourceManager.java | 50 --
.../scripts/MigrationResourceManager.java | 52 --
.../scripts/MigrationResourceProvider.java | 108 ---
.../scripts/models/ConfigurationModel.java | 52 --
.../resources/scripts/models/HiveModel.java | 51 --
.../resources/scripts/models/InstanceModel.java | 41 -
.../scripts/models/JobReturnIdModel.java | 43 -
.../scripts/models/MigrationModel.java | 130 ----
.../scripts/models/MigrationResponse.java | 143 ----
.../resources/scripts/models/PigModel.java | 72 --
.../scripts/models/ProgressCheckModel.java | 60 --
.../resources/scripts/models/UserModel.java | 48 --
.../configurationcheck/ConfFileReader.java | 199 +++++
.../service/hive/HiveHistoryQueryImpl.java | 562 ++++++++++++++
.../service/hive/HiveSavedQueryImpl.java | 778 +++++++++++++++++++
.../service/pig/PigJobImpl.java | 563 ++++++++++++++
.../service/pig/PigScriptImpl.java | 600 ++++++++++++++
.../utils/BadRequestFormattedException.java | 27 -
.../utils/FilePaginator.java | 72 --
.../MisconfigurationFormattedException.java | 47 --
.../utils/NotFoundFormattedException.java | 27 -
.../utils/ServiceFormattedException.java | 101 ---
.../src/main/resources/WEB-INF/web.xml | 123 +++
.../src/main/resources/index.jsp | 119 +++
.../src/main/resources/ui/.gitignore | 33 +
.../src/main/resources/ui/bower.json | 15 +
.../main/resources/ui/checkconfiguration.jsp | 57 ++
.../resources/ui/hivehistoryquerymigration.jsp | 229 ++++++
.../resources/ui/hivesavedquerymigration.jsp | 240 ++++++
.../src/main/resources/ui/homepage.jsp | 31 +
.../ui/hueambarimigration-view/.bowerrc | 4 -
.../ui/hueambarimigration-view/.editorconfig | 34 -
.../ui/hueambarimigration-view/.ember-cli | 10 -
.../ui/hueambarimigration-view/.gitignore | 44 --
.../ui/hueambarimigration-view/.jshintrc | 32 -
.../ui/hueambarimigration-view/.travis.yml | 22 -
.../ui/hueambarimigration-view/.watchmanconfig | 3 -
.../ui/hueambarimigration-view/README.md | 67 --
.../app/adapters/application.js | 47 --
.../ui/hueambarimigration-view/app/app.js | 38 -
.../app/components/.gitkeep | 0
.../app/controllers/.gitkeep | 0
.../app/helpers/.gitkeep | 0
.../ui/hueambarimigration-view/app/index.html | 40 -
.../hueambarimigration-view/app/models/.gitkeep | 0
.../app/models/allinstancedetail.js | 23 -
.../app/models/ambaridatabase.js | 24 -
.../app/models/ambariwebhdfsurl.js | 24 -
.../app/models/checkprogress.js | 30 -
.../app/models/getmigrationresultid.js | 23 -
.../app/models/hiveinstancedetail.js | 23 -
.../app/models/huedatabase.js | 24 -
.../app/models/huehttpurl.js | 24 -
.../app/models/huewebhdfsurl.js | 24 -
.../app/models/piginstancedetail.js | 23 -
.../app/models/returnjobid.js | 23 -
.../app/models/returnjobidforrevertchange.js | 23 -
.../app/models/startmigration.js | 23 -
.../app/models/startrevertchange.js | 23 -
.../app/models/usersdetail.js | 23 -
.../ui/hueambarimigration-view/app/resolver.js | 20 -
.../ui/hueambarimigration-view/app/router.js | 38 -
.../hueambarimigration-view/app/routes/.gitkeep | 0
.../app/routes/check-configuration.js | 215 -----
.../app/routes/home-page.js | 21 -
.../app/routes/home-page/hive-history.js | 106 ---
.../app/routes/home-page/hive-saved-query.js | 102 ---
.../app/routes/home-page/pig-job.js | 102 ---
.../app/routes/home-page/pig-script.js | 103 ---
.../app/routes/home-page/revert-change.js | 97 ---
.../hueambarimigration-view/app/routes/index.js | 24 -
.../app/serializers/application.js | 19 -
.../hueambarimigration-view/app/styles/app.css | 25 -
.../hueambarimigration-view/app/styles/app.scss | 18 -
.../app/templates/application.hbs | 24 -
.../app/templates/check-configuration.hbs | 153 ----
.../app/templates/home-page.hbs | 42 -
.../app/templates/home-page/hive-history.hbs | 125 ---
.../templates/home-page/hive-saved-query.hbs | 126 ---
.../app/templates/home-page/pig-job.hbs | 127 ---
.../app/templates/home-page/pig-script.hbs | 127 ---
.../app/templates/home-page/revert-change.hbs | 99 ---
.../ui/hueambarimigration-view/bower.json | 14 -
.../config/environment.js | 63 --
.../hueambarimigration-view/ember-cli-build.js | 61 --
.../ui/hueambarimigration-view/package.json | 51 --
.../public/crossdomain.xml | 15 -
.../hueambarimigration-view/public/robots.txt | 3 -
.../ui/hueambarimigration-view/testem.js | 29 -
.../ui/hueambarimigration-view/tests/.jshintrc | 53 --
.../tests/helpers/destroy-app.js | 22 -
.../tests/helpers/module-for-acceptance.js | 40 -
.../tests/helpers/resolver.js | 28 -
.../tests/helpers/start-app.js | 35 -
.../ui/hueambarimigration-view/tests/index.html | 48 --
.../tests/test-helper.js | 25 -
.../ui/hueambarimigration-view/vendor/.gitkeep | 0
.../src/main/resources/ui/package.json | 27 +
.../src/main/resources/ui/pigjobmigration.jsp | 233 ++++++
.../main/resources/ui/pigscriptsmigration.jsp | 227 ++++++
.../src/main/resources/ui/revertchange.jsp | 203 +++++
.../src/main/resources/view.xml | 98 ---
contrib/views/pom.xml | 3 -
213 files changed, 5742 insertions(+), 13164 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/pom.xml
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/pom.xml b/contrib/views/hueambarimigration/pom.xml
index ea34687..f121735 100644
--- a/contrib/views/hueambarimigration/pom.xml
+++ b/contrib/views/hueambarimigration/pom.xml
@@ -16,32 +16,24 @@
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>org.apache.ambari.contrib.views</groupId>
- <artifactId>hueambarimigration</artifactId>
- <version>2.4.0.0.0</version>
- <name>hueambarimigration</name>
-
<parent>
<groupId>org.apache.ambari.contrib.views</groupId>
<artifactId>ambari-contrib-views</artifactId>
<version>2.4.0.0.0</version>
</parent>
-
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>huetoambari-view</artifactId>
+ <packaging>jar</packaging>
+ <name>Hue To Ambari Migration-view</name>
+ <version>2.4.0.0.0</version>
+ <url>http://maven.apache.org</url>
<properties>
<ambari.dir>${project.parent.parent.parent.basedir}</ambari.dir>
</properties>
+
+
<dependencies>
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- <version>2.6.2</version>
- </dependency>
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <version>2.0.0</version>
- </dependency>
+
<dependency>
<groupId>org.easymock</groupId>
<artifactId>easymock</artifactId>
@@ -51,12 +43,14 @@
<dependency>
<groupId>org.apache.ambari</groupId>
<artifactId>ambari-views</artifactId>
- <version>[1.7.0.0,)</version>
+ <version>2.4.0.0.0</version>
</dependency>
+
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
+
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
@@ -116,41 +110,9 @@
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
+
</dependency>
- <dependency>
- <groupId>com.jayway.jsonpath</groupId>
- <artifactId>json-path</artifactId>
- <version>2.0.0</version>
- </dependency>
- <dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey.contribs</groupId>
- <artifactId>jersey-multipart</artifactId>
- <version>1.18</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-client</artifactId>
- <version>1.8</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-core</artifactId>
- <version>1.18.1</version>
- </dependency>
- <dependency>
- <groupId>com.sun.jersey</groupId>
- <artifactId>jersey-json</artifactId>
- <version>1.9</version>
- </dependency>
- <dependency>
- <groupId>com.googlecode.json-simple</groupId>
- <artifactId>json-simple</artifactId>
- <version>1.1.1</version>
- </dependency>
+
</dependencies>
<build>
@@ -172,7 +134,7 @@
<configuration>
<nodeVersion>v0.12.2</nodeVersion>
<npmVersion>1.4.8</npmVersion>
- <workingDirectory>${project.basedir}/src/main/resources/ui/hueambarimigration-view/</workingDirectory>
+ <workingDirectory>${project.basedir}/src/main/resources/ui</workingDirectory>
</configuration>
<executions>
<execution>
@@ -189,30 +151,7 @@
<goal>npm</goal>
</goals>
<configuration>
- <arguments>install --python="${project.basedir}/../src/main/unix/ambari-python-wrap" --unsafe-perm
- </arguments>
- </configuration>
- </execution>
- </executions>
- </plugin>
-
- <plugin>
- <artifactId>exec-maven-plugin</artifactId>
- <groupId>org.codehaus.mojo</groupId>
- <version>1.3.2</version>
- <executions>
- <execution>
- <id>Hueambarimigration-build</id>
- <phase>generate-sources</phase>
- <goals>
- <goal>exec</goal>
- </goals>
- <configuration>
- <workingDirectory>${basedir}/src/main/resources/ui/hueambarimigration-view</workingDirectory>
- <executable>node/node</executable>
- <arguments>
- <argument>node_modules/.bin/ember</argument>
- <argument>build</argument>
+ <arguments>install --python="${project.basedir}/src/main/unix/ambari-python-wrap" --unsafe-perm
</arguments>
</configuration>
</execution>
@@ -242,20 +181,61 @@
<resource>
<directory>src/main/resources</directory>
- <filtering>false</filtering>
+ <filtering>true</filtering>
<includes>
- <include>META-INF/**/*</include>
+ <include>index.jsp</include>
+ <include>image/*.*</include>
<include>view.xml</include>
<include>view.log4j.properties</include>
+ <include>ui/*.*</include>
+ <include>WEB-INF/web.xml</include>
</includes>
</resource>
+
+ <resource>
+ <directory>src/main/resources/ui/bower_components/bootstrap/dist/css/</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/css</targetPath>
+ </resource>
+
+ <resource>
+ <directory>src/main/resources/ui/bower_components/bootstrap/dist/fonts/</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/fonts</targetPath>
+ </resource>
+
+
+ <resource>
+ <directory>src/main/resources/ui/bower_components/eonasdan-bootstrap-datetimepicker/build/css</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/css</targetPath>
+ </resource>
+
+ <resource>
+ <directory>src/main/resources/ui//bower_components/moment/min/</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/js</targetPath>
+ </resource>
+
+
<resource>
- <directory>src/main/resources/ui/hueambarimigration-view/dist</directory>
+ <directory>src/main/resources/ui/bower_components/eonasdan-bootstrap-datetimepicker/build/js</directory>
<filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/js</targetPath>
</resource>
<resource>
+ <directory>src/main/resources/ui/bower_components/jquery/dist/</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/js</targetPath>
+ </resource>
+ <resource>
+ <directory>src/main/resources/ui/bower_components/bootstrap/dist/js</directory>
+ <filtering>false</filtering>
+ <targetPath>${project.build.outputDirectory}/js</targetPath>
+ </resource>
+ <resource>
<targetPath>WEB-INF/lib</targetPath>
<filtering>false</filtering>
<directory>target/lib</directory>
@@ -263,4 +243,4 @@
</resources>
</build>
-</project>
\ No newline at end of file
+</project>
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ConfigurationCheck.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ConfigurationCheck.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ConfigurationCheck.java
new file mode 100644
index 0000000..4c2f4ad
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ConfigurationCheck.java
@@ -0,0 +1,182 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.configurationcheck;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.sql.Connection;
+
+import org.apache.ambari.view.ViewContext;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+
+import org.apache.ambari.view.huetoambarimigration.service.*;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+import org.apache.log4j.Logger;
+
+
+public class ConfigurationCheck extends HttpServlet {
+ private static final long serialVersionUID = 1L;
+
+ ViewContext view;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+
+ }
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ final Logger logger = Logger.getLogger(ConfigurationCheck.class);
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+
+ out.println("<table class=\"table\">");
+ out.println("<thead><tr><th>Service</th><th>Status</th></tr></thead>");
+ out.println("<tbody>");
+
+ if (ConfFileReader.checkConfigurationForHue(view.getProperties().get("Hue_URL"))) {
+ logger.info("Hue URl connection:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "Ambari" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+ } else {
+ logger.info("Hue URl connection:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "Ambari" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+ }
+
+ if (ConfFileReader.checkConfigurationForAmbari(view.getProperties().get("Ambari_URL"))) {
+
+ logger.info("Ambari URl connection:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "Hue" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+
+ } else {
+
+ logger.info("Ambari URl connection:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "Hue" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+
+ }
+
+ if (ConfFileReader.checkAmbariDatbaseConection(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword"))) {
+
+ logger.info("Ambari Database connection:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "Ambari Database" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+
+ } else {
+
+ logger.info("Ambari Database connection:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "Ambari Database" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+
+ }
+ if (ConfFileReader.checkHueDatabaseConnection(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword"))) {
+
+ logger.info("Hue Database connection:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "Hue Database" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+
+ } else {
+
+ logger.info("Hue Database connection:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "Hue Database" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+
+ }
+
+ try {
+
+ if (ConfFileReader.checkNamenodeURIConnectionforambari(view.getProperties().get("namenode_URI_Ambari"))) {
+
+ logger.info("Web hdfs Access to ambari:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "namenodeURIAmbari" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+
+ } else {
+
+ logger.info("Web hdfs Access to ambari:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "namenodeURIAmbari" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+
+ }
+ } catch (URISyntaxException e) {
+ logger.error("Error in accessing Webhdfs of Ambari: ", e);
+ }
+
+ try {
+ if (ConfFileReader.checkNamenodeURIConnectionforHue(view.getProperties().get("namenode_URI_Hue"))) {
+
+ logger.info("Web hdfs Access to hue:- Success");
+ out.println("<tr class=\"success\">");
+ out.println("<td><h6>" + "namenodeURIHue" + "</h6></td>");
+ out.println("<td><h6>" + "OK" + "</h6></td>");
+ out.println("</tr>");
+
+ } else {
+
+ logger.info("Web hdfs Access to hue:- Failed");
+ out.println("<tr class=\"danger\">");
+ out.println("<td><h6>" + "namenodeURIHue" + "</h6></td>");
+ out.println("<td><h6>" + "ERROR" + "</h6></td>");
+ out.println("</tr>");
+
+ }
+ } catch (URISyntaxException e) {
+ logger.error("Error in accessing Webhdfs of Hue: " , e);
+ }
+
+ out.println("</tbody></table>");
+
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ProgressBarStatus.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ProgressBarStatus.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ProgressBarStatus.java
new file mode 100644
index 0000000..40d63df
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/configurationcheck/ProgressBarStatus.java
@@ -0,0 +1,54 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.configurationcheck;
+
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+
+public class ProgressBarStatus extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ public static String TASK_PROGRESS_VARIABLE = "task_progress_session";
+
+
+ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+
+ HttpSession session = request.getSession(true);
+ Integer param = (Integer) session.getAttribute(TASK_PROGRESS_VARIABLE);
+
+ if (param == null) {
+ param = 0;
+ }
+
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ out.println(param + "%");
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveHistoryMigration.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveHistoryMigration.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveHistoryMigration.java
new file mode 100755
index 0000000..46be3fe
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveHistoryMigration.java
@@ -0,0 +1,222 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.hive;
+
+import java.beans.PropertyVetoException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.text.ParseException;
+
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ConfigurationCheck;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus;
+import org.apache.log4j.Logger;
+
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase;
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+import org.apache.ambari.view.huetoambarimigration.service.hive.HiveHistoryQueryImpl;
+
+public class HiveHistoryMigration extends HttpServlet {
+
+
+ private static final long serialVersionUID = 1031422249396784970L;
+ ViewContext view;
+
+ private String startDate;
+ private String endDate;
+ private String instance;
+ private String username;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+
+ HttpSession session = req.getSession(true);
+ final Logger logger = Logger.getLogger(HiveHistoryMigration.class);
+ Connection connectionHuedb = null;
+ Connection connectionAmbaridb = null;
+
+ /* fetching the variable from the client */
+ username = req.getParameter("username");
+ startDate = req.getParameter("startdate");
+ endDate = req.getParameter("enddate");
+ instance = req.getParameter("instance");
+
+ logger.info("--------------------------------------");
+ logger.info("Hive History query Migration started");
+ logger.info("--------------------------------------");
+ logger.info("start date: " + startDate);
+ logger.info("enddate date: " + endDate);
+ logger.info("instance is: " + username);
+ logger.info("hue username is : " + instance);
+
+ int maxCountOfAmbariDb, i = 0;
+ String time = null;
+ Long epochTime = null;
+ String dirNameforHiveHistroy;
+
+ HiveHistoryQueryImpl hiveHistoryQueryImpl = new HiveHistoryQueryImpl();// creating objects of HiveHistroy implementation
+
+ String[] hiveQuery = new String[1000000];
+
+ try {
+
+ connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();
+
+ hiveQuery = hiveHistoryQueryImpl.fetchFromHue(username, startDate, endDate, connectionHuedb);
+
+ /* if No hive query selected from Hue Database according to our search criteria */
+
+ if (hiveQuery[i] == null) {
+
+ logger.info("No queries has been selected acccording to your criteria");
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>No queries selected according to your criteria</h4>");
+
+ } else {
+ /* If Hive queries are selected based on our search criteria */
+
+ connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();// connecting to ambari db
+ connectionAmbaridb.setAutoCommit(false);
+
+ // for each queries fetched from Hue database//
+
+ for (i = 0; hiveQuery[i] != null; i++) {
+
+ float calc = ((float) (i + 1)) / hiveQuery.length * 100;
+ int progressPercentage = Math.round(calc);
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, progressPercentage);
+
+ logger.info("_____________________");
+ logger.info("Loop No." + (i + 1));
+ logger.info("_____________________");
+ logger.info("Hue query that has been fetched" + hiveQuery[i]);
+ int id = 0;
+
+ id = hiveHistoryQueryImpl.fetchInstanceTablename(view.getProperties().get("ambaridrivername"), connectionAmbaridb, instance); // feching table name according to the given instance name
+
+ logger.info("Table name has been fetched from intance name");
+
+ hiveHistoryQueryImpl.writetoFileQueryhql(hiveQuery[i], ConfFileReader.getHomeDir());// writing to .hql file to a temp file on local disk
+
+ logger.info(".hql file created in Temp directory");
+
+ hiveHistoryQueryImpl.writetoFileLogs(ConfFileReader.getHomeDir());// writing to logs file to a temp file on local disk
+
+ logger.info("Log file created in Temp directory");
+
+ maxCountOfAmbariDb = (hiveHistoryQueryImpl.fetchMaximumIdfromAmbaridb(view.getProperties().get("ambaridrivername"), connectionAmbaridb, id) + 1);// fetching the maximum count for ambari db to insert
+
+ time = hiveHistoryQueryImpl.getTime();// getting the system current time.
+
+ epochTime = hiveHistoryQueryImpl.getEpochTime();// getting system time as epoch format
+
+ dirNameforHiveHistroy = "/user/admin/hive/jobs/hive-job-" + maxCountOfAmbariDb + "-" + time + "/";// creating the directory name
+
+ logger.info("Directory name where .hql will be saved: " + dirNameforHiveHistroy);
+
+ hiveHistoryQueryImpl.insertRowinAmbaridb(view.getProperties().get("ambaridrivername"), dirNameforHiveHistroy, maxCountOfAmbariDb, epochTime, connectionAmbaridb, id, instance, i);// inserting in ambari database
+
+ if (view.getProperties().get("KerberoseEnabled").equals("y")) {
+
+ logger.info("kerberose enabled");
+ hiveHistoryQueryImpl.createDirKerberorisedSecured(dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// creating directory in kerborized secured hdfs
+ logger.info("Directory created in hdfs");
+ hiveHistoryQueryImpl.putFileinHdfsKerborizedSecured(ConfFileReader.getHomeDir() + "query.hql", dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// copying the .hql file to kerborized hdfs
+ hiveHistoryQueryImpl.putFileinHdfsKerborizedSecured(ConfFileReader.getHomeDir() + "logs", dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// copying the log file to kerborized hdfs
+ } else {
+
+ logger.info("kerberose not enabled");
+ hiveHistoryQueryImpl.createDir(dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// creating directory in hdfs
+ logger.info("Directory created in hdfs");
+ hiveHistoryQueryImpl.putFileinHdfs(ConfFileReader.getHomeDir() + "query.hql", dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// copying the .hql file to hdfs
+ hiveHistoryQueryImpl.putFileinHdfs(ConfFileReader.getHomeDir() + "logs", dirNameforHiveHistroy, view.getProperties().get("namenode_URI_Ambari"));// copying the log file to hdfs
+ }
+
+ }
+ connectionAmbaridb.commit();
+
+ }
+ } catch (SQLException e) {
+ logger.error("Sql exception in ambari database: ", e);
+ try {
+ connectionAmbaridb.rollback();
+ logger.error("Sql statement are Rolledback");
+ } catch (SQLException e1) {
+ logger.error("Sql rollback exception in ambari database",
+ e1);
+ }
+ } catch (ClassNotFoundException e) {
+ logger.error("Class not found :- " ,e);
+ } catch (ParseException e) {
+ logger.error("Parse Exception : " ,e);
+ } catch (URISyntaxException e) {
+ logger.error("URI Syntax Exception: " ,e);
+ } catch (PropertyVetoException e) {
+ logger.error("PropertyVetoException: " ,e);
+ } finally {
+ if (connectionAmbaridb != null) try {
+ connectionAmbaridb.close();
+ } catch (SQLException e) {
+ logger.error("Exception in closing the connection :" ,e);
+ }
+ }
+ //deleteing the temprary files that are created while execution
+ hiveHistoryQueryImpl.deleteFileQueryhql(ConfFileReader.getHomeDir());
+ hiveHistoryQueryImpl.deleteFileQueryLogs(ConfFileReader.getHomeDir());
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, 0);
+ logger.info("------------------------------");
+ logger.info("Hive History query Migration Ends");
+ logger.info("------------------------------");
+
+ /* servlet returned to client */
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>" + i + " Query has been migrated to " + instance + "</h4>");
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveSavedQueryMigration.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveSavedQueryMigration.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveSavedQueryMigration.java
new file mode 100644
index 0000000..d873744
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/hive/HiveSavedQueryMigration.java
@@ -0,0 +1,231 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.hive;
+
+import java.beans.PropertyVetoException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.util.ArrayList;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.*;
+import javax.servlet.http.*;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus;
+import org.apache.log4j.Logger;
+
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase;
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase;
+import org.apache.ambari.view.huetoambarimigration.model.*;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+import org.apache.ambari.view.huetoambarimigration.service.hive.HiveSavedQueryImpl;
+
+public class HiveSavedQueryMigration extends HttpServlet {
+
+ private static final long serialVersionUID = 1031422249396784970L;
+
+ ViewContext view;
+ private String startDate;
+ private String endDate;
+ private String instance;
+ private String userName;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ HttpSession session = req.getSession(true);
+ final Logger logger = Logger.getLogger(HiveSavedQueryMigration.class);
+
+ Connection connectionAmbaridb = null;
+ Connection connectionHuedb = null;
+
+ /* fetching from servlet */
+ userName = req.getParameter("username");
+ startDate = req.getParameter("startdate");
+ endDate = req.getParameter("enddate");
+ instance = req.getParameter("instance");
+
+ int i = 0;
+
+ logger.info("-------------------------------------");
+ logger.info("Hive saved query Migration started");
+ logger.info("-------------------------------------");
+ logger.info("start date: " + startDate);
+ logger.info("enddate date: " + endDate);
+ logger.info("instance is: " + instance);
+ logger.info("hue username is : " + userName);
+
+ HiveSavedQueryImpl hivesavedqueryimpl = new HiveSavedQueryImpl();/* creating Implementation object */
+
+ int maxcountForHivehistroryAmbaridb, maxCountforSavequeryAmbaridb;
+ String time = null;
+ Long epochtime = null;
+ String dirNameforHiveSavedquery;
+ ArrayList<PojoHive> dbpojoHiveSavedQuery = new ArrayList<PojoHive>();
+
+ try {
+
+ connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection(); /* fetching connection to hue DB */
+
+ dbpojoHiveSavedQuery = hivesavedqueryimpl.fetchFromHuedb(userName, startDate, endDate, connectionHuedb); /* fetching data from hue db and storing it in to a model */
+
+ if (dbpojoHiveSavedQuery.size() == 0) /* if no data has been fetched from hue db according to search criteria */ {
+
+ logger.info("no Hive saved query has been selected from hue according to your criteria of searching");
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>No queries selected according to your criteria</h4>");
+
+ } else {
+
+ connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();/* connecting to ambari DB */
+ connectionAmbaridb.setAutoCommit(false);
+
+ for (i = 0; i < dbpojoHiveSavedQuery.size(); i++) {
+
+ logger.info("_____________________");
+ logger.info("Loop No." + (i + 1));
+ logger.info("_____________________");
+
+ float calc = ((float) (i + 1)) / dbpojoHiveSavedQuery.size() * 100;
+ int progressPercentage = Math.round(calc);
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, progressPercentage);
+
+ logger.info("query fetched from hue:- " + dbpojoHiveSavedQuery.get(i).getQuery());
+
+ int tableIdSavedQuery = hivesavedqueryimpl.fetchInstancetablenameForSavedqueryHive(view.getProperties().get("ambaridrivername"), connectionAmbaridb, instance); /* fetching the instance table name for hive saved query from the given instance name */
+
+ int tableIdHistoryHive = hivesavedqueryimpl.fetchInstanceTablenameHiveHistory(view.getProperties().get("ambaridrivername"), connectionAmbaridb, instance); /* fetching the instance table name for hive history query from the given instance name */
+
+ logger.info("Table name are fetched from instance name.");
+
+ hivesavedqueryimpl.writetoFilequeryHql(dbpojoHiveSavedQuery.get(i).getQuery(), ConfFileReader.getHomeDir()); /* writing hive query to a local file*/
+
+ hivesavedqueryimpl.writetoFileLogs(ConfFileReader.getHomeDir());/* writing logs to localfile */
+
+ logger.info(".hql and logs file are saved in temporary directory");
+
+ maxcountForHivehistroryAmbaridb = (hivesavedqueryimpl.fetchMaxdsidFromHiveHistory(view.getProperties().get("ambaridrivername"), connectionAmbaridb, tableIdHistoryHive) + 1);/* fetching the maximum ds_id from hive history table*/
+
+ maxCountforSavequeryAmbaridb = (hivesavedqueryimpl.fetchMaxidforSavedQueryHive(view.getProperties().get("ambaridrivername"), connectionAmbaridb, tableIdSavedQuery) + 1);/* fetching the maximum ds_id from hive saved query table*/
+
+ time = hivesavedqueryimpl.getTime();/* getting system time */
+
+ epochtime = hivesavedqueryimpl.getEpochTime();/* getting epoch time */
+
+
+ dirNameforHiveSavedquery = "/user/admin/hive/jobs/hive-job-" + maxcountForHivehistroryAmbaridb + "-"
+ + time + "/"; // creating hdfs directory name
+
+ logger.info("Directory will be creted in HDFS" + dirNameforHiveSavedquery);
+
+
+ hivesavedqueryimpl.insertRowHiveHistory(view.getProperties().get("ambaridrivername"), dirNameforHiveSavedquery, maxcountForHivehistroryAmbaridb, epochtime, connectionAmbaridb, tableIdHistoryHive, instance, i);// inserting to hive history table
+
+ logger.info("Row inserted in Hive History table.");
+
+ if (view.getProperties().get("KerberoseEnabled").equals("y")) {
+
+ logger.info("Kerberose Enabled");
+ hivesavedqueryimpl.createDirHiveSecured(dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// creating directory in hdfs in kerborized cluster
+ hivesavedqueryimpl.putFileinHdfsSecured(ConfFileReader.getHomeDir() + "query.hql", dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// putting .hql file in hdfs in kerberoroized cluster
+ hivesavedqueryimpl.putFileinHdfsSecured(ConfFileReader.getHomeDir() + "logs", dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// putting logs file in hdfs in kerberoroized cluster
+
+ } else {
+
+ logger.info("Kerberose Not Enabled");
+ hivesavedqueryimpl.createDirHive(dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// creating directory in hdfs
+ hivesavedqueryimpl.putFileinHdfs(ConfFileReader.getHomeDir() + "query.hql", dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// putting .hql file in hdfs directory
+ hivesavedqueryimpl.putFileinHdfs(ConfFileReader.getHomeDir() + "logs", dirNameforHiveSavedquery, view.getProperties().get("namenode_URI_Ambari"));// putting logs file in hdfs
+ }
+
+ //inserting into hived saved query table
+ hivesavedqueryimpl.insertRowinSavedQuery(view.getProperties().get("ambaridrivername"), maxCountforSavequeryAmbaridb, dbpojoHiveSavedQuery.get(i).getDatabase(), dirNameforHiveSavedquery, dbpojoHiveSavedQuery.get(i).getQuery(), dbpojoHiveSavedQuery.get(i).getOwner(), connectionAmbaridb, tableIdSavedQuery, instance, i);
+
+ }
+ connectionAmbaridb.commit();
+
+ }
+
+
+ } catch (SQLException e) {
+
+ logger.error("SQL exception: ", e);
+ try {
+ connectionAmbaridb.rollback();
+ logger.info("roll back done");
+ } catch (SQLException e1) {
+ logger.error("Rollback error: ", e1);
+
+ }
+ } catch (ClassNotFoundException e1) {
+ logger.error("Class not found : " , e1);
+ } catch (ParseException e) {
+ logger.error("ParseException: " , e);
+ } catch (URISyntaxException e) {
+ logger.error("URISyntaxException: " , e);
+ } catch (PropertyVetoException e) {
+ logger.error("PropertyVetoException:" , e);
+ } finally {
+ if (null != connectionAmbaridb)
+ try {
+ connectionAmbaridb.close();
+ } catch (SQLException e) {
+ logger.error("Error in connection close", e);
+ }
+ }
+
+
+ hivesavedqueryimpl.deleteFileQueryhql(ConfFileReader.getHomeDir());
+ hivesavedqueryimpl.deleteFileQueryLogs(ConfFileReader.getHomeDir());
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, 0);
+
+ logger.info("-------------------------------");
+ logger.info("Hive saved query Migration end");
+ logger.info("--------------------------------");
+
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>" + i + " Saved query has been migrated to " + instance + "</h4>");
+ }
+}
+
+
+
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigJobMigration.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigJobMigration.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigJobMigration.java
new file mode 100644
index 0000000..4b6afdb
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigJobMigration.java
@@ -0,0 +1,201 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.pig;
+
+import java.beans.PropertyVetoException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus;
+import org.apache.log4j.Logger;
+
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase;
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase;
+import org.apache.ambari.view.huetoambarimigration.service.*;
+import org.apache.ambari.view.huetoambarimigration.model.*;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+import org.apache.ambari.view.huetoambarimigration.service.pig.PigJobImpl;
+
+public class PigJobMigration extends HttpServlet {
+
+ private static final long serialVersionUID = 1031422249396784970L;
+ ViewContext view;
+ int i = 0;
+ private String userName;
+ private String startDate;
+ private String endDate;
+ private String instance;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+
+ HttpSession session = req.getSession(true);
+ final Logger logger = Logger.getLogger(PigJobMigration.class);
+ Connection connectionHuedb = null;
+ Connection connectionAmbaridb = null;
+
+ // fetchinf data from the clients
+ userName = req.getParameter("username");
+ startDate = req.getParameter("startdate");
+ endDate = req.getParameter("enddate");
+ instance = req.getParameter("instance");
+
+ logger.info("------------------------------");
+ logger.info("Pig Jobs Migration started");
+ logger.info("------------------------------");
+ logger.info("start date: " + startDate);
+ logger.info("enddate date: " + endDate);
+ logger.info("instance is: " + userName);
+ logger.info("hue username is : " + instance);
+
+ PigJobImpl pigjobimpl = new PigJobImpl();// creating the implementation object
+ int maxCountforPigScript = 0;
+
+ String time = null, timeIndorder = null;
+ Long epochtime = null;
+ String pigJobDirName;
+ ArrayList<PojoPig> pigJobDbPojo = new ArrayList<PojoPig>();
+
+ try {
+
+ connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connecting to hue database
+ pigJobDbPojo = pigjobimpl.fetchFromHueDB(userName, startDate, endDate, connectionHuedb);// fetching the PigJobs details from hue
+
+ /*No Pig Job details has been fetched accordring to search criteria*/
+ if (pigJobDbPojo.size() == 0) {
+
+ logger.info("no Pig Job has been selected from hue according to your criteria of searching");
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>No Pig Job selected according to your criteria</h4>");
+
+ } else {
+
+ connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();
+ connectionAmbaridb.setAutoCommit(false);
+
+ for (i = 0; i < pigJobDbPojo.size(); i++) {
+
+ float calc = ((float) (i + 1)) / pigJobDbPojo.size() * 100;
+ int progressPercentage = Math.round(calc);
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, progressPercentage);
+
+ logger.info("Loop No." + (i + 1));
+ logger.info("________________");
+ logger.info("the title of script " + pigJobDbPojo.get(i).getTitle());
+
+ int fetchPigTablenameInstance = pigjobimpl.fetchInstanceTablename(view.getProperties().get("ambaridrivername"), connectionAmbaridb, instance);
+ maxCountforPigScript = (pigjobimpl.fetchMaxIdforPigJob(view.getProperties().get("ambaridrivername"), connectionAmbaridb, fetchPigTablenameInstance) + 1);
+
+ time = pigjobimpl.getTime();
+ timeIndorder = pigjobimpl.getTimeInorder();
+ epochtime = pigjobimpl.getEpochTime();
+
+ pigJobDirName = "/user/admin/pig/jobs/" + pigJobDbPojo.get(i).getTitle() + "_" + time + "/";
+
+ pigjobimpl.insertRowPigJob(view.getProperties().get("ambaridrivername"), pigJobDirName, maxCountforPigScript, time, timeIndorder, epochtime, pigJobDbPojo.get(i).getTitle(), connectionAmbaridb, fetchPigTablenameInstance, pigJobDbPojo.get(i).getStatus(), instance, i);
+
+ if (view.getProperties().get("KerberoseEnabled").equals("y")) {
+
+ pigjobimpl.createDirPigJobSecured(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"));
+ pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+ pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+ pigjobimpl.copyFileBetweenHdfsSecured(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+
+ } else {
+
+ pigjobimpl.createDirPigJob(pigJobDirName, view.getProperties().get("namenode_URI_Ambari"));
+ pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/script.pig", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+ pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stderr", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+ pigjobimpl.copyFileBetweenHdfs(pigJobDbPojo.get(i).getDir() + "/stdout", pigJobDirName, view.getProperties().get("namenode_URI_Ambari"), view.getProperties().get("namenode_URI_Hue"));
+
+ }
+
+ logger.info(pigJobDbPojo.get(i).getTitle() + "has been migrated to Ambari");
+
+ }
+ connectionAmbaridb.commit();
+ }
+
+ } catch (SQLException e) {
+ logger.error("sql exception in ambari database:", e);
+ try {
+ connectionAmbaridb.rollback();
+ logger.info("roll back done");
+ } catch (SQLException e1) {
+ logger.error("roll back exception:",e1);
+ }
+ } catch (ClassNotFoundException e2) {
+ logger.error("class not found exception:",e2);
+ } catch (ParseException e) {
+ logger.error("ParseException: " ,e);
+ } catch (URISyntaxException e) {
+ logger.error("URISyntaxException" ,e);
+ } catch (PropertyVetoException e) {
+ logger.error("PropertyVetoException" ,e);
+ } finally {
+ if (null != connectionAmbaridb)
+ try {
+ connectionAmbaridb.close();
+ } catch (SQLException e) {
+ logger.error("connection closing exception ", e);
+ }
+ }
+
+ logger.info("------------------------------");
+ logger.info("Pig Job Migration End");
+ logger.info("------------------------------");
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, 0);
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>" + i + " Pig jobs has been migrated to "
+ + instance + "</h4>");
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigScriptMigration.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigScriptMigration.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigScriptMigration.java
new file mode 100644
index 0000000..bb803f3
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/pig/PigScriptMigration.java
@@ -0,0 +1,208 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.pig;
+
+import java.beans.PropertyVetoException;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.text.ParseException;
+import java.util.ArrayList;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus;
+import org.apache.log4j.Logger;
+
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase;
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceHueDatabase;
+import org.apache.ambari.view.huetoambarimigration.model.*;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+import org.apache.ambari.view.huetoambarimigration.service.pig.PigScriptImpl;
+
+public class PigScriptMigration extends HttpServlet {
+
+
+ private static final long serialVersionUID = 1031422249396784970L;
+ ViewContext view;
+ private String startDate;
+ private String endDate;
+ private String instance;
+ private String userName;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+
+ }
+
+ public void doGet(HttpServletRequest req, HttpServletResponse resp)
+ throws ServletException, IOException {
+
+ HttpSession session = req.getSession(true);
+ final Logger logger = Logger.getLogger(PigScriptMigration.class);
+ Connection connectionHuedb = null;
+ Connection connectionAmbaridb = null;
+
+ logger.info("-------------------------------------");
+ logger.info("Pig saved script Migration started");
+ logger.info("-------------------------------------");
+
+ //fethcing data from client
+
+ userName = req.getParameter("username");
+ startDate = req.getParameter("startdate");
+ endDate = req.getParameter("enddate");
+ instance = req.getParameter("instance");
+ int i = 0;
+
+ logger.info("start date: " + startDate);
+ logger.info("enddate date: " + endDate);
+ logger.info("instance is: " + userName);
+ logger.info("hue username is : " + instance);
+
+ //Reading the configuration file
+ PigScriptImpl pigsavedscriptmigration = new PigScriptImpl();
+
+ int maxcountforsavequery = 0, maxcountforpigsavedscript;
+ String time = null, timetobeInorder = null;
+ Long epochTime = null;
+ String dirNameForPigScript, completeDirandFilePath, pigscriptFilename="";
+ int pigInstanceTableName;
+
+ ArrayList<PojoPig> dbpojoPigSavedscript = new ArrayList<PojoPig>();
+
+ try {
+ connectionHuedb = DataSourceHueDatabase.getInstance(view.getProperties().get("huedrivername"), view.getProperties().get("huejdbcurl"), view.getProperties().get("huedbusername"), view.getProperties().get("huedbpassword")).getConnection();//connection to Hue DB
+ dbpojoPigSavedscript = pigsavedscriptmigration.fetchFromHueDatabase(userName, startDate, endDate, connectionHuedb, view.getProperties().get("huedrivername"));// Fetching Pig script details from Hue DB
+
+ /* If No Pig Script has been fetched from Hue db according to our search criteria*/
+ if (dbpojoPigSavedscript.size() == 0) {
+
+ logger.info("no Pig script has been selected from hue according to your criteria of searching");
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>No Pig Script selected according to your criteria</h4>");
+
+ } else {
+
+ connectionAmbaridb = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();// connecting to ambari db
+ connectionAmbaridb.setAutoCommit(false);
+ logger.info("loop will continue for " + dbpojoPigSavedscript.size() + "times");
+
+ //for each pig script found in Hue Database
+
+ for (i = 0; i < dbpojoPigSavedscript.size(); i++) {
+
+
+ float calc = ((float) (i + 1)) / dbpojoPigSavedscript.size() * 100;
+ int progressPercentage = Math.round(calc);
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, progressPercentage);
+
+ logger.info("Loop No." + (i + 1));
+ logger.info("________________");
+ logger.info("the title of script: " + dbpojoPigSavedscript.get(i).getTitle());
+
+ pigInstanceTableName = pigsavedscriptmigration.fetchInstanceTablenamePigScript(view.getProperties().get("ambaridrivername"), connectionAmbaridb, instance);// finding the table name in ambari from the given instance
+
+ maxcountforpigsavedscript = (pigsavedscriptmigration.fetchmaxIdforPigSavedScript(view.getProperties().get("ambaridrivername"), connectionAmbaridb, pigInstanceTableName) + 1);// maximum count of the primary key of Pig Script table
+
+ time = pigsavedscriptmigration.getTime();
+
+ timetobeInorder = pigsavedscriptmigration.getTimeInorder();
+
+ epochTime = pigsavedscriptmigration.getEpochTime();
+
+ dirNameForPigScript = "/user/admin/pig/scripts/";
+
+ pigscriptFilename = dbpojoPigSavedscript.get(i).getTitle() + "-" + time + ".pig";
+
+ completeDirandFilePath = dirNameForPigScript + pigscriptFilename;
+
+ pigsavedscriptmigration.writetPigScripttoLocalFile(dbpojoPigSavedscript.get(i).getScript(), dbpojoPigSavedscript.get(i).getTitle(), dbpojoPigSavedscript.get(i).getDt(), ConfFileReader.getHomeDir(), pigscriptFilename);
+
+ pigsavedscriptmigration.insertRowForPigScript(view.getProperties().get("ambaridrivername"), completeDirandFilePath, maxcountforsavequery, maxcountforpigsavedscript, time, timetobeInorder, epochTime, dbpojoPigSavedscript.get(i).getTitle(), connectionAmbaridb, pigInstanceTableName, instance, i);
+
+ if (view.getProperties().get("KerberoseEnabled").equals("y")) {
+ pigsavedscriptmigration.putFileinHdfsSecured(ConfFileReader.getHomeDir() + pigscriptFilename, dirNameForPigScript, view.getProperties().get("namenode_URI_Ambari"));
+ } else {
+ pigsavedscriptmigration.putFileinHdfs(ConfFileReader.getHomeDir() + pigscriptFilename, dirNameForPigScript, view.getProperties().get("namenode_URI_Ambari"));
+ }
+
+ logger.info(dbpojoPigSavedscript.get(i).getTitle() + "Migrated to Ambari");
+
+ pigsavedscriptmigration.deletePigScriptLocalFile(ConfFileReader.getHomeDir(), pigscriptFilename);
+
+ }
+ connectionAmbaridb.commit();
+
+ }
+
+
+ } catch (SQLException e) {
+ logger.error("Sql exception in ambari database", e);
+ try {
+ connectionAmbaridb.rollback();
+ logger.info("rollback done");
+ } catch (SQLException e1) {
+ logger.error("Sql exception while doing roll back", e);
+ }
+ } catch (ClassNotFoundException e2) {
+ logger.error("class not found exception", e2);
+ } catch (ParseException e) {
+ logger.error("ParseException: " , e);
+ } catch (PropertyVetoException e) {
+ logger.error("PropertyVetoException: " , e);
+ } finally {
+ if (null != connectionAmbaridb)
+ try {
+ connectionAmbaridb.close();
+ } catch (SQLException e) {
+ logger.error("connection close exception: ", e);
+ }
+ }
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, 0);
+
+ resp.setContentType("text/html");
+ PrintWriter out = resp.getWriter();
+ out.println("<br>");
+ out.println("<h4>" + i + " Pig Script has been migrated to " + instance + "</h4>");
+
+ logger.info("----------------------------------");
+ logger.info("Pig saved script Migration ends");
+ logger.info("----------------------------------");
+ }
+
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/revertchange/RevertChange.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/revertchange/RevertChange.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/revertchange/RevertChange.java
new file mode 100644
index 0000000..2fff19a
--- /dev/null
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/controller/revertchange/RevertChange.java
@@ -0,0 +1,217 @@
+/**
+ * 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
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
+ * 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.ambari.view.huetoambarimigration.controller.revertchange;
+
+import java.beans.PropertyVetoException;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.net.URISyntaxException;
+import java.security.PrivilegedExceptionAction;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.sql.Statement;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.List;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+
+import org.apache.ambari.view.ViewContext;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ProgressBarStatus;
+import org.apache.log4j.Logger;
+import org.jdom.Attribute;
+import org.jdom.Document;
+import org.jdom.Element;
+import org.jdom.JDOMException;
+import org.jdom.input.SAXBuilder;
+import org.jdom.output.Format;
+import org.jdom.output.XMLOutputter;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.security.UserGroupInformation;
+
+import org.apache.ambari.view.huetoambarimigration.datasource.DataSourceAmbariDatabase;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
+
+
+public class RevertChange extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+ ViewContext view;
+
+ @Override
+ public void init(ServletConfig config) throws ServletException {
+
+ super.init(config);
+ ServletContext context = config.getServletContext();
+ view = (ViewContext) context.getAttribute(ViewContext.CONTEXT_ATTRIBUTE);
+ }
+
+ public boolean stringtoDatecompare(String datefromservlet,
+ String datefromfile) throws ParseException {
+
+ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+ Date date1 = formatter.parse(datefromservlet);
+ Date date2 = formatter.parse(datefromfile);
+ if (date1.compareTo(date2) < 0) {
+ return true;
+ } else {
+ return false;
+ }
+
+ }
+
+ public void removedir(final String dir, final String namenodeuri)
+ throws IOException, URISyntaxException {
+
+ try {
+ UserGroupInformation ugi = UserGroupInformation
+ .createRemoteUser("hdfs");
+
+ ugi.doAs(new PrivilegedExceptionAction<Void>() {
+
+ public Void run() throws Exception {
+
+ Configuration conf = new Configuration();
+ conf.set("fs.hdfs.impl",
+ org.apache.hadoop.hdfs.DistributedFileSystem.class
+ .getName());
+ conf.set("fs.file.impl",
+ org.apache.hadoop.fs.LocalFileSystem.class
+ .getName());
+ conf.set("fs.defaultFS", namenodeuri);
+ conf.set("hadoop.job.ugi", "hdfs");
+
+ FileSystem fs = FileSystem.get(conf);
+ Path src = new Path(dir);
+ fs.delete(src, true);
+ return null;
+ }
+ });
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ protected void doGet(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
+
+ final Logger logger = Logger.getLogger(RevertChange.class);
+
+ logger.info("------------------------------");
+ logger.info("Reverting the changes Start:");
+ logger.info("------------------------------");
+
+ HttpSession session = request.getSession(true);
+ String revertDate = request.getParameter("revertdate");
+ String instance = request.getParameter("instance");
+
+ logger.info("Revert Date " + revertDate);
+ logger.info("instance name " + instance);
+
+ BufferedReader br = null;
+ Connection connectionAmbariDatabase = null;
+
+ try {
+ connectionAmbariDatabase = DataSourceAmbariDatabase.getInstance(view.getProperties().get("ambaridrivername"), view.getProperties().get("ambarijdbcurl"), view.getProperties().get("ambaridbusername"), view.getProperties().get("ambaridbpassword")).getConnection();
+ connectionAmbariDatabase.setAutoCommit(false);
+
+ Statement stmt = null;
+ stmt = connectionAmbariDatabase.createStatement();
+ SAXBuilder builder = new SAXBuilder();
+ File xmlFile = new File(ConfFileReader.getHomeDir() + "RevertChange.xml");
+ try {
+
+ Document document = (Document) builder.build(xmlFile);
+ Element rootNode = document.getRootElement();
+ List list = rootNode.getChildren("RevertRecord");
+
+ for (int i = 0; i < list.size(); i++) {
+
+ float calc = ((float) (i + 1)) / list.size() * 100;
+ int progressPercentage = Math.round(calc);
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, progressPercentage);
+
+ Element node = (Element) list.get(i);
+
+ if (node.getChildText("instance").equals(instance)) {
+
+ if (stringtoDatecompare(revertDate, node.getChildText("datetime").toString())) {
+
+ String sql = node.getChildText("query");
+ logger.info(sql);
+ stmt.executeUpdate(sql);
+ removedir(node.getChildText("dirname").toString(), view.getProperties().get("namenode_URI_Ambari"));
+ logger.info(node.getChildText("dirname").toString()+" deleted");
+
+ }
+
+ }
+
+ }
+
+ connectionAmbariDatabase.commit();
+
+ response.setContentType("text/html");
+ PrintWriter out = response.getWriter();
+ out.println("<br>");
+ out.println("<h4>" + " The change has been revert back for "
+ + instance + "</h4>");
+
+ session.setAttribute(ProgressBarStatus.TASK_PROGRESS_VARIABLE, 0);
+
+ logger.info("------------------------------");
+ logger.info("Reverting the changes End");
+ logger.info("------------------------------");
+
+ } catch (IOException e) {
+ logger.error("IOException: ",e);
+ } catch (ParseException e) {
+ logger.error("ParseException: ",e);
+ } catch (JDOMException e) {
+ logger.error("JDOMException: ",e);
+ } catch (URISyntaxException e) {
+ logger.error("URISyntaxException: ",e);
+ }
+ } catch (SQLException e1) {
+ logger.error("SqlException ",e1);
+ try {
+ connectionAmbariDatabase.rollback();
+ logger.info("Rollback done");
+ } catch (SQLException e2) {
+ logger.error("SqlException in Rollback ",e2);
+ }
+ } catch (PropertyVetoException e) {
+ logger.error("PropertyVetoException: ",e);
+ }
+
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceAmbariDatabase.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceAmbariDatabase.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceAmbariDatabase.java
index 0d0fc7d..034c4c6 100644
--- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceAmbariDatabase.java
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceAmbariDatabase.java
@@ -18,6 +18,8 @@
package org.apache.ambari.view.huetoambarimigration.datasource;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ConfigurationCheck;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceHueDatabase.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceHueDatabase.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceHueDatabase.java
index ce8aecd..6e40308 100644
--- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceHueDatabase.java
+++ b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/DataSourceHueDatabase.java
@@ -18,6 +18,8 @@
package org.apache.ambari.view.huetoambarimigration.datasource;
+import org.apache.ambari.view.huetoambarimigration.controller.configurationcheck.ConfigurationCheck;
+import org.apache.ambari.view.huetoambarimigration.service.configurationcheck.ConfFileReader;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import java.beans.PropertyVetoException;
http://git-wip-us.apache.org/repos/asf/ambari/blob/283256c8/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/queryset/ambariqueryset/hive/historyqueryset/MysqlQuerySetAmbariDB.java
----------------------------------------------------------------------
diff --git a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/queryset/ambariqueryset/hive/historyqueryset/MysqlQuerySetAmbariDB.java b/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/queryset/ambariqueryset/hive/historyqueryset/MysqlQuerySetAmbariDB.java
deleted file mode 100644
index c08f009..0000000
--- a/contrib/views/hueambarimigration/src/main/java/org/apache/ambari/view/huetoambarimigration/datasource/queryset/ambariqueryset/hive/historyqueryset/MysqlQuerySetAmbariDB.java
+++ /dev/null
@@ -1,46 +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
- * <p/>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p/>
- * 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.ambari.view.huetoambarimigration.datasource.queryset.ambariqueryset.hive.historyqueryset;
-
-/**
- * Overriding methods for Mysql specific queries
- */
-
-public class MysqlQuerySetAmbariDB extends QuerySetAmbariDB {
-
- @Override
- protected String getSqlMaxDSidFromTableId(int id) {
- return "select max( cast(ds_id as unsigned) ) as max from DS_JOBIMPL_" + id + ";";
- }
-
- @Override
- protected String getTableIdSqlFromInstanceName() {
- return "select id from viewentity where class_name LIKE 'org.apache.ambari.view.hive.resources.jobs.viewJobs.JobImpl' and view_instance_name=?;";
- }
-
- @Override
- protected String getSqlInsertHiveHistory(int id) {
- return "INSERT INTO DS_JOBIMPL_" + id + " values (?,'','','','','default',?,0,'','',?,'admin',?,'','job','','','Unknown',?,'','Worksheet');";
- }
-
- @Override
- protected String getRevSql(int id, String maxcount) {
- return "delete from DS_JOBIMPL_" + id + " where ds_id='" + maxcount + "';";
- }
-
-}