From 0d3e8bfe72fd02a0829ff5f5a7d73b954651cb8e Mon Sep 17 00:00:00 2001
From: Evan Broder <broder@mit.edu>
Date: Mon, 10 Nov 2008 15:20:04 -0500
Subject: [PATCH] Move invirt.remote Python module to invirt-remote-server

svn path=/trunk/packages/invirt-remote-server/; revision=1597
---
 debian/changelog          |    6 ++++++
 debian/control            |   15 +++++++++------
 debian/pycompat           |    1 +
 debian/rules              |    6 ++++++
 python/remote/__init__.py |    1 +
 python/remote/bcast.py    |   19 +++++++++++++++++++
 setup.py                  |   23 +++++++++++++++++++++++
 7 files changed, 65 insertions(+), 6 deletions(-)
 create mode 100644 debian/pycompat
 create mode 100644 python/remote/__init__.py
 create mode 100644 python/remote/bcast.py
 create mode 100755 setup.py

diff --git a/debian/changelog b/debian/changelog
index 228098c..8a3e564 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+invirt-remote-server (0.0.15) unstable; urgency=low
+
+  * Include invirt.remote Python module
+
+ -- Evan Broder <broder@mit.edu>  Mon, 10 Nov 2008 15:15:13 -0500
+
 invirt-remote-server (0.0.14) unstable; urgency=low
 
   * Don't depend on invirt-mail-config
diff --git a/debian/control b/debian/control
index e0b9f52..51de82e 100644
--- a/debian/control
+++ b/debian/control
@@ -1,17 +1,20 @@
 Source: invirt-remote-server
 Section: servers
 Priority: important
-Maintainer: invirt@mit.edu
-Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 5)
-Standards-Version: 3.7.2
+Maintainer: Invirt project <invirt@mit.edu>
+Build-Depends: cdbs (>= 0.4.23-1.1), debhelper (>= 5),
+ python-all-dev (>=2.3.5-11), python-support (>= 0.5.3),
+ python-setuptools, python-debian, python-apt
+Standards-Version: 3.8.0
 
 Package: invirt-remote-server
 Architecture: all
-Provides: ${diverted-files}
+Provides: ${diverted-files}, ${python:Provides}
 Conflicts: ${diverted-files}
-Depends: ${shlibs:Depends}, ${misc:Depends}, daemon,
- debathena-kerberos-config, fuse-utils, openssh-server,
+Depends: ${shlibs:Depends}, ${misc:Depends}, ${python:Depends},
+ daemon, debathena-kerberos-config, fuse-utils, openssh-server,
  python-routefs, invirt-database, invirt-base, remctl-server,
  remctl-client
+XB-Python-Version: ${python:Versions}
 Description: Invirt remote-control server
  This package should be installed to set up the remote-control server.
diff --git a/debian/pycompat b/debian/pycompat
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/debian/pycompat
@@ -0,0 +1 @@
+2
diff --git a/debian/rules b/debian/rules
index e6192f6..e90e462 100755
--- a/debian/rules
+++ b/debian/rules
@@ -1,3 +1,9 @@
 #!/usr/bin/make -f
 
+DEB_PYTHON_SYSTEM=pysupport
+
 include /usr/share/cdbs/1/rules/debhelper.mk
+include /usr/share/cdbs/1/class/python-distutils.mk
+
+clean::
+	rm -rf invirt.remote.egg-info
diff --git a/python/remote/__init__.py b/python/remote/__init__.py
new file mode 100644
index 0000000..adaa9b7
--- /dev/null
+++ b/python/remote/__init__.py
@@ -0,0 +1 @@
+from bcast import bcast
diff --git a/python/remote/bcast.py b/python/remote/bcast.py
new file mode 100644
index 0000000..0d7dba2
--- /dev/null
+++ b/python/remote/bcast.py
@@ -0,0 +1,19 @@
+from subprocess import PIPE, Popen
+from invirt.config import structs as config
+import yaml
+
+def bcast(cmd, hosts = [h.hostname for h in config.hosts]):
+    """
+    Given a command and a list of hostnames or IPs, issue the command to all
+    the nodes and return a list of (host, output) pairs (the order should be
+    the same as the order of the hosts).
+    """
+    pipes = [(host,
+              Popen(['remctl', host, 'remote', 'web', cmd], stdout=PIPE))
+             for host in hosts]
+    outputs = [(s, p.communicate()[0]) for (s, p) in pipes]
+    for (s, p) in pipes:
+        if p.returncode != 0:
+            raise RuntimeError("remctl to host %s returned non-zero exit status %d"
+                               % (s, p.returncode))
+    return [(s, yaml.load(o, yaml.CSafeLoader)) for (s, o) in outputs]
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..f8c1a24
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,23 @@
+#!/usr/bin/python
+
+from os import path
+from debian_bundle.changelog import Changelog
+from debian_bundle.deb822 import Deb822
+from email.utils import parseaddr
+from setuptools import setup
+
+version = Changelog(open(path.join(path.dirname(__file__), 'debian/changelog')).read()).\
+    get_version().full_version
+
+maintainer_full = Deb822(open(path.join(path.dirname(__file__), 'debian/control')))['Maintainer']
+maintainer, maintainer_email = parseaddr(maintainer_full)
+
+setup(
+    name='invirt.remote',
+    version=version,
+    maintainer=maintainer,
+    maintainer_email=maintainer_email,
+    
+    packages = ['invirt.remote'],
+    package_dir = {'invirt': 'python'}
+)
-- 
1.7.9.5