示例#1
0
    def post(self, request):
        ret = {"result": 0}
        m_id = request.POST.get("cmdb_id")
        type = request.POST.get("type")

        if not m_id or not type:
            ret["result"] = 1
            ret["msg"] = "未收到前端传过来的值"
            return JsonResponse(ret)

        try:
            m_obj = CmdbModel.objects.get(id__exact=m_id)
        except CmdbModel.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "modelu_name: %s 不存在,因此不能查询其相应的打包版本" % (module_name)
            wslog_error().error(ret["msg"])
            return JsonResponse(ret)

        if type == 'publish':
            ret["version_list"] = list(
                m_obj.publishversionmodel_set.filter(
                    Q(status__exact="packed")
                    | Q(status__exact="running")).order_by("-id")[:5].values(
                        "id", "version", "pack_user", "status"))
        else:
            ret["version_list"] = list(
                m_obj.publishversionmodel_set.filter(
                    Q(status__exact="running")
                    | Q(status__exact="run_pre")).order_by("-id")[:5].values(
                        "id", "version", "pack_user", "status"))

        return JsonResponse(ret)
示例#2
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'删除任务执行结果'的权限,请联系运维!"
            return JsonResponse(ret)

        tm_id = request.POST.get("id")
        try:
            tm_obj = TaskMeta.objects.get(id__exact=tm_id)
            tm_obj.delete()
        except TaskMeta.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "TaskMeta 模型不存在 id: %s 的对象,请刷新重试" % (tm_id)
            return JsonResponse(ret)
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "TaskMeta 模型删除 id: %s 的对象失败,请查看日志" % (tm_id)
            wslog_error().error("TaskMeta 模型删除 id %s 的对象失败,错误信息: %s" %
                                (tm_id, e.args))
            return JsonResponse(ret)
        else:
            ret["msg"] = "TaskMeta 模型删除 id: %s 的对象成功" % (tm_id)

        return JsonResponse(ret)
示例#3
0
    def post(self,request):
        ret = {"result":0}
        
        ## ajax 请求的权限验证
        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'添加工单类型'的权限,请联系运维!"
            return JsonResponse(ret) 

        workform_type_form = WorkFormTypeAddForm(request.POST) 

        if not workform_type_form.is_valid():
            ret["result"] = 1
            error_msg = json.loads(workform_type_form.errors.as_json(escape_html=False)) 
            ret["msg"] = '\n'.join([ i["message"] for v in error_msg.values() for i in v ])
            return JsonResponse(ret)
        
        try:
            wft_obj = WorkFormTypeModel(**workform_type_form.cleaned_data)
            wft_obj.save()
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "工单类型: '%s' 添加失败" %(workform_type_form.cleaned_data.get("cn_name"))
            wslog_error().error("工单类型: '%s' 添加失败,错误信息: %s" %(workform_type_form.cleaned_data.get("cn_name"),e.args))
            return JsonResponse(ret)
        else:
            ret["msg"] = "工单类型: '%s' 添加成功" %(workform_type_form.cleaned_data.get("cn_name"))

        return JsonResponse(ret)
示例#4
0
    def get(self, request):

        ret = {"result": 0, "msg": None}
        idc_id = request.GET.get("id", 0)

        ## ajax 请求的权限验证
        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        try:
            idc_obj = IDC.objects.get(id__exact=idc_id)
        except IDC.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "IDC id: %s 不存在,请刷新重试" % (idc_id)
            wslog_error().error("IDC 模型对象id: %s 不存在" % (idc_id))
            return JsonResponse(ret)
        try:
            idc_info = model_to_dict(idc_obj)
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "IDC 模型对象转dict 失败,请查看日志"
            wslog_error().error("IDC 模型对象id: %s 转dict 失败,错误信息: %s" %
                                (idc_id, e.args))
        else:
            ret["idc_info"] = idc_info
            wslog_info().info("IDC 模型对象id: %s 查询成功并返回给前端" % (idc_id))

        return JsonResponse(ret)
示例#5
0
    def inception_check_to_split(self,sql_obj):
        sql = '''/*--user=%s;--password=%s;--host=%s;--enable-check;--port=%s;*/
                inception_magic_start;
                use %s;
                %s 
                inception_magic_commit;''' %(self.user,self.password,self.host,self.port,self.db_name,self.sql_str)

        ret = self.inception_server(sql)

        if ret["result"] == 1:
            wslog_error().error(ret["msg"])
            return ret

        inc_check_result = ret["inc_result"]
        del ret["inc_result"]

        for s in inc_check_result[1:]:
            try:
                se_obj = SQLExecDetailModel(**{"sql":s[5]+';',"sql_block":sql_obj,"check_affected_rows": s[6],"sql_sha1": s[10]})
                se_obj.save()
            except Exception as e:
                ret["result"] = 1
                wslog_error().error("SQL 拆分时 SQLExecDetailModel 保存对象失败,错误信息: %s" %(e.args))
                break
        return ret
示例#6
0
    def post(self,request):
        ret = {"result":0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        inc_bg_form = InceptionBackgroundAddForm(request.POST)
        if not inc_bg_form.is_valid():
            ret['result'] = 1
            error_msg = json.loads(inc_bg_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join([i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)

        try:
            inc_bg_obj = InceptionBackgroundModel(**inc_bg_form.cleaned_data)
            inc_bg_obj.save()
        except Exception as e:
            ret['result'] = 1
            ret['msg'] = "Inception 添加服务器 %s 失败,错误信息: %s" % (inc_bg_form.cleaned_data.get('inc_ip'), e.args)
            wslog_error().error("Inception 添加服务器 %s 失败,错误信息: %s" % (inc_bg_form.cleaned_data.get('inc_ip'), e.args))
        else:
            ret['msg'] = "Inception 添加服务器 %s 成功" % (inc_bg_form.cleaned_data.get('name'))

        return JsonResponse(ret)
示例#7
0
    def post(self,request):
        ret = {"result":0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        inc_ds_form = InceptionDangerSQLAddForm(request.POST)
        if not inc_ds_form.is_valid():
            ret['result'] = 1
            error_msg = json.loads(inc_ds_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join([i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)

        try:
            inc_ds_obj = InceptionDangerSQLModel(**inc_ds_form.cleaned_data)
            inc_ds_obj.save()
        except Exception as e:
            ret['result'] = 1
            ret['msg'] = "Inception 自定义高危SQL %s 添加失败,错误信息: %s" % (inc_ds_form.cleaned_data.get("sql_keyword"), e.args)
            wslog_error().error("Inception 自定义高危SQL %s 添加失败,错误信息: %s" % (inc_ds_form.cleaned_data.get("sql_keyword"), e.args))
        else:
            ret['msg'] = "Inception 自定义高危SQL %s 添加成功" % (inc_ds_form.cleaned_data.get("sql_keyword"))

        return JsonResponse(ret)
示例#8
0
def WxMsgSend(send_data):
    r = requests.post(wx_url, data=send_data)
    if r.content.decode('utf8') == 'OK':
        wslog_info().info("微信消息 发送 成功")
    else:
        wslog_error().error("微信消息 发送 失败,错误信息: %s" %
                            (json.loads(r.content)["errmsg"]))
示例#9
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}
        ph_id = request.POST.get("id")

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        try:
            ph_obj = PublishHistoryModel.objects.get(id__exact=ph_id)
        except PublishHistoryModel.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "PublishHistoryModel 查不到该记录 id: %s" % (ph_id)
            return JsonResponse(ret)

        try:
            ph_obj.delete()
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "PublishHistoryModel 删除对象 id: %s 失败, 请查看日志" % (ph_id)
            wslog_error().error(
                "PublishHistoryModel 删除对象 id: %s 失败, 错误信息: %s" %
                (ph_id, e.args))
        else:
            ret["msg"] = "PublishHistoryModel 删除对象 id: %s 成功" % (ph_id)

        return JsonResponse(ret)
示例#10
0
文件: views.py 项目: zeus911/WS-OPS
    def get(self, request):
        ret = {"result": 0}
        pt_id = request.GET.get("id")
        try:
            pt_obj = PeriodicTask.objects.get(id__exact=pt_id)
        except PeriodicTask.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "PeriodicTask 模型中不存在ID: %s 的对象,请刷新重试..." % (pt_id)
            return JsonResponse(ret)

        try:
            pt_info = model_to_dict(pt_obj)
            pt_info["enabled"] = '0' if pt_obj.enabled else '1'
            pt_info["schedule"] = "%s %s %s %s %s" %(pt_obj.crontab.minute,\
                                                        pt_obj.crontab.hour,\
                                                        pt_obj.crontab.day_of_month,\
                                                        pt_obj.crontab.month_of_year,\
                                                        pt_obj.crontab.day_of_week) \
                                                        if pt_obj.crontab else "%s %s" %(pt_obj.interval.every,pt_obj.interval.period)
            pt_info["date_changed"] = pt_obj.date_changed.strftime(
                "%Y-%m-%d %X") if pt_obj.date_changed else ''
            pt_info["expires"] = pt_obj.expires.strftime(
                "%Y-%m-%d %X") if pt_obj.expires else ''
            pt_info["last_run_at"] = pt_obj.last_run_at.strftime(
                "%Y-%m-%d %X") if pt_obj.last_run_at else ''
            pt_info["total_run_count"] = pt_obj.total_run_count
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "对象 %s 转dict失败,请查看日志..." % (pt_obj.name)
            wslog_error().error("对象 %s 转dict失败,错误信息: %s" %
                                (pt_obj.name, e.args))
        else:
            ret["pt_info"] = pt_info

        return JsonResponse(ret)
示例#11
0
    def get(self,request):
        ret = {"result":0}

        ## ajax 请求的权限验证
        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'删除工单类型'的权限,请联系运维!"
            return JsonResponse(ret)

        wft_id = request.GET.get("id")

        try:
            wft_obj = WorkFormTypeModel.objects.get(id__exact=wft_id)
            wft_obj.delete()
        except WorkFormTypeModel.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "WorkFormTypeModel 模型不存在 id: %s 的对象,请刷新重试" %(wft_id)
            return JsonResponse(ret)
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "WorkFormTypeModel 模型删除 id: %s 的对象失败,请查看日志" %(wft_id)
            wslog_error().error("WorkFormTypeModel 模型删除 id %s 的对象失败,错误信息: %s" %(wft_id,e.args))
            return JsonResponse(ret) 
        else:
            ret["msg"] = "WorkFormTypeModel 模型删除 id: %s 的对象成功" %(wft_id) 
        
        return JsonResponse(ret)
示例#12
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'删除 IntervalSchedule '的权限,请联系运维!"
            return JsonResponse(ret)

        is_id = request.POST.get("id")
        try:
            is_obj = IntervalSchedule.objects.get(id__exact=is_id)
            is_obj.delete()
        except IntervalSchedule.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "IntervalSchedule 模型不存在 id: %s 的对象,请刷新重试" % (is_id)
            return JsonResponse(ret)
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "IntervalSchedule 模型删除 id: %s 的对象失败,请查看日志" % (is_id)
            wslog_error().error("IntervalSchedule 模型删除 id %s 的对象失败,错误信息: %s" %
                                (is_id, e.args))
            return JsonResponse(ret)
        else:
            ret["msg"] = "IntervalSchedule 模型删除 id: %s 的对象成功" % (is_id)

        return JsonResponse(ret)
示例#13
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {'result': 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        dbi_id = request.POST.get('id', None)

        try:
            dbi_obj = DBInstanceModel.objects.get(id=dbi_id)
            dbi_obj.delete()
        except DBInstanceModel.DoesNotExist:
            ret['result'] = 1
            ret['msg'] = "删除 Msyql 实例失败,获取不到 id"
            wslog_error().error("删除 Mysql 实例: %s 失败,获取不到 Cluster id" %
                                (dbi_id))
        except Exception as e:
            ret['result'] = 1
            ret['msg'] = "删除 Mysql 实例: %s 失败,请查看日志" % (db_id)
            wslog_error().error("删除 Mysql 实例: %s 失败,错误信息: %s" %
                                (dbi_id, e.args))
        else:
            ret['msg'] = "Mysql 实例: %s 删除成功" % (dbi_obj.name)

        return JsonResponse(ret)
示例#14
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        cluster_form = DBClusterAddForm(request.POST)
        if not cluster_form.is_valid():
            ret['result'] = 1
            error_msg = json.loads(
                cluster_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join(
                [i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)
        try:
            dbc = DBClusterModel(**cluster_form.cleaned_data)
            dbc.save()
            ret['msg'] = "Mysql 集群 %s 添加成功" % (
                cluster_form.cleaned_data.get('name'))
        except Exception as e:
            ret['result'] = 1
            ret['msg'] = "Mysql 集群 %s 添加失败,错误信息: %s" % (
                cluster_form.cleaned_data.get('name'), e.args)
            wslog_error().error(
                "Mysql 集群 %s 添加失败,错误信息: %s" %
                (cluster_form.cleaned_data.get('name'), e.args))

        return JsonResponse(ret)
示例#15
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}
        db_id = request.POST.get("id")

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有权限,请联系运维!"
            return JsonResponse(ret)

        db_change_form = DBChangeForm(request.POST)
        if not db_change_form.is_valid():
            ret['result'] = 1
            error_msg = json.loads(
                db_change_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join(
                [i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)

        try:
            db_obj = DBModel.objects.get(id__exact=db_id)
            db_obj.save(update_fields=["last_update_time"])
            db_obj.db_manage_group.set(
                db_change_form.cleaned_data.get("db_manage_group"))
            db_obj.cluster_name.set(
                db_change_form.cleaned_data.get("cluster_name"))
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "DBModel 更新 id: %s 的对象失败,错误信息: %s" % (db_id, e.args)
            wslog_error().error("DBModel 更新 id: %s 的对象失败,错误信息: %s" %
                                (db_id, e.args))
        else:
            ret["msg"] = "DBModel 更新 id: %s 的对象成功" % (db_id)

        return JsonResponse(ret)
示例#16
0
    def inception_backup_server(self,sql):
        ret = self.get_inc_server_obj()

        if ret["result"] == 1:
            wslog_error().error(ret["msg"])
            return ret

        inc_server_obj = ret["inc_server_obj"]

        del ret["inc_server_obj"]

        try:
            conn = pymysql.connect(host=inc_server_obj.inc_backup_ip,\
                                   user=inc_server_obj.inc_backup_username,\
                                   passwd=inc_server_obj.inc_backup_password,\
                                   db=self.db_name,\
                                   port=int(inc_server_obj.inc_backup_port),\
                                   charset='utf8')
            cur = conn.cursor()
            cur.execute(sql)
            backup_select_result = cur.fetchall()
            cur.close()
            conn.close()
        except pymysql.Error as e:
            ret["result"] = 1
            ret["msg"] = "连接 Inception 备份服务器执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1])
            wslog_error().error("连接 Inception 备份服务器执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1]))
        else:
            ret["backup_select_result"] = backup_select_result

        return ret
示例#17
0
    def inception_server(self,sql):
        ret = self.get_inc_server_obj()

        if ret["result"] == 1:
            wslog_error().error(ret["msg"])
            return ret

        inc_server_obj = ret["inc_server_obj"]
        del ret["inc_server_obj"]

        try:
            ''' 连接 inception 服务端 '''
            conn = pymysql.connect(host=inc_server_obj.inc_ip,user='',passwd='',db='',port=int(inc_server_obj.inc_port),charset='utf8')
            cur = conn.cursor()
            cur.execute(sql)
            inc_result = cur.fetchall()
            # num_fields = len(cur.description)
            # field_names = [i[0] for i in cur.description]
            # print(field_names)
            # for row in inc_result:
            #     print(row)
            cur.close()
            conn.close()
        except pymysql.Error as e:
            ret["result"] = 1
            ret["msg"] = "连接 Inception 服务端执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1])
            wslog_error().error("连接 Inception 服务端执行SQL错误,错误信息 %d: %s" % (e.args[0], e.args[1]))
        else:
            ret["inc_result"] = inc_result

        return ret
示例#18
0
    def post(self, request):
        ret = {"result": 0, "msg": None}

        ## ajax 请求的权限验证
        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'删除 cmdb 模型对象'的权限,请联系运维!"
            return JsonResponse(ret)

        cid = request.POST.get("id")

        ret = GetCmdbObj(cid, ret)
        if ret["result"] == 1:
            return JsonResponse(ret)

        cmdb_obj = ret["msg"]

        try:
            cmdb_obj.delete()
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "CmdbModel 删除对象 %s 失败,请查看日志" % (cmdb_obj.name)
            wslog_error().error("CmdbModel 删除 ID: %s 的对象失败,错误信息: %s" %
                                (cid, e.args))
        else:
            ret["msg"] = "CmdbModel 删除对象 %s 成功" % (cmdb_obj.name)
            wslog_info().info("CmdbModel 删除对象 %s 成功" % (cmdb_obj.name))

        return JsonResponse(ret)
示例#19
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'添加定时任务'的权限,请联系运维!"
            return JsonResponse(ret)

        task_add_form = TaskAddForm(request.POST)
        if not task_add_form.is_valid():
            ret["result"] = 1
            error_msg = json.loads(
                task_add_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join(
                [i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)
        else:
            del task_add_form.cleaned_data["schedule"]

        print("task_add_form.cleaned_data: ", task_add_form.cleaned_data)

        if request.POST.get("expires"):
            task_add_form.cleaned_data["expires"] = datetime.strptime(
                request.POST.get("expires"), '%Y/%m/%d %H:%M')
        try:
            pt_obj = PeriodicTask(**task_add_form.cleaned_data)
            pt_obj.save()
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "PeriodicTask 保存对象失败,请查看日志..."
            wslog_error().error("PeriodicTask 保存对象失败, 错误信息: %s" % (e.args))
        else:
            ret["msg"] = "添加 PeriodicTask 对象成功"

        return JsonResponse(ret)
示例#20
0
def CmdbIpsUpdate(ips, cmdb_obj, ret):
    if not ips:
        ret["result"] = 1
        ret["msg"] = "请至少选择一个IP"
        return ret

    try:
        server_obj_list = [
            ServerModel.objects.get(id__exact=sid) for sid in ips
        ]
    except Exception as e:
        ret["result"] = 1
        ret["msg"] = "ServerModel 查询对象失败,请刷新并重新选择IP地址"
        wslog_error().error("ServerModel 查询对象地址失败, 错误信息: %s" % (e.args))
        return ret

    try:
        cmdb_obj.ips.set(server_obj_list)
    except Exception as e:
        ret["result"] = 1
        ret["msg"] = "CmdbModel模型对象: %s 关联 ServerModel 失败,请查看日志" % (
            cmdb_obj.name)
        wslog_error().error("CmdbModel 模型对象: %s 关联 ServerModel 失败,错误信息: %s" %
                            (cmdb_obj.name, e.args))
    finally:
        return ret
示例#21
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'添加 IntervalSchedule '的权限,请联系运维!"
            return JsonResponse(ret)

        interval_schedule_add_form = IntervalScheduleForm(request.POST)
        if not interval_schedule_add_form.is_valid():
            ret["result"] = 1
            error_msg = json.loads(
                interval_schedule_add_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join(
                [i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)

        try:
            cs_obj = IntervalSchedule(
                **interval_schedule_add_form.cleaned_data)
            cs_obj.save()
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "IntervalSchedule 保存对象失败,请查看日志..."
            wslog_error().error("IntervalSchedule 保存对象失败, 错误信息: %s" % (e.args))
        else:
            ret["msg"] = "添加 IntervalSchedule 对象成功"
        return JsonResponse(ret)
示例#22
0
def get_task_name(value):
    try:
        trr_obj = TaskResultRecord.objects.get(task_id__exact=value)
    except Exception as e:
        wslog_error().error("TaskResultRecord 模型中查询 task_id: %s 失败,错误信息: %s" %(value,e.args))
        return value
    else:
        return trr_obj.task_name
示例#23
0
def task_prerun_handler(sender=None, task_id=None, task=None, **kwargs):
    trr_obj = TaskResultRecord()
    try:
        trr_obj.task_name = task.name
        trr_obj.task_id = str(task_id)
        trr_obj.save()
    except Exception as e:
        wslog_error().error("保存 task: %s 的 task_id 失败,错误信息: %s" %
                            (self.name, e.args))
示例#24
0
 def get(self, request):
     try:
         interval_list = [{"id":is_obj.id,"intervals_str":"%s %s" %(is_obj.every,is_obj.period)} \
                                                                     for is_obj in IntervalSchedule.objects.all()]
     except Exception as e:
         interval_list = []
         wslog_error().error("通过 api 接口获取 interval 调度信息失败,错误信息: %s" %
                             (e.args))
     return JsonResponse(interval_list, safe=False)
示例#25
0
 def get(self, request):
     i_obj = inspect()
     try:
         registered_tasks_list = list(
             set(chain.from_iterable(i_obj.registered_tasks().values())))
     except Exception as e:
         registered_tasks_list = []
         wslog_error().error("通过 api 接口获取 注册的task信息失败,错误信息: %s" % (e.args))
     return JsonResponse(registered_tasks_list, safe=False)
示例#26
0
    def get(self, request):
        ret = {"result": 0, "msg": None}
        sid = request.GET.get("id", 0)
        try:
            server_aliyun_obj = ServerModel.objects.get(id__exact=sid)
        except ServerModel.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "Aliyun 上不存在 ID 为 %s 的服务器" % (sid)
            return JsonResponse(ret)

        try:
            #server_aliyun_info = model_to_dict(server_aliyun_obj)  // 使用这个方法,读不到 DateTimeField 设置为 auto_now = True 的字段,因此读不到 last_update_time 字段
            server_aliyun_info = ServerModel.objects.filter(
                id__exact=sid).values()[0]
            server_aliyun_info["env"] = {
                "id": server_aliyun_obj.env,
                "name": server_aliyun_obj.get_env_display()
            }
            server_aliyun_info[
                "charge_type"] = server_aliyun_obj.get_charge_type_display()
            server_aliyun_info[
                "status"] = server_aliyun_obj.get_status_display()
            try:
                server_aliyun_info[
                    "monitor_status"] = server_aliyun_obj.zabbixhostmodel.get_status_display(
                    )
            except Exception as e:
                wslog_error().error("服务器 %s 在 zabbix 中不存在" %
                                    (server_aliyun_obj.private_ip))
                server_aliyun_info["monitor_status"] = "未监控"

            server_aliyun_info[
                "renewal_type"] = server_aliyun_obj.get_renewal_type_display()
            server_aliyun_info["disk"] = server_aliyun_info["disk"].replace(
                "</br>", "\n")
            if server_aliyun_info.get("expired_time"):
                server_aliyun_info["expired_time"] = server_aliyun_info[
                    "expired_time"]
            if server_aliyun_info.get("offline_time"):
                server_aliyun_info["offline_time"] = server_aliyun_info[
                    "offline_time"]
            if server_aliyun_info.get("online_time"):
                server_aliyun_info["online_time"] = server_aliyun_info[
                    "online_time"]
            if server_aliyun_info.get("last_update_time"):
                server_aliyun_info["last_update_time"] = server_aliyun_info[
                    "last_update_time"]
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "模型对象转dict失败"
            wslog_error().error("模型对象 %s 转 dict 失败,错误信息: %s" %
                                (server_aliyun_obj.private_ip, e.args))
        else:
            ret["server_info"] = server_aliyun_info

        return JsonResponse(ret)
示例#27
0
def mail_send_html(subject, message, mail_to, html_content=None):
    ''' 如果html_content 为None 则邮件不能发送, 而上面那种方式则不会 '''
    try:
        m = EmailMultiAlternatives(subject, message, EMAIL_HOST_USER, mail_to)
        m.attach_alternative(html_content, "text/html")
        m.send()
    except Exception as e:
        wslog_error().error("邮件: '%s' 发送失败,错误信息: %s" % (subject, e.args))
    else:
        wslog_info().info("邮件: '%s' 发送成功" % (subject))
示例#28
0
文件: views.py 项目: zeus911/WS-OPS
    def post(self, request):
        ret = {"result": 0}

        if not request.user.has_perm(self.permission_required):
            ret["result"] = 1
            ret["msg"] = "Sorry,你没有'修改定时任务'的权限,请联系运维!"
            return JsonResponse(ret)

        pt_id = request.POST.get("id")
        try:
            pt_obj = PeriodicTask.objects.get(id__exact=int(pt_id))
        except PeriodicTask.DoesNotExist:
            ret["result"] = 1
            ret["msg"] = "PeriodicTask 模型中不存在 id: %s 的对象, 请刷新重试..." % (pt_id)
            return JsonResponse(ret)

        task_update_form = TaskUpdateForm(request.POST)
        if not task_update_form.is_valid():
            ret["result"] = 1
            error_msg = json.loads(
                task_update_form.errors.as_json(escape_html=False))
            ret["msg"] = '\n'.join(
                [i["message"] for v in error_msg.values() for i in v])
            return JsonResponse(ret)

        if request.POST.get("expires"):
            pt_obj.expires = datetime.strptime(request.POST.get("expires"),
                                               '%Y/%m/%d %H:%M')

        if task_update_form.cleaned_data.get("schedule") == 'crontab':
            pt_obj.crontab = task_update_form.cleaned_data.get("crontab")
            pt_obj.interval = None
        else:
            pt_obj.interval = task_update_form.cleaned_data.get("interval")
            pt_obj.crontab = None

        try:
            pt_obj.task = task_update_form.cleaned_data.get("task")
            pt_obj.description = task_update_form.cleaned_data.get(
                "description")
            pt_obj.args = task_update_form.cleaned_data.get("args")
            pt_obj.kwargs = task_update_form.cleaned_data.get("kwargs")
            pt_obj.enabled = task_update_form.cleaned_data.get("enabled")
            pt_obj.save(update_fields=[
                "task", "description", "args", "kwargs", "enabled", "interval",
                "crontab", "expires"
            ])
        except Exception as e:
            ret["result"] = 1
            ret["msg"] = "PeriodicTask 更新对象 ID: %s 失败,请查看日志..." % (pt_id)
            wslog_error().error("PeriodicTask 更新对象 ID: %s 失败, 错误信息: %s" %
                                (pt_id, e.args))
        else:
            ret["msg"] = "更新 PeriodicTask 对象成功"
        return JsonResponse(ret)
示例#29
0
def GetCmdbObj(cid, ret):
    try:
        cmdb_obj = CmdbModel.objects.get(id__exact=cid)
    except CmdbModel.DoesNotExist:
        ret["result"] = 1
        ret["msg"] = "CmdbModel 不存在 ID: %s 的对象,请刷新重试" % (cid)
        wslog_error().error("CmdbModel 不存在 ID: %s 的对象" % (cid))
    else:
        ret["msg"] = cmdb_obj

    return ret
示例#30
0
def get_ip_address(ifname):
    try:
        s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        ip_addr = socket.inet_ntoa(
            fcntl.ioctl(s.fileno(), 0x8915,
                        struct.pack('256s',
                                    ifname[:15].encode("utf8")))[20:24])
    except Exception as e:
        wslog_error().error("获取本机 %s 地址失败,错误信息: %s" % (ifname, e.args))
        ip_addr = '127.0.0.1'
    return ip_addr