From 0a49138a0ca403ceda29e1d5c9d912ffc3c525e0 Mon Sep 17 00:00:00 2001 From: Anssi Mannila Date: Thu, 8 Oct 2020 15:10:49 +0300 Subject: [PATCH] Add FM documentation Change-Id: I0c3ca624c03999b5f4af093cbef4478005ca520b Signed-off-by: Anssi Mannila --- docs/images/RIC_Alarm_System.png | Bin 0 -> 55110 bytes docs/images/source/RIC Alarm System.odp | Bin 0 -> 18443 bytes docs/index.rst | 1 + docs/user-guide.rst | 392 ++++++++++++++++++++++++++++++++ 4 files changed, 393 insertions(+) create mode 100644 docs/images/RIC_Alarm_System.png create mode 100644 docs/images/source/RIC Alarm System.odp create mode 100755 docs/user-guide.rst diff --git a/docs/images/RIC_Alarm_System.png b/docs/images/RIC_Alarm_System.png new file mode 100644 index 0000000000000000000000000000000000000000..5982333d375ddd8fc819a4763b77d2161e081586 GIT binary patch literal 55110 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 Mp(YRNw4GxA2lxqdV*mgE literal 0 HcmV?d00001 diff --git a/docs/images/source/RIC Alarm System.odp b/docs/images/source/RIC Alarm System.odp new file mode 100644 index 0000000000000000000000000000000000000000..bf8c2886045648d7b7d8002ba08589aa43521b3e GIT binary patch literal 18443 zcmb4qV~}Re(%{p!d%CA>+qP}nwr$%sr)}G|ZA{yo?w$93`|Xd7yLWdhqO$T-R95Dx zlTn#fnMYm<1QZnjfCK=T)I=4SNUO@}006*0^=}uz#=^$L*~8w%z~0{4!pOkc!p@e? z)z+BS&cMmSiPp~E#Mao($i>FQ)|uAc(ZuO*`>!$b|C$sM67pY@{+;K4m48iY;%q?c zZe!i7s$;i7kLt5q8{S~Kft$$gT}&LLjH5DK+@KmF>s2Z34P+OKvo34#{pS)?{Y)Na zaRRI7G~4U?=}G0?ERMqom!FdIwGYnch_jDLfLsrDtMj~M)oFIY&4(dx5f+)Sff1sn z8=Kh`Hl?x{9&StVURYm5WxxTRa$bWFdJju-L6}UX@ck%3;mc}|wwX2&U%guOtKtf# z9ddv@Hi)t#AkjLCN^+bMbsSh~86JVfq+UiU1k|KZT}_5Vx@g?O5{jUu zl&0F2-=sT4o~-=aZjQ3-axNO}!i11cdIn?joZ^I;PkF@f+p#-7xXvfdkh>LR(WR>X zh2P+5XB#6Ztum%{xn?w3)Z$HR9VC-_s_UT5?+43!mq_&yoYC|A$~?Ui>+r z06WKpS?>!|c}5rLhKS1vB?r-Gor+)tAHEzVni4X9jSN@@2Q z&=uQvgdNdPx+_ejL6Q>~e6J-lLHfQ@5T_|r?7YK?iQOMc4hAEqaF3&h1VzK&SCec7 zdcU35ICSqz>x1b+n7wS`dKMPCezJ9+OKC;P6K|rcH;2*RC0|3f@_4)s-?67~;-pRz-*}~S$ z=^uqZ*4%VFU`PC`@Zt)MDoo8H^swXLl;g?mp-_mlC&)X&B>WN79wZoH-hU*)8#0Cv zM@F=iIz0e}Qm5DwSJ$eOX}h`Djt#=v`l7Xp>q!T76^i==3dyesoshO&sd{X6V8>R}av@9O z)P98|+cG5G`Ft;ZdrrJ^C()onXY5_K{F+RVm*)o$L?H6sK4qz%K7*Y_5YcG$-Ogip zCe(CON1#T`Ws3GT{qx<@Y){XTEY&KrIpvUYLh)u$0~nqupzpZqRH#+CTGe%*@6o7I zBTbajvAZ&`0$)wb8rSeEsTYoINl2PDslKBuA&-)Z{zSi!2zmObpGAb>0U{OaGqknz zQmWB*K~c)+kk!-HHr*NgM0G})HYRsv&6^$(#WNsBH@I#0{;EX6`U2m7BUJXK&Eolf zkpFA~*8NVv6KYc!50_x;8b6^-5s` z3Y6KA3q&Z7{fTMzc!iAz(oOJ=+J?4B-ML5dVp!!%brTn?@DRc23rSq>6)rIUqCr0j<;5qL;2Uk&A)Utt-@ZDrqR31!fVL0_|mY7r=k|mWbT1_UmG*-w$1FzR5W` zEO}2&VbS=RC=gF-+#7b;v{d=pFLMaEMI!_0S=Z2;ZvFxCKw<>zs?tsc+ZT%hJ-X72 z>>y}SO!$o%l;u?+0E@6L1TAR1trq%Wi8&3b1&`*DxDxRudcc9(k6&IFz$wPlvO|uY zS1Ly@To~jY_qHDuA9v=zToqi!zh`}Tn)W^2#l`#i)x~vibjDpb1wc1%^(3-<{e{e3pac?BaJw`ut>6=2LQ5F5E+1wkRrE)}ga2Q&Jomp=Bxcw`TMCa(QLi zHoML}7Y_F%L}>m+(J}3c9yCc zc}EfmKMuDXsJ&)V`aBD={>%yyWUesq%=Cl!osY+m0D>LlM$!%U8>n*?In$_OQYQha z0`>apJ0MBcx!ROHqPc?QtIX=jfd5Z;?+nloG&O@Bdt3`+NAx&1h3(JL*$EpU$Io>QHf-@7qQy_0e8x`Q%VLme)AYALx;Aa z`wtF?>%tojS;3U6KKu?`eD$839Cnd20NP#XMB-y74du5*;Ih|gGYj;NI?3 zkXh@tC%sy=<4R_9Z)cJNRn_?zv(`yvfwGL#{OYc}&tneo^|IB7&#pJ+;sSK^O!Ro0 zLS0p8ZQU_GoAPSttVvmZFHiYKphEuztdvyNv+4_xVRFv%LQUnHCu{EGjl~}epo^e^ zpHH?{i^K9tBTx-OY9zhK#xK zzbwm~d1SM31K>T<)wN>tec+=vij6W_gEW6_O#evkG2s0vw|cb`hmUbI_BP}wWz+cR zBPpe!ZWVRDdhOxH&0K1!Sn;4Z%-FDfUB`B@9I8{v*@cI-E?di4H)Tm@wVDT6VVaio zzV{gm%M;I~HK5IVkYI~PJ#YWVa}|dMg*4Irg3e5D|82C?*##HQdrvUs@mJGAef(h} z57eG5dTV2GhQ~{dmg(wd{Hh3=SY=tQ&I9((NXac+U@DqxXe~Rfgkr#Ps^A$b-(NS%HgP=vUzjY`uhxA&iE0yV$y?v?IHm5)Ep+n zMK;`R)S0*QsA_PQ^YpQKrMiiU`IP3voHhO4#fr2hebyCoV^2AGi4sD?ESCk^+$acYTXC)LQq&-)0ngkHvbI34Qu@XNSUt8U7XmQ!5kXTdTD(%VxKt z3{}}xhLt+eIkZbUOyX#-BV*xJ1jM^SF#D``PUX@r=Q6IF=- zKG@TiTHfk4-r9qMtVhW9l9;u|fHHLMiEhpx_Re3B$YpvjL1xGgN&@Str%W~!ptA8u zmxj)E5?SRSX|0A**@6|kCX)cQ(xRjV!>?u7wAO5u1zbeqjFX2UL~&5mBgg$aEFuu? zDG0D7B1f+oVpX;kQooVze6F=3tB5#y7Q_W&R=Bfn{GmaIlJkspLT#45wX9ZePso9G zX~G}GTO_dsm2QdI_GyBwh3YpSxgZ*7)=W^BXph$JI=r*27rQfz%N zluPANoHH$7Q3FD6d{(!_mDJYAFsrw_Y8C6EXi0NVbAp|U0V>)yiEGREtdTPz$P3zh zCaYLc^fGhUCHh*QpNC3~->ZPWMqD8xO~(GMI#gDyj7#Xye zWT}N{Eo}shDIj*I%<9sVoSTc80CmS;_r#|*z= zfeFKsvIkeh?p|JoSv`017Ih*ICP6u_ZldlK1$qT;o4`RBD^#*{1=r|FS;=fRw{TD2 ziBRU;F26M;QPG251O~X*I1Se=_9p-Y0kgr_Hy|fJIy4I1?9T@z0W1my`h9F4+P=7*|Xst&h&fS5cy75tojjII2)s@33q{4d$ zo(PdwOqA;;XwC+7YX;U(i@=3`RDgW6g4Ui11g0PyYN|ppOKb<`R@<;yL`b2fj1LGV zgwe2$0>QbM$#~_wQkmcS%-C ztI?a=lmEOl6VEFO$xz#fe1En}HZiK-@ZAP2=yoq(xZViG&Pk?h6V});R$oG280ml? zhLdN?g<+9@H;>fAZ2nab(h|X%1)tT=>dm`0g_MC!Vr?{S4!wESuCJATVrbk=Z7q%! zGs0DELvIVd*~Vc_XtutwA89KHE<@sLb?HaQ%RFFq?U^BXFi`%SgD|U2E@v2G%1ziL z(#P6ocpt5fJ#QqJS9h9xLhWFOdFy8)mvQC(spm3kq#=+~Oj;ccKz9K{Fv-`buf&)G z!SXEE2zxNH7ZobPm@%IN+Qv55$%@GY-ZsU5{DytBUP3%G!}6ylZQQqiU*Ircv`m7C z-l!rlm*eYWtS!T?z$Va@$@dttKVlJD z+(^b{F!s>a#}6$b`??&C7v@S}h7T}4CpSlsMjGLTGeCqK+vsKa>FzP?VeC=r83%56 zHAnEh1n~_j(x7)UOiIsUd`!m}qb-*+{Of4y(qTOLe&!5pFpz>WOEC8`LvUubL}^T@ z(HWkj#*!i8@&{RhmgOc`B}}g3CQD*6=_FJb8*nf)FRQnRsQj3O7N$T)^3Q5w+zbK8 zrL0Zi2bNMbGuTy;mpGrPWpGK<55MP-6LFStO`ic8rJ!(WwtCK2SZh;tjT(gHcK&z1{e8L0;$fU zk}BA1Yc#)%w8U{7=`1gZ6o0DnA}5%0Jb@xoM3dshKs2XD8|C^WqoinT1}_zObS8u8`J`N+q3sgXa@2RS z$iZg~q@}y@^$^))L9}3pz%w+=B5L*Ew{V|Y$6}+bh~$nt^c-KqFgKoeq@UPru;@9v zOjbkGb`PEB>}yw%mT6+zOmP25Mz_&SGy`?hfI5+C+>`^)*$@z~CMMu5=<5uYd|`4~ zq(S*yf*$L~M4=-{ z;l*mF7UxF*V-Ps}E+>nd%AOZ!W@)AKc@l9{y=e;sZ;4+ZHOp~ zKyauJNg%@~5gZC3Z0?x|83P|0UjrwHTyWQq$S8}PH@<(%p}@z(^HXpT1^60?De5qmMA8%eYILw%dP!CkLXXf4X(}+ON}kPS`5al`aU{VsR!g*!;q*LL(dA@x12ojp1^KC4-sxs+~A*A zC*b@roQ(mvXFQ{GatcwHOl&~u!I)KbX<*3iU&1#j=d?6*FZ$(bM(m*6&_89H3K$aT zvCWlyCeWf-Kpy zJ(IxRUg8H0d{53!z}r9+o?H$1=e>Fin{wUV`{kwIMTH@sbARcOr*#d(%w#q7eJ`Z= zk*n25j`t4Dm}?M49UY77qhLXRv^b9wTwQd3@rpJDDfH)qoV+ye{0*Pp&@ZCS6L2AKW(lu63)!=jT_{qa|n; z$4OblEyraOp@L4WBz7q9h{1Ebu#UJ~)Pe<0{UrktJ;iS%w~h97I>CDA+i6qa}3g~}^1b?5&Q;R`cKFG*vhY=NPaplxO& zMAsZc;8!inHQ7eEpZcDcEcJW^`dL{`m{#L`xBq+liEU!~ILr>U4)2&JMBOfQ={q#| zBrS}!Sd4R)Tm^Fd%NXxS(?Lu5hRBGT#C;5T?3qOS2+>#cmT5*k^;HybVqM=Uy;Is) zn%Z3#F&oX~Qy7Tn+nL^1^gZBngUZeL!K3swGYN)2B~|n@N3U=<`i$_+YXSoiq`v+I zHx|?LY8N577I^c|!4>e=>pZ0dnpjq;6IwyB4Z zrOJNRiN?D_2}_nk_E~aSs^z`xOK(AdC*P*?Du}A%wB%5gu`t*s(%4wE{&p%#JO5p4 z(<~n3B08K%bAPIjlz5_+>2Lgp;I0qdkowr}ojM~ulBZYQrKp{c4MVPlMJaoMq?PLr z5JlPu6C?Xc9dp0mbG+0n(GDdB($5gj5}0rOw5Hrst&P!EdA~eGSb?IK@U2CWzV=KP zz^-ZS-2yscw!{$I#7e$A6wmYAV7n(EbgfOxn}e>q98XiYYPUR&m0l)h*|G%(LE21O zngV!cfqKX4ZbVgV#8fWN{?K;*OxqZ4+M>Nif?1X@_T@i^Z7*MKeB#uS#4%a5e~(cA zfh>zlS3n@eE|mm9kVh~Hk(RXYBoz*8LmEZSFDX2we6b!8d75BHF2%OY2%Sp#^r`#gJWKFC+%7&>e?Rxlewd)`&@mW!{-4% zoEkVi*Fywt3NsYoXl8T_vT-F=sTL*WkkQ;XJU22ZXg+?(xEv1~#Y!&^V_su{2uv7n z4*?DT8aM%Lmrc*kPH#R3ov~jI&e#z=rJU6wcv9Qix*9pUA8{30;OwqF;fA<0V8U84 zpJa-mPikZEHu=&TCUCq*YhP-@?aWLl%bl-1jg4Pn@24U`OgT%4;zhTbo6I8FF=;8w zYSCuhd-8R6e^`(-YQB_>MVDs%ig=k}n*8YYv3^UYD&Z>nNssyVb@E)Sa^KXc2=2&j zOfd^+R+C`c@XVc8&8m+sb|<#b#hnu;R_Ng>cYHez=F!jp8zFIyDxMnnm#0a zf^(>5Uk_Qj9?e2f3zO5$#YPeTeUG#CvuXSS9#YDLoKi1?g>rs=ajusO*#rW(z5V;1 zr=XU`J^%hV3B;d$ym&;MPX==Gv`IcDXJ`4REaOkhtHYa*%0yWYN=y&MSpX$H=c+vb zRpAtCBQV?%{uwZ{pTiyJwqaYy%_F)zDkYyOQ#vtTrDW1IRNig)I*&D)+pAh)JcD~@ zH%@IieE-P)aun7uux!fXR(~}nRmm1>gLE9m!bRh^~Y}FegWTJ+R{1))o4KejBJ**t} zIWN8#a{$Hk^ZO!0K2T?gG7X%ASBqE;P2_|Yk zhZ~smo&^{}uQ<*Kfe{<)!6F+YsVlk0KF`2ka(GpHzo+1EAv8ZTo$4M^MP*{So{6#y z&o4cE1O0P(;cYHP6O0G|nCAcY<;8!8vHn-M=`Vu$w+h+Wnp&8-IQ}a*<-|zmY-eX} zZ(wU;P4{1y_y3OW=f9!*8|ZQ|G;sV6RR4~f)8C+&i_?Fm!~Qqi42+CStWEw3ZTJ7n z(caG9#r_{*|AVCej-$P!o!Q?o-v33`f44IKtmuD!L%e_Uh88vkW+qN_f)>s;2KG+> zLD+xC($w0{z}e(~Um7gLiCaDd0N|hc50$dHi;bbJfrYgbo%4UAwDz`U5%RKPaL}00 ze}}+HhzlzM06>3HKp!N?U%162qYMCm0OX~WMSy^SaQ+q|I!a1PP7Y3H9&soQA1(z; zUNs+2F%q%AMOsN+OQQJON z#Wh{syTs5o*upKs$~(>3E5yMs-ZDhhB}&!(uVITevQ0MeOgHi^u!Qxmf(>rxi0^<6 zABK%wf=`@+PhCOGUWd;;!^k~B%-=*PxIrj+KrQ}_T=|4t_rZ`lNSSv)Q!vX~IK-B} zOJ00NTzN~~@WfGe%w2cM((L2gkcYN5pzQPmDH4KDGO))|d9 zsqOCV=|cI@ZiNj(Jq0#hwVvH|9ytR(1;aiofqa7<2-9)$qv^&=wX$O+<`c~h%N>^U zoi0yFVwYVCOCx}TdBFLg#>b5I)ri6En0{zzcvwtoWO8O|R8UrOWO`a!KwNQ1R#|jz zYid?;M1EFoQFL;7UUE-dN>@fqVS8plX<})2dTUETN>ovHQeAdr#jo(v!tCa<%(Alb z(yFG4hPI}vlGdh*uCC6g!l9U73n>*NIrWn{E$bnj`(^DD#T{$S-6JJE2U){GS^Zf> zBS{lOB_ji!D+ARlqb=+6y?e8rd-FZx6C*>DOXKr1 zlMBm>(_^di6DzB$BWvet+lMoIm$PRt8wVF_CwJ#71N&QRC;J-@=i6_$+b1U{$CnQ$ zw>K9LulH9cFL%GczP`9CWX}Kqn0EX<_ z3d=IIFB7?7@*&{9M_PcamM=GHDVm*EzJN3hXyY@t)4{57AG^LLLAq`C?3?B9r(bhG z3p_7P+z9Q~R05u`f7O%gL%zpH8$m!N}Ikb9r7(l15`)DAM1JJa4!?G>h09z$A zZc1cXCqA73X)6i{f<5;aHj!8xTo3|+Vi`^qZHGf%9Wo5ymIV7C08l*iml8wLr|Iu1 zGkqBPz|_KUti|$|Ch|V&Tgw+VGN4yB7f&#E7dY#mvrS>ye6lh4W&u1rdZ3XYp}%ZG z_juvW>4qT$e*(b$f%O0Ga{tc_{~S=;ZU5MX9?uz|O`Z$$9gh>hi}M437jF(!j&*+S zlZ-9T1`Y3yM*(r$SQ(PR!XntVMiq|KmxB2rn65=LRdZ}MpaSH*1l?ft3fw<%saElF z{|3zKr%=s57B_yfYWiRW3gcuIoFVv10$jik0K#8}xHS_N9p(Os@l;tZ?Q47#1Y=a_ zi-Gfl$H+igdFimZR#CK@+!iyMP1(GOTbhIw2k`~IiUOJ8rjuH+E z50Rs&sj{=N%TaWCl}I@UKKeCt+bLsZ$a4F@mbE~$|2Mn$XwPAzC76cys{xv`h^eiq zEiJQPHJ}Evav!ZZ5VHrrQ8hh<3i0xXX}=v}pIc+2yc2)j3sCD4lqaO}Ws;x8=9 zRZhM0m!3O4XY9E@0keNJPk)GQBWkVsM9#JQKXqm8aNLybT)bFDe_?u{&VZABV3k8f zFB)KooSGGL(*uI#O~G10u5+1b+Hm&#aDfg0-w%-35KZU%NnijbZ2X*?4C(tC*#T3~ zzLn#U?5-GdDgwxyU}DZE#S{slueqAvbIlgcBY03b;NnsnaOCX#gel2An{&R>+Va#K z^NWO>;LMH^YFeWRgbCW3nv0>1xuRUEx1nbuR)kY?)lF_J{NV8#{+=+ z^dQ73!1}KMRKuu85Q2vW{t00E<+ZzgI=#;4inMMZwO^#7m$pG0xE%>L+w!RxMZ9{T%Kyy|Aa3cmM2A%{o ztjTZ_`m|ST(9qx=c2Qs=+SGBwq2b|?Q97q5yfdKive^O}sF<>O^WJY`Fdg;OLMOew1O6ArwDxZE$1SiroxRlIMr35<0}X0b?u&7g8qpz< za+Iw-GqTsfw6+v%M9I_F)f6vGezjpNq>O&)2d-=)NRlzV}g@1ng+l);pwxc?L$EVHN?_8AO+>p zp_1lHSzM4$tVFjU+~YM2;b8$^v8G8BNr9U{gwQN)IQpfC0>0RY!154tPBnL1?IVsK z3wiAeJ=Xj`{p&04R#Zxa(fLgd#lD>9{OZKf;lNGo$=GX>)QfD`enA8 z%Xd@1wB+H0&YkMXS_hP^L`gM?3T>jnkv+NBP*K&@g`8RVd88q-zG*dqsuBR&H%jh4 zGitR3We6w-p(hs$1`M16hf12HEa;d_097cyD;B}MH43n8gOPTKqWimY&)kwB1Ae<} zA7+RHY_Z}hy-}e2WkkW*0Qu1Ovi9D-FdPYhu^=#imCZ7k)2&B?8_6Kox_6tmq-;FQ z1mN4Jej-|&*H?rrRvTCIBqPTvYgw<;F@BuS*EP-6RNIZ@mN%NwQ9B=rLJl_7i|#bmWPL@88#qAS>|ttF zTnDQMiU2^QMtET0By<<6rGl=yAKo7@fD4BJqt$7tqUo;wT5)^J7upGUf5@%+TB3H+}$Ng-y`I^$@A!k-kZtc z((~mwJTt4>jkN;=EP>uXINjf0f{z8wa&Txp+&}n?bYaND|I9BMv;Z~+ zfI!yq0^)$X%K|@M@XoTH@qYSNd~7!(Y?I!O@NGSf)B$0ip})KojkyF?^8u~pCe)J{ zOECxO(EItU-zA9lNTXG!b) z%1LiY1dpG9@HMrxYFi}fxE?beBsLtImxF3JOMB4sUZOfbMPR($s;+;Rbc z9Of$k^zR>H%Tti?doihQ8;Msk9NLpOp#h|C9%7HQ6E?>D0DNIjzC-7LeE>d$W*}&B zHB3C|>1-c%qo|a*3uaPln{4+VGNWKB_%$5Pp!2VlWcMUllsepUG9i zl$71N_~(Fo))+}5lmy*_riw+vh^nIxqlUvW$r5|5`f|`QE~#U-om7|nBY&&l73)jp z%*&V8DZVqPEY)2TLTA!I`it&SB;hm(yHMTvtZ7o3Ig2OOY6+{AOh4wrBmerCEO~%< zqV-qZx*@@z@Q?C!aZN;Ue%A-ZHmUXJ4Ss9Z4+~nmbQgK*_ej2K--C#<1@i%!u~0F?o<^)?ogk zKD!MoOueHgx0oOLY_v&T`r~>5tf)11(1`Kep?7i;6T9aOJ84oqajvXU@CYLYEO^ei zz3QRV-~AQ5#cPyLpIiKPD|OtM&LM&hpBcKmI~nYeH5Wt86TV99Z1xC0094N8t}E`8 zN8)SAAUj+vQ1n_}OpvO*r^ZIhU5IdxH6a|xpG&Dbcbg9C`Mq>sdjn57$x9@%!|Spp zCgyA%-@^Rh&V8I>{G40&Q07v|44Z8ox6BrIaNw^uGQ0Ty;V%Nf5vkw#ID$&%hV=~p z9+3e62@zT08bSTQ|8vsgKPPG@XAf(Wf2BNL>F6{Rv8VdxsjzD+JTL-*M}OO%cH{79 zC?N4DX{5}1bn0=@>t{*Bg6@4N$#n;LoQ19P*A}qJbDgI&`68m>8yM8Z*rAL-;Qo#GBNS>OAMc;0v`TlX4YXn!ev?sMVs2?^nN@^A`WwnB{}ddT)j4LTU_Yg$ z+UBF$`m_!P5!=VBJd_`f_h-NpPu4cNXtJ1 zXL0t8Q9BiWmT}-yITXQYGB_sHOSJOt8uuv*cEsX@NkDfn;Q~DXC98SdZLQvfhOFo7 zBBGH9@RvTx{}2}5+}VKcU=3t$e+QmllS94Z%$rc%r?scYqxZkoIvT;HZtzyVD!2vD z)be#7qH27L^As{ryw%QAkMtIwS`98}kU^ybKqHGHC|?CGOC~x@816pgiPlL6FcH?h zX>cVI>BHuYRrNymNB1^Zt2t^+u6bQ1+r`gjQ%_Hig=(q>Q=b?WfRE6hV4~z!;Z6RWC--(Rl%Z`nz z3wNHd1jzHB5q59v(d zA*blJ30-G@SQ3P{g-%tsf~G{t*e4lmcD_ApfJsOVj`w})2cgI7=%q$_S>;BQ>oJyl z$TF}9VICTQg5u|N2=vZ|+lP0+?mgTc`Y`GjW)~-9lMe@LL%(wCqz}n=zL!yZcDp|^ z=es?4&_-o-Y9@uWuxx#Fu@=di%R}6>Zbt%Kx)7s;K&`X)k;Dw&+pbUhBD7cS%f?!U zGKqa4Tf@COD`h%jXaW+W5rR;=ry}{&pqCl)$E(-wudzs)CG`RdWl)-G!>a}Q2Oj{fm`mrdC4_D)`@v07`-8#bzC5=SlS|FMQ;0t=mrZ?SboScpe+ES` z2}7z2hPNi}QP{*lrAq}L`~X?y zT=(8U$H8dD$Enu9ry0#4F)9R}y8htI5&v4guljpkuvcDH`4)UH%vW2%AgwX`DNF*B zUR!aA6-oePp~W- zP*gH1?|6fHyNHs=H__zFO^`-+>j|A{1I0Y9_&@2nN&K$fNq`ki1qmXAp2JxCv7O#G zBM&x7FSDN+q;k?(i3*pmjp%g&rxJ)!SC8F9dykzz5)uYYUmcM}X(z%Q8FDiv$oSk2 z{tcn%Z%ELShDu{D5o*qeN1fp5g~6U% z%BR+;qjrOWYz>=hV+wYrK4lAwUndZJ$PzYRzz__z+#wcRoI%9gCFX6szHL|F;<XM}3 zokS;JH$uf-YisMNvDhstgXBN}L!>_!kXDd}RD>|-YX1DAweXWV>dsaf5xfR*L0M^^ zHbiGi%~cucw`WJh;I?Ox@#d&Aib~-l59Pc)A&NPP9$MNWn2l6n$!z0KNMBJ=)u9w> zL@J^kpq63w-$F)$x-Xe`nO$^?d~9GBW??b z&7%|}f|}qmf4v8zur1E{MYpNr64geOPyZ&eRL^J!YG!D;k(nO?KTEbZMY|rB;wD}o ziwMABaHJ>e7eBBF^%ZBeS4Odjv|sfD()mvH^kZr2_2f;D-s4-?{kqF7?fvu6>er{I zNAr3bb=s}|MjCubl3>?O72*av2Lt}G5mdX9uYMDp83H#n&(5Fah|{edI`cu|rFnB{ zVmrYsnH2{ex~P^rxt+njd*&X?x>H02{*8rz!ZrH`$2e$N*nxpRRXxz&o#Ht9Q8`|w zF#&&&;5_XoiW`;GpwfCqnT!L?Kx{ZUSM<*NSlpR4c#sgVh=;STisI!&kL>+HaULfD#Yu9)S;LRP+jf+6uqxg^zbD@!n}L)i3SU7GO~M1)pLH{?R|0?0h`Zl zd-`Gvpt*`EMe@iTp)Ng#3a7!mkVspaKQGIoHm-aATGC!?55U1T=x>kn*j!a)NB}I9dINl99bxXMeEJhLbwn4zk z_pN%)^|%?~rmWL3;*3$e`q^HwxJhxSxTl&rzkWJ+NzXWcwRvB+JP&OannB2D=1PBU z?#6MbaGpa5HumI7v;LlSnyys|T_a11ODNdMhPqS_?cmDrHi6iowP*D3EF!b(PdA(zE^BIC-=?WOoC0ysWxOY_B5@DYS^Q0A%(x?v$l(8O2DC1TziUK0* zU1C^lbqia{&C%M&SbGpf%qi9Pf=7|PC}UCZEL-0_%@}2?ixa$J5Pq5l)0j4=VU|PN zmz)PPa_jR8jM@AgqXQEh*UB6*p%Wab6CSe1OYeo*Id)+=)^_Kh6Bf`^W$V8jW3ed7 zZuZiZWq)O}Rc50Y9A`UMWSa^dAK?tx+8ehGglQ6#-`9~WC>a!&Cl+bkF<8m5v9>8B!nnO(o%7Wt-66z@y-oQe zpvyD$uNo~keqJVU^9_YO5ub(~8RSnGCDmhNOeXvT&T#}8 zQ;Cc?{wG+p3pS=M3sRqX$|3Ap!P4`17VBZ5u|7&`t++Bx#sW#6aQNAL?Ih~X$TL(!9Dj^t>@Jk9T_eIsJpW-!i&VH^3DUKH+nr0( zEa_Tzk^qtnU4>G$%Tv=V@mvwnxl)%F5#3AiQk}~iXQD+~T}lsBEiKCjI>zJ{7c|k_ ztN8PuUR6zuhg!ACEv$4zLKa$PW=HGr8Knx8)ykR-CDqfbWAYm-8dx4Jhwux5^1E9=-Ef%dJ~<F3)1Q_**m(mJb4q>~ow{#Bzw& zaUg^qs21?rS}kKWp;RdFW5FPd`}}gT(&PUi{?hDoy&y`A`+dvUTbEY}6dCq=D>E$< zM+x^EInuZkNn+2J<%>V^G%RtREKot(PuypbKvEKLG0qeI0snlX1){$e>A%1~->6uu zG_|X6)0VOMC}qgW*is@xv%%)5eB42obErrdk#yG+LbV3b{cTWgqY(%JVPOd&0l~Ch z<_zQyE-JLWrLb`h&MoEKRoW8>_f)YZ$`M@O?u|Vh8`J2K8|&_QCTE89xDX>7d8TFb zs5_zcDg@3{ONYn4Y;ph~w#8N(GhE8K5Ek@oQM;EJan!|7xmFJDNycyGY2;n>Apc;) zG>x7LKDd!HX{{Sep~tNNH|3}%Dxu- zbz6MaQT;3|Wg2gSZZvm>F&d{0YnK|OX)P4}%<&lBr-&9k8hxF9qYdqhLBon(Le(H0 z7hgaItn&(a!6ZtUv;f4LiR5X|eJvyTP6`)M=SL78V39GhyF@7c)Pwv1y$fYxD(z9I z%XlVN(CuF04}GCuVgt=BCEKW)pIddhl9w`u9^BuwIT6uDbD?Pwe_}A!{>U6zS6U5V zFZ>8{W%vB6b~q5*;bQtS99$QXDK93=Ygt;>V6sut3Q6I`4}xJiI94E-4$4;v+|tI@ z(Q6MjSrIKro)pEohJBpMckdfjcKD`6Wq19;Mb@bMINy-W?CLdo;c)V+BSjRI$y^p#Y zA=cr&N$7C9FD9wC?94J{8UWt!+B#ecIZs0FzCoj;1i6r;yzHm(l`tXDe(q)RXAh*d zdyfvzDtX_+u-%5y71!N$pv>VHc)Sh5*99grjB*Vs3Wy=DS1x7n& z-6{7ARazaRDhhtL{8*{raudjMqhzp+aRlM79F zt@b#jKMjBG=-22ZXG5QyAMEJc)+2J_nl_S3?br-#O-ELt^Fnse(eXZ?Ms^3+-sqto zwHw+8zk6VDH2e}lUg(7>8(@|DoQInEh+}WtoBGc>WV{4ir)Kk&x z)_ObW`fj>c$uPX0@s02hcz^J7D0y+Lqn?8j~$`qo5 zhL=GhZ3>-~F<@L;rzD^}jjDQMjkU0zI@99ZQqs817hK#(lVfvkEoG*~x%o#_oO82q z=J{27#&vzXisdFMw_sxd?)$GV;ZQ*Ohu?ffjcu!(P4~eng`fq?HyZZI6!;%c!fCK} zsza|2E^ntiYdwdEw^MFE|^CgKAwfva>gt zSEOyk>k5}Q=x*D03|+iFIxd-O2##UejgoWtTs$+bwj$OZVwf-7@Lxv{N7@{(E!|6AF$*eR$V^Wx1 zt~Ys0lVw(D%}Vaf%oh(q8sRT+t1Xcgw>fsjS|#>{gGAJ9=g~A;2bXJl>K<%sd_M3*Q2S8ug}57xw$?crXrEQTbaf#Uyi%1(QJW2 z!Qkw|SUY7>S}_f$DZM1}Yyxo~6AzXtks+AqvsWw+`uXDS=ep~1|M)V%$jm`3)aUhi z=JnhvfC;ZXDg}{OcM;hU^tKq#VCwNFKn2IUl(&ho=2SICb~ei%X3ti+$F8VyLw6pj z(cV|=;CX84+}PC}^LM5}qY&(5HSi_KJUvx2G~f?ED~r6C9<^VXt@6*zLaRtt99|if zHf{(6#!$fy+A2odFEQg2m@3xU!Qbr_8OwCn$?806WsU9hwT&M2a7AKb1>x35duGN1 zFzT}J#jN@#iz5U2fBmu5ibh1$9F(avRG9WI3KNQ1CpxwacUTwRU((#tCzvAC<(XvpAkO3hZK=K*Irmm;M)WQXmq*4xBk0G2|Qy6XMhZI*dm0-29EWb(G zn`nPr@d%bF+?3_NsMN$Q-zB?B!8O;}vjxPQy7FBJapguu1y&UU3bEcQ?`Ln&eWr(+1gPB&nAZL5K|l1#Gd52d|_J0rlwal z&OyW9{7d{{Y1uXH8Ls(qJ_s^I{8T+{F3?oK6}H=Yi$nR<`R%#K;V_x`d%i#(T%Iqi zn?pyt{N_$Y&$&W-KhknW6lyN7J$q8XVCLDV3>bW;VKXdtu9l7Q-fgx6)5*)9%;0=! z7h7ET{1_D*Q9BP8JV7eBqa8yFCk!br3F<;{H4Lc>@Pm-(5*<+Ozg;HOHbcCp(zsj& z-J2(RxYD^_aR21yF_z@`KK=jz77c;^!w>R*2LNP5lm%!cWJT$03~Vh-O`QJqi($2r zl;t2j;`S-3sF#$Ds>s@S;T%dag#2*=QM{;NUi?;1YJ^dmVK_l2#>u&lsk~E{rjic6 z@Kqhj&0~zR|AGtVN2+&T&u;`r?n_K6d8+UTIT4nw!B=ywL=Z=^!dUE(kg=qr84y=l zQ<(HuJ#M@d-0gwB+^t_RK^H?+Id~-R<;6f!zu2$7L_1mb_v#Ra{ollHOxU*SZU(i@g+az0S zI?wGR{?Bvj12TjoXL-Ha7;m_6?Tf~#Kex?ZGP^Nd|I&u~`yW4WgM!(2(c(xI;KH?& zz*TDj-i%Bl47kto01e+G0PJKBm@e319mppefDY?GfKVV4cp3=!=niyU$ooh^ryd}H z6VPSIXCR>KL|()R+GmOYT)>$Gq+O>ljo8*|f>vE3z;PfK--=JvU_$7FEEq)a|6?%+ zu>usgDX6Y7mBw@p@`_O0=73gcB0w${b5K`^;x-A@Ma!|6guG%Dw>hXTx{u8qloh17 zO#&^=L;y*k!PsI9vZ55XDWEl_2;h&!6pR(7xD7*fQV$lx5GzhmO+jCCig3~)peeXk zpu!R~EaxE?nV?BD1Tfb@o>D{Chg=4L3RDD0cEVA-26(dqH+?fO2mqlr3j@O`XAlnn Dqew0a literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index 70333ae..454f947 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -23,6 +23,7 @@ Alarm Go Library :maxdepth: 2 :caption: Contents: + user-guide.rst release-notes.rst * :ref:`genindex` diff --git a/docs/user-guide.rst b/docs/user-guide.rst new file mode 100755 index 0000000..b33a62a --- /dev/null +++ b/docs/user-guide.rst @@ -0,0 +1,392 @@ +.. +.. Copyright (c) 2019 AT&T Intellectual Property. +.. Copyright (c) 2019 Nokia. +.. +.. Licensed under the Creative Commons Attribution 4.0 International +.. Public License (the "License"); you may not use this file except +.. in compliance with the License. You may obtain a copy of the License at +.. +.. https://creativecommons.org/licenses/by/4.0/ +.. +.. Unless required by applicable law or agreed to in writing, documentation +.. distributed under the License is distributed on an "AS IS" BASIS, +.. WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +.. +.. See the License for the specific language governing permissions and +.. limitations under the License. +.. + +User-Guide +========== + +.. contents:: + :depth: 3 + :local: + +RIC Alarm System +---------------- + +Overview +-------- +RIC alarm system consists of three components: Alarm Manager, Application Library and Command Line Interface + +The Alarm Manager is responsible for managing alarm situations in RIC cluster and interfacing with Northbound applications +such as Prometheus Alert Manager to post the alarms as alerts. Alert Manager takes care of de-duplicating, silencing and +inhibition (suppressing) of alerts, and routing them to the VES-Agent, which, in turn, takes care of converting alerts to +faults and sending them to ONAP as VES events. + +The Alarm Library provides a simple interface for RIC applications (both platform application and xApps) to raise and clear +alarms. The Alarm Library interacts with the Alarm Manager via RMR interface. + + .. image:: images/RIC_Alarm_System.png + :width: 600 + :alt: Place in RIC's software architecture picture + + +Alarm Manager +------------- +The Alarm Manager listens alarms coming via RMR and REST interfaces. An application can raise or clear alarms via either +of interfaces. Alarm Manager listens also commands coming from CLI (Command Line Interface). In addition Alarm Manager supports few +other commands that can be given through the interfaces. Such as list active alarms, list alarm history, add new alarms +definition, delete existing alarm definition, re-raise alarms and clear all alarms. Those are not typically used by applications while +running. Alarm Manager itself re-raises alarms periodically to keep alarms in active state. The other commands are can be used through +CLI interface by operator or are used when applications is starting up or restarting. + +Maximum amount of active alarms and size of alarm history are configurable. By default, the values are Maximum number of active +alarms = 5000, Maximum number of alarm history = 20,000. + +Alarm definitions can be updated dynamically via REST interface. Default definitions are read from JSON configuration file when FM +service is deployed. + + +Alarm Library +------------- +The Alarm Library provides simple interface for RIC applications (both platform application and xApps) to raise and clear +alarms. A new alarm instance is created with InitAlarm()-function. ManagedObject (mo) and Application (ap) identities are +given as parameters for Alarm Context/Object + +The Alarm object contains following parameters: + + \* SpecificProblem: problem that is the cause of the alarm + + PerceivedSeverity: The severity of the alarm, see below for possible values + + \* ManagedObjectId: The name of the managed object that is the cause of the fault + + \* ApplicationId: The name of the process raised the alarm + + AdditionalInfo: Additional information given by the application + + \* IdentifyingInfo: Identifying additional information, which is part of alarm identity + +Items marked with \*, i.e., ManagedObjectId (mo), SpecificProblem (sp), ApplicationId (ap) and IdentifyingInfo (IdentifyingInfo) make +up the identity of the alarm. All parameters must be according to the alarm definition, i.e. all mandatory parameters should be present, +and parameters should have correct value type or be from some predefined range. Addressing the same alarm instance in a clear() or reraise() +call is done by making sure that all four values are the same is in the original raise() / reraise() call. + +Alarm Manager does not allow raising "same alarm" more than once without that the alarm is cleared first. Alarm Manager compares +ManagedObjectId (mo), SpecificProblem (sp), ApplicationId (ap) and IdentifyingInfo (IdentifyingInfo) parameters to check possible +duplicate. If the values are the same then alarm is suppressed. If application raises the "same alarm" but PerceivedSeverity of the alarm +is changed then Alarm Manager deletes the old alarm and makes new alarm according to new information. + + +Alarm APIs + + Raise: Raises the alarm instance given as a parameter + + Clear: Clears the alarm instance given as a parameter, if it the alarm active + + Reraise: Attempts to re-raise the alarm instance given as a parameter + + ClearAll: Clears all alarms matching moId and appId given as parameters (not supported yet) + + +Command line interface +---------------------- + +Through CLI operator can do the following operations: + + - Check active alarms + - Check alarm history + - Raise an alarm + - Clear an alarm + - Configure maximum active alarms and maximum alarms in alarm history + - Add new alarm definitions that can be raised + - Delete existing alarm definition that can be raised + +CLI commands need to be given inside Alarm Manger pod. To get there first print name of the Alarm Manger pod. + + kubectl get pods -A | grep alarmmanager + +Output should be look someting like this: + + ricplt deployment-ricplt-alarmmanager-6cc8764749-gnwjh 1/1 running 0 15d + +Then give this command to enter inside the pod. Replace the pod name with the actual name from the printout. + + kubectl exec -it deployment-ricplt-alarmmanager-6cc8764749-gnwjh bash + +CLI commands can have some of the following parameters + + - \--moid ManagedObjectId, example string: RIC + - \--apid ApplicationId string, example string: UEEC + - \--sp SpecificProblem, example value: 8007 + - \--severity Severity of the alarm, possible values: UNSPECIFIED, CRITICAL, MAJOR, MINOR, WARNING, CLEARED or DEFAULT + - \--iinfo Identifying info, a user specified string, example string: INFO-1 + - \--mal Maximum number of active alarms, example value 1000 + - \--mah Maximum number of alarms in alarm history, example value: 2000 + - \--aid Alarm id, example value: 8007 + - \--atx Alarm text string, example string: E2 CONNECTIVITY LOST TO E-NODEB + - \--ety Event type string, example string: Communication error + - \--oin Operation instructions string, example string: Not defined + - \--prf Performance profile id, possible values: 1 = peak performance test or 2 = endurance test + - \--nal Number of alarms, example value: 50 + - \--aps Alarms per second, example value: 1 + - \--tim Total time of test in minutes, example value: 1 + - \--host Alarm Manager REST address: default value = localhost + - \--port Alarm Manager REST port: default value = 8080 + - \--if Used Alarm Manager command interface, http or rmr: default value = http + + + ``Note that there are two minus signs before parameter name!`` + + If parameter contains any white spaces then it must be enclosed in quotation marks like: "INFO 1" + +CLI command examples: + + Following command are given at top level directory! + + Check active alarms: + + .. code-block:: none + + Syntax: cli/alarm-cli active [--host] [--port] + + Example: cli/alarm-cli active + + Example: cli/alarm-cli active --host localhost --port 8080 + + Check alarm history: + + .. code-block:: none + + Syntax: cli/alarm-cli active [--host] [--port] + + Example: cli/alarm-cli history + + Example: cli/alarm-cli history --host localhost --port 8080 + + Raise alarm: + + .. code-block:: none + + Syntax: cli/alarm-cli raise --moid --apid --sp --severity --iinfo [--host] [--port] [--if] + + Example: cli/alarm-cli raise --moid RIC --apid UEEC --sp 8007 --severity CRITICAL --iinfo INFO-1 + + Following is meant only for testing and verification purpose! + + Example: cli/alarm-cli raise --moid RIC --apid UEEC --sp 8007 --severity CRITICAL --iinfo INFO-1 --host localhost --port 8080 --if rmr + + Clear alarm: + + .. code-block:: none + + Syntax: cli/alarm-cli clear --moid --apid --sp --severity --iinfo [--host] [--port] [--if] + + Example: cli/alarm-cli clear --moid RIC --apid UEEC --sp 8007 --iinfo INFO-1 + + Example: cli/alarm-cli clear --moid RIC --apid UEEC --sp 8007 --iinfo INFO-1 --host localhost --port 8080 --if rmr + + Configure maximum active alarms and maximum alarms in alarm history: + + .. code-block:: none + + Syntax: cli/alarm-cli configure --mal --mah [--host] [--port] + + Example: cli/alarm-cli configure --mal 1000 --mah 5000 + + Example: cli/alarm-cli configure --mal 1000 --mah 5000 --host localhost --port 8080 + + Add new alarm definition: + + .. code-block:: none + + Syntax: cli/alarm-cli define --aid 8007 --atx "E2 CONNECTIVITY LOST TO E-NODEB" --ety "Communication error" --oin "Not defined" [--host] [--port] + + Example: cli/alarm-cli define --aid 8007 --atx "E2 CONNECTIVITY LOST TO E-NODEB" --ety "Communication error" --oin "Not defined" + + Example: cli/alarm-cli define --aid 8007 --atx "E2 CONNECTIVITY LOST TO E-NODEB" --ety "Communication error" --oin "Not defined" --host localhost --port 8080 + + Delete existing alarm definition: + + .. code-block:: none + + Syntax: cli/alarm-cli undefine --aid [--host] [--port] + + Example: cli/alarm-cli undefine --aid 8007 + + Example: cli/alarm-cli undefine --aid 8007 --host localhost --port 8080 + + Conduct performance test: + + Note that this is meant only for testing and verification purpose! + + Before any performance test command can be issued, an environment variable needs to be set. The variable holds information where + test alarm object file is stored. + + .. code-block:: none + + PERF_OBJ_FILE=cli/perf-alarm-object.json + + Syntax: cli/alarm-cli perf --prf --nal --aps --tim [--host] [--port] [--if] + + Peak performance test example: cli/alarm-cli perf --prf 1 --nal 50 --aps 1 --tim 1 --if rmr + + Peak performance test example: cli/alarm-cli perf --prf 1 --nal 50 --aps 1 --tim 1 --if http + + Peak performance test example: cli/alarm-cli perf --prf 1 --nal 50 --aps 1 --tim 1 --host localhost --port 8080 --if rmr + + Endurance test example: cli/alarm-cli perf --prf 2 --nal 50 --aps 1 --tim 1 --if rmr + + Endurance test example: cli/alarm-cli perf --prf 2 --nal 50 --aps 1 --tim 1 --if http + + Endurance test example: cli/alarm-cli perf --prf 2 --nal 50 --aps 1 --tim 1 --host localhost --port 8080 --if rmr + + +REST interface usage guide +-------------------------- + +REST interface offers all the same services plus some more that are available via CLI. The CLI also uses the REST interface to implement the services it offers. + +Below are examples for REST interface. Curl tool is used to send REST commands. + + Check active alarms: + + Example: curl -X GET "http://localhost:8080/ric/v1/alarms/active" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Check alarm history: + + Example: curl -X GET "http://localhost:8080/ric/v1/alarms/history" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Raise alarm: + + Example: curl -X POST "http://localhost:8080/ric/v1/alarms" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"managedObjectId\": \"RIC\", \"applicationId\": \"UEEC\", \"specificProblem\": 8007, \"perceivedSeverity\": \"CRITICAL\", \"additionalInfo\": \"-\", \"identifyingInfo\": \"INFO-1\", \"AlarmAction\": \"RAISE\", \"AlarmTime\": 0}" + + Clear alarm: + + Example: curl -X DELETE "http://localhost:8080/ric/v1/alarms" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"managedObjectId\": \"RIC\", \"applicationId\": \"UEEC\", \"specificProblem\": 8007, \"perceivedSeverity\": \"\", \"additionalInfo\": \"-\", \"identifyingInfo\": \"INFO-1\", \"AlarmAction\": \"CLEAR\", \"AlarmTime\": 0}" + + Get configuration of maximum active alarms and maximum alarms in alarm history: + + Example: curl -X GET "http://localhost:8080/ric/v1/alarms/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Configure maximum active alarms and maximum alarms in alarm history: + + Example: curl -X POST "http://localhost:8080/ric/v1/alarms/config" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"maxactivealarms\": 1000, \"maxalarmhistory\": 5000}" + + Get all alarm definitions: + + Example: curl -X GET "http://localhost:8080/ric/v1/alarms/define" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Get an alarm definition: + + Syntax: curl -X GET "http://localhost:8080/ric/v1/alarms/define/{alarmId}" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Example: curl -X GET "http://localhost:8080/ric/v1/alarms/define/8007" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Add one new alarm definition: + + Example: curl -X POST "http://localhost:8080/ric/v1/alarms/define" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"alarmdefinitions\": [{\"alarmId\": 8007, \"alarmText\": \"E2 CONNECTIVITY LOST TO E-NODEB\", \"eventtype\": \"Communication error\", \"operationinstructions\": \"Not defined\"}]}" + + Add two new alarm definitions: + + Example: curl -X POST "http://localhost:8080/ric/v1/alarms/define" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"alarmdefinitions\": [{\"alarmId\": 8007, \"alarmText\": \"E2 CONNECTIVITY LOST TO E-NODEB\", \"eventtype\": \"Communication error\", \"operationinstructions\": \"Not defined\"},{\"alarmId\": 8008, \"alarmText\": \"ACTIVE ALARM EXCEED MAX THRESHOLD\", \"eventtype\": \"storage warning\", \"operationinstructions\": \"Clear alarms or raise threshold\"}]}" + + Delete one existing alarm definition: + + Syntax: curl -X DELETE "http://localhost:8080/ric/v1/alarms/define/{alarmId}" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + Example: curl -X DELETE "http://localhost:8080/ric/v1/alarms/define/8007" -H "accept: application/json" -H "Content-Type: application/json" -d "{}" + + +RMR interface usage guide +------------------------- +Through RMR interface application can only raise and clear alarms. RMR message payload is similar JSON message as in above REST interface use cases. + + Supported events via RMR interface + + - Raise alarm + - Clear alarm + - Reraise alarm + - ClearAll alarms (not supported yet) + + +Example on how to use the API from Golang code +---------------------------------------------- +Alarm library functions can be used directly from Golang code. Rising and clearing alarms goes via RMR interface from alarm library to Alarm Manager. + + +.. code-block:: none + + package main + + import ( + alarm "gerrit.o-ran-sc.org/r/ric-plt/alarm-go/alarm" + ) + + func main() { + // Initialize the alarm component + alarmer, err := alarm.InitAlarm("my-pod", "my-app") + + // Create a new Alarm object (SP=8004, etc) + alarm := alarmer.NewAlarm(8004, alarm.SeverityMajor, "NetworkDown", "eth0") + + // Raise an alarm (SP=8004, etc) + err := alarmer.Raise(alarm) + + // Clear an alarm (SP=8004) + err := alarmer.Clear(alarm) + + // Re-raise an alarm (SP=8004) + err := alarmer.Reraise(alarm) + + // Clear all alarms raised by the application - (not supported yet) + err := alarmer.ClearAll() + } + + +Example VES event +----------------- + +.. code-block:: none + + INFO[2020-06-08T07:50:10Z] + { + "event": { + "commonEventHeader": { + "domain": "fault", + "eventId": "fault0000000001", + "eventName": "Fault_ricp_E2 CONNECTIVITY LOST TO G-NODEB", + "lastEpochMicrosec": 1591602610944553, + "nfNamingCode": "ricp", + "priority": "Medium", + "reportingEntityId": "035EEB88-7BA2-4C23-A349-3B6696F0E2C4", + "reportingEntityName": "Vespa", + "sequence": 1, + "sourceName": "RIC", + "startEpochMicrosec": 1591602610944553, + "version": 3 + }, + + "faultFields": { + "alarmCondition": "E2 CONNECTIVITY LOST TO G-NODEB", + "eventSeverity": "MAJOR", + "eventSourceType": "virtualMachine", + "faultFieldsVersion": 2, + "specificProblem": "eth12", + "vfStatus": "Active" + } + } + } + INFO[2020-06-08T07:50:10Z] Schema validation succeeded -- 2.16.6