mirror of https://github.com/jumpserver/jumpserver
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
999 B
37 lines
999 B
import os |
|
import sys |
|
|
|
import django |
|
|
|
if os.path.exists('../apps'): |
|
sys.path.insert(0, '../apps') |
|
elif os.path.exists('./apps'): |
|
sys.path.insert(0, './apps') |
|
|
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "jumpserver.settings") |
|
django.setup() |
|
|
|
from assets.models import Asset as asset_model, Host as host_model, Device as device_model |
|
from orgs.models import Organization |
|
|
|
|
|
def clean_host(): |
|
root = Organization.root() |
|
root.change_to() |
|
|
|
devices = host_model.objects.filter(platform__category='device') |
|
assets = asset_model.objects.filter(id__in=devices.values_list('asset_ptr_id', flat=True)) |
|
assets_map = {asset.id: asset for asset in assets} |
|
|
|
for host in devices: |
|
asset = assets_map.get(host.asset_ptr_id) |
|
if not asset: |
|
continue |
|
device = device_model(asset_ptr_id=asset.id) |
|
device.__dict__.update(asset.__dict__) |
|
device.save() |
|
host.delete(keep_parents=True) |
|
|
|
|
|
if __name__ == "__main__": |
|
clean_host()
|
|
|