Can you pull network status information from the Softlayer API? -


we interested in using api information found on network > status > local page.

does api allow this?

thank you

yes possible, there no single api call returns result. need routers in account.

here code (it using python client)

""" network status local  script displays same information https://control.softlayer.com/network/status/local page.  important manual pages https://sldn.softlayer.com/reference/services/softlayer_account/ https://sldn.softlayer.com/reference/services/softlayer_account/getobject https://sldn.softlayer.com/reference/datatypes/softlayer_hardware """ import softlayer import json   def getracks(networkhardware, routerstatus):     """retrieves racks information.        :param softlayer_hardware networkhardware: network hardware downstream.        :param softlayer_hardware routerstatus: routers in account contains network incidents.     """     racks = []     if 'downstreamnetworkhardware' in networkhardware:         network in networkhardware['downstreamnetworkhardware']:             rack = {}             if 'cs' in network['hostname']:                 rack['name'] = network['hostname'] + '.' + network['domain']                 rack['type'] = network['hardwarechassis']['hardwarefunction']['code']                 rack['status'] = getaggregationrackstatus(network, routerstatus)                 racks.append(rack)     return racks   def getaggregationrackstatus(networkhardware, routerstatus):     """retrieves status racks , aggregation hardware.        :param softlayer_hardware networkhardware: network hardware downstream.        :param softlayer_hardware routerstatus: routers in account contains network incidents.     """     if 'downstreamnetworkhardwarewithincidents' in routerstatus:         incident in routerstatus['downstreamnetworkhardwarewithincidents']:             if incident['hostname'] == networkhardware['hostname']:                 return incident['networkstatus']     else:         return routerstatus['networkstatus']   def getaggregation(router, routerstatus):     """retrieves racks information.        :param softlayer_hardware router: router hardware.        :param softlayer_hardware routerstatus: routers in account contains network incidents.     """     aggregations = []     if 'downstreamnetworkhardware' in router:         networkhardware in router['downstreamnetworkhardware']:             aggregation= {}             if 'as' in networkhardware['hostname']:                 aggregation['name'] = networkhardware['hostname'] + '.' + networkhardware['domain']                 aggregation['type'] = networkhardware['hardwarechassis']['hardwarefunction']['code']                 aggregation['status'] = getaggregationrackstatus(networkhardware, routerstatus)                 aggregation['rack'] = getracks(networkhardware, routerstatus)                 aggregations.append(aggregation)     return aggregations   username = 'set me' api_key = 'set me'  # declares api client client = softlayer.client() accountservice = client['softlayer_account']  objectmask = "mask[id,routers[id,hardwarechassis[manufacturer,name,hardwarefunction[code,description]],hostname,domain,networkstatus,networkmonitorattacheddownvirtualguestcount,networkmonitorattacheddownhardwarecount,downstreamnetworkhardware[downstreamnetworkhardware,hostname,domain,hardwarechassis[manufacturer,name,hardwarefunction[code,description]]]]]" objectmaskstatus = "mask[networkmonitordownvirtualguestcount,networkmonitordownhardwarecount,routers[downstreamnetworkhardwarewithincidents[hardwarechassis[hardwarefunction], networkstatus]]]"  try:     response = accountservice.getobject(mask=objectmask)     responsestatus = accountservice.getobject(mask=objectmask) except softlayer.softlayerapierror e:     print("unable account. faultcode=%s, faultstring=%s" % (e.faultcode, e.faultstring))   routers = [] in range(0, len(response['routers'])):     router = response['routers'][i]     routerstatus = responsestatus['routers'][i]     device = {}     device['name'] = router['hostname'] + "." + router['domain']     device['type'] = router['hardwarechassis']['hardwarefunction']['code']     device['status'] = router['networkstatus']     device['aggregation'] = getaggregation(router, routerstatus)     device['routerstatus'] = routerstatus['id']     device['id'] = router['id']     routers.append(device)  print(json.dumps(routers, sort_keys=true, indent=2, separators=(',', ': '))) 

Comments

Popular posts from this blog

android - Why am I getting the message 'Youractivity.java is not an activity subclass or alias' -

python - How do I create a list index that loops through integers in another list -

c# - “System.Security.Cryptography.CryptographicException: Keyset does not exist” when reading private key from remote machine -