• No results found

Python scripting for network management: PyMIP - TeMIP made simple

N/A
N/A
Protected

Academic year: 2021

Share "Python scripting for network management: PyMIP - TeMIP made simple"

Copied!
40
0
0

Loading.... (view fulltext now)

Full text

(1)2006:043 HIP. BACHELOR'S THESIS. Python Scripting for Network Management PyMIP - TeMIP made simple. Mats Andersson Robert Wedin. Luleå University of Technology BSc Programmes in Engineering Computer Engineering Department of Skellefteå Campus Division of Mobile Networking and Computing 2006:043 HIP - ISSN: 1404-5494 - ISRN: LTU-HIP-EX--06/043--SE.

(2) Python scripting for network management ”PyMIP - Visual TeMIP made simple” Mats Andersson. Robert Wedin. 31 oktober 2006.

(3) Forord ¨ Syfte med rapporten ¨ a˚ t Data Syftet med denna rapport a¨ r att ge en beskrivning av det examensarbete vi har utfort ¨ Ductus. Den a¨ r a¨ ven t¨ankt att ge utforlig information om vad PyMIP a¨ r, hur det fungerar samt hur det kan anv¨andas.. Erk¨annanden ¨ och hj¨alp av m˚anga m¨anniskor vilka vi vill tacka Under tiden med examensarbetet har vi f˚att stod h¨ar: ¨ den hj¨alp, det stod ¨ och det kamratskap de har gett oss. De har verkliAlla p˚a Data Ductus For gen f˚att oss att trivas under den h¨ar tiden. ¨ att han gav oss chansen att gora ¨ examensarbetet h¨ar p˚a Data Ductus. Urban Lundmark For ¨ den Ulrik Forsgren, Tord Andersson, Stefan Wallin och Andr´e Jonsson For programmeringshj¨alp, de synpunkter och alla tips vi f˚att. Staffan Nilsson Examinator p˚a LTU. Edward Domeij och Fredrik Ahlb¨ack Som alltid fanns till hands och hj¨alpte till med design¨ ¨ fr˚agor, smarta losningar och allm¨ant stod.. ¨ Utan alla er hade PyMIP aldrig varit mojligt!. 1.

(4) Abstract This project was performed by the authors during 10 weeks in the spring of 2006. The primary goal was to produce a python-library as an interface for Visual TeMIP. Visual TeMIP is a C++-API used to develop applications and modules for interfacing with the alarmhandlingsystem, OpenView TeMIP. A secondary goal was to produce a light-weight webserver and webclient to be used by customers that has no need for the full-blown TeMIP-client. The webserver was written entirely in Python, using the PyMIP-library, and the webclient was written in DHTML, using AJAX. An ASCII-based alarmlist written in Python was also made for use by developers and technicians, and to test the functionality of the PyMIP-library. The main purpose of PyMIP is to decrease the time it takes to develop new applications and modules for TeMIP. Since Python is a fast and reliable scripting-language, it has no compilation-time. Also, it’s simplicity and straight-forwardness when it comes to wrapping C++-classes makes it a natural choice for this kind of project.. 2.

(5) Sammanfattning Det huvudsakliga m˚alet var att skapa ett python-bibliotek som fungerar som ett interface till Visual TeMIP. Visual TeMIP a¨ r ett C++-API som anv¨ands till att utveckla applikationer ¨ alarmhanteringssystemet OpenView TeMIP. Ett sekund¨art m˚al var att skaoch moduler for ¨ de mindre kunder som inte har behov av pa en l¨attvikts-webbserver och en webbklient for den fullfj¨adrade TeMIP-klienten. Webbservern skrevs helt i Python och anv¨ande sig av PyMIPbiblioteket, webbklienten skrev i DHTML och AJAX. En ASCII-baserad larmlista skriven i ¨ att anv¨andas av utvecklare och tekniker, samt for ¨ att testa funktionPython gjordes ocks˚a for aliteten i PyMIP. Huvudsyftet med PyMIP var att minska ned p˚a utvecklingstiderna n¨ar man ¨ TeMIP. Eftersom Python a¨ r ett snabbt och tillforlitligt ¨ skapar applikationer och moduler for ¨ dess enkelhet och r¨attframhet n¨ar skriptspr˚ak s˚a har det ingen kompileringstid. Dessutom gor ¨ denna typ av projekt. det g¨aller att wrappa C++-klasser den till ett naturligt val for. 3.

(6) Forklaringar ¨ och begrepp ¨ Vissa ord och uttryck som anv¨ands i rapporten upprepade g˚anger forklaras ytterligare h¨ar. • “wrappa” - Att kapsla in ett objekt s˚a man kan ge det ett nytt interface, till exempel mellan olika spr˚ak. • IDE - Integerated Development Enviroment. • wxWidgets - “Windows and X widgets” a¨ r en open-source, plattformsoberoende verktyg ¨ att skapa grafiska applikationer. for • Python-tolk - Ett program som tolkar python-kod och exekverar den. ¨ en kompilator hur ett objekt ska byggas. • Makefil - En fil som beskriver for ¨ att soka ¨ hj¨alp om funktioner och liknande. • “man” - Unix-kommando for • Metaprogrammering - Metaprogrammering a¨ r skrivandet av program som skriver eller manipulerar andra program (eller sig sj¨alva). ¨ • TeMIP PM - Programmodul som ligger i det oversta skiktet av TeMIP. • OC - Ett Operation Context a¨ r en entitet i TeMIP som anger ett intresseomr˚ade av larm. ¨ att sl˚a upp information om olika entiteter • TeMIP:s dictionary - En databas som anv¨ands for i TeMIP. ¨ att utveckla pseudo-grafiska anv¨andarinterface i konsolmiljo. ¨ • ncurses - Ett bibliotek for • AJAX - Asynchronous JavaScript And XML. • Collection - En samling av ett eller flera OC:s.. 4.

(7) Inneh˚all Forord ¨ Syfte med rapporten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Erk¨annanden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 1 1 1. Inneh˚allsforteckning ¨. 5. 1. Introduktion 1.1 Bakgrund och syfte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 6 6. 2. Genomforande ¨ 2.1 Initialt arbete . . . . . . . . . . . . 2.1.1 Python . . . . . . . . . . . 2.1.2 TeMIP . . . . . . . . . . . 2.1.3 HP-UX och kompilatorer 2.2 Wrappning . . . . . . . . . . . . . 2.2.1 SWIG . . . . . . . . . . . . 2.2.2 Boost.Python . . . . . . . 2.3 Utveckling och tester . . . . . . . 2.3.1 PyMIP Lib . . . . . . . . . 2.3.2 C-to-Python . . . . . . . . 2.3.3 Textlarmlista . . . . . . . . 2.3.4 Webblarmlista . . . . . . . 2.3.5 Korrigeringsfilter . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. . . . . . . . . . . . . .. 7 7 7 7 7 8 8 8 10 11 11 11 13 15. 3. Resultat. 15. 4. Diskussion. 15. 5. Referenser. 17. Bilagor. 18. A Visual TeMIP vs. PyMIP. 18. B HTML-mallar. 21. C Loopaloop. 22. D Uppdragsbeskrivning. 25. E TeMIP. 30. 5.

(8) 1 1.1. Introduktion Bakgrund och syfte. ¨ ¨ att anv¨anda Onskem˚ alet fr˚an Data Ductus var att skapa ett bibliotek, PyMIP, skrivet i Python, for till utveckling av applikationer och moduler till TeMIP. Anledningen till valet av just Python var ¨ med att det a¨ r ett snabbt och robust skriptspr˚ak vilket helt eliminerar kompileringstider j¨amfort traditionell programmering i t.ex. C++. En andra anledning var dess enkelhet n¨ar det g¨aller att wrappa f¨ardiga C++-klasser till fungerande Python-klasser. Se uppdragsbeskrivningen i bilaga D. ¨ ¨ med Visual TeMIP a¨ r att utvecklingstiderna minskas Fordelen med Python och PyMIP j¨amfort ¨ foretaget, ¨ ¨ att d˚a man slipper kompileringstider. Detta sparar b˚ade tid och pengar for mycket for ¨ tester, korrigera fel i existerande kod etc utan att man kan sitta ute hos kunden och genomfora ¨ kompilera om hela systemet. behova ¨ Visual TeMIP samt Python-kod skriven Ett enkelt exempel som visar hur C++-kod skriven for ¨ PyMIP finns att se i bilaga A. for ¨ att det verkade mycket intressant Anledningen till att vi valde detta examensarbete var for och utvecklande. Ingen av oss hade tidigare programmerat i Python men vi var mycket intresser¨ ett interade av att l¨ara oss ett s˚a pass robust skriptspr˚ak. Utmaningen att kunna tillg¨angliggora ¨ oss som face fr˚an en klass i ett spr˚ak, till en annan klass i ett annat spr˚ak k¨andes utvecklande for programmerare.. 6.

(9) 2. Genomforande ¨. 2.1. Initialt arbete. 2.1.1. Python. ¨ Eftersom Python var ok¨ant territorium kr¨avdes det till en borjan en del inl¨asning och experi¨ att f˚a kunskap om hur Python fungerar och alla dess fordelar. ¨ menterande for Pythons hem¨ studier och forst˚ ¨ aelse av Pythonspr˚aket. D¨ar fanns klara sida1 anv¨andes som startpunkt for ¨ beskrivningar av det medfoljande standardbiblioteket, grundl¨aggande funktionalitet samt programmeringstips. ¨ Det forsta vi gjorde var att ladda hem och installera Python samt prova p˚a spr˚aket i den ¨ till att utveckla n˚agot interaktiva kommandotolken. Vi ins˚ag ganska snabbt att den inte dog ¨ som foljde ¨ anv¨andbart i, utan att det var dags att leta efter n˚agot form av IDE. Utvecklingsmiljon ¨ windows var i princip bara en glorifierad texteditor utan funktionmed pythoninstallationen for ¨ ¨ aliteter som automatisk kodkomplettering och n˚agon storre mojlighet att organisera ett projekt. Vi tittade p˚a Boa Constructor samt Wing IDE. Boa Constructor hade f˚att ganska d˚aliga re¨ p˚a det faktum att det var en kommersiell produkt. Vi ville helst komma censioner och Wing foll ¨ ¨ ett IDE. ig˚ang s˚a snabbt som mojligt utan att vara tvungna att betala for Till slut hittade vi SPE2 som var ett gratis verktyg som byggde p˚a wxWidgets och hade funk¨ ¨ att strukturera projekt. Det blev tioner som automatisk kodkomplettering och bra mojligheter for ¨ resten det slutgiltiga valet och den utvecklingsmiljo¨ som vi arbetade i n¨ar det g¨allde Python for av projektet. Python gick fort att l¨ara sig eftersom det a¨ r mycket intuitivt och g˚ar snabbt att prova sig fram ¨ p˚a var att v¨anja i tack vare den interaktiva ´´Python-tolken”. En av de f˚a sv˚arigheter som vi stotte sig vid att Python a¨ r typeless, dvs man deklarerar inte variabler av en viss typ, eftersom typen av variabeln best¨ams vid tilldelning.. 2.1.2. TeMIP. ¨ att s¨atta sig in i TeMIP l¨aste vi dokumentationen for ¨ utvecklare samt dokumentationen for ¨ For TeMIP klienten. Sedan var a¨ ven referensguiden till Visual TeMIP till stor hj¨alp n¨ar det g¨allde att ¨ a hur alla klasser h¨angde ihop och hur hela systemet fungerade. forst˚ ¨ att sammanfatta TeMIP: For ¨ att hantera alarm fr˚an olika typer av enheter, s˚asom basstationer, TeMIP a¨ r ett system for routrar, mobilmaster och liknande. Dessa enheter tar sj¨alva hand om att skicka larm till TeMIP ¨ en larmoperator ¨ n¨ar n˚agot fel har uppst˚att. Larmen hanteras av TeMIP systemet och kan visas for ¨ med hj¨alp av TeMIP klienten. Operatoren hanterar larmen och v¨aljer passande a˚ tg¨arder som till ¨ att laga felet. exempel skicka ut en tekniker for ¨ mer djupg˚aende information om TeMIP samt TeMIP klienten, se bilaga E. For 2.1.3. HP-UX och kompilatorer. ¨ att utveckla och testa PyMIP p˚a var HP-UX. En proDet operativsystem som skulle anv¨andas for priet¨ar Unix-variant som Hewlett Packard utvecklat. Det a¨ r ett stabilt operativsystem, dock med 1 www.python.org 2 Stanis. Python Editor. 7.

(10) vissa kompatibilitets problem som var tvungna att hanteras. Anledningen till att HP-UX skulle ¨ att det fanns en existerande TeMIP-installation p˚a det systemet. anv¨andas var fr¨amst for ¨ att kompilera de wrappade C++Under HP-UX var det aCC som g¨allde som kompilator for klasserna till python-klasser. Att anv¨anda sig av makefiler och konsolbaserade kompilerare var ¨ n˚agot helt nytt vilket innebar en hel del huvudbry till en borjan. Inl¨arningskurvan var ganska ¨ brant d˚a tidigare utveckling endast skett i IDE:s i Windowsmiljo. ¨ Tack vare ”man´´, hj¨alp fr˚an medarbetare och trial-and-error gick alla problem att losa.. 2.2. Wrappning. ¨ ¨ a hur man skulle g˚a till v¨aga for ¨ att Till en borjan gick det a˚ t ett par dagar till att l¨asa och forst˚ ¨ d¨ar fanns en beskrivnskriva Python klasser i C/C++. www.python.org var h¨ar till stor hj¨alp for ¨ ing p˚a hela C API:t samt exempel p˚a hur strukturen av modulerna skulle se ut. Det forsta s¨attet ¨ Python-klasser-i-C exemplet som hittades p˚a n¨amnda sida. Det fungerade vi testade var att folja som det skulle men k¨andes lite klumpigt eftersom det kr¨avdes ganska mycket kodskrivande till ¨ sm˚a klasser. och med for ¨ alternativa metoder. De tv˚a tillv¨agag˚angss¨att Detta ledde till att vi gjorde efterforskningar for som vi hittade var SWIG och Boost.Python.. 2.2.1. SWIG. ¨ Simplified Wrapper and Interface Generator. Det a¨ r ett verktyg som anv¨ands for ¨ SWIG st˚ar for ¨ att t.ex. kunna komma a˚ t ett C++ interface fr˚an andra spr˚ak som att generera wrappningskod for ¨ t.ex. Python, Perl, Ruby etc. Men det stodjer a¨ ven spr˚ak som inte a¨ r skriptbaserade som t.ex. ¨ dem C#. Tanken med det hela a¨ r att man ska kunna ta redan utvecklade kodbibliotek och gora ¨ att f˚a snabbare utveckling med hj¨alp av minskade kompilertillg¨angliga i t.ex. ett skriptspr˚ak for ¨ detta projekt. Till en borjan ¨ ingstider. Det verkade som att det passade perfekt for s˚ag det ut som ¨ allt jobb eftersom det enda som behovdes ¨ ¨ att st¨alla in SWIG var ett att det n¨astan skulle gora for ¨ det skriptspr˚ak man valt. form av mallskript som beskrev hur den skulle generera kod for ¨ a hur det hela fungerade. Detta testades p˚a HP-UX och det tog oss inte s¨arskilt l˚ang tid att forst˚ SWIG generade utifr˚an mallskriptet ett C++ bibliotek och en ren Pythonklass som anv¨ande sig av C++ biblioteket. Detta gav att man fick anv¨anda den C++ klass / bibliotek man valt att wrappa p˚a samma s¨att i Python som man skulle gjort i C++, med vissa spr˚akliga skillnader givetvis. ¨ Det s˚ag till en borjan riktigt bra ut och testades med ett par testklasser som skrevs i C++. Eftersom det fungerade som det borde gjordes vidare tester med Visual TeMIP klasser. H¨ar var ¨ i SWIG for ¨ att hantera arv och mallar. resultaten inte lika goda eftersom att det inte fanns stod Det blev a¨ ven problem med att importera pythonklasserna ifall C++ klassen man valt att wrappa ¨ att inte spilla allt for ¨ mycket tid p˚a detta letade vi anv¨ande sig av vissa standardbibliotek. For ¨ att underl¨atta wrappningen. efter en alternativ metod for. 2.2.2. Boost.Python. Efter lite mer letande p˚a n¨atet och l¨asande av recensioner ins˚ag vi att alla tecken pekade mot ¨ Boost.Python. Boost a¨ r ett open source C++ bibliotek som inneh˚aller olika moduler som okar ¨ datumhantering, Regex m.m. H¨ar fanns a¨ ven en C++:s funktionalitet, t ex f¨ardiga bibliotek for. 8.

(11) modul som hanterade wrappning av C++ klasser till Python p˚a ett smidigt s¨att genom metaprogrammering. Se foljande ¨ exempel: En vanlig C++-funktion som denna: 1 2 3. char c o n s t ∗ g r e e t ( unsigned x ) { s t a t i c char c o n s t ∗ c o n s t msgs [ ] = {. 4 5. ” hello ” , ” Boost . Python ” , ” world ! ” } ;. 6. i f ( x > 2) throw s t d : : r a n g e e r r o r ( ” g r e e t : index out o f range ” ) ;. 7 8 9. r e t u r n msgs [ x ] ;. 10 11. }. kan enkelt wrappas till Python med Boost.Python genom: 1 2 3 4 5 6 7. # include <b o os t/python . hpp> using namespace b o os t : : python ; BOOST PYTHON MODULE( h e l l o ) { def ( ” g r e e t ” , g r e e t , ” r e t u r n one o f 3 p a r t s o f a g r e e t i n g ” ) ; }. ¨ ¨ J¨amforelsevis kan man se foljande kod som ett exempel p˚a hur man skulle wrappa samma funktion med hj¨alp av Pythons C-API: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21. // a l l Python i n t e r a c t i o n s use ’C ’ l i n k a g e // and c a l l i n g convention e x t e r n ”C” { // Wrapper t o handle argument/ r e s u l t // c o n v e r s i o n and checking PyObject ∗ greet wrap ( PyObject ∗ args , PyObject ∗ keywords ) { int x ; // e x t r a c t /check arguments i f ( PyArg ParseTuple ( args , ” i ” , &x ) ) { // invoke wrapped f u n c t i o n char c o n s t ∗ r e s u l t = g r e e t ( x ) ; // c o n v e r t r e s u l t t o Python return PyString FromString ( r e s u l t ) ; } // e r r o r occurred return 0 ; }. 22. 9.

(12) // Table o f wrapped f u n c t i o n s t o be // exposed by t h e module s t a t i c PyMethodDef methods [ ] = { { ” g r e e t ” , greet wrap , METH VARARGS, ” r e t u r n one o f 3 p a r t s o f a g r e e t i n g ” } , { NULL, NULL, 0 , NULL } // s e n t i n e l };. 23 24 25 26 27 28 29 30. // module i n i t i a l i z a t i o n f u n c t i o n DL EXPORT i n i t h e l l o ( ) { // add t h e methods t o t h e module ( void ) Py InitModule ( ” h e l l o ” , methods ) ; }. 31 32 33 34 35 36 37. }. ¨ for ¨ Detta s¨att att wrappa C++ p˚a kr¨avde lite mer jobb a¨ n vad SWIG gjorde men hade dock stod t.ex. arv och gav stor kontroll p˚a vad man ville ta med om inte hela C++ klassens funktionalitet ¨ skulle tillg¨angliggoras. Boost.Python testades med stor framg˚ang i windowsmiljo¨ och det var enkelt att f˚a klasser ¨ skrivna i C++ tillg¨angliga i Python med bara ett f˚atal rader kod. En annan fordel med det hela ¨ ¨ att f˚a var att biblioteket, i detta fall en .dll, som kompilerades var det enda som behovdes for tillg˚ang till sitt pythonobjekt, dvs det kr¨avdes ingen pythonkod som kapslade in det hela innan man kunde anv¨anda det i Python. ¨ N¨ar denna metod skulle testas p˚a TeMIPklasserna i HP-UX miljo¨ stotte vi p˚a problem. Boost ¨ gick till stora delar bra att kompilera, men just Pythonmodulen v¨agrade att fungera. Vi sokte p˚a n¨atet och fann att m˚anga andra hade haft liknade problem med just detta operativsystem. N˚agon ¨ ¨ ok ¨ och vi ins˚ag att det borjade ¨ konkret losning p˚a det hela hittades dock inte trots ih¨ardiga fors ¨ bli sloseri med tid. Slutligen SWIG fungerade inte riktigt som v¨antat, och Boost gick tyv¨arr inte att kompilera ¨ valdes Pythons C API som wrappningsmetod. Det blev en hel med aCC under HP-UX. D¨arfor del jobb, mer a¨ n om man hade anv¨ant sig av SWIG eller Boost, men a˚ andra sidan bidrog C API:t ¨ ¨ ¨ for ¨ arv till en b¨attre kontroll over wrappningen, samt mojlighet att senare kunna l¨agga in stod ¨ aelse for ¨ Python mellan klasser. Det k¨andes d˚a enklare att s¨atta sig in i C API:t d˚a djupare forst˚ och hur dess objekt a¨ r uppbyggda hade uppn˚atts.. 2.3. Utveckling och tester. ¨ Det forsta vi gjorde var att skapa en TeMIP PM vilken fungerade som en python-tolk som var ¨ att anropen till TeMIP skall fungera. integrerad med TeMIP. Detta kr¨avs for ¨ ¨ att kunna testa dessa Sedan wrappades n˚agra av de klasser som skulle behovas i PyMIP. For PyMIP-klasser s˚a gjordes en del mindre skript som testade funktionalitet i ett tidigt stadium. ¨ Det forsta testet som gjordes var att porta ett enkelt Visual TeMIP-program till Python. Allt detta gjorde var att visa information i konsolen om larm som h¨amtades fr˚an ett OC. Testet funger¨ ade och gav en kvittens p˚a att allt var gjort r¨att, att PyMIP fungerade och det blev en forsta milstolpe. H¨arefter fortsatte utvecklingen ganska systematiskt efter den klassmall som desig¨ ¨ att kunna testa ytterligare nats. Fortlopande tester gjordes allt eftersom nya klasser utvecklats for. 10.

(13) funktionalitet. ¨ diverse funkUnder utvecklingens g˚ang skapades a¨ ven flera mindre skript som kunde utfora tioner som till exempel att skicka larm med j¨amna mellanrum, lyssna efter nya larm samt sl˚a upp ¨ att se vilken mininformation fr˚an TeMIP:s dictionary. Dessa skript anv¨andes bland annat for ¨ att uppt¨acka och sp˚ara minnesl¨ackor. nesanv¨andning varje objekt hade, samt for ¨ att enkelt kunna skapa dokumentation for ¨ de wrappade C++-klasserna s˚a skrevs ett skript For som automatiskt genererade ett antal HTML-filer. Dessa skapades fr˚an kommentarerna, som ¨ ett visst format, i varje C++-klass header-fil. skulle folja 2.3.1. PyMIP Lib. ¨ Tidigt ins˚ag vi att flera TeMIP-objekt s˚asom AlarmObject, OperationContext och liknande behovdes som klasser i de olika skripten. Dessa fanns inte som klasser i Visual TeMIP utan kr¨avde ett extra ¨ gjordes ett nytt bibliotek, helt skrivet i Python, av de vanligaste objekten lager abstraktion. D¨arfor ¨ att enkelgora ¨ vidare utveckling. for 2.3.2. C-to-Python. ¨ att de wrappade klasserna fr˚an TeMIP skulle kunna interagera mellan varandra som vanliga For ¨ att TeMIP-klasser kr¨avdes att man skapade en C++-funktion som varje klass anv¨ande sig av for enkelt kunna konvertera returv¨arden till r¨att typ. Funktionen fick heta C-to-Python och blev en enkel och sj¨alvbeskrivande funktion som var mycket l¨att att bygga ut allt eftersom nya klasser tillkom. 2.3.3. Textlarmlista. ¨ ¨ att enkelt Ett onskem˚ al fr˚an Data Ductus var att det skulle skrivas en ASCII-baserad larmlista for ¨ Tanken var forst ¨ kunna bevaka OC:s och hantera larm i en enkel och textbaserad miljo. att den skulle utvecklas med hj¨alp av ncurses, men det gick tyv¨arr inte p˚a grund av kompabilitetsproblem med HP-UX. ¨ ¨ Tanken fr˚an borjan var att skapa ett enkelt skript som anv¨ande sig av tr˚adade funktioner for att lyssna efter larm, samt ett enkelt textbaserat menysystem. Det visade sig ocks˚a att vi var inne p˚a r¨att sp˚ar med dessa tankar som resulterade i en enkel och anv¨andbar larmlista, med begr¨ansad funktionalitet. ¨ Ett av de forsta misstagen som gjordes under utvecklingen av textlarmlistan var att det knappt ¨ ¨ gjordes n˚agon design over programmet alls innan programmerandet borjade. Detta innebar en hel del extrajobb och omskrivningar innan man kunde f˚a alla delar att fungera tillsammans. ¨ N¨ar den forsta versionen var f¨ardigst¨alld tog det inte l˚ang tid innan vi uppt¨ackte att ¨ ¨ gjorde vi en ny version. Den h¨ar g˚angen borjade ¨ uppl¨agget behovde snyggas till. D¨arfor vi med att designa upp en klasstruktur som k¨andes modul¨ar och stabil. Detta gjorde att utvecklingen framskred mycket smidigare och en slutgiltig version var snart klar.. ¨ att lyssna och h˚alla koll p˚a larm Slutresultatet blev en larmlista som startade upp tr˚adar for ¨ ett antal inom det OC:n man valt, samt ett enkelt menysystem som presenterade anv¨andaren for olika alternativ.. 11.

(14) Inkommande, nya larm visades direkt i konsolen s˚a man fick en visuell notifiering om att det h¨ant n˚agot i n˚at av OC:na. Alternativen i menyn inkluderade bland annat att kunna a¨ ndra vilka OC:s man ville bevaka, ¨ flagga alarm som terminated3 eller acknowledged4 , tomma ett helt OC p˚a sina larm med mera.. Figur 1: En visning av larmen i den textbaserade larmlistan s˚ag ut s˚ah¨ar. 3 Ett 4 Ett. alarm som a¨ r hanterat och avslutat larm som a¨ r uppm¨arksammat och under hantering. 12.

(15) 2.3.4. Webblarmlista. ¨ Ett annat onskem˚ al som fanns var att skapa en webbaserad larmlista som alternativ till TeMIPklienten. Eftersom det redan fanns en alarmlista som kunde hantera larm i realtid samt hade ett grundl¨aggande klassbibliotek klart var det steget inte s˚a stort att ta. ¨ vilka mojligheter ¨ ¨ att enkelt skapa Inledande arbete bestod i att undersoka Python hade for en stabil webbserver. Snabbt uppt¨acktes en standardmodul i Python, BaseHTTPServer, som upp¨ fyllde alla onskem˚ al vid den tidpunkten. ¨ ¨ att mota ¨ de for PyMIP lib anv¨andes till stor del i webbservern, men kompletterades lopande nya krav som hela tiden st¨alldes.. ¨ ¨ Version 1 Syftet med den forsta versionen av webblarmlistan var till stor del ett experiment for ¨ att s¨atta PyMIP-biblioteket p˚a att testa v˚ara kunskaper och Pythons webbservermodul, samt for prov. ¨ ¨ agningar och I denna version skottes allting i servern. Den svarade p˚a vanliga HTTP-forfr˚ ¨ att generera HTML av skapade HTML-sidor utifr˚an de larm som fanns i servern. Ett skript for larm skrevs och baserades p˚a HTML-mallar som inneh˚all nyckelord som byttes ut mot riktig ¨ for ¨ upprepande sektioner i mallarna. Valet larminformation. Genereringsskriptet hade a¨ ven stod ¨ att anv¨anda sig av mallar grundade sig p˚a att vi ville l¨amna design av larmvisningen utanfor sj¨alva webbservern s˚a att de som anv¨ande den sj¨alva skulle kunna konfigurera utseende samt vilken information som skulle visas med hj¨alp av n¨amnda nyckelord och sektioner. Ett exempel p˚a HTML-mallar finns att se i bilaga B. Resultatet blev blandat. ¨ antats. Men HTML-genereringen var alldeles for ¨ Pythons webbservermodul fungerade som forv¨ ¨ att det skulle vara n˚agot att forts¨atta p˚a. Eftersom servern l˚angsam och sv˚ar att vidareutveckla for ¨ agan kunde man aldrig se i realtid att nya larm kommit skapade HTML-sidorna vid en ny forfr˚ in, och detta var en stor nackdel eftersom anv¨andaren d˚a var tvungen att manuellt uppdatera ¨ att f˚a se for¨ ¨ andringar. sidan for ¨ version 2 av webblarmlistan lades fokus lite mer p˚a att f˚a fram Version 2 N¨ar det var dags for ¨ icke-tekniska anv¨andare. Vi fick en webbserver som skulle vara anv¨andbar och smidig, a¨ ven for tipset om att kolla upp AJAX vilket vi fann intressant och mycket anv¨andbart direkt. Sj¨alva webbservern blev en hybrid av den gamla teknologin med mallar och AJAX. Mallarna anv¨andes bara ¨ att presentera mer eller mindre statisk information, s˚asom vilka OC:s man bevakade med for ¨ att skicka en forfr˚ ¨ agan till webbservern som d˚a svarade med nya larm mera. AJAX anv¨andes for om s˚adana fanns. I och med AJAX v¨axte det fram en mindre webbklient som bestod av HTMLfiler, HTML-mallar och JavaScript. Denna webbklient gjorde a¨ ven att sidan blev interaktiv, anv¨andaren kunde v¨alja att visa ytterligare information om ett larm, flagga larm som terminated eller acknowledged samt sortera hela listan med ett enkelt musklick. ¨ Det forsta man fick se i tidiga versioner innan man gick in p˚a larmlistan var en lista med collections som fanns att tillg˚a, d¨ar man antingen fick v¨alja en existerande collection, eller skapa en ny och l¨agga till OC:s i denna. Vi ins˚ag ganska snart att detta var ett felaktigt s¨att att anv¨anda sig av collections. TeMIP jobbar p˚a s˚a s¨att att endast ett system kan lyssna p˚a en specifik collection ¨ i taget, s˚a forsta sidan a¨ ndrades till att ist¨allet skapa en ny collection varje g˚ang, och man fick direkt ange de OC:s man ville bevaka.. 13.

(16) Efter det att man gjort detta val skickades man vidare in till sj¨alva larmlistan d¨ar man pre¨ senterades med information om det OC man valt, statistik over de larm som servern hade l¨ast in ¨ ¨ att kunna visa de larm som st¨amde in p˚a vissa fr˚an TeMIP samt en lista over alla dessa larm. For ¨ kriterier kunde man klicka fram ett dialogfonster och st¨alla in filter. En stor begr¨ansning p˚a filter i detta stadium var dock att man endast kunde filtrera p˚a numeriska v¨arden d¨ar man angav en ¨ undre och en ovre gr¨ans. ¨ En fordel med att anv¨anda AJAX var att nu kunde man visa larm som kom in till servern i ¨ anv¨andaren vilket gjorde webbklienten mycket mer anv¨andbar. Det vill s¨aga, man var realtid for ¨ att f˚a se nya larm utan det skedde semiinte l¨angre tvungen att manuellt uppdatera sidan for ¨ aga till servern med j¨amna mellanrum och uppdaterade automatiskt. Skriptet skickade en forfr˚ ¨ anv¨andaren vid behov. larmlistan for. ¨ Figur 2: Larmlistan fick foljande utseende och det som visas h¨ar a¨ r sj¨alva larmlistan efter att man valt vilka OC:s man vill bevaka. Det slutliga resultatet blev ganska tillfredsst¨allande. Denna version blev betydligt snabbare och mer dynamisk a¨ n version 1, mycket tack vare anv¨andandet ¨ av AJAX. Att anv¨andaren fick mojlighet att kontrollera vad som visades och att kunna p˚averka larm var ett stort steg n¨armare en fullfj¨adrad, l¨attanv¨anlig, webbaserad larmlista. Nackdelar med ¨ for ¨ en enda anv¨andare. Den kunde hantera webbservern var dock att den endast hade stod ¨ agningar fr˚an olika h˚all, men de a¨ ndringar som gjordes i sortering, filter och likande spaforfr˚ rades p˚a ett enda st¨alle i servern vilket resulterade i att alla anv¨andare fick se de a¨ ndringar som ¨ ¨ tungt for ¨ servern. Allting borde en anv¨andare utforde. Sedan var anv¨andandet av mallar lite for. 14.

(17) ¨ hellre skotas med AJAX s˚a att servern kunde f˚a fokusera p˚a sin huvudsakliga uppgift vilket var att bevaka OC:s och hantera larm. 2.3.5. Korrigeringsfilter. Ett sidosp˚ar vi gick in p˚a under utvecklingen av webservern var n˚agot som kallades korriger¨ att kunna filtrera och ingsfilter. Detta var i vanliga fall en modul skriven i C++ som anv¨andes for ¨ T ex att a¨ ndra ett larms allvarlighetsgrad a¨ ndra larm baserat p˚a vilka parametrar de inneholl. eller l¨agga till/ta bort text som skickades med. ¨ Det var en onskan att kunna skriva dessa korrigeringsfilter i Python med hj¨alp av PyMIP. ¨ att kunna dra nytta av att Pythonmoduler enkelt g˚ar att ladda om dynamiskt vilket Mycket for ¨ att man kan a¨ ndra och testa n¨amnda korrigeringsfilter i realtid. Efter lite tester togs en C++ gor ¨ att modul fram. Modulens uppgift var att agera som ett riktigt korrigeringsfilter, men ist¨allet for ¨ korrigeringen l¨aste den in ett Pythonskript och skickade vidare den information den sj¨alv skota ¨ ¨ att hantera larmet i Python. Detta gjorde att man hade till skriptet. D¨arefter skottes all logik for ¨ aldrig behovde l¨asa om C++ modulen, men kunde a¨ nd˚a a¨ ndra hur korrigeringsfiltret betedde sig och l˚ata C++ modulen l¨asa om den n¨ar filen a¨ ndrats. Trots den korta tid som lades ned p˚a korrigeringsfilterna och den relativt lilla m¨angd kod ¨ bra och lade en stabil grund for ¨ fortsatt utveckling och som producerades blev resultatet oerhort anv¨andning.. 3. Resultat. ¨ att utveckla mot TeMIP har visat sig vara en Tanken att anv¨anda Python som skriptspr˚ak for ¨ mycket bra och enkelt genomforbar metod. Beroende p˚a vilken plattform man ska jobba mot a¨ r sj¨alva processen med att wrappa Visual TeMIP:s klasser n˚agot varierande i komplexitet och ¨ tids˚atg˚ang. Dock a¨ r det mesta fullt mojligt och man tj¨anar snabbt in den tid man lagt ned p˚a att bygga grunden. ¨ i slutet 26 stycken wrappade C++-klasser. Det har visat sig att PyMIP-biblioteket inneholl ¨ det g˚ar mycket snabbt att wrappa nya klasser, samt att utoka de redan existerande klasserna. ¨ att utveckling av nya moduler till Anv¨andandet av biblioteket a¨ r smidigt och enkelt, vilket gor TeMIP, skrivna i Python, kan snabbt bli fullt realiserade. Biblioteket l¨ampar sig a¨ ven till min¨ ett skript for ¨ att simulera inkommande larm och samtidigt dre skript. Exempelvis kan man gora ¨ som hanterar larmen, p˚a n˚agra f˚a rader kod. simulera en operator ¨ ett enkelt exempel skrivet i PyMIP. Se bilaga C for Webbservern och webbklienten som utvecklades har man fortsatt att jobba p˚a mot en kom¨ med hj¨alp av AJAX mersiellt g˚angbar produkt. En nyare version av webbklienten d¨ar mer skots och ett helt nytt grafiskt interface har blivit skriven, samt a¨ ven en ny version av webbservern ¨ som nu stodjer multipla, simultana klienter.. 4. Diskussion. ¨ I arbetsuppgiften fanns a¨ ven ett onskem˚ al att kunna dynamiskt generera nya Python-moduler ¨ n¨armare fr˚an objekt som registrerades i TeMIP. Detta fanns det dock ingen tid till att undersoka d˚a vikten lades mer p˚a att f˚a fram en webbserver med tillr¨acklig funktionalitet. Endast en ytlig ¨ ¨ och uppfattningen a¨ r att det skulle kunna vara klart genomforbart. ¨ undersokning har genomforts. 15.

(18) Figur 3: Den nyaste versionen av webblarmlistan. ¨ det fullt mojligt ¨ Nya objekt registreras i TeMIP:s dictionary, vilket gor att kunna utl¨asa de funk¨ ¨ tioner och parametrar som objektet kan behova. N˚agon vidare undersokning kommer inte att ¨ utforas under detta examensarbete.. 16.

(19) 5. Referenser • http://www.python.org - Pythons officiella hemsida (2006-10-19) • http://www.swig.org - SWIG (2006-10-19) • http://www.boost.org/libs/python/doc - Boost.Python (2006-10-19). 17.

(20) Bilagor A. Visual TeMIP vs. PyMIP ¨ Visual TeMIP En kodsnutt skriven i C++ for. 1 2 3 4 5 6 7 8 9 10. // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // V i s u a l TeMIP I n c l u d e F i l e s // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # include <t f c f r a m e w o r k . hxx> # include <t e m i p a h f m s r v c i f . h> # include <t f c w p m t l o g . hxx> # include <t e m i p m t l o g r e p o r t . hxx> # include <t f c s p c a t a l o g . hxx> # include <n l t y p e s . h> # include <iostream >. 11 12 13 14 15. // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Example I n c l u d e F i l e s // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− # include ” s w i t c h a p p l i . hxx”. 16 17 18 19 20. // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− // Implementation o f t h e TeMIP A p p l i c a t i o n // −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− IMPLEMENT TEMIP APPLICATION ( s w i t c h a p p l i ). 21 22 23. # define TRACE SWITCH APPLI 1. 24 25 26 27. MCC T CVR M A p p l i c a t i o n s w i t c h a p p l i : : OnExecute ( i n t argc , char ∗ argv [ ] ) {. 28 29. MCC T CVR r e s u l t = MCC S NORMAL;. 30 31 32 33 34 35 36. // C r e a t e t h e OC e n t i t y MFullName ocName ( argv [ 1 ] ) ; MClientEntitySpec alarmEntity ; a l a r m E n t i t y . AddClassInstance ( MCC K CLASS OPERATION CONTEXT , ocName ) ; a l a r m E n t i t y . AddWildInstance ( MCC K CLASS ALARM OBJECT ) ;. 37 38 39. // Get a d i c t i o n a r y o b j e c t MDictClass c l a s s D e f ( a l a r m E n t i t y ) ;. 40 41 42. // C r e a t e t h e c a l l MCallShow showCall ( a l a r m E n t i t y , MCC K PRT CHAR ) ;. 43 44 45 46 47. // Loop f o r e v e r do { // Make t h e c a l l 18.

(21) r e s u l t = showCall . C a l l A c c e s s ( ) ;. 48 49. i f ( r e s u l t ! = MCC S RESPONSE ) { cout << ”Show c a l l has f a i l e d ” << endl ; } else { // Get r e p l y MReply &r e p l y = showCall . GetReply ( ) ;. 50 51 52 53 54 55 56 57 58. i f ( ( r e p l y . GetReplyCode ( ) == MCC K SHOW SUCCESS) | | ( r e p l y . GetReplyCode ( ) == MCC K SHOW SOME ) ) { // C r e a t e an i t e r a t o r MAttribListIterator iterator ( r e p l y [MCC K ARG SHOW VALUES ] ) ;. 59 60 61 62 63 64 65. // Go through a l l v a l u e s i n t h e response // and p r i n t them f o r ( ; i t e r a t o r . I s V a l i d ( ) ; i t e r a t o r ++) { MDescriptor &element = ∗ i t e r a t o r ; MCC T Unsigned32 e l e m e n t A t t r I d = element . GetID ( ) ; MDictAttribute elementAttr = classDef . GetAttribute ( elementAttrId ) ; cout << ( c o n s t char ∗ ) ( e l e m e n t A t t r . GetPresentationName ( ) ) << ” = ” ;. 66 67 68 69 70 71 72 73 74 75. i f ( ( ∗ i t e r a t o r ) . GetReasonCode ( ) == MCC K REASN SUCC OP ) { i n t dt = ( ∗ i t e r a t o r ) . GetDataType ( ) ; switch ( dt ) { c a s e 3 : cout << ( MString &)(∗ i t e r a t o r ) << endl ; break ; c a s e 1 0 : cout << ( MUnsigned32 &)(∗ i t e r a t o r ) << endl ; break ; d e f a u l t : cout << ”<<< no decoder >>>” << endl ; break ; } } else { cout << ” A t t r i b u t e not a v a i l a b l e ” << endl ; }. 76 77 78 79 80 81 82 83 84 85 86 87 88 89. }. 90. }. 91. } } while ( showCall . More ( ) ) ;. 92 93 94. return r e s u l t ;. 95 96. } ¨ PyMIP En kodsnutt skriven i Python for. 1. from pymip imports import ∗. 2. 19.

(22) 3 4 5 6 7 8. # C r e a t e t h e OC e n t i t y ocName = PyMFullName ( ” . ufo . oc ” ) a l a r m E n t i t y = PyMClientEntitySpec ( ) a l a r m E n t i t y . AddClassInstance (MCC K CLASS OPERATION CONTEXT , ocName ) a l a r m E n t i t y . AddWildInstance ( MCC K CLASS ALARM OBJECT ). 9 10 11. # Get a d i c t i o n a r y o b j e c t c l a s s D e f = PyMDictClass ( a l a r m E n t i t y ). 12 13 14 15 16. # Create the c a l l showCall = PyMCall ( a l a r m E n t i t y , MCC K VERB SHOW, MCC K PRT CHAR). 17 18 19 20 21 22 23 24 25 26. # Loop f o r e v e r while ( 1 ) : # Make t h e c a l l r e s u l t = showCall . C a l l A c c e s s ( ) i f ( r e s u l t ! = MCC S RESPONSE ) : p r i n t ”Show c a l l has f a i l e d ” else : # Get r e p l y r e p l y = showCall . GetReply ( ). 27 28 29 30 31 32. i f ( r e p l y . GetReplyCode ( ) == MCC K SHOW SUCCESS or r e p l y . GetReplyCode ( ) == MCC K SHOW SOME ) : # C r e a t e an i t e r a t o r i t e r a t o r = P y M A t t r i b L i s t I t e r a t o r ( reply , MCC K ARG SHOW VALUES). 33 34 35 36 37 38 39 40. # Go through a l l v a l u e s i n t h e response # and p r i n t them while ( i t e r a t o r . I s V a l i d ( ) ) : element = PyMDescriptor ( i t e r a t o r ) e l e m e n t A t t r I d = element . GetID ( ) elementAttr = classDef . GetAttribute ( elementAttrId ) p r i n t e l e m e n t A t t r . GetPresentationName ( ) , ” = ” ,. 41 42 43. i f ( element . GetReasonCode ( ) == MCC K REASN SUCC OP ) : p r i n t i t e r a t o r . GetData ( ). 44 45 46 47. i t e r a t o r . Next ( ) else : p r i n t ” A t t r i b u t e not a v a i l a b l e ”. 48 49 50. i f ( showCall . More ( ) == 0 ) : break. 20.

(23) B. HTML-mallar Ett exempel p˚a en HTML-mall. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19. <div c l a s s =” ocDiv ”> <div c l a s s =”ocHead”> You a r e working with c o l l e c t i o n ID : ! COLLECTION ID ! ( C r e a t o r : ! COLLECTION INFO ! ) </div> <div c l a s s =”ocBody”> <div c l a s s =” o c L i s t ”> <s e l e c t name=” o p e r a t i o n c o n t e x t ” id=” selOC ” s i z e =”4” onfocus=”btnRemove . d i s a b l e d = f a l s e ; ”> < !−− OC LIST BEGIN −−> < !−− option value=” !OC NAME! ” >!OC NAME! −−> < !−− OC LIST END −−> </ s e l e c t> </div> </form> </div> </div>. 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40. <div c l a s s =” alarmBody ”> <t a b l e c l a s s =” alarmTable ” c e l l s p a c i n g =” 0 ”> <tBody id=” alarmListBody ”> < !−− ALARM LIST BEGIN −−> <t r c l a s s =” alarmHeaders ”> < !−− ALARM HEADERS BEGIN −−> <th c l a s s =” alarmHeader ”> !HEADER NAME! </th> < !−− ALARM HEADERS END −−> </ t r> < !−− ALARM LIST BEGIN −−> <t r c l a s s =” alarmListRow s e v e r i t y # ! PERC SEVER ! ”> < !−− ALARM INFO BEGIN −−> <td c l a s s =” a l a r m C e l l ”> !ALARM VALUE! </td> < !−− ALARM INFO END −−> </ t r> < !−− ALARM LIST END −−>. 21.

(24) C. Loopaloop. ¨ Ett enkelt skript som slumpar iv¨ag larm samtidigt som den ser till att listan aldrig blir storre a¨ n t.ex. 500 larm 1. # ! . . / pymip. 2 3 4 5 6 7 8 9 10. import sys import time import random import copy sys . path . append ( ” . . / PyMIPLib” ) from PyMIPLib imports import ∗ import t h r e a d import t h r e a d i n g. 11 12 13 14 15 16 17 18 19. c l a s s gosend ( t h r e a d i n g . Thread ) : def i n i t ( s e l f , stopEv , oc , o s i , min , max ) : t h r e a d i n g . Thread . init ( self ) s e l f . stopEv = stopEv s e l f . oc = oc s el f . osi = osi s e l f . min = min s e l f . max = max. 20 21 22 23 24. def run ( s e l f ) : p r i n t ” S t a r t i n g send t o ” , s e l f . o s i , ”@” , s e l f . oc , ” with ” , s e l f . min , ”−” , s e l f . max , ” seconds i n t e r v a l ”. 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39. while True : i f s e l f . stopEv . i s S e t ( ) : break s l e e p t i m e = s e l f . min + ( random . random ( ) ∗ s e l f . max ) time . s l e e p ( s l e e p t i m e ) alarm = PyAlarmObject ( s e l f . o s i , s e l f . oc ) alarm [ MCC K OSI ARG PERC SEVERITY ] = random . r a n d i n t ( 0 , 4 ) alarm [ MCC K OSI ARG PROBABLE CAUSE ] = random . r a n d i n t ( 1 , 4 0 ) alarm [ MCC K OSI ARG ADD TEXT ] = ”Automagic alarm s e n t by loopaloop ” alarm . send ( ). 40 41 42 43 44 45 46 47 48 49. c l a s s goterm ( t h r e a d i n g . Thread ) : def i n i t ( s e l f , stopEv , oc , min , max , num, remcount ) : t h r e a d i n g . Thread . init ( self ) s e l f . stopEv = stopEv s e l f . oc = oc s e l f . min = min s e l f . max = max 22.

(25) 50 51. s e l f . num = num s e l f . remcount = remcount. 52 53 54 55 56 57. def run ( s e l f ) : p r i n t ” S t a r t i n g term on” , s e l f . oc , ” with ” , s e l f . min , ”−” , s e l f . max , ” seconds i n t e r v a l , keeping t h e l i s t around ” , s e l f . num, ” alarms ”. 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73. while True : i f s e l f . stopEv . i s S e t ( ) : break s l e e p t i m e = s e l f . min + ( random . random ( ) ∗ s e l f . max ) time . s l e e p ( s l e e p t i m e ) i f l e n ( alarms ) > s e l f . num : p r i n t ” L i s t s i z e : ” , l e n ( alarms ) remCount = 0 f o r x in range ( s e l f . remcount ) : idxmin = l e n ( alarms ) −( s e l f . remcount ∗ 3 ) idxmax = l e n ( alarms )−1 idx = random . r a n d i n t ( idxmin , idxmax ) tmpal = alarms . pop ( idx ) tmpal . t e r m i n a t e ( ). 74. p r i n t s e l f . remcount , ” alarms t e r m i n a t e d and removed”. 75 76 77 78 79 80 81 82 83. alarms = [ ] stopEv = t h r e a d i n g . Event ( ) stopEv . c l e a r ( ) t h i s c o l l = PyCollection ( ). 84 85 86 87 88 89 90 91 92 93 94. #−−− S e t t i n g s oc = PyOperationContext ( ” . rwe oc1 ” ) osi = [ ( 2 6 , ” . rwe osi1 ” ) ] sendmin = 5 sendmax = 15 termmin = 20 termmax = 30 maxsize = 500 remcount = 30. 95 96 97 98 99. tSend = gosend ( stopEv , oc , o s i , sendmin , sendmax ) tTerm = goterm ( stopEv , oc , termmin , termmax , maxsize , remcount ). 100 101 102. tSend . s t a r t ( ) tTerm . s t a r t ( ). 103. 23.

(26) 104. time . s l e e p ( 0 . 1 ). 105 106. t h i s c o l l . addSource ( oc ). 107 108 109 110 111 112 113 114 115. while True : alarm = t h i s c o l l . s u b s c r i b e ( [ 2 , 3 , 4 ] , F a l s e ) i f not type ( alarm ) == bool and not type ( alarm ) == t u p l e : alarms . append ( alarm ) else : ” Sync done or weird alarm , but I keep on going ! ”. 24.

(27) D. Uppdragsbeskrivning. Nedan a¨ r uppdragsbeskrivningen inkluderad.. 25.

(28) 1 (4). Thesis work, Python Scripting for Network Management. Författare. Telefonnummer. Datum. Version. Dokumentnummer. Stefan Wallin. 0910 – 73 23 00. 2006-10-19. Version. #9278. THESIS WORK, PYTHON SCRIPTING FOR NETWORK MANAGEMENT Versionshistorik. Allmän dokumentmall, version C - 2001-09-07. Version PA1. Datum 2006-03-22. Data Ductus Nord AB Torget 6 931 31 Skellefteå Sweden. Författare Stefan Wallin. Styrelsens säte i Skellefteå F-skattesedel innehas Org. 556504 – 2941 Föreningssparbanken, SWIFT adress: SWEDSESS. Kommentar First Draft. Tel. +46 (0)910 – 73 23 00 Fax +46 (0)910 – 557 56.

(29) 2 (4). 1. INTRODUCTION. 1.1. Background. Data Ductus delivers network management solution for telecom operators world-wide. The solutions are based on the HP product OpenView TeMIP. An overall network management solution is a complex project with integrations to several systems such as network elements, inventory systems, provisioning systems business support systems etc. In many cases the integration needs and requirements can not be fully foreseen and developed beforehand. Rather, improving the user experience enriching information from other sources etc is done onsite with the end-users input. It is important to be able to work iteratively and prototypeoriented in order to have quick user feed-back and gain integration time.. 1.2. OpenView TeMIP. 1.2.1. Overview. Below is a quote from HPs web page regarding TeMIP. HP OpenView TeMIP delivers the industry's most comprehensive, flexible and robust OSS service assurance offering from a single vendor, unifying and integrating multiple management domains across a full range of infrastructures, (wireless, wireline, IP and IT environments, using interfaces such as TL1, CORBA, CMIP, SNMP and OSS/J.) Focused on service assurance and as part of the HP OpenView OSS portfolio, HP OpenView TeMIP complements and tightly integrates with other HP OpenView products for assurance, activation and usage management through the following components : •. TeMIP Framework—foundation for a rich, flexible, open, massively scalable, distributed OSS platform. •. Powerful and intuitive GUIs with alarm and state views, plus complete topology representations. •. Off-the-shelf connectivity to most network technologies and nearly 200 specific equipments. All major industry protocols are supported. •. A rich set of generic and sophisticated applications for alarm handling, root-cause and service impact analysis, task automation, state and configuration management. •. Out-of-the-box integration with HP OpenView portfolio for complete control of the entire IT, IP and telecom infrastructure. 1.2.2. Features. •. A powerful, modular, fully distributed and standards based architecture plus the integration of third-party or user-developed applications. •. A rich set of graphical user interfaces as well as command line user interface. •. Alarm reduction through root-cause and service impact analysis and sophisticated alarm handling. •. A very open and flexible solution with toolkits for codeless integration 'southbound' as well as OSS through Java an OSI and Corba agents 'northbound'.

(30) 3 (4). • 1.2.3. Pre-integration with various market leader trouble ticketing, performance management and inventory solutions TeMIP integration. Quote from the development documentation: TeMIP framework is a management system used to monitor, control and test manageable objects, modeled as entities of various classes. It is extensible, in that it provides the structure and mechanisms which allow for component-level “plug and play” of optional TeMIP management capabilities. It is an integrated system, allowing integration between the management modules. It is also distributed, in the sense that it is implemented as a set of cooperating management modules, with no architectural constraints on having all modules co-resident on the same machine or located on different machines. 1.2.4. 1.1.1 TeMIP Framework Management Modules. Management modules are software programs that perform a specific management function within TeMIP Framework, which provides the operating environment for them. You can add new management modules into TeMIP Framework to make it available to extend its functionality. All management modules are structurally similar: they operate within the TeMIP Framework environment as a single process on each director where they are installed, use the same TeMIP Framework interface, use the same TeMIP Framework routines, and are developed using the same set of TeMIP Framework tools. Management modules differ according to the management functions they perform. There are three types of management module: • Access Modules (AM) Provide access to entities outside TeMIP Framework. A network manager issues management requests (directives) that control or monitor an entity. • Function Modules (FM) Provide value-added services not provided by Access Modules. For example, a network manager might want to set an alarm with the Alarms FM when a counter value of an attribute for a specific entity exceeds a specified value. • Presentation Modules (PM) Provide a user interface to TeMIP Framework. A Presentation Module may provide a text interface (for example, the forms and command line interface) or a graphical interface (for example, the iconic map). 1.2.5. Current integration techniques. TeMIP is an object-oriented framework. The network resources are modeled as objects. Alarms, dataloading from inventory etc is performed mapping from other systems to the TeMIP object model. TeMIP supports a number of toolkits and APIs for integration. All of these toolkits are based on the TeMIP Object Model. These are traditional compile, link cycle tools. In many cases this is too cumbersome, slow and inefficient in current dynamic environments. What we need is a dynamic environment which cuts the cycle from days to minutes. It must still provide an object-oriented framework which matches TeMIP objects.. 1.3. Python. Python is a dynamic object oriented programming language that can be used for many kinds of software development. It offers strong support for integration with other languages and tools, comes with extensive standard libraries, and can be learned in a few days. Many Python programmers report substantial productivity gains and feel the language encourages the development of higher quality, more maintainable code..

(31) 4 (4). 2. THE THESIS WORK. The goal of the thesis work is too prove that modern dynamic programming languages like Python will provide an extensive improvement compared to traditional programming when it comes to integration of network management solutions. Technically speaking we need to wrap the TeMIP C++ as Python objects. This is however not enough since the C++ API does not provide abstractions for the high level objects like alarm etc. Rather the C++ API is agnostic to the real abstractions. This is also a gap that introduces complexity. So the Python wrapper should provide abstractions for the most important object classes as well. A final level is to study how we can make the Python API datadriven, when we introduce new objects to TeMIP can we automate the generation of the corresponding Python classes?.

(32) E. TeMIP. ¨ TeMIP inkluderad. Nedan a¨ r ett datablad for. 30.

(33) HP OpenView TeMIP product family 5 Data sheet. The HP OpenView TeMIP product family helps you automate and prioritize key operations tasks, reduce downtime, improve service quality and become more adaptive. With the HP OpenView TeMIP family, service providers can dramatically increase the efficiency of their operations even across multi-vendor and multi-technology services. The TeMIP family has been deployed successfully in more than 170 demanding communications networks..

(34) By consolidating network information into an integrated OSS, HP OpenView TeMIP works with other key HP OpenView products to reduce operational costs.. Key features and benefits. Business benefits. • Investment protection. HP OpenView TeMIP is sold alone or in conjunction with other HP OpenView products, as well as third-party products and integrations for a full solution. The appropriate packaging depends on your needs—the right solution can be customized for your needs by HP.. • Proven scalability and performance—ready to absorb the growth • Secure and resilient—high availability • Powerful functionality—decreased problem-solving time, minimized workload, captured organizational intelligence • Easily extensible and flexible for the future—low cost network extension and new services introduction. Unify OSS management domains HP OpenView TeMIP delivers the industry’s most flexible and robust OSS. It covers a huge variety of interfaces and toolkits, while remaining totally stable under extreme conditions in the network operations center. HP OpenView TeMIP unifies and integrates multiple management domains across a full range of infrastructures, including wireless, wireline, IP and IT environments, using interfaces such as TL1, CORBA, CMIP, SNMP and OSS/J. HP OpenView TeMIP is focused on service assurance. As part of the HP OpenView OSS portfolio, the TeMIP family complements and tightly integrates with other HP OpenView products for assurance, activation and usage management. HP solutions for OSS are sold as HP Integrated Service Management (ISM). HP ISM offerings encompass the HP OpenView OSS portfolio (HP OpenView TeMIP, HP OpenView Service Quality Manager, HP OpenView Internet Usage Manager, HP OpenView Service Activator and other HP OpenView products), business consulting, integration services, partner offerings and a New Generation OSS (NGOSS)* and enhanced Telecom Operations Map (eTOM)* framework.. Some of the benefits HP OpenView TeMIP-based solutions are already bringing to customers include: Increased quality of service HP OpenView TeMIP increases quality of service by providing preventive trend analysis and proactive resolution of network and service issues so you can identify and correct problems quickly. Diagnosis of root-cause problems and automated processes for ticketing and alarms lead to faster problem resolution. Direct monitoring of service quality helps ensure a focus on the most profitable services and customers. The ability to link services and customers to an accurate topology model is a unique benefit of HP OpenView TeMIP. It helps you assure prioritization of repairs and immediate notification of affected customers and services. Efficient use of network resources By consolidating network information into an integrated OSS, HP OpenView TeMIP, with other key HP OpenView products, gives your staff a complete view of the network resources that are available, in use or unavailable. Staff members can prioritize repair actions based on whether an unavailable resource is affecting services and, if so, they can determine which services are being affected and which customers are being impacted.. * NGOSS and eTOM are defined by the TeleManagement Forum. 2.

(35) Reduced network and service management costs HP OpenView TeMIP reduces operational costs by simplifying and automating multi-vendor and multi-technology network and service management. Real customer examples show that TeMIP can improve the operational efficiency by a factor of up to eight within network operations. Network and service operations center staff use the integrated set of tools for real-time control that helps them to increase the network availability to over 99.997 percent.. Going with an HP OSS solution today ensures freedom to grow and add functions tomorrow. Helping you ensure that your OSS is responsive to change is part of HP’s Adaptive Enterprise strategy.. views can be deployed to allow the OSS investment to generate new revenue. Prioritizing problem resolution by customer to meet stringent—but lucrative—service level agreements (SLAs) can be facilitated with a TeMIP service impact analysis solution. Enhanced OSS capabilities over time HP OpenView offers the industry’s broadest set of best-ofbreed configuration and integration tools and network and service management applications. HP’s worldwide professional services experts provide cradle-to-grave integration services. Going with an HP OSS solution today ensures freedom to grow and add functions tomorrow. HP’s tools and richness of portfolio guarantee this flexibility—the HP OpenView TeMIP family already has a ten-year pedigree. Helping you ensure that your OSS is responsive to change is part of HP’s Adaptive Enterprise strategy.. A single TeMIP solution can manage all network elements and systems, eliminating the need to train employees on multiple element manager systems. TeMIP solutions integrate and unify different management domains. Every element of the network is mapped as part of a single, comprehensive view, which helps the operator easily and quickly find and resolve issues. TeMIP capabilities provide a powerful formula for increased profitability. Assurance of quick time-to-market for new services with OSS support When you’re ready to introduce new services, you don’t want OSS support to stand in the way. HP OpenView TeMIP family-based solutions offer off-the-shelf connectivity to most network technologies, and a pre-integrated applications portfolio reduces time to market for new service offerings. The TeMIP family features an ever-expanding set of industry-leading tools for rapid codeless integration. TeMIP Server’s Real-Time Integration Framework’s object-oriented technology and industry-standard building blocks shorten development and integration cycles. TeMIP’s Vendor Access Modules library minimizes the cost of adding new vendors and new network technologies. HP OpenView’s relationships with telecom equipment manufacturers (TEMs)—such as Motorola, Siemens, Marconi, Tellabs and Ericsson—help ensure up-to-date access to vendors’ equipment. TeMIP solutions also reduce time to revenue for new services with service provisioning and activation for broadband, transport and IP networks. Increased revenues with new service features Why keep your network and service operations purely as a cost center? Using HP OpenView TeMIP solutions, you can add value to your services through innovative OSS. Tools such as reporting and customer-oriented-restricted. Product overview The HP OpenView TeMIP product family is part of the HP OpenView OSS portfolio. The family includes the following: • TeMIP Framework—This framework provides the foundation for a rich, flexible, open, massively scalable, distributed OSS platform. • Powerful GUI—Rich and intuitive TeMIP User Interfaces with alarm and state views, plus complete topology representations, aid the prediction, identification and resolution of failures in a telecommunications network. • Off-the-shelf connectivity to most network technologies—A library of Access Modules provide the so-called TeMIP southbound interfaces. Access Modules provide protocol and model mapping between network elements or other management systems and the HP OpenView TeMIP environment. All major industry protocols are supported. • A rich set of generic applications—These provide sophisticated value-added features: – Fault management functions, including alarm handling, root-cause analysis, task automation, fault statistics and service impact management – State management functions – Configuration management functions • Out-of-the-box HP OpenView integrations—Integration with HP OpenView Operations and Network Node Manager enables complete control of the entire IT, IP and telecom infrastructure. The TeMIP family is also integrated with HP OpenView Service Desk, HP OpenView Performance Insight and HP OpenView Service Quality Manager, providing the industry’s most comprehensive OSS service assurance offering from a single vendor.. 3.

(36) Figure 1: The HP OpenView TeMIP graphical User Interface shows topology views with easy navigation to list of alarms.. Figure 2: The HP OpenView TeMIP graphical User Interface shows real-time and historical alarms windows with very sophisticated and flexible filtering capacity.. • Reduced cost of ownership—Cost savings are driven by: – Out-of-the-box connection to market-leading troubleticketing applications, performance management applications and inventory, reducing the integration costs. – Generic northbound applications (or gateways) that provide a general access mechanism to the TeMIP platform—this allows easy integration of TeMIP information with other application components of your complete OSS solution. – A flexible and open solution ready for user-defined extensions—development toolkits offer the standard common TeMIP application program interfaces (APIs), which allow you to complement your solution with powerful and well integrated user-defined applications.. Key features A powerful architecture The HP OpenView TeMIP server offers: • A modular object-oriented architecture that supports plug-and-play, generic HP OpenView TeMIP applications plus the integration of third-party or user-developed applications. The TeMIP product family offers open application program interfaces (APIs). It enables rapid and flexible development and modification to speed time to market. • A standards-based architecture compliant with multiple telecommunications industry standards, including Simple Network Management Protocol (SNMP), Common Management Information Protocol (CMIP), ASCII/Transaction Language 1 (TL1), Common Object Request Broker Architecture (CORBA), SQL, OSS through Java™ (OSS/J), XML and message-based applications such. as TIBCO for easy integration with existing business support system (BSS) and operational support system (OSS) applications. • A sophisticated fully distributed architecture including an optimized event flow and notification mechanism. HP OpenView TeMIP uses a common set of services based on TeMIP Framework distribution, providing superior integration and unlimited scalability and flexibility. • High-availability capability—the framework can use high-availability software and hardware for high uptime configurations. • Easy-to-use deployment, administration, monitoring and troubleshooting tools. • Sophisticated and flexible raw event filtering capacities (also known as low-level filtering). • Objects registration, naming, synonyms and grouping (domain concept) management. • Comprehensive security features for both human users and operation automations—access control and logging facilities. A rich set of graphical user interfaces A set of graphical user interfaces (GUIs) and a command line user interface provide consistent views and interactions with the management system, regardless of the objects managed or the protocols used to manage them. The off-the-shelf Windows® TeMIP Client sets are all easy to open, use and customize. The standard TeMIP configuration is such that when an alarm occurs, the Map Viewer displays a behavior change (typically a color change), and a message is added to the Real-Time Alarm Handling view.. 4.

(37) There are a broad set of HP OpenView TeMIP User Interface products: • The TeMIP Alarm Handling Client product provides: – Real-time and historical alarm information display and management capacities. Operators can apply sophisticated user-defined filters, analyze the selected alarm details and react appropriately (for example, get extra information about the faulty equipment). – Entity browser tool to allow quick navigation through a hierarchy of linked networks and network infrastructure – Management View to send requests on selected device(s) – Outage Management View to get the list of devices in, out of service or in planned maintenance at a glance • The TeMIP Map Viewer and Map Editor Client allow the creation and display of maps for complete flexibility on top of the default maps, navigation in the hierarchy of maps, and highlighting of any faulty or out of service elements (alarm and state graphical information). • The TeMIP Web Interface enables existing user interface applications, so that they can be accessed from corporate intranets or the Internet without rewriting them. Network connectivity TeMIP can manage an array of infrastructure sold by different equipment manufacturers. One Access Module is necessary per type of managed system. Once deployed, an Access Module can manage several instances of network elements. The Access Module library offers a rich set of ready to use access modules. Non-existing Access Modules can be developed on demand. There are five types of Access Module: SNMP, CORBA, OSI, ASCII and others (specific). In addition, the mediation capabilities of HP OpenView Operations and HP OpenView Network Node manager allow nearly complete coverage of IT infrastructure and LAN and IP equipment. Best-in-class service assurance solution HP OpenView TeMIP offers powerful fault management, root-cause analysis and service-impact analysis across the entire infrastructure. • Manage your growth HP OpenView TeMIP Fault Management reduces the load on the network operations center as the network and its services grow. It filters and correlates events to reduce alarm and event volumes. It also manages network and service complexity and scales to ease the operator’s job. Automation of key operation processes helps ensure that an operator’s time is maximized, reduces the risk of errors and minimizes training.. • Sophisticated alarm handling HP OpenView TeMIP Alarm Handling and Event Logging Server product is the key application which will collect, filter, store, aggregate, clear and maintain the outstanding, acknowledged or terminated alarms. It will also provide control and monitoring of out of service periods for any managed device as well as specific processing of events received from the Out Of Service resources. This can be applied to both planned and unplanned Out Of Service periods. HP OpenView TeMIP Resynchronization application is a generic product for re-synchronizing the TeMIP alarm status with the current status of managed equipment. HP OpenView TeMIP Fault Statistics product allows mining of fault data to build powerful statistical reports and data analysis that can help operations staff observe fault patterns and find trouble spots. Armed with this information, you can carry out preventative maintenance to contain problems before a major network outage occurs. • Minimize the workload HP OpenView TeMIP Expert provides a rules-based expert system that captures the expertise and knowledge within your operations to provide powerful automation capabilities. HP OpenView TeMIP Expert processes a variety of data, including events and alarms, equipment states, route availability and usage for applications such as determining the root cause of problems. • Reduce alarms: root-cause analysis and service impact analysis HP OpenView TeMIP Service Monitor intelligently and dramatically reduces alarms, freeing operators for other tasks. It calculates and presents the impact of a fault to the operator—based on received fault reports, its knowledge of the network topology, and the type of infrastructure. • A comprehensive service assurance offering from HP HP provides the breadth to cover IT, IP and telecom operations with a single solution, lowering cost of ownership and ensuring end-to-end manageability of complex services. HP OpenView TeMIP is tightly integrated with HP OpenView Operations and HP OpenView Network Node Manager: the best-in-class IT and IP management solutions. The resulting solution provides an end-toend complete service management solution. With the convergence of data, voice and information technology infrastructure, the staff will be able to use a single management user interface (TeMIP); this will increase efficiency and lower the training cost. HP OpenView TeMIP is tightly integrated with HP OpenView Service Quality Manager (SQM) allowing you to perform service level objectives (SLO) and service level agreements (SLA) creation, monitoring and reporting after collecting key quality indicators.. 5.

(38) Figure 3: shows the HP Integrated Service Management architecture which is used to integrate across the HP OpenView OSS portfolio and to describe the key functions provided. See Table 1 for a list of solution components.. Service delivery. Service assurance. Service usage. Customer portal Executive dashboard Order entry & management. Problem management. Process manager. Service activation. Service level management. Billing. Business intelligence. Process-enabled bus. Inventory management. Fault management. Performance management. Usage mediation. Service provider infrastructure. To integrate the network management and maintenance functions of telecommunications operators, you need to connect the occurrence of a network event to the creation of a trouble ticket. For HP OpenView TeMIP users, this vital link is provided by the TeMIP Service Desk Liaison. HP OpenView TeMIP Service Desk Liaison allows alarm handling operators—on Windows workstations— to create Incidents in the Service Desk database and to associate Alarm Objects with the Incidents. The integration of HP OpenView Performance Insight with HP OpenView TeMIP permits a fusion of the performance data gathering capabilities of Performance Insight with the fault management capabilities of TeMIP. A very open solution The OSS through Java (OSS/J) TeMIP Adapter provides an innovative capability to integrate other HP OpenView or third-party products in an New Generation OSS (NGOSS). The HP OSS/J TeMIP Adapter provides fault management and trouble ticketing functionality (part of the OSS/J QoS interface specification) allowing for quick and flexible integration between HP OpenView TeMIP and service management or trouble-ticket management solutions. HP OpenView TeMIP is pre-integrated with various marketleading trouble ticketing, performance management and inventory solutions such as Cramer. These integrations are called TeMIP liaisons.. HP OpenView TeMIP also offers off-the-shelf northbound connectivity via an OSI agent or a CORBA agent, or even a messaging bus. This allows network equipment vendors to build MD (mediation devices), EMS (element management systems) or OMC (operational management centers) based on TeMIP. A very flexible solution All the TeMIP applications offer many customization options which allow for alignment with the network operation centers’ processes. It is possible to complete the solution with user-defined applications: the different toolkits allow developers to focus on the application code to be developed independently from TeMIP Framework concepts and architecture. The toolkits are products with the appropriate services (support, training, consulting) and documentation.. HP OpenView OSS portfolio overview HP offers a rich set of solutions for service and network operations centers and the business processes these organizations implement. The HP OpenView OSS portfolio is built around a core set of integrated OSS products giving a breadth of infrastructure management capability unparalleled in the industry. It is offered through our HP Integrated Service Management Solution Set, bringing business and implementation consulting as well as an advanced Next Generation OSS (NGOSS) architecture, also supporting OSS through Java (OSS/J) integration.. 6.

(39) Table 1: HP OpenView OSS products and HP Integrated Service Management. OSS area. HP OpenView product. Fault management. HP HP HP HP. Performance management. HP OpenView Performance Insight HP OpenView Internet Services HP OpenView Web Transaction Observer and Analyzer. Problem and help desk management. HP OpenView Service Desk. Service level management and service quality management. HP OpenView Service Quality Manager. Customer portal. HP OpenView Service Information Portal. Activation. Transport and Broadband Service Controllers for HP OpenView TeMIP HP Service Activator. Usage mediation. HP OpenView Internet Usage Manager. Business intelligence. HP OpenView Internet Usage Manager. Overall solution architecture and process-enabled message bus. HP Integrated Service Management Framework (ISM). Business process management. HP OpenView Business Insight Manager. Other OSS areas. See www.hp.com/go/ism for OSS partners. BSS solutions and components. See www.hp.com/go/billing. OSS services HP provides a broad range of OSS services, from business consulting to implementation and 24x7 support and maintenance. HP services for OSS include: Business consulting • OSS/BSS audit to identify areas for improvement • Business case support, OSS business process consulting Architectural consulting • eTOM* process consulting • Prioritized roadmap with clear and achievable milestones • Phased implementation project plan towards complete integration and automation of OSS • Design and architecture consulting, with predefined workshops. OpenView OpenView OpenView OpenView. TeMIP Network Node Manager Operations Route Analytics Management System. Implementation services • Worldwide resources for your implementation • Migration and upgrade services to move from older versions • Developer assist program Support and maintenance • HP Care Pack support in 24x7 or business hour format • Premier service with named HP product expert • Solution optimization. HP Financial Services The smartest way to invest in IT HP Financial Services provides innovative financing and financial asset management programs to help you costeffectively acquire, manage and ultimately retire your HP solutions. For more information on these services, please contact your HP sales representative or find us on the web at www.hp.com/go/hpfinancialservices. * enhanced Telecom Operations Map—from the TeleManagement Forum. 7.

References

Related documents

Studerande som underkänts två gånger på kursen eller del av kursen har rätt att begära en annan examinator vid förnyat examinationstillfälle. Den som godkänts i prov får ej

Via menyn Playback (Uppspelning) kan du visa ytterligare information om varje bild, rotera stillbilder, radera bilder, förstora stillbilder samt lägga till, ändra eller

I ett produktutvecklingsprojekt är det viktigt att föra kontinuerlig dokumentation av arbetet för att inte viktig information ska glömmas bort och på ett smidigt sätt

konsekvenser för kvinnorna och deras vardag präglas av kränkningar och förtryck. Kvinnorna löper en högre risk att utveckla både fysiska och psykiska sjukdomar till följd av

Hur och när byggnaden inte längre behåller samma egenskaper med hänsyn till höjd och elementindelning finns inga svar på och det leder till att

Vi tolkar det som att Aftonbladet har riktat in sig på att ta med personliga  intervjuer för att sticka ut och erbjuda något till publiken som inte alla andra medier gör - för 

Syftet med den här uppsatsen har varit att analysera det journalistiska innehåll som TT-nyhetsbyrån publicerat om Luleå, Umeå och Sundsvall före och efter nedläggningen av deras

STN2 Skriftlig tentamen: salstentamen fonetik 1,5 hp (U-G) STN3 Skriftlig tentamen: hemtentamen litteratur 7,5 hp (U-VG) OBL1: Obligatoriska moment Språkdidaktiska seminarier På