Skip to main content
Skip table of contents

Python

Die folgenden Beispiele wurden mit Python 3 getestet. Um sich bei Pathfinder Server zu authentifizieren, müssen Sie einen API-Schlüssel verwenden.

Verbindungstest mit PFS (authentifizierte und nicht authentifizierte Endpunkte)

PY
import json
from types import SimpleNamespace
from urllib.error import HTTPError
import requests
import urllib3

baseUrl = "https://localhost:8087/api/v1.0/" # <- address of your Pathfinder-Server
apiKey = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" # <- put your API-key here

endpointStatus = "info/status"
endpointPing = "info/status/ping"

# get a deserialized result from PFS
def pfs_get(endpoint: str):
    try:
        get_result = requests.get(baseUrl + endpoint,
                                  verify=False, headers={'Authorization': 'Bearer ' + apiKey})
    except HTTPError as http_error:
        print(f"HTTP error occured: {http_error}")
    except Exception as exc:
        print(f"Exception occured: {exc}")
    else:
        if get_result.status_code == 200:
            result = json.loads(
                get_result.text, object_hook=lambda d: SimpleNamespace(**d))
            return result
        elif get_result.status_code == 401:
            print("Authentication error (401)")
            return
        else:
            print(f"An error occured. Status code {get_result.status_code}")
            return

def get_success(object):
    if object:
        return "OK"
    else:
        return "Failed"

def main():
    # suppresses warning about self signed certificate, don't use in production
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

    print("Call without authorization...")
    print(get_success(pfs_get(endpointStatus)))
    print("Call with authorization...")
    print(get_success(pfs_get(endpointPing)))
    return 0

if __name__ == "__main__":
    main()

Beispielausgabe:

Call without authorization...
OK
Call with authorization...
OK

Anzeige der Netzwege zu einem Port

PY
import json
from types import SimpleNamespace
from urllib.error import HTTPError
import requests
import urllib3

baseUrl = "https://localhost:8087/api/v1.0/" # <- address of your Pathfinder-Server
apiKey = "XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" # <- put your API-key here

endpointNetworkPaths = "infrastructure/ports/{portId}/networkpath"

# get a deserialized result from PFS
def pfs_get(endpoint: str):
    try:
        get_result = requests.get(baseUrl + endpoint,
                                  verify=False, headers={'Authorization': 'Bearer ' + apiKey})
    except HTTPError as http_error:
        print(f"HTTP error occured: {http_error}")
    except Exception as exc:
        print(f"Exception occured: {exc}")
    else:
        if get_result.status_code == 200:
            result = json.loads(
                get_result.text, object_hook=lambda d: SimpleNamespace(**d))
            return result
        elif get_result.status_code == 401:
            print("Authentication error (401)")
            return
        else:
            print(f"An error occured. Status code {get_result.status_code}")
            return

# output details of a nwp
def print_nwp_info(nwp):
    print(f"Id:                {nwp.NetworkPathId}")
    print(f"Name:              {nwp.NetworkPathName}")
    print(f"Start-Location:    {nwp.StartComponentInfo.LocationPath}")
    print(f"Start-Device:      {nwp.StartComponentInfo.ComponentPath}")
    print(f"Start-Port:        {nwp.StartPortName} #{nwp.StartPortNumber}")
    print(f"End-Location:      {nwp.EndComponentInfo.LocationPath}")
    print(f"End-Device:        {nwp.EndComponentInfo.ComponentPath}")
    print(f"End-Port:          {nwp.EndPortName} #{nwp.EndPortNumber}")
    print(f"End-Room:          {nwp.EndComponentInfo.RoomName}")

def main():
    # suppresses warning about self signed certificate, don't use in production
    urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
    portId = 26375
    networkPaths = pfs_get(endpointNetworkPaths.format(portId=portId))
    if (networkPaths):
        nwpCount = len(networkPaths.Items)
        if nwpCount > 0:
            print(f"Number of network paths: {nwpCount}")
            for nwp in networkPaths.Items:
                print_nwp_info(nwp)
            return 0
        else:
            print(f"No network path found for port {portId}")
            return 0
    return -1

if __name__ == "__main__":
    main()

Beispielausgabe:

Number of network paths: 1
Id: 149
Name: NWP Port 17 <-> LAN
Start-Location: Universität>Rechenzentrum>EG-EG>EVT-0001
Start-Device: RACK-01>SW-Nortel ERS 4548 GT-PWR-10
Start-Port: Port 17 #17
End-Location: Universität>Rechenzentrum>EG-EG>0010-0010
End-Device: PC-121
End-Port: LAN #1
End-Room: 0010

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.