Beispiel #1
0
 def create_grains(minion_list, product_id, user):
     salt_api = salt_api_for_product(product_id)
     if isinstance(salt_api, dict):
         return salt_api, 500
     db = DB()
     for minion in minion_list:
         select_status, select_result = db.select(
             "grains", "where data -> '$.id'='%s' and data -> "
             "'$.product_id'='%s'" % (minion, product_id))
         grains = salt_api.grains(minion)
         grains[minion].update({"product_id": product_id})
         if select_status is True:
             if len(select_result) > 1:
                 for m in select_result:
                     db.delete_by_id("grains", m["id"])
                 insert_status, insert_result = db.insert(
                     "grains", json.dumps(grains[minion],
                                          ensure_ascii=False))
                 if insert_status is not True:
                     logger.error("Add Grains error: %s" % insert_result)
             elif len(select_result) == 1:
                 update_status, update_result = db.update_by_id(
                     "grains", json.dumps(grains[minion],
                                          ensure_ascii=False),
                     select_result[0]["id"])
                 if update_status is not True:
                     logger.error("Update Grains error: %s" % update_result)
             else:
                 insert_status, insert_result = db.insert(
                     "grains", json.dumps(grains[minion],
                                          ensure_ascii=False))
                 if insert_status is not True:
                     logger.error("Add Grains error: %s" % insert_result)
     db.close_mysql()
Beispiel #2
0
    def delete(self, groups_id):
        db = DB()
        # 首先获得所需项目
        status, result = db.select_by_id("groups", groups_id)
        if status:
            group = result
        else:
            return {"status": False, "message": str(result)}, 500
        # 执行删除
        status, result = db.delete_by_id("groups", groups_id)

        if status is not True:
            return {"status": False, "message": result}, 500
        if result is 0:
            return {
                "status": False,
                "message": "%s does not exist" % groups_id
            }, 404
        # 完成数据的统一,将project中的组类别删除
        project_list = group['projects']
        for project_name in project_list:
            status, result = db.select(
                'projects', "where data -> '$.name'='%s'" % project_name)
            project_origion = dict(result[0])
            group_list = list(project_origion['groups'])
            group_list.remove(groups_id)
            project_origion['groups'] = group_list
            db.update_by_id("projects",
                            json.dumps(project_origion, ensure_ascii=False),
                            result[0]['id'])
        db.close_mysql()
        return {"status": True, "message": ""}, 200
Beispiel #3
0
 def delete(self, period_id):
     user = g.user_info["username"]
     db = DB()
     select_status, select_result = db.select_by_id("period_task",
                                                    period_id)
     if select_status is not True:
         db.close_mysql()
         logger.error("Modify period_task error: %s" % select_result)
         return {"status": False, "message": select_result}, 500
     # 删除定期任务的时候删除对应的调度
     if select_result["scheduler"] == "period":
         scheduler_result = scheduler_delete(period_id)
         if scheduler_result.get("status") is not True:
             # 假如不是job不存在,才返回
             if "'No job" not in scheduler_result.get("message"):
                 return {
                     "status": False,
                     "message": scheduler_result.get("message")
                 }, 500
     status, result = db.delete_by_id("period_task", period_id)
     if status is not True:
         logger.error("Delete period_task error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {
             "status": False,
             "message": "%s does not exist" % period_id
         }, 404
     period_result_status, period_result_result = db.delete_by_id(
         "period_result", period_id)
     if period_result_status is not True:
         logger.error("Delete period_result error: %s" %
                      period_result_result)
         return {"status": False, "message": result}, 500
     period_audit_status, period_audit_result = db.delete_by_id(
         "period_audit", period_id)
     if period_audit_status is not True:
         logger.error("Delete period_result error: %s" %
                      period_audit_result)
         return {"status": False, "message": result}, 500
     db.close_mysql()
     audit_log(user, period_id, "", "period_task", "delete")
     return {"status": True, "message": ""}, 200
Beispiel #4
0
 def delete(self, host_id):
     user = g.user_info["username"]
     db = DB()
     status, result = db.delete_by_id("host", host_id)
     db.close_mysql()
     if status is not True:
         logger.error("Delete host error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {"status": False, "message": "%s does not exist" % host_id}, 404
     audit_log(user, host_id, "", "host", "delete")
     return {"status": True, "message": ""}, 200
Beispiel #5
0
 def delete(self, target_id):
     db = DB()
     status, result = db.delete_by_id("target", target_id)
     db.close_mysql()
     logger.info('delete:' + str(result))
     if status is not True:
         logger.error("Delete product error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {
             "status": False,
             "message": "%s does not exist" % target_id
         }, 404
     return {"status": True, "message": ""}, 200
Beispiel #6
0
 def delete(self, groups_id):
     user = g.user_info["username"]
     db = DB()
     status, result = db.delete_by_id("groups", groups_id)
     db.close_mysql()
     if status is not True:
         logger.error("Delete groups error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {"status": False, "message": "%s does not exist" % groups_id}, 404
     audit_log(user, groups_id, "", "groups", "delete")
     info = update_user_privilege("groups", groups_id)
     if info["status"] is False:
         return {"status": False, "message": info["message"]}, 500
     return {"status": True, "message": ""}, 204
Beispiel #7
0
    def delete_host(minion_list, product_id, user):
        db = DB()
        group_status, group_result = db.select(
            "groups", "where data -> '$.product_id'='%s'" % product_id)
        if group_status is False:
            logger.error("Delete %s host error: %s" %
                         (minion_list, group_status))
        for minion_id in minion_list:
            try:
                # 组里面删除主机
                for group in group_result:
                    for minion in group.get("minion"):
                        if minion == minion_id:
                            group.get("minion").remove(minion_id)
                    status, result = db.update_by_id(
                        "groups", json.dumps(group, ensure_ascii=False),
                        group.get("id"))
                    if status is not True:
                        logger.error("Modify group error: %s" % result)
            except Exception as e:
                logger.error("Delete %s host error: %s" % (minion_id, e))
            select_status, select_result = db.select(
                "host", "where data -> '$.minion_id'='%s' "
                "and data -> '$.product_id'='%s'" % (minion_id, product_id))
            if select_status is False:
                logger.error("Delete % host error: %s" %
                             (minion_id, select_result))
            if select_result:
                for host in select_result:
                    try:
                        status, result = db.delete_by_id("host", host["id"])
                        if status is False:
                            logger.error("Delete %s host error: %s" %
                                         (minion_id, result))
                        else:
                            audit_log(user, host["id"], product_id, "host",
                                      "delete")
                    except Exception as e:
                        logger.error("Delete %s host error: %s" %
                                     (minion_id, e))

            else:
                logger.error("Select %s host does not exist" % minion_id)
        db.close_mysql()
Beispiel #8
0
 def delete(self, project_id):
     db = DB()
     try:
         status, message = update_group_for_delete_project(project_id)
     except Exception as e:
         logger.info('Exception:' + str(e))
     if status is not True:
         return {"status": False, "message": message}, 500
     status, result = db.delete_by_id("projects", project_id)
     db.close_mysql()
     if status is not True:
         logger.error("Delete projects error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {
             "status": False,
             "message": "%s does not exist" % project_id
         }, 404
     return {"status": True, "message": ""}, 200
Beispiel #9
0
 def delete(self, product_id):
     user = g.user_info["username"]
     db = DB()
     status, result = db.delete_by_id("product", product_id)
     db.close_mysql()
     if status is not True:
         logger.error("Delete product error: %s" % result)
         return {"status": False, "message": result}, 500
     if result is 0:
         return {
             "status": False,
             "message": "%s does not exist" % product_id
         }, 404
     audit_log(user, product_id, product_id, "product", "delete")
     info = update_user_privilege("product", product_id)
     if info["status"] is False:
         return {"status": False, "message": info["message"]}, 500
     # 更新Rsync配置
     rsync_config()
     return {"status": True, "message": ""}, 200
Beispiel #10
0
 def delete_host(minion_list, product_id, user):
     db = DB()
     for minion_id in minion_list:
         select_status, select_result = db.select("host", "where data -> '$.minion_id'='%s'" % minion_id)
         if select_status is False:
             logger.error("Delete % host error: %s" % (minion_id, select_result))
         if select_result:
             for i in select_result:
                 try:
                     host = eval(i[0])
                     status, result = db.delete_by_id("host", host["id"])
                     if status is False:
                         logger.error("Delete % host error: %s" % (minion_id, result))
                     else:
                         audit_log(user, host["id"], product_id, "host", "delete")
                 except Exception as e:
                     logger.error("Delete % host error: %s" % (minion_id, e))
         else:
             logger.error("Select %s host does not exist" % minion_id)
     db.close_mysql()
Beispiel #11
0
 def delete_grains(minion_list, product_id, user):
     db = DB()
     for minion in minion_list:
         db.delete_by_id("grains", minion)
         audit_log(user, minion, product_id, "grains", "delete")
     db.close_mysql()
Beispiel #12
0
def delete_sls(path):
    db = DB()
    status, result = db.select("sls", "where data -> '$.path'='%s'" % path)
    if status is True and result:
        for sls in result:
            db.delete_by_id("sls", sls.get("id"))