#!/usr/bin/env python # $Id$ # adds a team and the given users to the SKYRiX system import socket, sys, string, xmlrpclib from types import * class AddTeamTool: def __init__(self): """ initialization """ self.__url = 'http://localhost:20000/RPC2' self.__login = 'root' self.__pwd = 'YOUR_SKYRIX_ROOT_PASSWORD' def initDaemon(self): """ init XML-RPC daemon """ try: self.__server = xmlrpclib.ServerProxy(self.__url, login=self.__login, password=self.__pwd) except TypeError,e: sys.stderr.write("ERROR: You are probably using the wrong version" "of xmlrpclib\nGet the right version at:\n") sys.stderr.write("http://developer.skyrix.com/02_skyrix/xmlrpc/" "xmlrpclib.py\n") return 2 except IOError,e: sys.stderr.write("ERROR: %s\n" % e) return 3 return 0 def run(self): result = self.initDaemon() if result != 0: return result teamName = sys.argv[1] members = None if len(sys.argv) > 2: members = string.split(sys.argv[2],',') try: teamId = self.__server.team.insert({'login' : teamName, 'description' : teamName, }) except socket.error,e: sys.stderr.write("Couldn't connect to the XML-RPC daemon\n") return 2 except: sys.stderr.write("An error occured when creating the team\n") return 2 if type(teamId) is IntType: print "Team '%s' successfully created (ID '%s')" % (teamName, teamId) else: print "Creating team failed..." return 1 if members != None: memberIds = [] for member in members: try: valid = self.__server.account.getByLogin(member) except: sys.stderr.write("An error occured when searching for " "the login\n") return 1 if type(valid) is DictType: memberIds.append(valid['id']) else: sys.stderr.write("Invalid account '%s' " "specified\n" % member) members.remove(member) try: result = self.__server.team.setMembers(teamId, memberIds) except: sys.stderr.write("An error occured when adding members\n") return 1 if result.value == 1: print "Successfully added members %s" % members else: print "Adding members failed" return 1 return 0 if __name__ == "__main__": if len(sys.argv) == 1: sys.stderr.write("No team name provided\n") sys.exit(2) tool = AddTeamTool() try: returnCode = tool.run() except KeyboardInterrupt: sys.stderr.write("Program cancelled by user\n") returnCode = 2 sys.exit(returnCode)