On Wed, 2008-03-26 at 09:23 -0400, Colin Walters wrote: > On Wed, Mar 26, 2008 at 6:12 AM, Luca Foppiano <lfoppiano@xxxxxxxxxxxxx> 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 Func-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/func-list