mirror of
https://github.com/veops/cmdb.git
synced 2025-08-09 13:12:17 +08:00
@@ -24,6 +24,7 @@ from api.lib.cmdb.auto_discovery.const import PRIVILEGED_USERS
|
||||
from api.lib.cmdb.cache import AttributeCache
|
||||
from api.lib.cmdb.const import PermEnum
|
||||
from api.lib.cmdb.const import ResourceTypeEnum
|
||||
from api.lib.cmdb.ipam.subnet import SubnetManager
|
||||
from api.lib.cmdb.resp_format import ErrFormat
|
||||
from api.lib.cmdb.search import SearchError
|
||||
from api.lib.cmdb.search.ci import search as ci_search
|
||||
@@ -293,9 +294,13 @@ class AutoDiscoveryRuleSyncView(APIView):
|
||||
|
||||
return self.jsonify(rules=rules, last_update_at=last_update_at)
|
||||
|
||||
rules, last_update_at = AutoDiscoveryCITypeCRUD.get(None, oneagent_id, oneagent_name, last_update_at)
|
||||
rules, last_update_at1 = AutoDiscoveryCITypeCRUD.get(None, oneagent_id, oneagent_name, last_update_at)
|
||||
|
||||
return self.jsonify(rules=rules, last_update_at=last_update_at)
|
||||
subnet_scan_rules, last_update_at2 = SubnetManager().scan_rules(oneagent_id, last_update_at)
|
||||
|
||||
return self.jsonify(rules=rules,
|
||||
subnet_scan_rules=subnet_scan_rules,
|
||||
last_update_at=max(last_update_at1 or "", last_update_at2 or ""))
|
||||
|
||||
|
||||
class AutoDiscoveryRuleSyncHistoryView(APIView):
|
||||
|
1
cmdb-api/api/views/cmdb/ipam/__init__.py
Normal file
1
cmdb-api/api/views/cmdb/ipam/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
# -*- coding:utf-8 -*-
|
39
cmdb-api/api/views/cmdb/ipam/address.py
Normal file
39
cmdb-api/api/views/cmdb/ipam/address.py
Normal file
@@ -0,0 +1,39 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
|
||||
from flask import request
|
||||
|
||||
from api.lib.cmdb.ipam.address import IpAddressManager
|
||||
from api.lib.common_setting.decorator import perms_role_required
|
||||
from api.lib.common_setting.role_perm_base import CMDBApp
|
||||
from api.lib.decorator import args_required
|
||||
from api.lib.utils import handle_arg_list
|
||||
from api.resource import APIView
|
||||
|
||||
app_cli = CMDBApp()
|
||||
|
||||
|
||||
class IPAddressView(APIView):
|
||||
url_prefix = ("/ipam/address",)
|
||||
|
||||
@args_required("parent_id")
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def get(self):
|
||||
parent_id = request.args.get("parent_id")
|
||||
|
||||
numfound, result = IpAddressManager.list_ip_address(parent_id)
|
||||
|
||||
return self.jsonify(numfound=numfound, result=result)
|
||||
|
||||
@args_required("ips")
|
||||
@args_required("assign_status", value_required=False)
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def post(self):
|
||||
ips = handle_arg_list(request.values.pop("ips"))
|
||||
parent_id = request.values.pop("parent_id", None)
|
||||
cidr = request.values.pop("cidr", None)
|
||||
|
||||
IpAddressManager().assign_ips(ips, parent_id, cidr, **request.values)
|
||||
|
||||
return self.jsonify(code=200)
|
53
cmdb-api/api/views/cmdb/ipam/histories.py
Normal file
53
cmdb-api/api/views/cmdb/ipam/histories.py
Normal file
@@ -0,0 +1,53 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
|
||||
from flask import request
|
||||
|
||||
from api.lib.cmdb.ipam.history import OperateHistoryManager
|
||||
from api.lib.cmdb.ipam.history import ScanHistoryManager
|
||||
from api.lib.common_setting.decorator import perms_role_required
|
||||
from api.lib.common_setting.role_perm_base import CMDBApp
|
||||
from api.lib.decorator import args_required
|
||||
from api.lib.utils import get_page
|
||||
from api.lib.utils import get_page_size
|
||||
from api.lib.utils import handle_arg_list
|
||||
from api.resource import APIView
|
||||
|
||||
app_cli = CMDBApp()
|
||||
|
||||
|
||||
class IPAMOperateHistoryView(APIView):
|
||||
url_prefix = ("/ipam/history/operate",)
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def get(self):
|
||||
page = get_page(request.values.pop("page", 1))
|
||||
page_size = get_page_size(request.values.pop("page_size", None))
|
||||
operate_type = handle_arg_list(request.values.pop('operate_type', []))
|
||||
if operate_type:
|
||||
request.values["operate_type"] = operate_type
|
||||
|
||||
numfound, result = OperateHistoryManager.search(page, page_size, **request.values)
|
||||
|
||||
return self.jsonify(numfound=numfound, result=result)
|
||||
|
||||
|
||||
class IPAMScanHistoryView(APIView):
|
||||
url_prefix = ("/ipam/history/scan",)
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def get(self):
|
||||
page = get_page(request.values.pop("page", 1))
|
||||
page_size = get_page_size(request.values.pop("page_size", None))
|
||||
|
||||
numfound, result = ScanHistoryManager.search(page, page_size, **request.values)
|
||||
|
||||
return self.jsonify(numfound=numfound, result=result)
|
||||
|
||||
@args_required("exec_id")
|
||||
def post(self):
|
||||
|
||||
ScanHistoryManager().add(**request.values)
|
||||
|
||||
return self.jsonify(code=200)
|
24
cmdb-api/api/views/cmdb/ipam/ipam_stats.py
Normal file
24
cmdb-api/api/views/cmdb/ipam/ipam_stats.py
Normal file
@@ -0,0 +1,24 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
|
||||
|
||||
from flask import request
|
||||
|
||||
from api.lib.cmdb.ipam.stats import Stats
|
||||
from api.lib.common_setting.decorator import perms_role_required
|
||||
from api.lib.common_setting.role_perm_base import CMDBApp
|
||||
from api.lib.decorator import args_required
|
||||
from api.resource import APIView
|
||||
|
||||
app_cli = CMDBApp()
|
||||
|
||||
|
||||
class IPAMStatsView(APIView):
|
||||
url_prefix = '/ipam/stats'
|
||||
|
||||
@args_required("parent_id")
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def get(self):
|
||||
parent_id = request.values.get("parent_id")
|
||||
|
||||
return self.jsonify(Stats().summary(parent_id))
|
75
cmdb-api/api/views/cmdb/ipam/subnet.py
Normal file
75
cmdb-api/api/views/cmdb/ipam/subnet.py
Normal file
@@ -0,0 +1,75 @@
|
||||
# -*- coding:utf-8 -*-
|
||||
|
||||
from flask import request
|
||||
|
||||
from api.lib.cmdb.ipam.subnet import SubnetManager
|
||||
from api.lib.cmdb.ipam.subnet import SubnetScopeManager
|
||||
from api.lib.common_setting.decorator import perms_role_required
|
||||
from api.lib.common_setting.role_perm_base import CMDBApp
|
||||
from api.lib.decorator import args_required
|
||||
from api.resource import APIView
|
||||
|
||||
app_cli = CMDBApp()
|
||||
|
||||
|
||||
class SubnetView(APIView):
|
||||
url_prefix = ("/ipam/subnet", "/ipam/subnet/hosts", "/ipam/subnet/<int:_id>")
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def get(self, _id=None):
|
||||
if "hosts" in request.url:
|
||||
return self.jsonify(SubnetManager.get_hosts(request.values.get('cidr')))
|
||||
|
||||
if _id is not None:
|
||||
return self.jsonify(SubnetManager().get_by_id(_id))
|
||||
|
||||
result, type2name = SubnetManager().tree_view()
|
||||
|
||||
return self.jsonify(result=result, type2name=type2name)
|
||||
|
||||
@args_required("cidr")
|
||||
@args_required("parent_id", value_required=False)
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def post(self):
|
||||
cidr = request.values.pop("cidr")
|
||||
parent_id = request.values.pop("parent_id")
|
||||
agent_id = request.values.pop("agent_id", None)
|
||||
cron = request.values.pop("cron", None)
|
||||
|
||||
return self.jsonify(SubnetManager().add(cidr, parent_id, agent_id, cron, **request.values))
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def put(self, _id):
|
||||
return self.jsonify(id=SubnetManager().update(_id, **request.values))
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def delete(self, _id):
|
||||
return self.jsonify(id=SubnetManager().delete(_id))
|
||||
|
||||
|
||||
class SubnetScopeView(APIView):
|
||||
url_prefix = ("/ipam/scope", "/ipam/scope/<int:_id>")
|
||||
|
||||
@args_required("parent_id", value_required=False)
|
||||
@args_required("name")
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def post(self):
|
||||
parent_id = request.values.pop("parent_id")
|
||||
name = request.values.pop("name")
|
||||
|
||||
return self.jsonify(SubnetScopeManager().add(parent_id, name))
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def put(self, _id):
|
||||
return self.jsonify(id=SubnetScopeManager().update(_id, **request.values))
|
||||
|
||||
@perms_role_required(app_cli.app_name, app_cli.resource_type_name, app_cli.op.IPAM,
|
||||
app_cli.op.read, app_cli.admin_name)
|
||||
def delete(self, _id):
|
||||
return self.jsonify(id=SubnetScopeManager.delete(_id))
|
Reference in New Issue
Block a user