You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@uima.apache.org by ch...@apache.org on 2015/11/01 15:09:47 UTC

svn commit: r1711768 [2/2] - in /uima/sandbox/uima-ducc/trunk: ./ src/main/admin/ src/main/assembly/ src/main/resources/ uima-ducc-database/src/main/java/org/apache/uima/ducc/database/ uima-ducc-examples/src/main/scripts/ uima-ducc-parent/

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbCreate.java Sun Nov  1 14:09:47 2015
@@ -19,36 +19,43 @@
 
 package org.apache.uima.ducc.database;
 
+import java.io.FileOutputStream;
 import java.util.List;
+import java.util.Properties;
+import java.util.UUID;
 
 import org.apache.uima.ducc.common.utils.DuccLogger;
 
+import com.datastax.driver.core.AuthProvider;
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.Host;
 import com.datastax.driver.core.Metadata;
+import com.datastax.driver.core.PlainTextAuthProvider;
 import com.datastax.driver.core.Session;
 import com.datastax.driver.core.SimpleStatement;
+import com.datastax.driver.core.exceptions.AuthenticationException;
 
 public class DbCreate
 {
+    static final String DUCC_KEYSPACE = "ducc";
+    static final String PASSWORD_KEY  = "db_password";
+    static final String PASSWORD_FILE = "database.password";
+
     DuccLogger logger = null;
     String dburl;
-    String adminid = "root";
+    String adminid = null;
     String adminpw = null;
 
     private Cluster cluster;
     private Session session;
 
-    public DbCreate(String dburl)
-    {
-        this.dburl = dburl;
-    }
 
-
-    public DbCreate(String dburl, DuccLogger logger)
+    public DbCreate(String dburl, DuccLogger logger, String adminid, String adminpw)
     {
         this.dburl = dburl;
         this.logger = logger;
+        this.adminid = adminid;
+        this.adminpw = adminpw;
     }
 
     public DbCreate(String dburl, String adminid, String adminpw)
@@ -59,11 +66,55 @@ public class DbCreate
     }
 
     public void connect()
+        throws Exception
     {
         String methodName = "connect";
-        cluster = Cluster.builder()
-            .addContactPoint(dburl)
-            .build();
+
+        String dh = System.getProperty("DUCC_HOME");
+        if ( dh == null ) {
+            throw new IllegalArgumentException("DUCC_HOME must be set as a system property: -DDUCC_HOME=whatever");
+        }
+
+        try {
+            // If we're here, we must first of all get rid of the cassandra su and set up our own
+
+            AuthProvider auth = new PlainTextAuthProvider("cassandra", "cassandra");
+            cluster = Cluster.builder()
+                .withAuthProvider(auth)
+                .addContactPoint(dburl)
+                .build();
+
+            session = cluster.connect();
+            session.execute("CREATE USER IF NOT EXISTS " + adminid + " with password '" + adminpw + "' SUPERUSER");
+            cluster.close();
+            doLog(methodName, "Created user " + adminid);
+
+            Properties props = new Properties();
+            props.setProperty(PASSWORD_KEY, adminpw);
+            FileOutputStream fos = new FileOutputStream(dh + "/resources.private/" + PASSWORD_FILE);
+            props.store(fos, "Db private configuration");
+            fos.close();
+
+            auth = new PlainTextAuthProvider(adminid, adminpw);
+            cluster = Cluster.builder()
+                .withAuthProvider(auth)
+                .addContactPoint(dburl)
+                .build();
+            session = cluster.connect();
+   
+            String uglypw = UUID.randomUUID().toString();
+            session.execute("ALTER USER cassandra  with password '" + uglypw + "' NOSUPERUSER");
+            doLog(methodName, "Changed default super user's password and revoked its superuser authority.");
+            doLog(methodName, "From this point, this DB can only be accessed in super user mode by user 'ducc'");
+            
+        } catch (AuthenticationException e ) {
+            // if we get here the default super user isn't working and we expect a valid id and password
+            AuthProvider auth = new PlainTextAuthProvider(adminid, adminpw);
+            cluster = Cluster.builder()
+                .withAuthProvider(auth)
+                .addContactPoint(dburl)
+                .build();
+        }
 
         Metadata metadata = cluster.getMetadata();
         doLog(methodName, "Connected to cluster: %s\n", metadata.getClusterName());
@@ -186,14 +237,14 @@ public class DbCreate
 
     public static void main(String[] args)
     {
-        if ( args.length != 1 ) {
-            System.out.println("Usage: DbCreate <database url>");
+        if ( args.length != 3 ) {
+            System.out.println("Usage: DbCreate database_url db_id db_pw");
             System.exit(1);
         }
 
         DbCreate client = null;
         try {
-            client = new DbCreate(args[0]);
+            client = new DbCreate(args[0], args[1], args[2]);
             client.connect();
             client.createSchema();
         } catch ( Throwable e ) {

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/DbManager.java Sun Nov  1 14:09:47 2015
@@ -28,6 +28,7 @@ import com.datastax.driver.core.BoundSta
 import com.datastax.driver.core.Cluster;
 import com.datastax.driver.core.Host;
 import com.datastax.driver.core.Metadata;
+import com.datastax.driver.core.PlainTextAuthProvider;
 import com.datastax.driver.core.PreparedStatement;
 import com.datastax.driver.core.ResultSet;
 import com.datastax.driver.core.Session;
@@ -85,7 +86,11 @@ public class DbManager
 
         if ( cluster != null ) return;        // already initialized
 
+        String pw = dbPassword();
+        PlainTextAuthProvider auth = new PlainTextAuthProvider("ducc", pw);
+
         cluster = Cluster.builder()
+            .withAuthProvider(auth)
             .addContactPoint(dburl)
             .build();
 
@@ -154,11 +159,11 @@ public class DbManager
     {
         // logger.info(methodName, null, "Opening service database at: "  + dburl);
         Properties props = new Properties();
-        FileInputStream fis = new FileInputStream(System.getProperty("DUCC_HOME") + "/resources.private/db_password");
+        FileInputStream fis = new FileInputStream(System.getProperty("DUCC_HOME") + "/resources.private/" + DbCreate.PASSWORD_FILE);
         props.load(fis);
         fis.close();
 
-        String pw = props.getProperty("db_password");
+        String pw = props.getProperty(DbCreate.PASSWORD_KEY);
         if ( pw == null ) {
             throw new IllegalStateException("Cannot acquire the database password.");
         }

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-database/src/main/java/org/apache/uima/ducc/database/HistoryManagerDb.java Sun Nov  1 14:09:47 2015
@@ -427,7 +427,6 @@ public class HistoryManagerDb
                 ByteArrayInputStream bais = new ByteArrayInputStream(workbytes);
                 ObjectInputStream ois = new ObjectInputStream(bais);
                 DuccWorkMap work = (DuccWorkMap) ois.readObject();
-                Map<DuccId, IDuccWork> map = work.getMap();
                 ois.close();
 
                 workbytes = bbmap.array();

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/start_sim Sun Nov  1 14:09:47 2015
@@ -388,10 +388,15 @@ class StartSim(DuccUtil):
                     self.start_broker()
     
                 print '-------- start database'
-                if ( components.get('db') != None ):
-                    if ( self.db_start() ):
-                        self.db_init()
 
+                if ( components.get('db') != None ):
+                    try:
+                        self.db_start()                
+                    except Exception (e):
+                        # print e
+                        print sys.exc_info()[0], "Can't start the database."
+                        sys.exit(1)
+                        
                 print '-------- specials_only', specials_only
                 if ( specials_only ):
                     return

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-examples/src/main/scripts/stop_sim Sun Nov  1 14:09:47 2015
@@ -37,36 +37,6 @@ from ducc_util  import ThreadPool
 
 class StopSim(DuccUtil):
 
-    def stop_db(self):
-
-        # disable until we're ready to turn this on
-        if ( self.db_parms == self.db_disabled ):
-            return True
-
-        (jvm_parms, classpath, db_rt, dburl, dbroot) = self.db_parms()
-
-	print 'Stopping database'
-
-        main = 'com.orientechnologies.orient.server.OServerShutdownMain'
-
-        jp = ''
-        for k in jvm_parms.keys():
-            v = jvm_parms[k]
-            if ( v == None ):
-                jp = jp + k + ' '
-            else:
-                jp = jp + k + '=' + v + ' '
-
-
-        cmd = ' '.join([self.java(), jp, '-cp', classpath, main])
-        print cmd
-
-        here = os.getcwd()
-        os.chdir(db_rt)
-        self.spawn(cmd)
-        os.chdir(here)
-
-
     def signal_process(self, args):
         inst, data_prop, signal = args
         data = data_prop
@@ -206,6 +176,7 @@ class StopSim(DuccUtil):
         time.sleep(sleeptime)
 
         if ( stopdatabase ) :
+            print 'Stopping database'
             self.db_stop()
 
         if ( stopbroker and self.automanage ):

Modified: uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml
URL: http://svn.apache.org/viewvc/uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml?rev=1711768&r1=1711767&r2=1711768&view=diff
==============================================================================
--- uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml (original)
+++ uima/sandbox/uima-ducc/trunk/uima-ducc-parent/pom.xml Sun Nov  1 14:09:47 2015
@@ -175,6 +175,7 @@
         <lz4.version>1.2.0</lz4.version>
         <hdr.version>2.1.4</hdr.version>
         <!-- end of cassandra client -->
+        <cassandra.server.version>2.1.11</cassandra.server.version>
         
 		<http.commons.client.version>4.3.5</http.commons.client.version>
 		<http.commons.client-cache.version>4.3.5</http.commons.client-cache.version>