allembic for upgrade datas for actual hid's computers
This commit is contained in:
parent
b23b4d9e2a
commit
de2539091c
|
@ -0,0 +1,65 @@
|
||||||
|
"""empty message
|
||||||
|
|
||||||
|
Revision ID: bf600ca861a4
|
||||||
|
Revises: 68a5c025ab8e
|
||||||
|
Create Date: 2020-12-15 15:58:41.545563
|
||||||
|
|
||||||
|
"""
|
||||||
|
from alembic import context
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
import sqlalchemy_utils
|
||||||
|
import citext
|
||||||
|
import teal
|
||||||
|
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = 'bf600ca861a4'
|
||||||
|
down_revision = '68a5c025ab8e'
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def get_inv():
|
||||||
|
INV = context.get_x_argument(as_dictionary=True).get('inventory')
|
||||||
|
if not INV:
|
||||||
|
raise ValueError("Inventory value is not specified")
|
||||||
|
return INV
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
con = op.get_bind()
|
||||||
|
sql = f"""
|
||||||
|
select d.id, d.hid, dd.serial_number from {get_inv()}.computer as c
|
||||||
|
join {get_inv()}.device as d on c.id=d.id
|
||||||
|
inner join {get_inv()}.component as cmp on cmp.parent_id=c.id
|
||||||
|
inner join {get_inv()}.network_adapter as net on net.id=cmp.id
|
||||||
|
join {get_inv()}.device as dd on net.id=dd.id;
|
||||||
|
"""
|
||||||
|
computers = con.execute(sql)
|
||||||
|
hids = {}
|
||||||
|
macs = {}
|
||||||
|
for c in computers:
|
||||||
|
hids[c.id] = c.hid
|
||||||
|
try:
|
||||||
|
macs[c.id].append(c.serial_number)
|
||||||
|
macs[c.id].sort()
|
||||||
|
except:
|
||||||
|
macs[c.id] = [c.serial_number]
|
||||||
|
|
||||||
|
for id_dev, hid in hids.items():
|
||||||
|
if not (id_dev and hid):
|
||||||
|
continue
|
||||||
|
if not id_dev in macs:
|
||||||
|
continue
|
||||||
|
mac = macs[id_dev][0]
|
||||||
|
if not mac:
|
||||||
|
continue
|
||||||
|
new_hid = "{}-{}".format(hid, mac)
|
||||||
|
|
||||||
|
sql = f"update {get_inv()}.device set hid='{new_hid}' where id={id_dev};"
|
||||||
|
con.execute(sql)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
pass
|
Reference in New Issue