Advertisement
Guest User

Untitled

a guest
Dec 15th, 2018
293
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.55 KB | None | 0 0
  1. from os import environ as env
  2. from keystoneauth1 import loading
  3. from keystoneauth1 import session
  4. from novaclient import client as nvclient
  5. from cinderclient import client as cdclient
  6. from keystoneclient import client as ksclient
  7. import pymysql
  8. import time
  9.  
  10.  
  11. #################Openstack COnnection######################
  12.  
  13. loader = loading.get_plugin_loader('password')
  14. auth = loader.load_from_options(auth_url=env['OS_AUTH_URL'],username=env['OS_USERNAME'],password=env['OS_PASSWORD'],project_id='1760223f21b241979daf7a12b1af7b60',  user_domain_name=env['OS_USER_DOMAIN_NAME'])
  15. sess = session.Session(auth=auth)
  16. nova = nvclient.Client('2', session=sess)
  17. cinder = cdclient.Client('2', session=sess)
  18. keystone = ksclient.Client('3', session=sess)
  19.  
  20. #########Database Connection##########################
  21.  
  22. connection = pymysql.connect(host='localhost', user='root', password='Ro3118086', db='billing', charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
  23.  
  24. ######## General List ####################################
  25.  
  26. instances=nova.servers.list(search_opts={'all_tenants': 1})
  27. flavors_list=nova.flavors.list()
  28. users=keystone.users.list()
  29. volumes=cinder.volumes.list(search_opts={'all_tenants': 1})
  30.  
  31. ###############Cycles to be executed#################################
  32.  
  33. def find_dbobject_by_id (table_name,column_id,value_id):
  34.     cursor=connection.cursor()
  35.     sql_query=f"SELECT COUNT(1) AS QTY FROM {table_name} where {column_id} = '{value_id}'"
  36.     cursor.execute(sql_query)
  37.     qty=0
  38.     for row in cursor:
  39.         qty=row['QTY']
  40.     return qty
  41.  
  42.  
  43. for flavor in flavors:
  44.     flavor_id=flavor.id
  45.     flavor_name=flavor.name
  46.     qty=find_dbobject_by_id("flavor","id", flavor_id)
  47.     if qty == 0 :
  48.         sql= ("INSERT INTO flavor (id,name) VALUES (%s,%s)")
  49.         cursor.execute(sql,(flavor_id,flavor_name))
  50.         connection.commit()
  51.     elif qty ==1 :
  52.         sql_2= "UPDATE flavor set name = %s where id = %s"
  53.         cursor.execute(sql_2,(flavor_name,flavor_id))
  54.         connection.commit()
  55.     else:
  56.         print(f"Flavor ID : {flavor_id} appear {qty} times")
  57.  
  58. for user in users:
  59.     user_id=user.id
  60.     user_name=user.name
  61.     qty=find_dbobject_by_id("user","id", user_id)
  62.     if qty == 0 :
  63.         sql= ("INSERT INTO user (id,name) VALUES (%s,%s)")
  64.         cursor.execute(sql,(user_id,user_name))
  65.         connection.commit()
  66.     elif qty ==1 :
  67.         sql_2= "UPDATE user set name = %s where id = %s"
  68.         cursor.execute(sql_2,(user_name,user_id))
  69.         connection.commit()
  70.     else:
  71.         print(f"Flavor ID : {user_id} appear {qty} times")
  72.  
  73. for volume in volumes:
  74.     volume_id=volume.id
  75.     volume_name=volume.name
  76.     volume_type=volume.volume_type
  77.     volume_size=volume.size
  78.     volume_project_id=volume.to_dict()['os-vol-tenant-attr:tenant_id']
  79.     if qty == 0 :
  80.         sql= ("INSERT INTO volume (id,name,type,size,project_id) VALUES (%s,%s,%s,%s,%s)")
  81.         cursor.execute(sql,(volume_id,volume_name,volume_type,volume_size,volume_project_id))
  82.         connection.commit()
  83.     elif qty ==1 :
  84.         sql_2= "UPDATE user set name = %s, type = %s, size = %s,project_id= %s where id = %s"
  85.         cursor.execute(sql_2,(volume_name,volume_type,volume_size,volume_project_id,volume_id))
  86.         connection.commit()
  87.     else:
  88.         print(f"Flavor ID : {user_id} appear {qty} times")
  89.  
  90.  
  91.  
  92.  
  93. for instance in instances:
  94.  
  95.     instance_name=instance.name
  96.     instance_id=instance.id
  97.     instance_flavor_id=instance.flavor['id']
  98.     instance_project_id=instance.tenant_id
  99.     instance_status=instance.status
  100.     instance_created=instance.created
  101.     instance_updated=instance.updated
  102.     flavors=nova.flavors.get(flavor=instance.flavor['id'])
  103.     volumes= instance.to_dict()['os-extended-volumes:volumes_attached']
  104.     qty=find_dbobject_by_id("server","id", instance_id)
  105.     for volume in volumes:
  106.         instance_volume_id=volume['id']
  107.         if qty == 0 :
  108.             sql= ("INSERT INTO server_volume (server_id,volume_id) VALUES (%s,%s)")
  109.             cursor.execute(sql,(instance_id,instance_volume_id))
  110.             connection.commit()
  111.         elif qty ==1 :
  112.             sql_2= "UPDATE server_volume set volume_id = %s where server_id = %s"
  113.             cursor.execute(sql_2,(instance_volume_id,instance_id))
  114.             connection.commit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement