مرحبا منذ وقت ليس ببعيد ، أصدرت شركة Ericsson نظام إدارة Ericsson Network Manager (
ENM ) الجديد ، والذي ظهر بالفعل في بعض شركات تشغيل الأجهزة المحمولة. سيكون من المثير للاهتمام تحليل بعض الأسئلة حول التعامل معها ، وفي هذه المقالة ، سنتطرق إلى مسألة العمل مع واجهة الشمال المتجه ، والتي لم تتم مواجهتها سابقًا (في OSS-RC) ، أي واجهة برمجة تطبيقات RESTful. سوف نستخدم بيثون ومكتبة الطلبات.
تتوفر وظائف مثل إدارة المستخدم و CM Bulk Import / Export و Virtual Network Function وإدارة المجموعة وإدارة الخلية والمزيد من خلال واجهة REST. تحتوي وثائق ALEX على وصف تفصيلي إلى حد ما لقدرات واجهة برمجة التطبيقات هذه دون ربطها بلغة برمجة. على سبيل المثال ، دعونا نحاول الاتصال بـ NBI Cell Management باستخدام مكتبة الطلبات الخاصة ببيثون. يتوفر وصف الواجهة في مكتبة ALEX "مهام التكوين - إدارة خلايا CM REST Northbound Interface".
تسمح لك الوظيفة المحددة بالتحكم في تكوين الخلايا ، والجوار بينها ، وجيران التردد على العقد LTE ، و WCDMA و GSM ضمن ENM واحد. من الممكن أيضًا إدارة عمليات التسليم في اتجاه ENM المجاور ونحو OSS-RC.
تتوفر واجهة RESTful على العنوان التالي:
https: // <customer-domain> / التكوين - مهام / v1 / مهام
هيكل طلب JSON هو:
- طلب عنوان URL: "config -asks / v1 / مهام"
- نوع الطلب: POST
- نوع المحتوى: application / json
- الجسم: وفقا لوثائق الفريق المحدد.
في بيثون ، استخدم كائن الجلسة من مكتبة الطلبات.
import requests import json from requests.packages.urllib3.exceptions import InsecureRequestWarning from requests import Session from requests.exceptions import HTTPError class enmRestSession(Session):
نحن نثقلها بترخيص ENM المطلوب وبعض "الإعدادات الافتراضية".
def __init__(self, enm, login, password): super().__init__()
لنجعل طريقة لإرسال طلب REST.
إضافة إغلاق الجلسة التلقائي إلى ENM عند استخدام مدير السياق.
def __exit__(self, exc_type, exc_val, exc_tb): try:
يمكن استخدام الوظيفة الإضافية الصغيرة الناتجة في البرامج النصية لتلبية احتياجاتك. على سبيل المثال ، تلقي جميع خلايا عقدة RNC.
def main(): param = {"name": "readCells", "fdn": "NetworkElement=RNC01"} with enmRestSession( "https://iegtbl8030-7.gtoss.eng.ericsson.se/", "login", "pass" ) as s: print(s.send_configuration_task(param).json())
يتم وصف جميع الاستعلامات الممكنة في مكتبة ALEX أعلاه. لا أعتقد أنه يمكنني نشرها في أي مكان ، لكنني سأحاول الإجابة على بعض الأسئلة. الرمز الكامل متاح في
جيثب . شكرا لكل من يقرأ