Created
June 8, 2018 19:11
-
-
Save vallard/249bd206120074d2d02b6b8f7c4187f8 to your computer and use it in GitHub Desktop.
UCS SDK List Servers or Service Profiles example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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