Menggunakan REST di ENM Ericsson dengan Python

Halo Belum lama berselang, Ericsson merilis sistem manajemen Ericsson Network Manager ( ENM ) yang baru, yang telah muncul di beberapa operator seluler. Akan menarik untuk memilah beberapa pertanyaan tentang bekerja dengannya dan, dalam artikel ini, kami akan menyentuh masalah bekerja dengan Antarmuka Northbound, yang belum pernah terlihat sebelumnya (di OSS-RC), yaitu RESTful API. Kami akan menggunakan python dan perpustakaan permintaan.

Fungsi seperti administrasi pengguna, Impor / Ekspor Massal CM, Fungsi Jaringan Virtual, manajemen koleksi, manajemen sel, dan lainnya tersedia melalui antarmuka REST. Dokumentasi ALEX berisi deskripsi yang cukup terperinci tentang kemampuan API ini tanpa terikat ke bahasa pemrograman. Sebagai contoh, mari kita coba menyambung ke Manajemen Sel NBI menggunakan pustaka permintaan untuk python. Deskripsi antarmuka tersedia di perpustakaan ALEX "Tugas Konfigurasi - CM Northeast REST Antarmuka Manajemen Sel".

Fungsionalitas yang ditentukan memungkinkan Anda untuk mengontrol konfigurasi sel, tetangga di antara mereka, tetangga frekuensi pada node LTE, WCDMA dan GSM dalam satu ENM. Dimungkinkan juga untuk mengelola serah terima baik terhadap ENM tetangga maupun ke OSS-RC.
Antarmuka RESTful tersedia di alamat berikut:

https: // <customer-domain> / konfigurasi-tugas / v1 / tugas

Struktur permintaan JSON adalah:
  • URL Permintaan: "konfigurasi-tugas / v1 / tugas"
  • Jenis Permintaan: POST
  • Jenis Konten: aplikasi / json
  • Badan: sesuai dengan dokumentasi untuk tim yang dipilih.

Dalam python, gunakan objek Sesi dari pustaka permintaan.

import requests import json from requests.packages.urllib3.exceptions import InsecureRequestWarning from requests import Session from requests.exceptions import HTTPError class enmRestSession(Session): 

Kami menimbangnya dengan otorisasi ENM yang diperlukan dan beberapa "pengaturan default".

  def __init__(self, enm, login, password): super().__init__() #  /        self.enm = enm if enm[-1] == "/" else f"{enm}/" #   self.headers.update({"Content-Type": "application/json"}) #   https  self.verify = False #    requests.packages.urllib3.disable_warnings(InsecureRequestWarning) #    ENM login_str = f"{enm}login?IDToken1={login}&IDToken2={password}" rest_response = self.post(login_str) #      if rest_response.status_code != requests.codes.ok: raise HTTPError() 

Mari kita membuat metode untuk mengirim permintaan REST.

  #        request_body def send_configuration_task(self, request_body): url = f"{self.enm}configuration-tasks/v1/tasks" #    POST    URL resp = self.post(url, data=json.dumps(request_body)) return resp 

Tambahkan penutupan sesi otomatis ke ENM saat menggunakan manajer konteks.

  def __exit__(self, exc_type, exc_val, exc_tb): try: #      logout self.get(f"{self.enm}logout") finally: super().__exit__(self, exc_type, exc_val, exc_tb) 

Add-in kecil yang dihasilkan dapat digunakan dalam skrip untuk kebutuhan Anda. Misalnya, menerima semua sel simpul 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()) 

Semua pertanyaan yang mungkin dijelaskan di perpustakaan ALEX di atas. Saya rasa saya tidak bisa menerbitkannya di mana saja, tetapi saya akan mencoba menjawab beberapa pertanyaan. Kode lengkap tersedia di GitHub . Terima kasih kepada semua orang yang membaca.

Source: https://habr.com/ru/post/id465691/


All Articles