def login_user(addr,account): server_addr = addr server_port = "8080" cloud_user = "******" cloud_passwd = "admin" guest_user = account guest_passwd = account server_url = '%s%s%s%s%s%s%s%s%s' % ('http://',cloud_user,':',cloud_passwd,'@',server_addr,':',server_port,'/RPC2') print "Connect to xmlrpc url %s ..." % server_url try: server = xmlrpclibex.ServerProxy(server_url) except: st_exit(-1,lines(),"failed to create xmlrpc ServerProxy!") server.system.listMethods() encrypted_root_session = login(server,cloud_user,cloud_passwd) if encrypted_root_session is None: st_exit(-1,lines(),"failed to get encrypted root session!") # 查询用户帐号是否已经注册 u = user(server,encrypted_root_session) if u.query(0L, 1000L, guest_user) != True: # 不存在,则创建普通帐号用户,存在则直接登录 if u.allocate(account,account,account,3,"st_group") != True: st_exit(-1,lines(),"failed to create new account!")
def __init__(self, server_addr): server_url = '%s%s%s%s%s%s%s%s%s' % ('http://',RPC_ROOT_NAME,':',RPC_ROOT_PWD,'@',server_addr,':',RPC_PORT,'/RPC2') print "Connect to xmlrpc url %s ..." % server_url try: self.server = xmlrpclibex.ServerProxy(server_url) except: ci_exit(-1,"failed to create xmlrpc ServerProxy!")
print "execute db except: %s!!!" % e return results def ci_exit(value=0,error="null"): '''exit function''' if value == 0: sys.exit(0) else: print "tecs ci test exit code = %d, error string = %s" % (value,error) f.write(time.strftime('%Y-%m-%d-%H-%M-%S ',time.localtime(time.time()))+"tecs ci test exit code=%d" %value+",error string="+error+"\n") sys.exit(value) server_url = '%s%s%s%s%s%s%s%s%s' % ('http://',test_root_user,':',test_root_passwd,'@',server_addr,':',server_port,'/RPC2') print "Connect to xmlrpc url %s ..." % server_url try: server = xmlrpclibex.ServerProxy(server_url,allow_none=True) except: ci_exit(-1,"failed to create xmlrpc ServerProxy!") root_session = login(server,test_root_user,test_root_passwd) if root_session is None: ci_exit(-1,"root_session is none") #w_addr["target_workflow"] = [{"target":"tecscluster.cc.workflow_engine_0","workflow_id":"w-3e16ad30-60aa-4aa3-ae14-5b69904b0209"},{"target":v_target,"workflow_id":v_workflow_id}] #w_addr["target_workflow"] = [{"target":v_target,"workflow_id":v_workflow_id},{"target":v_target,"workflow_id":v_workflow_id}] w = worflow(server,root_session) p = project(server,root_session) i = image(server,root_session) v = vmcfg(server,root_session) w_addr = {} def workflow_max_query(target,workflow_id):
#用-p或--port可以指定tc的xmlrpc服务器端口号,默认为8080 if o in ("-p", "--port"): server_port = v #用-i或--image可以指定虚拟机所用的映像文件 if o in ("-i", "--image"): test_image = v if os.path.isfile(test_image) is not True: ci_exit(-2,"image file %s not exist!" % test_image) # 自动化集成测试开始!!! print "===================TECS CI TEST START===================" # 创建一个xml rpc客户端,之所以使用xmlrpclibex,而非系统原装的xmlrpclib.py,是因为原装的不支持i8数据类型 server_url = '%s%s%s%s%s%s%s%s%s' % ('http://',test_root_user,':',test_root_passwd,'@',server_addr,':',server_port,'/RPC2') print "Connect to xmlrpc url %s ..." % server_url try: server = xmlrpclibex.ServerProxy(server_url) except: ci_exit(-1,"failed to create xmlrpc ServerProxy!") #列出当前支持的所有xmlrpc接口 server.system.listMethods() class ImageTestCase(unittest.TestCase): def setUp(self): pass; def tearDown(self): pass; def testImage(self): # ------------------环境准备------------------ # 登录tecs,获取管理员账户加密后的session