On 22/04/2013 15:54, Rodrick Brown wrote:
I'm using the fabric api (fabfile.org <http://fabfile.org>)

  I’m executing my fab script like the following:

$ fab -H server set_nic_buffers  -f set_nic_buffers.py
Traceback (most recent call last):
   File "/usr/lib/python2.7/site-packages/fabric/main.py", line 739, in main
     *args, **kwargs
   File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 316, in
execute
     multiprocessing
   File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 213, in
_execute
     return task.run(*args, **kwargs)
   File "/usr/lib/python2.7/site-packages/fabric/tasks.py", line 123, in run
     return self.wrapped(*args, **kwargs)
   File "/home/rbrown/repos/unix-tools/tools/fabfiles/nb.py", line 5, in
set_nic_buffers
     f_exec = modules.Fabexec('set_nic_buffers',
'/var/tmp/unix-tools/tools/set_nic_buffers.sh')
TypeError: 'module' object is not callable

  My paths all seem to be fine not sure what’s going on

$ python -c 'import modules.Fabexec; print (modules.Fabexec)'
<module 'modules.Fabexec' from 'modules/Fabexec.pyc'>

Fabfiles

|-- modules
|   |-- Fabexec.py
|   |-- Fabexec.pyc
|   |-- __init__.py
|   `-- __init__.pyc
|-- systune.py
|-- systune.pyc
`-- set_nic_buffers.py

--- set_nic_buffers.py ---
import modules
from modules import Fabexec
def set_nic_buffers():
     f_exec = modules.Fabexec('set_nic_buffers',
'/var/tmp/unix-tools/tools/set_nic_buffers.sh')
     f_exec.run()

'modules.Fabexec' is the module/script 'Fabexec'. What you want is the 'Fabexec' class within the 'Fabexec' module.

--- Fabexec.py ---
from fabric.api import run, cd, sudo, env
from fabric.contrib import files
from fabric.colors import green

class Fabexec(object):

     repobase='/var/tmp/unix-tools'

     def __init__(self,script_name,install_script):
         self.script_name = script_name
         self.install_script = install_script

     def run(self):
         if files.exists(self.install_script):
             with cd(self.repobase):
                 result = sudo(self.install_script + ' %s ' % env.host)
                 if result.return_code != 0:
                     print(red('Error occured executing %s' %
self.install_script))
                 else:
                     print(green('%s executed successfully'))
         else:
             print(red('Error no such dir %s try running repo deploy
script to host %s' % (self.repobase, env.host)))
             raise SystemExit()



--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to