def sendDeployNotice(order_id,mask): try: config = Email_Config.objects.get(id=1) order = Project_Order.objects.get(id=order_id) except: return False content = """<strong>申请人:</strong>{user}<br> <strong>更新内容:</strong>{content}<br> <strong>工单地址:</strong><a href='{site}/deploy_order/status/{order_id}/'>点击查看工单详情</a><br> <strong>授权人:</strong>{auth}<br> <strong>状态:</strong>{mask}<br>""".format(order_id=order_id,user=order.order_user, site=config.site,auth=order.order_audit, content=order.order_content,mask=mask) if order.order_status == 2:to_user = order.order_audit else: to_user = order.order_user CGroups(to_user).send({'text': json.dumps({"title":"你有一条新的工单需要处理<br>","type":"info","messages":content})}) if order.order_cancel: content += "撤销原因:<strong>{order_cancel}</strong>".format(order_cancel=order.order_cancel) to_user = User.objects.get(username=to_user).email if config.subject:subject = "{sub} {oub} {mask}".format(sub=config.subject,oub=order.order_subject,mask=mask) else:subject = "{oub} {mask}".format(mask=mask,oub=order.order_subject) if config.cc_user: cc_to = config.cc_user else:cc_to = None base.sendEmail(e_from=config.user,e_to=to_user,cc_to=cc_to, e_host=config.host,e_passwd=config.passwd, e_sub=subject,e_content=content) return True
def expireAssets(**kw): if kw.has_key('expire') and kw.has_key('user'): try: config = Email_Config.objects.get(id=1) except Exception ,ex: return ex expired = [] expire_soon = [] serverList = Assets.objects.raw('SELECT id,management_ip,expire_date,expire_date - CURDATE() as diff from opsmanage_assets where expire_date - CURDATE() is not null;') for ds in serverList: if ds.diff < 0:expired.append(ds) elif ds.diff >= 0 and ds.diff < kw.has_key('expire'):expire_soon.append(ds) if expired or expire_soon: trs = '' for s in expired + expire_soon: tr = ''' <tr> <td><a href="{url}/assets_view/{sid}/">{host}</a></td> <td>{exdate}</td> <td>{day}</td> </tr>'''.format(url=config.site,sid=s.id,host=s.management_ip,exdate=s.expire_date,day=s.diff) trs = trs + tr table = '''<table border="1" width="600" rules="all"> <caption>Assets Expire Alert </caption> <colgroup span="1" width="200"></colgroup> <colgroup span="3" width="400"></colgroup> <tbody align='center'> <tr> <td bgColor=#C0C0C0>主机ip</td> <td bgColor=#C0C0C0>过期日期</td> <td bgColor=#C0C0C0>剩余</td> </tr> %s </tbody> </table> ''' % trs content = table + """注:负数表示<strong>按照预警规则</strong>已经过期多少天""" try: to_user = User.objects.get(username=kw.get('user')).email except Exception, ex: return ex if config.subject:subject = "{sub} 资产过期提醒 【重要】".format(sub=config.subject) else:subject = "资产过期提醒 【重要】" if config.cc_user: cc_to = config.cc_user else:cc_to = None base.sendEmail(e_from=config.user,e_to=to_user,cc_to=cc_to, e_host=config.host,e_passwd=config.passwd, e_sub=subject,e_content=content) return True
def sendDeployEmail(order_id, mask): try: config = Email_Config.objects.get(id=1) order = Project_Order.objects.get(id=order_id) except: return False content = """申请人:{user}<br> 更新内容:{content}<br> 工单地址:<a href='{site}/deploy_order/status/{order_id}/'>点击查看工单</a><br> 授权人:{auth}<br>""".format( order_id=order_id, user=order.order_user, site=config.site, auth=order.order_audit, content=order.order_content) if order.order_cancel: content += "撤销原因:<strong>{order_cancel}</strong>".format( order_cancel=order.order_cancel) to_user = User.objects.get(username=order.order_audit).email if config.subject: subject = "{sub} {oub} {mask}".format(sub=config.subject, oub=order.order_subject, mask=mask) else: subject = "{oub} {mask}".format(mask=mask, oub=order.order_subject) if config.cc_user: cc_to = config.cc_user else: cc_to = None base.sendEmail(e_from=config.user, e_to=to_user, cc_to=cc_to, e_host=config.host, e_passwd=config.passwd, e_sub=subject, e_content=content) return True
def sendEmail(order_id,mask): try: config = Email_Config.objects.get(id=1) order = Project_Order.objects.get(id=order_id) except: return False content = """申请人:{user}<br> 更新内容:{content}<br> 工单地址:<a href='{site}/deploy_order/status/{order_id}/'>点击查看工单</a><br> 授权人:{auth}<br>""".format(order_id=order_id,user=order.order_user, site=config.site,auth=order.order_audit, content=order.order_content) if order.order_cancel: content += "撤销原因:<strong>{order_cancel}</strong>".format(order_cancel=order.order_cancel) to_user = User.objects.get(username=order.order_audit).email if config.subject:subject = "{sub} {oub} {mask}".format(sub=config.subject,oub=order.order_subject,mask=mask) else:subject = "{oub} {mask}".format(mask=mask,oub=order.order_subject) if config.cc_user: cc_to = config.cc_user else:cc_to = None base.sendEmail(e_from=config.user,e_to=to_user,cc_to=cc_to, e_host=config.host,e_passwd=config.passwd, e_sub=subject,e_content=content) return True
except Exception, ex: return ex if config.subject: subject = "{sub} {oub} {mask}".format(sub=config.subject, oub=order.order_desc, mask=mask) else: subject = "{oub} {mask}".format(mask=mask, oub=order.order_subject) if config.cc_user: cc_to = config.cc_user else: cc_to = None base.sendEmail(e_from=config.user, e_to=to_user, cc_to=cc_to, e_host=config.host, e_passwd=config.passwd, e_sub=subject, e_content=content) return True @task def AnsibleScripts(**kw): logId = None resource = [] try: if kw.has_key('scripts_id'): script = Ansible_Script.objects.get(id=kw.get('scripts_id')) filePath = os.getcwd() + str(script.script_file) if kw.has_key('hosts'):
order_url=order_url) try: to_user = User.objects.get(id=order.order_executor) except Exception, ex: return ex if order.order_status == 1:to_username = User.objects.get(id=order.order_executor).username else:to_username = User.objects.get(id=order.order_user).username #判断是否开启了部署通知 if group_config.email == 1:CGroups(to_username).send({'text': json.dumps({"title":"你有一条新的工单需要处理<br>","type":"info","messages":content})}) if order.order_cancel: content += "<strong>撤销原因:</strong>{order_cancel}".format(order_cancel=order.order_cancel) if email_config.subject:subject = "{sub} {oub} {mask}".format(sub=email_config.subject,oub=order.order_subject,mask=mask) else:subject = "{oub} {mask}".format(mask=mask,oub=order.order_subject) if email_config.cc_user: cc_to = email_config.cc_user else:cc_to = None if order.order_type==1 and group_config.email == 1:#如果是代码部署并且全局配置开启了邮件通知 base.sendEmail(e_from=email_config.user,e_to=to_user.email,cc_to=cc_to, e_host=email_config.host,e_passwd=email_config.passwd, e_sub=subject,e_content=content) elif order.order_type==0 and group_config.sql == 1:#如果是SQL部署并且全局配置开启了邮件通知 if sql_config.t_email == 1 and order.sql_audit_order.order_db.db_env == 'test': base.sendEmail(e_from=email_config.user,e_to=to_user.email,cc_to=cc_to, e_host=email_config.host,e_passwd=email_config.passwd, e_sub=subject,e_content=content) elif sql_config.p_email == 1 and order.sql_audit_order.order_db.db_env == 'prod': base.sendEmail(e_from=email_config.user,e_to=to_user.email,cc_to=cc_to, e_host=email_config.host,e_passwd=email_config.passwd, e_sub=subject,e_content=content) else: return '请在全局配置开启相关邮件通知'