Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this worked example, we will produce the same CSV file output as in the first PowerShell worked example

...

Code Block
languagepy
import requests

r = requests.get('http://vm-mike-2012b/api/v1/devices',auth=('admin','password'))
max = r.headers['X-fetch-count']
data = r.json()
count = len(data)

By default the REST API "/api/v1/devices" page will return 200 devices at a time. We can increase or decrease this using the "fetch_size" parameter. The variable max contains the total number of devices. If this is more than 200 we would need to fetch a second batch - see other worked examples in this series for more details on that. In this example we will print at most 200. data holds the RestAPI data converted into a Python data structure, count is the number of devices returned.

...

We then print off the hostname, ram and cpu info seperated by commas. Unlike in the PowerShell example linked above - we simply send the output to the screen/standard output rather than to a file 

 Completed Code

Code Block
languagepy
#
# RestAPI duplicate the PowerShell example in Python
#
import requests
# Set this to your own host name/login/password)
r = requests.get('http://vm-mike-2012b/api/v1/devices',auth=('admin','password'))
max = r.headers['X-fetch-count']
data = r.json()
count = len(data)
i = 0
print ('Host,RAM,CPU Type')
while (i < count):
  row = data[i]
  if ( 'host_name' in row ):
    hostname = row['host_name']
  else:
    hostname = '(no hostname)'
	
  url2 = row['self']
  r2 = requests.get(url2,auth=('admin','password'))
  device = r2.json()
  if ('total_memory_mb' in device):
    ram = device['total_memory_mb']
  else:
    ram = '(unknown ram)'

  if ('cpu' in device):
    
    cpu = device['cpu'][0]['cpu_model']
  else:
    cpu = '(unknown cpu)'

  # remove commas from the cpu string
  cpu = cpu.replace(',','')
  print (hostname,',',ram,',',cpu,sep='')
  i+=1


Info

Filter by label (Content by label)
showLabelsfalse
max5
spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@1fb5c7
showSpacefalse
sortmodified
reversetrue
typepage
cqllabel = "restapi" and type = "page" and space = "CSKB"
labelsRestAPI

...