I’m not a developer. There I said it.
I’m a presales technologist, architect, and consultant.
But I do have a BS in Computer Science. Way back there in my hind brain, there exists the ability to lay down some LOC.
I was inspired today by a peer of mine Sean Cummins (@scummins), another Principal within EMC’s global presales organization. He posted an internal writeup of connecting to the VMAX storage array REST API to pull statistics and configuration information. Did you know there is a REST API for a Symmetrix?! Sad to say most people don’t.
He got me hankering to try something, so I plunged into Python for the first time, and as my first example project, I attached to Google’s public geocoding API to map street addresses to Lat/Lng coordinates. (Since I don’t have a VMAX in the basement)
So here it is. I think it’s a pretty good first project to learn a few new concepts. I’ll figure out the best way to parse a JSON package eventually. Anyone have any advise?
################### # Example usage ################### $ ./geocode.py Enter your address: 2850 Premiere Parkway, Duluth, GA 2850 Premiere Parkway, Duluth, GA 30097, USA is at lat: 34.002958 lng: -84.092877 ################### # First attempt at parsing Google's rest api ################### #!/usr/bin/python import requests # module to make html calls import json # module to parse JSON data addr_str = raw_input("Enter your address: ") maps_url = "https://maps.googleapis.com/maps/api/geocode/json" is_sensor = "false" # do you have a GPS sensor? payload = {'address': addr_str, 'sensor': is_sensor} r = requests.get(maps_url,params=payload) # store the json object output maps_output = r.json() # create a string in a human readable format of the JSON output for debugging #maps_output_str = json.dumps(maps_output, sort_keys=True, indent=2) #print(maps_output_str) # once you know the format of the JSON dump, you can create some custom # list + dictionary parsing logic to get at the data you need to process # store the top level dictionary results_list = maps_output['results'] result_status = maps_output['status'] formatted_address = results_list[0]['formatted_address'] result_geo_lat = results_list[0]['geometry']['location']['lat'] result_geo_lng = results_list[0]['geometry']['location']['lng'] print("%s is at\nlat: %f\nlng: %f" % (formatted_address, result_geo_lat, result_geo_lng))
Scott, you have in turn inspired me to make my internal writeup external 😉
Hi Scott,
Very interesting article. I am a VMAX Admin trying to work on my scripting skills.
So far, I have been able to write Perl Scripts that run commands, filter outputs using the Perl Regex( Love the Perl RE, its awesome), and mail the outputs.
I’m not able to decide if I should stick only to Perl and go in depth, or learn Python as well, so that I have decent proficiency in two scripting languages.
What do you suggest?
learn python. It’s one of the languages of the “cloud”