PERFORCE change 123090 for review

Andrew Turner andrew at FreeBSD.org
Sun Jul 8 06:24:50 UTC 2007


http://perforce.freebsd.org/chv.cgi?CH=123090

Change 123090 by andrew at andrew_hermies on 2007/07/08 06:24:02

	Add a Directory class to define a base directory within a computer
	Allow calls to be sent to the back end
	Fix a typo

Affected files ...

.. //depot/projects/soc2007/andrew-update/frontend/facund/computer.py#3 edit

Differences ...

==== //depot/projects/soc2007/andrew-update/frontend/facund/computer.py#3 (text+ko) ====

@@ -28,6 +28,20 @@
 import facund.network
 import threading
 
+class Directory:
+	def __init__(self, name, computer):
+		self.__name = name
+		self.__computer = computer
+
+	def getName(self):
+		return self.__name
+
+	def getCommands(self):
+		return self.__computer.getCommands(self.__name)
+
+	def runCommand(self, position):
+		return self.__computer.runCommand(position, self.__name)
+
 class Computer(threading.Thread):
 	'''A class to describe each computer able to be connected to'''
 	def __init__(self, name, host):
@@ -37,13 +51,14 @@
 		self.__dirs = []
 		self.__connected = False
 		self.__connection = None
+		self.__commands = ['Avaliable', 'Downloaded', 'Installed']
 
 	def __str__(self):
 		return self.__name + ": " + self.__host
 
 	def addDir(self, dir):
 		'''Adds a directory to the avaliable directories to update'''
-		self.__dirs.append(dir)
+		self.__dirs.append(facund.Directory(dir, self))
 
 	def getConnectionStatus(self):
 		'''Returns the connection state'''
@@ -54,13 +69,35 @@
 		return self.__dirs
 
 	def getName(self):
-		'''Returns the Human redable name for the computer'''
+		'''Returns the Human readable name for the computer'''
 		return self.__name
 	
 	def getHost(self):
 		'''Returns the hostname/ip of the computer'''
 		return self.__host
 
+	def getCommands(self, dir):
+		return self.__commands
+
+	def runCommand(self, command, dir = None):
+		print self.__commands[command]
+		if self.__commands[command] == 'Avaliable':
+			return self.getUpdateList(dir)
+		else:
+			print 'TODO: Handle this command (%d)' % (command,);
+
+	def getUpdateList(self, dir = None):
+		if dir is None:
+			for dir in self.__dirs:
+				args = None
+		else:
+			args = facund.Array()
+			args.append(facund.String("base"))
+			args.append(facund.String(dir))
+
+		call = facund.Call("list_updates", args)
+		self.__connection.doCall(call)
+
 	def connect(self):
 		'''Connects to the remote computer'''
 		if self.__connection is not None:


More information about the p4-projects mailing list