On Wed, 2008-03-26 at 09:23 -0400, Colin Walters wrote:
> On Wed, Mar 26, 2008 at 6:12 AM, Luca Foppiano <[EMAIL PROTECTED]> wrote:
> >
> > + return "version"
>
> Shouldn't this be return version, without quotes?
uhm, I forgot to remove that function...My ideas was to get jboss
version but ATM I have to find how...
>
> > + for items in results:
> > + if "-Dprogram.name=run.sh" in items:
>
> Ug.
jboss don't use pid files..I accept any suggestion about string to use
to discriminate jboss data in process list
>
> > + def search_by_address(self, address, status=None):
> > + """
> > + Search istance by bind address
>
> This should be "instance", no? (And all the other occurences)
I don't understand. what do you means?
> I guess Func is trying to target Python 2.3, but what I would do is
> pull subprocess.py into the distribution (works fine on 2.3), and use
> it. It's pretty much always wrong to invoke processes using /bin/sh.
This part was commented, and actually I fixed using func command module,
but there are two problems: is necessary to launch it using async method
because jboss startup is too slow and I see when I launch jboss, jboss
start as func's childs, and this can be a problem expecially if I want
to restart func.
> > + arguments = " -s jnp://"+address+":1099"
>
> So wait, we hardcode the JNP port? If we're not trying to support
> different port numbers, why go to all the trouble of trying to detect
> the bind address? Can't we just issue a twiddle.sh command directly?
yes, but which differencies come from twiddle.sh and shutdown.sh?
as start(), stop() functions is WIP and code is dirty :)
here a corrected version (there was a trouble on port collecting, in
last version, sry).
Luca
---
func/minion/modules/jboss.py | 85
++++++++++++++++++++++++++++++++---------
1 files changed, 66 insertions(+), 19 deletions(-)
diff --git a/func/minion/modules/jboss.py b/func/minion/modules/jboss.py
index 3f78ef2..e928b77 100644
--- a/func/minion/modules/jboss.py
+++ b/func/minion/modules/jboss.py
@@ -17,22 +17,14 @@ import sub_process
import codes
import process
import networktest
+import command
+from func import logger
class JBoss(func_module.FuncModule):
version = "0.0.1"
api_version = "0.0.1"
description = "JBoss monitoring and control module"
-
- def version(self):
- """
- Return jboss version
- TODO: implementation
- """
-
- return "version"
-
-
def status(self):
"""
Get jboss information
@@ -40,7 +32,8 @@ class JBoss(func_module.FuncModule):
"""
processo = process.ProcessModule()
results = processo.info("ax")
-
+
+ logging = logger.Logger().logger
output = []
for items in results:
if "-Dprogram.name=run.sh" in items:
@@ -66,23 +59,22 @@ class JBoss(func_module.FuncModule):
net_status = networktest.NetworkTest()
results = net_status.netstat("-tupln")
- debug = []
for string in results:#netstat_list:
address = None
port = None
pid = None
try:
- address_port = string[3]
- pid_name = string[6]
+ address_port = string.split()[3]
+ pid_name = string.split()[6]
except:
address_port = None
pid_name = None
-
+
if address_port != None:
try:
- address = string[3].split(":")[0]
- port = int(string[3].split(":")[1])
+ address = address_port.split(":")[0]
+ port = int(address_port.split(":")[1])
except:
address = None
port = None
@@ -95,14 +87,12 @@ class JBoss(func_module.FuncModule):
if pid != None:
for data in output:
- debug.append(data)
if data[0] == pid:
#verify address
if address != None:
if data[2] == address:
data[3].append(port)
-
return output
@@ -183,3 +173,60 @@ class JBoss(func_module.FuncModule):
return founded
+'''
+ def start(self, address="127.0.0.1", istance="default"):
+ """
+ Start a jboss istance, you must specify couple
+ address/istance_name. ATM __call__() in server.py
+ doesn't support keywords.
+ """
+ # TODO: move outside this two variables
+ jboss_path="/var/lib/jboss-4.2.2.GA"
+ jboss_run_path=jboss_path+"/bin/run.sh"
+ status=self.status()
+
+ if len(self.search_by_address(address=address,
status=status)) != 0:
+ return (-1,"Another istances listening on this address, ")
+
+ if len(self.search_by_istance(istance=istance,
status=status)) != 0:
+ return (-1,"This istances is just istanced")
+
+ launcher ="sh "+str(jboss_run_path)+" -c "+istance+" -b
"+address
+
+ comm = command.Command()
+ comm.run(launcher)
+
+ return "OK, instance "+ istance +"started on address "+address
+
+
+ def stop(self, address="127.0.0.1"):
+ """
+ Stop a jboss istance, It suppose you are using
+ use standard JNDI port 1099.
+ By default stop che localhost bind istance
+ TODO: give more flexibility
+ """
+ jboss_path="/var/lib/jboss-4.2.2.GA"
+ jboss_sd_path=jboss_path+"/bin/shutdown.sh"
+ data = self.search_by_address(address)
+
+ if len(data) == 0:
+ return (-1, "Istance on "+ address +" not running")
+
+ launcher ="sh "+str(jboss_sd_path)+" -s jnp://"+address+":1099"
+
+ comm = command.Command()
+ comm.run(launcher)
+
+ return "OK, stopped istance listening address "+address
+
+ def version(self):
+ """
+ Return jboss version
+ TODO: implementation
+ """
+
+ return "version"
+
+
+'''
--
1.5.4.1
_______________________________________________
Func-list mailing list
[email protected]
https://www.redhat.com/mailman/listinfo/func-list