Source code for az_k8s_operations.report


from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.compute import ComputeManagementClient
from azure.mgmt.rdbms.mysql import MySQLManagementClient
from azure.mgmt.rdbms.postgresql import PostgreSQLManagementClient
from azure.mgmt.sql import SqlManagementClient

[docs]def getVmDetails(credentials, subscription, rgName, vmName ): """ Retrieve dict containing VM details """ print ("== Start of getVmDetails for "+subscription['name']+" "+rgName+" "+vmName+"==") client = ComputeManagementClient(credentials, subscription['id']) result=client.virtual_machines.get(rgName,vmName) StopHour = '' EnableWe = '' myOs = '' if result.tags: if 'StopHour' in result.tags: StopHour = str(result.tags['StopHour']) if 'EnableWe' in result.tags: EnableWe = str(result.tags['EnableWe']) if result.storage_profile: myOs = str(result.storage_profile.image_reference.publisher)+"="\ +str(result.storage_profile.image_reference.offer)+"="\ +str(result.storage_profile.image_reference.sku) vmDetail = { 'subscription':subscription['name'], 'rgName':rgName, 'vmName':vmName, 'Type':result.hardware_profile.vm_size, 'os': myOs, 'osDiskSizeGb':result.storage_profile.os_disk.disk_size_gb, 'nbDataDisk':len(result.storage_profile.data_disks), 'nbNic':len(result.network_profile.network_interfaces), 'StopHour':StopHour, 'EnableWe':EnableWe } print ("== End of getVmDetails for "+subscription['name']+" "+rgName+" "+vmName+"==") return vmDetail
[docs]def getSqlDetails(credentials, subscription, rgName, serverName ): """ Retrieve dict containing Db details """ print ("== Start of getSqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") client = SqlManagementClient(credentials, subscription['id']) result = client.servers.get(rgName, serverName) resultdb = client.databases.list_by_server(rgName, serverName) nb = 0 listDb='' for db in resultdb: nb+=1 listDb += db.name+", " dbDetail={ 'subscription':subscription['name'], 'rgName':rgName, 'serverName':serverName, 'type':result.sku.name, 'version':"Mysql "+result.version, 'nbDb': nb, 'listDb': listDb, 'backup_retention_days': result.storage_profile.backup_retention_days, 'geo_redundant_backup': result.storage_profile.geo_redundant_backup, 'storage_mb': result.storage_profile.storage_mb } print ("== End of getSqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") return dbDetail
[docs]def getPSqlDetails(credentials, subscription, rgName, serverName ): """ Retrieve dict containing Db details """ print ("== Start of getPSqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") client = PostgreSQLManagementClient(credentials, subscription['id']) result = client.servers.get(rgName, serverName) resultdb = client.databases.list_by_server(rgName, serverName) nb = 0 listDb='' for db in resultdb: nb+=1 listDb += db.name+", " dbDetail={ 'subscription':subscription['name'], 'rgName':rgName, 'serverName':serverName, 'type':result.sku.name, 'version':"Mysql "+result.version, 'nbDb': nb, 'listDb': listDb, 'backup_retention_days': result.storage_profile.backup_retention_days, 'geo_redundant_backup': result.storage_profile.geo_redundant_backup, 'storage_mb': result.storage_profile.storage_mb } print ("== End of getPSqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") return dbDetail
[docs]def getMySqlDetails(credentials, subscription, rgName, serverName ): """ Retrieve dict containing Db details """ print ("== Start of getMySqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") client = MySQLManagementClient(credentials, subscription['id']) result = client.servers.get(rgName, serverName) resultdb = client.databases.list_by_server(rgName, serverName) nb = 0 listDb='' for db in resultdb: nb+=1 listDb += db.name+", " dbDetail={ 'subscription':subscription['name'], 'rgName':rgName, 'serverName':serverName, 'type':result.sku.name, 'version':"Mysql "+result.version, 'nbDb': nb, 'listDb': listDb, 'backup_retention_days': result.storage_profile.backup_retention_days, 'geo_redundant_backup': result.storage_profile.geo_redundant_backup, 'storage_mb': result.storage_profile.storage_mb } print ("== End of getMySqlDbDetails for "+subscription['name']+" "+rgName+" "+serverName+"==") return dbDetail
[docs]def getResourcesFromAppName(credentials, subscription, AppName): """ Retrieves a list of resources in Azure that contain a specific tag with a certain value. :param credentials: Credential to login. :param subscription_id: Subscription id. :param AppName: The AppName in CMDB. :return: A list of resources matching the tag criteria """ print ("== Start of getResourcesFromAppName for "+subscription['name']+"==") listResources=[] listVmsDetail=[] listMySqlDetail=[] listPSqlDetail=[] listSqlDetail=[] client = ResourceManagementClient(credentials, subscription['id']) myFilter="tagName eq 'AppName' and TagValue eq '"+AppName+"'" for rg in client.resource_groups.list(filter=myFilter): for resource in client.resources.list_by_resource_group(rg.name): line = rg.name+" ;"+resource.name+" ;"+resource.type+" ;"+resource.location+" ;"\ +str(resource.kind)+" ;" skuName = '' skuTier = '' skuCapacity = '' if resource.sku: skuName = str(resource.sku.name) skuTier = str(resource.sku.tier) skuCapacity = str(resource.sku.capacity) # if str(resource.type) == 'Microsoft.Sql/servers/databases': # listSqlDetail.append(getSqlDetails(credentials,subscription,rg.name,resource.name)) if str(resource.type) == 'Microsoft.Compute/virtualMachines': listVmsDetail.append(getVmDetails(credentials,subscription,rg.name,resource.name)) if str(resource.type) == 'Microsoft.DBforMySQL/servers': listMySqlDetail.append(getMySqlDetails(credentials,subscription,rg.name,resource.name)) listResources.append({'subcription':subscription['name'],'rgName':rg.name,\ 'name':resource.name,'type':str(resource.type),'location':str(resource.location),\ 'kind':str(resource.kind),'skuName':skuName,'skuTier':skuTier,\ 'skuCapacity':skuCapacity}) print ("== End of gerResourcesFromAppName==") return [listResources,listVmsDetail, listMySqlDetail]