Skip to content

Commit

Permalink
fix(api): ipam assign address
Browse files Browse the repository at this point in the history
  • Loading branch information
pycook committed Nov 11, 2024
1 parent b1f8a00 commit f277cf0
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 10 deletions.
4 changes: 2 additions & 2 deletions cmdb-api/api/lib/cmdb/ipam/address.py
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ def assign_ips(self, ips, subnet_id, cidr, **kwargs):
ci_id = ip2ci[ip]['_id']
CIManager().update(ci_id, _sync=True, **kwargs)
if IPAddressBuiltinAttributes.ASSIGN_STATUS in kwargs and (
kwargs[IPAddressBuiltinAttributes.ASSIGN_STATUS] !=
ip2ci[ip].get(IPAddressBuiltinAttributes.ASSIGN_STATUS)):
(kwargs[IPAddressBuiltinAttributes.ASSIGN_STATUS] or 2) !=
(ip2ci[ip].get(IPAddressBuiltinAttributes.ASSIGN_STATUS) or 2)):
status_change_num += 1
ci_ids.append(ci_id)

Expand Down
6 changes: 3 additions & 3 deletions cmdb-api/api/lib/cmdb/ipam/subnet.py
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,9 @@ def update(self, _id, **kwargs):

return _id

def delete(self, _id):
if CIRelation.get_by(only_query=True).join(CI, CI.id == CIRelation.second_ci_id).filter(
CIRelation.first_ci_id == _id).filter(CI.type_id == self.type_id).first():
@classmethod
def delete(cls, _id):
if CIRelation.get_by(only_query=True).filter(CIRelation.first_ci_id == _id).first():
return abort(400, ErrFormat.ipam_subnet_cannot_delete)

existed = IPAMSubnetScan.get_by(ci_id=_id, first=True, to_dict=False)
Expand Down
21 changes: 16 additions & 5 deletions cmdb-api/api/lib/mixin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# -*- coding:utf-8 -*-


from flask import current_app
from sqlalchemy import func

from api.extensions import db
Expand Down Expand Up @@ -32,11 +33,21 @@ def search(cls, page, page_size, fl=None, only_query=False, reverse=False, count

for k in kwargs:
if hasattr(cls.cls, k):
query = query.filter(getattr(cls.cls, k) == kwargs[k])
if count_query:
_query = _query.filter(getattr(cls.cls, k) == kwargs[k])

if reverse:
if isinstance(kwargs[k], list):
query = query.filter(getattr(cls.cls, k).in_(kwargs[k]))
if count_query:
_query = _query.filter(getattr(cls.cls, k).in_(kwargs[k]))
else:
if "*" in str(kwargs[k]):
query = query.filter(getattr(cls.cls, k).ilike(kwargs[k].replace('*', '%')))
if count_query:
_query = _query.filter(getattr(cls.cls, k).ilike(kwargs[k].replace('*', '%')))
else:
query = query.filter(getattr(cls.cls, k) == kwargs[k])
if count_query:
_query = _query.filter(getattr(cls.cls, k) == kwargs[k])

if reverse in current_app.config.get('BOOL_TRUE'):
query = query.order_by(cls.cls.id.desc())

if only_query and not count_query:
Expand Down
1 change: 1 addition & 0 deletions cmdb-api/api/models/cmdb.py
Original file line number Diff line number Diff line change
Expand Up @@ -476,6 +476,7 @@ class PreferenceShowAttributes(Model):
uid = db.Column(db.Integer, index=True, nullable=False)
type_id = db.Column(db.Integer, db.ForeignKey("c_ci_types.id"), nullable=False)
attr_id = db.Column(db.Integer, db.ForeignKey("c_attributes.id"))
builtin_attr = db.Column(db.String(256), nullable=True)
order = db.Column(db.SmallInteger, default=0)
is_fixed = db.Column(db.Boolean, default=False)

Expand Down

0 comments on commit f277cf0

Please sign in to comment.