浏览代码

AMBARI-1256. Host registration can fail due to mount point info not fitting ambari.hosts::disks_info column. (Sumit Mohanty via mahadev)

git-svn-id: https://svn.apache.org/repos/asf/incubator/ambari/trunk@1438814 13f79535-47bb-0310-9956-ffa450edef68
Mahadev Konar 12 年之前
父节点
当前提交
c3101c7aa9

+ 3 - 0
CHANGES.txt

@@ -216,6 +216,9 @@ Trunk (unreleased changes):
  AMBARI-1210. Allow capacity scheduler to be attached to host role configs for
  CS configurability in the API's. (mahadev)
 
+ AMBARI-1256. Host registration can fail due to mount point info not fitting
+ ambari.hosts::disks_info column. (Sumit Mohanty via mahadev)
+
 AMBARI-1.2.0 branch:
 
  INCOMPATIBLE CHANGES

+ 17 - 0
ambari-server/pom.xml

@@ -232,6 +232,23 @@
                 </source>
               </sources>
             </mapping>
+            <mapping>
+              <directory>/var/lib/ambari-server/resources/upgrade</directory>
+              <filemode>755</filemode>
+              <username>root</username>
+              <groupname>root</groupname>
+            </mapping>
+            <mapping>
+              <directory>/var/lib/ambari-server/resources/upgrade/ddl</directory>
+              <filemode>755</filemode>
+              <username>root</username>
+              <groupname>root</groupname>
+              <sources>
+                <source>
+                  <location>src/main/resources/upgrade/ddl/Ambari-DDL-Postgres-UPGRADE-1.2.1.sql</location>
+                </source>
+              </sources>
+            </mapping>
             <mapping>
               <directory>/var/lib/ambari-server/resources/stacks</directory>
               <filemode>755</filemode>

+ 5 - 1
ambari-server/sbin/ambari-server

@@ -73,6 +73,10 @@ case "$1" in
         $0 stop
         $0 start
         ;;
+  upgrade)
+        echo -e "Upgrading ambari-server"
+        $PYTHON /usr/sbin/ambari-server.py $@
+        ;;
   setup)
         echo -e "Run postgresql initdb"
         initdb_res=`/sbin/service postgresql initdb`
@@ -85,7 +89,7 @@ case "$1" in
         $PYTHON /usr/sbin/ambari-server.py $@
         ;;
   *)
-        echo "Usage: /usr/sbin/ambari-server {start|stop|restart|setup} [options]"
+        echo "Usage: /usr/sbin/ambari-server {start|stop|restart|setup|upgrade} [options]"
         exit 1
 esac
 

+ 40 - 0
ambari-server/src/main/python/ambari-server.py

@@ -44,6 +44,7 @@ SETUP_ACTION = "setup"
 START_ACTION = "start"
 STOP_ACTION = "stop"
 RESET_ACTION = "reset"
+UPGRADE_ACTION = "upgrade"
 
 # selinux commands
 GET_SE_LINUX_ST_CMD = "/usr/sbin/sestatus"
@@ -247,6 +248,20 @@ def setup_db(args):
 
 
 
+def upgrade_db(args):
+  #password access to ambari-server and mapred
+  configure_postgres_username_password(args)
+  dbname = args.postgredbname
+  file = args.upgrade_script_file
+  username = args.postgres_username
+  password = args.postgres_password
+  command = SETUP_DB_CMD[:]
+  command[-1] = command[-1].format(file, username, password)
+  retcode, outdata, errdata = run_os_command(command)
+  if not retcode == 0:
+    print errdata
+  return retcode
+
 #
 # Checks SELinux
 #
@@ -734,6 +749,25 @@ def stop(args):
 
 
 
+#
+# Upgrades the Ambari Server.
+#
+def upgrade(args):
+
+  print 'Checking PostgreSQL...'
+  retcode = check_postgre_up()
+  if not retcode == 0:
+    printErrorMsg ('PostgreSQL server not running. Exiting')
+    sys.exit(retcode)
+
+  print 'Upgrading database...'
+  retcode = upgrade_db(args)
+  if not retcode == 0:
+    printErrorMsg  ('Database upgrade script has failed. Exiting.')
+    sys.exit(retcode)
+
+  print "Ambari Server 'upgrade' finished successfully"
+
 #
 # Prints an "info" messsage.
 #
@@ -905,6 +939,10 @@ def main():
                               "ambari-server/resources/"
                               "Ambari-DDL-Postgres-DROP.sql",
                       help="File with drop script")
+  parser.add_option('-u', '--upgrade-script-file', default="/var/lib/"
+                              "ambari-server/resources/upgrade/ddl/"
+                              "Ambari-DDL-Postgres-UPGRADE-1.2.1.sql",
+                      help="File with upgrade script")
   parser.add_option('-j', '--java-home', default=None,
                   help="Use specified java_home.  Must be valid on all hosts")
   parser.add_option("-v", "--verbose",
@@ -938,6 +976,8 @@ def main():
     stop(options)
   elif action == RESET_ACTION:
     reset(options)
+  elif action == UPGRADE_ACTION:
+    upgrade(options)
   else:
     parser.error("Invalid action")
 

+ 1 - 1
ambari-server/src/main/resources/Ambari-DDL-Postgres-CREATE.sql

@@ -60,7 +60,7 @@ CREATE TABLE ambari.hostcomponentstate (cluster_id BIGINT NOT NULL, component_na
 
 GRANT ALL PRIVILEGES ON TABLE ambari.hostcomponentstate TO :username;
 
-CREATE TABLE ambari.hosts (host_name VARCHAR(255) NOT NULL, cpu_count INTEGER NOT NULL, cpu_info VARCHAR(255) NOT NULL, discovery_status VARCHAR(2000) NOT NULL, disks_info VARCHAR(2000) NOT NULL, host_attributes VARCHAR(20000) NOT NULL, ipv4 VARCHAR(255), ipv6 VARCHAR(255), public_host_name VARCHAR(255), last_registration_time BIGINT NOT NULL, os_arch VARCHAR(255) NOT NULL, os_info VARCHAR(1000) NOT NULL, os_type VARCHAR(255) NOT NULL, rack_info VARCHAR(255) NOT NULL, total_mem BIGINT NOT NULL, PRIMARY KEY (host_name));
+CREATE TABLE ambari.hosts (host_name VARCHAR(255) NOT NULL, cpu_count INTEGER NOT NULL, cpu_info VARCHAR(255) NOT NULL, discovery_status VARCHAR(2000) NOT NULL, disks_info VARCHAR(10000) NOT NULL, host_attributes VARCHAR(20000) NOT NULL, ipv4 VARCHAR(255), ipv6 VARCHAR(255), public_host_name VARCHAR(255), last_registration_time BIGINT NOT NULL, os_arch VARCHAR(255) NOT NULL, os_info VARCHAR(1000) NOT NULL, os_type VARCHAR(255) NOT NULL, rack_info VARCHAR(255) NOT NULL, total_mem BIGINT NOT NULL, PRIMARY KEY (host_name));
 
 GRANT ALL PRIVILEGES ON TABLE ambari.hosts TO :username;