예제 #1
0
파일: monitor.py 프로젝트: madpabz/KUBaM
def get_server_status_ucsm(sg, wanted):
    """
    Get the UCS Manager Server status 
    """
    try:
        handle = UCSUtil.ucs_login(sg)
    except KubamError as e:
        UCSUtil.ucs_logout(handle)
        return jsonify({"error": str(e)}), Const.HTTP_BAD_REQUEST

    try:
        all_servers = UCSServer.list_servers(handle)
        if not wanted == "all":
            all_servers = UCSUtil.servers_to_objects(all_servers, wanted)
        # put in dn name format
        status = {}
        for i in all_servers:
            status[i['dn']] = i
        out = UCSUtil.dn_hash_to_out(status)
    except KubamError as e:
        UCSUtil.ucs_logout(handle)
        return jsonify({"error": str(e)}), Const.HTTP_BAD_REQUEST

    UCSUtil.ucs_logout(handle)
    return jsonify({"servers": out}), Const.HTTP_OK
예제 #2
0
def servers_to_objects(handle, servers):
    """
    Get the servers from the API and turn them into the UCS objects
    So we can do operations on them. 
    """
    ucs_servers = UCSServer.list_servers(handle)
    return UCSUtil.servers_to_objects(ucs_servers, servers)
예제 #3
0
 def list_ucsm(handle, wanted):
     """
     Get all the drives of the servers listed and print them out. 
         and stuff.
     """
     try:
         all_servers = UCSServer.list_servers(handle)
         ucs_servers = UCSUtil.servers_to_objects(all_servers, wanted)
     except KubamError as e:
         UCSUtil.ucs_logout(handle)
         return {"error": str(e)}, Const.HTTP_BAD_REQUEST
     disks = {} 
     from ucsmsdk.mometa.storage.StorageLocalDisk import StorageLocalDisk
     for i in ucs_servers:
         try:
             server_disks = UCSServer.list_disks(handle, i)
             disks[i['dn']] = []
             for d in server_disks:
                 # d.__dict__ flattens the object to a dictionary. 
                 kv = d.__dict__
                 kv = dict((key, value) for key, value in kv.iteritems() if not key.startswith('_') )
                 disks[i['dn']].append( kv)
         except KubamError as e:
             UCSUtil.ucs_logout(handle)
             return {"error": str(e)}, Const.HTTP_BAD_REQUEST
     
     out = UCSUtil.dn_hash_to_out(disks)
     UCSUtil.ucs_logout(handle)
     return out, Const.HTTP_OK
예제 #4
0
 def delete_ucsm(handle, wanted):
     try:
         all_servers = UCSServer.list_servers(handle)
         ucs_servers = UCSUtil.servers_to_objects(all_servers, wanted)
     except KubamError as e:
         UCSUtil.ucs_logout(handle)
         return {"error": str(e)}, Const.HTTP_BAD_REQUEST
     return {"status":"ok"}, 201
     from ucsmsdk.mometa.storage.StorageLocalDisk import StorageLocalDisk
     for i in ucs_servers:
         try:
             UCSServer.reset_disks(handle, i)
         except KubamError as e: 
             UCSUtil.ucs_logout(handle)
             return {"error": str(e)}, Cont.HTTP_BAD_REQUEST
     return {"status" : "ok"}, 201
예제 #5
0
def powerstat_ucsm(sg, wanted_servers):
    """
    Get the power stat of the UCS Manager servers.
    """
    try:
        handle = UCSUtil.ucs_login(sg)
    except KubamError as e:
        return jsonify({"error": str(e)}), Const.HTTP_UNAUTHORIZED
    try: 
        powerstat = UCSServer.list_servers(handle)
        if not wanted_servers == "all":
            powerstat = UCSUtil.servers_to_objects(powerstat, wanted_servers)
        powerstat = UCSUtil.objects_to_servers(powerstat, ["oper_power"])
    except KubamError as e:
        UCSUtil.ucs_logout(handle)
        return jsonify({"error": str(e)}), Const.HTTP_UNAUTHORIZED
    UCSUtil.ucs_logout(handle)
    return powerstat
예제 #6
0
def get_servers(server_group):
    """
    List all the servers in the server group
    or in this case the domain. 
    1. Make call to UCS to grab the servers. 
    2. Make call to database to see which ones are selected.
    3. Call servers_to_api which merges the two adding 'selected: true' to the servers that are selected.
    """
    db = YamlDB()
    try:
        sg = db.get_server_group(Const.KUBAM_CFG, server_group)
    except KubamError as e:
        return jsonify({"error": str(e)}), Const.HTTP_BAD_REQUEST

    if sg['type'] == "ucsm":
        try:
            handle = UCSUtil.ucs_login(sg)
        except KubamError as e:
            return jsonify({"error": str(e)}), Const.HTTP_UNAUTHORIZED
        ucs_servers = UCSServer.list_servers(handle)
        UCSUtil.ucs_logout(handle)
    elif sg['type'] == 'ucsc':
        try:
            handle = UCSCUtil.ucsc_login(sg)
        except KubamError as e:
            return jsonify({"error": str(e)}), Const.HTTP_UNAUTHORIZED
        ucs_servers = UCSCServer.list_servers(handle)
        UCSCUtil.ucsc_logout(handle)

    # Gets a hash of severs of form:
    # {blades: ["1/1", "1/2",..], rack: ["6", "7"]}
    err, msg, db_servers = db.get_ucs_servers(Const.KUBAM_CFG, server_group)
    if err != 0:
        return jsonify({"error": msg}), Const.HTTP_BAD_REQUEST
    if db_servers is None:
        return jsonify({"servers": ucs_servers})

    ucs_servers = UCSUtil.servers_to_api(ucs_servers, db_servers)
    if err != 0:
        return jsonify({"error": msg}), Const.HTTP_BAD_REQUEST
    return jsonify({"servers": ucs_servers}), Const.HTTP_OK
예제 #7
0
파일: monitor.py 프로젝트: madpabz/KUBaM
def ucs_fsm(sg, wanted):
    """
    Pass in the server group to get the fsm of the servers
    """
    try:
        handle = UCSUtil.ucs_login(sg)
    except KubamError as e:
        return jsonify({"error": str(e)}), Const.HTTP_BAD_REQUEST

    try:
        all_servers = UCSServer.list_servers(handle)
        if not wanted == "all":
            all_servers = UCSUtil.servers_to_objects(all_servers, wanted)
        # put in dn name format
        status = {}
        for i in all_servers:
            status[i['dn']] = UCSMonitor.get_fsm(handle, i)
        out = UCSUtil.dn_hash_to_out(status)
    except KubamError as e:
        UCSUtil.ucs_logout(handle)
        return jsonify({"error": str(e)}), Const.HTTP_BAD_REQUEST

    UCSUtil.ucs_logout(handle)
    return jsonify({"servers": out}), Const.HTTP_OK
예제 #8
0
 def test_serverlist(self):
     servers = UCSServer.list_servers(self.handle)
     # print servers
     assert (servers != "")