extras-buildsys/client client.py,1.26,1.27
Daniel Williams (dcbw)
fedora-extras-commits at redhat.com
Mon Aug 15 14:37:02 UTC 2005
Author: dcbw
Update of /cvs/fedora/extras-buildsys/client
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv20687/client
Modified Files:
client.py
Log Message:
2005-08-15 Dan Williams <dcbw at redhat.com>
* client/client.py
server/UserInterface.py
- Implement API versioning, and check the API version in the client
before doing anything else
Index: client.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/client/client.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- client.py 8 Aug 2005 02:54:15 -0000 1.26
+++ client.py 15 Aug 2005 14:37:00 -0000 1.27
@@ -24,6 +24,9 @@
import OpenSSL
+XMLRPC_API_VERSION = 100
+
+
config = ConfigParser.ConfigParser()
config.add_section('Certs')
config.set('Certs', 'user-cert', '~/.fedora.cert')
@@ -51,6 +54,28 @@
self.message = message
+def check_api_version(server):
+ """ Ensure the API of the server matches the one we expect to talk to """
+
+ try:
+ server_ver = server.api_version()
+ except socket.error, e:
+ print "Error connecting to build server: '%s'" % e
+ return False
+ except OpenSSL.SSL.SysCallError, e:
+ print "Error connecting to build server: '%s'" % e
+ return False
+ except xmlrpclib.Fault, fault:
+ print "Error: build server does not support 'api_version' method. Server said: '%s'" % fault
+ return False
+
+ if server_ver != XMLRPC_API_VERSION:
+ print "Error: API version mismatch. Client: %d, Server: %d" % (XMLRPC_API_VERSION, server_ver)
+ return False
+
+ return True
+
+
def enqueue(server, email, args):
""" Enqueue a package on the server by CVS tag """
@@ -373,10 +398,14 @@
print e.message
sys.exit(1)
+ # Ensure the server's API version matches ours
+ if not check_api_version(server):
+ sys.exit(1)
+
if cmd == 'build':
if len(sys.argv) < 5:
Usage()
- exit(1)
+ sys.exit(1)
item = sys.argv[3]
try:
if item.endswith(".src.rpm") and os.path.exists(item):
More information about the fedora-extras-commits
mailing list