Added cluster_port and java_opts to the cluster xml configuration support.

Project: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/commit/361202a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/tree/361202a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-vxquery/diff/361202a0

Branch: refs/heads/prestonc/benchmark
Commit: 361202a0b37e3ed42637b2e549b7c188ef6b1dba
Parents: b611a89
Author: Preston Carman <[email protected]>
Authored: Tue Apr 22 16:40:53 2014 -0700
Committer: Preston Carman <[email protected]>
Committed: Thu May 8 14:15:35 2014 -0700

----------------------------------------------------------------------
 .../main/resources/scripts/cluster_actions.py   |  6 +-
 .../resources/scripts/cluster_information.py    | 92 +++++++++++++-------
 .../src/main/resources/scripts/startcc.sh       | 26 ++++--
 .../src/main/resources/scripts/startnc.sh       | 24 +++--
 4 files changed, 100 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/cluster_actions.py
----------------------------------------------------------------------
diff --git a/vxquery-server/src/main/resources/scripts/cluster_actions.py 
b/vxquery-server/src/main/resources/scripts/cluster_actions.py
index cef5db1..a7cda17 100644
--- a/vxquery-server/src/main/resources/scripts/cluster_actions.py
+++ b/vxquery-server/src/main/resources/scripts/cluster_actions.py
@@ -109,14 +109,14 @@ class ClusterActions:
     
     def start_cc(self, machine):
         print "Start Cluster Controller."
-        print "  " + machine.get_id() + " " + machine.get_ip()
-        command = "./vxquery-server/target/appassembler/bin/startcc.sh " + 
machine.get_ip()
+        print "  " + machine.get_id() + " " + machine.get_ip() + ":" + 
machine.get_port()
+        command = "./vxquery-server/target/appassembler/bin/startcc.sh " + 
machine.get_ip() + " \"" + machine.get_port() + "\" \"" + 
machine.get_java_opts() + "\""
         self.run_remote_command(machine.get_username(), machine.get_id(), 
command)
     
     def start_nc(self, machine, cc):
         print "Start Node Controller."
         print "  " + machine.get_id() + " " + machine.get_ip()
-        command = "./vxquery-server/target/appassembler/bin/startnc.sh " + 
cc.get_ip() + " " + machine.get_ip() + " " + machine.get_id()
+        command = "./vxquery-server/target/appassembler/bin/startnc.sh " + 
machine.get_id() + " " + machine.get_ip() + " " + cc.get_ip() + " \"" + 
cc.get_port() + "\" \"" + machine.get_java_opts() + "\""
         self.run_remote_command(machine.get_username(), machine.get_id(), 
command)
 
     def stop_cc(self, machine):

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/cluster_information.py
----------------------------------------------------------------------
diff --git a/vxquery-server/src/main/resources/scripts/cluster_information.py 
b/vxquery-server/src/main/resources/scripts/cluster_information.py
index b31660b..677204b 100644
--- a/vxquery-server/src/main/resources/scripts/cluster_information.py
+++ b/vxquery-server/src/main/resources/scripts/cluster_information.py
@@ -23,59 +23,79 @@ class ClusterInformation:
         self.config = parse(self.cluster_xml_file)
 
     def get_username(self):
-        return self.get_text(self.config.getElementsByTagName("username")[0])
+        return get_tag_text(self.config, "username")
 
-    # Depricated
-    def get_master_node_ip(self):
-        master_node = self.config.getElementsByTagName("master_node")[0]
-        return self.get_cluster_ip(master_node)
-
-    # Depricated
-    def get_node_ip_list(self):
-        nodes = []
-        for node in self.config.getElementsByTagName("node"):
-            nodes.append(self.get_cluster_ip(node))
-        return nodes
+    def get_java_opts(self):
+        return get_tag_text(self.config, "java_opts")
 
     def get_master_node_machine(self):
         master_node = self.config.getElementsByTagName("master_node")[0]
-        id = self.get_cluster_id(master_node)
-        ip = self.get_cluster_ip(master_node)
+        id = NodeXmlReader.get_cluster_id(master_node)
+        ip = NodeXmlReader.get_cluster_ip(master_node)
+        port = NodeXmlReader.get_cluster_port(master_node)
+        java_opts = NodeXmlReader.get_java_opts(master_node)
+        if java_opts is "":
+            java_opts = self.get_java_opts()
         username = self.get_username()
-        return Machine(id, ip, username)
+        return Machine(id, ip, username, port, java_opts)
 
     def get_node_machine_list(self):
         nodes = []
         username = self.get_username()
         for node in self.config.getElementsByTagName("node"):
-            id = self.get_cluster_id(node)
-            ip = self.get_cluster_ip(node)
-            nodes.append(Machine(id, ip, username))
+            id = NodeXmlReader.get_cluster_id(node)
+            ip = NodeXmlReader.get_cluster_ip(node)
+            java_opts = NodeXmlReader.get_java_opts(node)
+            if java_opts is "":
+                java_opts = self.get_java_opts()
+            nodes.append(Machine(id, ip, username, "", java_opts))
         return nodes
 
-    # 
--------------------------------------------------------------------------
-    # Node Specific Functions
-    # 
--------------------------------------------------------------------------
-    def get_cluster_ip(self, node):
-        return self.get_text(node.getElementsByTagName("cluster_ip")[0])
+class NodeXmlReader(object):
+    ''' 
--------------------------------------------------------------------------
+     Node Specific Functions
+    -------------------------------------------------------------------------- 
'''
+    @staticmethod
+    def get_cluster_id(node):
+        return get_tag_text(node, "id")
 
-    def get_cluster_id(self, node):
-        return self.get_text(node.getElementsByTagName("id")[0])
+    @staticmethod
+    def get_cluster_ip(node):
+        return get_tag_text(node, "cluster_ip")
 
-    def get_text(self, xml_node):
-        rc = []
-        for node in xml_node.childNodes:
-            if node.nodeType == node.TEXT_NODE:
-                rc.append(node.data)
-        return ''.join(rc)
+    @staticmethod
+    def get_cluster_port(node):
+        return get_tag_text(node, "cluster_port")
+
+    @staticmethod
+    def get_java_opts(node):
+        return get_tag_text(node, "java_opts")
+
+def get_tag_text(xml_node, tag):
+    values = xml_node.getElementsByTagName(tag)
+    if len(values) > 0:
+        return get_text(values[0])
+    else:
+        return ""
+
+def get_text(xml_node):
+    rc = []
+    for node in xml_node.childNodes:
+        if node.nodeType == node.TEXT_NODE:
+            rc.append(node.data)
+    return ''.join(rc)
 
 class Machine:
+    java_opts = ""
     log_path = ""
+    port = ""
     
-    def __init__(self, id, ip, username):
+    def __init__(self, id, ip, username, port="", java_opts=""):
         self.id = id
         self.ip = ip
         self.username = username
+        self.port = port
+        self.java_opts = java_opts
     
     def get_id(self):
         return self.id
@@ -83,6 +103,12 @@ class Machine:
     def get_ip(self):
         return self.ip
     
+    def get_java_opts(self):
+        return self.java_opts
+    
+    def get_port(self):
+        return self.port
+    
     def get_username(self):
         return self.username
     
@@ -90,4 +116,4 @@ class Machine:
         return self.log_path
     
     def set_log_path(self, path):
-        self.log_path = path
\ No newline at end of file
+        self.log_path = path

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/startcc.sh
----------------------------------------------------------------------
diff --git a/vxquery-server/src/main/resources/scripts/startcc.sh 
b/vxquery-server/src/main/resources/scripts/startcc.sh
index 68cfe35..d7b397e 100755
--- a/vxquery-server/src/main/resources/scripts/startcc.sh
+++ b/vxquery-server/src/main/resources/scripts/startcc.sh
@@ -20,18 +20,32 @@
 hostname
 
 CCHOST=$1
+CCPORT=$2
+J_OPTS=$3
 
-#Export JAVA_HOME and JAVA_OPTS
-export JAVA_HOME=$JAVA_HOME
-export JAVA_OPTS=$CCJAVA_OPTS
+#Export JAVA_HOME
+export JAVA_HOME=${JAVA_HOME}
+
+# java opts added parameters
+if [ ! -z "${J_OPTS}" ]
+then
+    JAVA_OPTS="${JAVA_OPTS} ${J_OPTS}"
+    export JAVA_OPTS
+fi
 
 VXQUERY_HOME=`pwd`
 CCLOGS_DIR=${VXQUERY_HOME}/logs
 
 #Remove the logs dir
-rm -rf $CCLOGS_DIR
-mkdir $CCLOGS_DIR
+rm -rf ${CCLOGS_DIR}
+mkdir ${CCLOGS_DIR}
 
+# Set up the options for the cc.
+CC_OPTIONS=" -client-net-ip-address ${CCHOST} -cluster-net-ip-address 
${CCHOST} "
+if [ ! -z "${CCPORT}" ]
+then
+    CC_OPTIONS=" ${CC_OPTIONS} -cluster-net-port ${CCPORT} "
+fi
 
 #Launch hyracks cc script without toplogy
-${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerycc 
-client-net-ip-address $CCHOST -cluster-net-ip-address $CCHOST &> 
$CCLOGS_DIR/cc.log &
+${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerycc ${CC_OPTIONS} 
&> ${CCLOGS_DIR}/cc.log &

http://git-wip-us.apache.org/repos/asf/incubator-vxquery/blob/361202a0/vxquery-server/src/main/resources/scripts/startnc.sh
----------------------------------------------------------------------
diff --git a/vxquery-server/src/main/resources/scripts/startnc.sh 
b/vxquery-server/src/main/resources/scripts/startnc.sh
index c450188..5b22be4 100755
--- a/vxquery-server/src/main/resources/scripts/startnc.sh
+++ b/vxquery-server/src/main/resources/scripts/startnc.sh
@@ -19,16 +19,21 @@
 
 hostname
 
-CCHOST=$1
+NODEID=$1
 IPADDR=$2
-NODEID=$3
-
+CCHOST=$3
+CCPORT=$4
+J_OPTS=$5
 
 #Set JAVA_HOME
 export JAVA_HOME=$JAVA_HOME
 
-#Set JAVA_OPTS
-export JAVA_OPTS=$NCJAVA_OPTS
+# java opts added parameters
+if [ ! -z "${J_OPTS}" ]
+then
+    JAVA_OPTS="${JAVA_OPTS} ${J_OPTS}"
+    export JAVA_OPTS
+fi
 
 VXQUERY_HOME=`pwd`
 NCLOGS_DIR=${VXQUERY_HOME}/logs
@@ -37,6 +42,13 @@ NCLOGS_DIR=${VXQUERY_HOME}/logs
 rm -rf $NCLOGS_DIR
 mkdir $NCLOGS_DIR
 
+# Set up the options for the cc.
+NC_OPTIONS=" -cc-host ${CCHOST} -cluster-net-ip-address ${IPADDR}  
-data-ip-address ${IPADDR} -result-ip-address ${IPADDR}  -node-id ${NODEID} "
+if [ ! -z "${CCPORT}" ]
+then
+       NC_OPTIONS=" ${NC_OPTIONS} -cc-port ${CCPORT} "
+fi
+
 
 #Launch hyracks nc
-${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerync -cc-host 
$CCHOST -cluster-net-ip-address $IPADDR  -data-ip-address $IPADDR 
-result-ip-address $IPADDR  -node-id $NODEID &> $NCLOGS_DIR/nc.log &
+${VXQUERY_HOME}/vxquery-server/target/appassembler/bin/vxquerync ${NC_OPTIONS} 
&> ${NCLOGS_DIR}/nc.log &

Reply via email to