Skip to content

Instantly share code, notes, and snippets.

@vallard
Created June 8, 2018 19:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save vallard/249bd206120074d2d02b6b8f7c4187f8 to your computer and use it in GitHub Desktop.
Save vallard/249bd206120074d2d02b6b8f7c4187f8 to your computer and use it in GitHub Desktop.
UCS SDK List Servers or Service Profiles example
from ucsmsdk.ucshandle import UcsHandle
from ucsmsdk.ucsexception import UcsException
from urllib2 import HTTPError
import argparse
import os, sys
def ucs_login(username, password, server):
handle = UcsHandle(server, username, password)
try:
handle.login()
except UcsException as err:
print "Login Error: " + err.error_descr
sys.exit()
except HTTPError as err:
print "Connection Error: Bad UCSM? " + err.reason
sys.exit()
except:
print "Issue logging in. Please check that all parameters are correct"
sys.exit()
return handle
def ucs_logout(handle):
handle.ucs_logout()
def get_model(handle, server):
if server == "":
return
def list_servers(handle):
from ucsmsdk.mometa.compute.ComputeRackUnit import ComputeRackUnit
from ucsmsdk.mometa.compute.ComputeBlade import ComputeBlade
blades = handle.query_classid(class_id="ComputeBlade")
servers = handle.query_classid(class_id="ComputeRackUnit")
m = blades + servers
all_servers = []
for i, s in enumerate(m):
if type(s) is ComputeBlade:
all_servers.append({
'type': "blade",
'label': s.usr_lbl,
'chassis_id': s.chassis_id,
'slot': s.rn.replace("blade-", ""),
'model': s.model,
'association': s.association,
'service_profile': s.assigned_to_dn,
'ram_speed': s.memory_speed,
'num_cpus': s.num_of_cpus,
'num_cores': s.num_of_cores,
'ram': s.total_memory
})
if type(s) is ComputeRackUnit:
all_servers.append({
'type': "rack",
'label': s.usr_lbl,
'rack_id': s.rn.replace("rack-unit-", ""),
'model': s.model, 'association': s.association,
'service_profile': s.assigned_to_dn,
'ram_speed': s.memory_speed,
'num_cpus': s.num_of_cpus,
'num_cores': s.num_of_cores,
'ram': s.total_memory
})
return all_servers
def list_sp(handle):
#filter_str = "(type, 'initial-template', type='eq') or (type, 'updating-template', type='eq')"
templates = []
filter_str = ""
try:
query = handle.query_classid("lsServer", filter_str=filter_str)
templates = list()
for q in query:
print(q)
get_model(q.pn_dn)
templates.append({"name": q.dn})
return templates
except UcsException as e:
print(e)
def main():
global handle
parser = argparse.ArgumentParser(description="Example")
parser.add_argument("user", help='The user account to log into UCS: e.g.: admin')
parser.add_argument("password", help='The password to connect to UCS: e.g.: cisco123')
parser.add_argument("server", help='UCS Manager: e.g: 192.168.3.1')
args = parser.parse_args()
handle = ucs_login(args.user, args.password, args.server)
#ss = list_sp(handle)
ss = list_servers(handle)
for s in ss:
print(s)
handle.logout()
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment