def create_ssh_user(trade): '''创建新的SSH帐号. 先把创建的SSH用户保存到 UserProduct数据库,再在所有服务器上创建该SSH用户''' # 待创建的ssh用户list, 每个元素是tuple(username,pwd,expire) ssh_info_list = [] for item in trade.cart.item_set.all(): # 创建 N 个SSH帐号 for i in range(item.quantity): up = UserProduct() #save一次以获得自增的id值 up.save() ssh_user = "******" % up.id ssh_pwd = baseutil.time_hash()[-6:] expired_date = baseutil.get_expired_date(item.product.valid_months) ssh_info_list.append((ssh_user, ssh_pwd, expired_date)) #保存到 UserProduct up.user = trade.user up.product = item.product up.sshuser = ssh_user up.sshpwd = ssh_pwd up.buy_date = datetime.datetime.now() up.expired_date = expired_date # 2013-03-02 post_save signal将触发创建账号 up.save() #在所有服务器上创建该SSH帐号 #baseutil.well_print("before create ssh user") ssh_util = SSHUtil(trade.user, None, None) ssh_util.ssh_create_onall(ssh_info_list)
def userproduct_post_save(sender, instance, created, **kwargs): """create ssh user at every ssh server , when add ssh user or change ssh user. """ sshuser = instance.sshuser sshpwd = instance.sshpwd expired_date = instance.expired_date if created: # new created if sshuser and sshpwd and expired_date: # not up.save() for getting UserProduct id # create new ssh on all ssh servers ssh_util = SSHUtil(instance.user) ssh_info_list = [(sshuser, sshpwd, expired_date)] ssh_util.ssh_create_onall(ssh_info_list) else: # not created #change ssh password on all ssh servers ssh_util = SSHUtil(instance.user) if sshuser and sshpwd: # change password ssh_util.ssh_change_pwd_onall(sshuser, sshpwd) if expired_date: # change expired date ssh_util.ssh_change_expire_onall(sshuser, expired_date)