2011-06-17

Integración paver fabric

Update: Parece que se viene esto como parte de paver 1.1

Hice un pequeño hack y ahora puedo usar el API de fabric cuando escribo tasks de paver y que la tarea se ejecute una vez para cada host.

Para hacer eso, hice un decorator, que se llama multihost y es así:

from fabric import state, network

def multi_host(f):
"""\
Run the decorated function for each host in options.get("host_strings").

Will use the private key set in options.pk if set.
"""
def decoratee(options):
for host_string in options.get("host_strings"):
network.interpret_host_string(host_string)
pk = options.get("pk", None)
state.env.key_filename = [pk] if pk else None
f(options)

decoratee.func_name = f.func_name

return cmdopts((
("pk=", None, "Private key file"),
))(decoratee)

El uso es así:


from paver.easy import task, needs
from fabric import api

@task
def find_hosts(options):
options["host_strings"] = ["host1", "user@host2", "user2@host3:2222"]

@task
@needs("find_hosts")
@multi_host
def remote_hello_world(options):
api.run("echo hello world")


Happy hacking,
Aureliano.

2011-06-14

Tamaños de ventanas extraños en eclipse y workaround

En el laburo desde hace un tiempo estoy haciendo el experimento de correr varias VMs con los distintos proyectos en los que trabajo. Por lo tanto tengo varias VMs distintas (guests) corriendo que se conectan usando X a mi host.

En una de ellas tengo eclipse instalado con pydev. Y como host tengo un Windows 7 con X-Ming como server X. Y anda todo bastante bien salvo porque algunas ventanas de diálogo se van agrandando de formas extrañas hasta que se vuelve imposible usarlas. Y aparte, no sé por qué, no se pueden resizear usando el mouse (que sí se puede si lo corrés en Windows, gnome o kde normalmente).

Por lo tanto, busqué y encontré un workaround al problema, y edito a mano algunos archivos de configuración del workspace de eclipse para cambiar estos tamaños a una medida razonable para mi y para que quede documentado lo dejo anotado acá.

En el archivo ./org.eclipse.ui.ide/dialog_settings.xml sección DialogBoundsSettings setié:

<item value="1024" key="DIALOG_WIDTH"/>
<item value="768" key="DIALOG_HEIGHT"/>


En el archivo org.eclipse.ui.workbench.texteditor/dialog_settings.xml sección org.eclipse.ui.texteditor.FindReplaceDialog_dialogBounds setié:
<item value="1024" key="DIALOG_WIDTH"/>
<item value="768" key="DIALOG_HEIGHT"/>


En el archivo org.eclipse.search/dialog_settings.xml sección DialogBounds_SearchDialog setié:
<item value="1024" key="DIALOG_WIDTH"/>
<item value="768" key="DIALOG_HEIGHT"/>


Y por último, en el archivo org.tigris.subversion.subclipse.ui/dialog_settings.xml hice algo un toque distinto, seteando en la sección Workbench esto:
<item value="1280" key="CommitDialog.size.x"/>
<item value="768" key="CommitDialog.size.y"/>


Por supuesto, todos estos archivos hay que tocarlos con el eclipse apagado.

Happy hacking,
Aureliano.

2011-06-06

Sé lo que hiciste el verano pasado

Hola,

estuve ocupado últimamente así que no pude darle mucha pelota a mi blog. Hoy suspendo este silencio para contarles que estuve haciendo en el laburo los últimos meses. Lo que hicimos es un servicio para pentestear instancias y páginas web que estén hosteadas en AWS. Aunque mucho el nombre no me gusta (lo eligió la gente de marketing), se llama Core CloudInspect y está acá.

La idea es hacer pentests en 5 clicks y 20 dólares y, los primeros 3 son gratarola!.

Happy hacking,
Aureliano.