From 3d1579cb8cfe7fe924181bc3e02c570dca6ae081 Mon Sep 17 00:00:00 2001 From: shivasubedi Date: Mon, 13 Sep 2021 16:43:20 +0100 Subject: [PATCH] Create preliminary documentation for ONAP DMI-Plugin Create Preliminary documentation for Istanbul release of the DMI Plugin. Added new plugins in POM to generate swagger doc for design page. Added icons from Cps-Core, along with latest conf.py file from http://gerrit.onap.org/r/doc Issue-ID: CPS-625 Change-Id: I30582de9b07e93c1c2ecc18003ee6882994690d8 Signed-off-by: DylanB95EST Signed-off-by: shivasubedi --- docs/_static/css/ribbon.css | 63 ++++ docs/_static/dmi-plugin-modeling-concepts.png | Bin 0 -> 70110 bytes docs/_static/dmi-plugin-r9-arch-diagram.PNG | Bin 0 -> 28969 bytes docs/_static/favicon.ico | Bin 0 -> 2102 bytes docs/_static/logo_onap_2017.png | Bin 0 -> 12278 bytes docs/architecture.rst | 40 +++ docs/conf.py | 112 +++++++ docs/conf.yaml | 25 ++ docs/deployment.rst | 15 + docs/design.rst | 40 +++ docs/index.rst | 41 +++ docs/modeling.rst | 18 ++ docs/openapi/openapi.yaml | 428 ++++++++++++++++++++++++++ docs/overview.rst | 21 ++ docs/release-notes.rst | 129 ++++++++ docs/requirements-docs.txt | 15 + docs/tox.ini | 22 ++ pom.xml | 137 ++++++++- 18 files changed, 1105 insertions(+), 1 deletion(-) create mode 100644 docs/_static/css/ribbon.css create mode 100644 docs/_static/dmi-plugin-modeling-concepts.png create mode 100644 docs/_static/dmi-plugin-r9-arch-diagram.PNG create mode 100644 docs/_static/favicon.ico create mode 100644 docs/_static/logo_onap_2017.png create mode 100644 docs/architecture.rst create mode 100644 docs/conf.py create mode 100644 docs/conf.yaml create mode 100644 docs/deployment.rst create mode 100644 docs/design.rst create mode 100644 docs/index.rst create mode 100644 docs/modeling.rst create mode 100644 docs/openapi/openapi.yaml create mode 100644 docs/overview.rst create mode 100644 docs/release-notes.rst create mode 100644 docs/requirements-docs.txt create mode 100644 docs/tox.ini diff --git a/docs/_static/css/ribbon.css b/docs/_static/css/ribbon.css new file mode 100644 index 00000000..6008cb1a --- /dev/null +++ b/docs/_static/css/ribbon.css @@ -0,0 +1,63 @@ +.ribbon { + z-index: 1000; + background-color: #a00; + overflow: hidden; + white-space: nowrap; + position: fixed; + top: 25px; + right: -50px; + -webkit-transform: rotate(45deg); + -moz-transform: rotate(45deg); + -ms-transform: rotate(45deg); + -o-transform: rotate(45deg); + transform: rotate(45deg); + -webkit-box-shadow: 0 0 10px #888; + -moz-box-shadow: 0 0 10px #888; + box-shadow: 0 0 10px #888; + +} + +.ribbon a { + border: 1px solid #faa; + color: #fff; + display: block; + font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif; + margin: 1px 0; + padding: 10px 50px; + text-align: center; + text-decoration: none; + text-shadow: 0 0 5px #444; + transition: 0.5s; +} + +.ribbon a:hover { + background: #c11; + color: #fff; +} + + +/* override table width restrictions */ +@media screen and (min-width: 767px) { + + .wy-table-responsive table td, .wy-table-responsive table th { + /* !important prevents the common CSS stylesheets from overriding + this as on RTD they are loaded after this stylesheet */ + white-space: normal !important; + } + + .wy-table-responsive { + overflow: visible !important; + } +} + +@media screen and (max-width: 767px) { + .wy-table-responsive table td { + white-space: nowrap; + } +} + +/* fix width of the screen */ + +.wy-nav-content { + max-width: none; +} diff --git a/docs/_static/dmi-plugin-modeling-concepts.png b/docs/_static/dmi-plugin-modeling-concepts.png new file mode 100644 index 0000000000000000000000000000000000000000..77817e4e23ae3b2cf5d8f5c5402aea6882201325 GIT binary patch literal 70110 zcmdqJ^jrVkuWtG2N+$EFT^xIF`w~+Jk za=PhZe-7?it*ud5i)2SepvE;<&Blxm0#l3SHt(v*$>m}M$rDQWQG=_4RM8O`SsO7- z=TXea4_3|@UT%Iay{u?=w$wT*AJ#l3cuikAW9YqnHK_LX*wFh>x&3@pNLlpWMFNdF z2>16N6A~iQ(18E^9r!^-Xd=@8ekEZ6r-%RF$0X2F;H@AJkBv_(F6uKT3~tu?8ikOM zk-@H*4cq1v+vLg@Szs^2CclMCfk#0_c)ZEGc6CxRGN-x^Q86)P*VFfl>Jw6&A2+mwNi4PJ!SbaZ@m z%K{XbGV)(JLYP*!>Gbf|*Vnt6@xtvf0Buh+Tr4jyuSov1N_OYdH__g>o-x6C^k`w2 zXqV^HvYM+td{armt9-@+h&MM5!j{vAr~+_5(Gn7M7|NU>de@F#pVYbB;aOdU+~V#d zqXi;#wMZiRl+D?@#2`ZY-o2ZomEj@~9H;jrgoRyke2;z9@TUYzxY0E_bx`a)77IGC zKQ0*p7W5yUMn>5hr^HKGWWFt{7CcIX7b(8couQ$jao;k7dtkbUF;u)lMl)nJl<==y zB-MpAN?qVZsc;O_!&%VlOT;ld1DsS^^(6+7=Jwb;OuuPr$Xi<`>Dv2Q*zgjD=`Fo` zmSdCug@5(M?5#tc=Z@wiZ+G#TSI+bCG^ zmU)N8zXD{icc2ZieF=a8MJ;Dr?hdJCMvCZI*_#!#Qj(g zKaMJHv5hB`fsu0@7M8iChYz_V#khXgPVS2!)i@)5;zZ-;Vt|Og0G3bkZB3shV1Lwh zvVxf7;l`)h+BAhw=y!t$SBBG8EE2tH=gA|qBn7R`H4>^3=^Y8jT&vK5luF_;tNZqT zxVmTXw1~W+osf;6G&L++(<)+%(`=>ghIO9dCZ%o#To4PWN}TAD;1d)DG^s{J$k&79 z#>Ze`z^&DY&jsTNdj<^KK8Mnj*yCoyvq*>wms0P<_tzp!@DNFhRl>7Sz{i>xYg+N% z?Xlukdw@~JDcJBT&iYUd+_<1+Z6B?cBJpjfyY`+R%+WDCTS&KN#j5mhOW`Muv29)* z^xD>&O03;~;ivtyGTU%xWem8}kt|Dyb}B9D_u_K#W3cRRfO)BL*Mn&M6OkSlSV5$e z@e+e%4w?g_vku3pj&i+xXb>43=tG#|p9~>7I$bS0#jh7Bfs;|!92KDwO?oP|$3LDi zOh;?4_~-InIUn7|231N_Z$d<%2-}6m+R8dEVgV_Ra=z2sQq>o<{3iUpk4)d1*%rLf z*kJLd<`9PlL@57VCDJxvUtd3 zTX>X2pW^T%=|9FA-QSa7?^IH7y-~yYA+G%f=`*iR!w9LZ=L9|!VI|@PkNaUDv>MZa zBY$EQ(6&$%w%@>{!?9c%;HLh$Q{ZZa*RAD7i%!yLViHNYXc|7+Ya|$7Ss0mNq{MN`NEczzuUds&qJ2OnPg8fXba}W7>qFGju*xVd29(p~fm|hx6$hUORH6DpIgyLpLbSo%v#R zl;pRk&()SeWj+T6cf(D{^46=leD$V`(9Xz3(He--Vdo$(nX)-FyA;kYc*0AxtMYHE zH}mjlZo)v2^Jxko7kssvajz4E9rAbyglgX+71DB_qZR$KeU1mhCUyUA6(xeGqNeDK z2IA5-+tj-^Du&D-xqGLciJP zvn77%BP$Cw--%do&QT!WXZasmJF$=cO-1rcRA0NX$M^NX#uZ3@i)Z#V5h8B>SZ8(l z9!z%x&$O;f$2^2uJz4SDTeZT1%6Zn!>c4WC;|ib(nTu1}G24~BH*tL&$gM0GmO#gI z7zpZx$uW)wxanfBX?K3HZ&WK5(jmxE3W{HkP7b||k4}5Xv?(HiU;b!k;{rq6q#a70 zf7?LJ!N~x{)up&Y}0pCARNaAOw=pO0!dnxaGGo!mTgh=XCqCpgZPc- z=^qfwM&!~*ys89@rcV9O9%9fG0{10()$k!%(!&9ED>4qFl9q(h01;kAm9Ya1Ka~tD zibkD(`49iL*8u9=8E2^n0cxwK09^2!T(EdV2oThOM{_kyf2U)dwEuYTcfPYr^)Cht ze8>g&?}x}tgEnO`deS(OH=m5!=1@gQJAyHInu74cPD_)(4q!9n* z<;4Zn-g`>W$JF%ni*ugGONMUNitTtt*l1}JAyO8QY~dGAIGzGIF-H`To&Kx=F(eJS zeWKzB^JdxD?u{hgrzHKc$jQyUK}aC*cZ(_6VF_PbGk#-pe00=zZ+MS?Y-z`+2Yrp) zw9@|qJ?I<0&kt0xUNT(X0_^YsSf^jpbRZ}Ltq>_zRBB~>wOoc~LU?eK^UMeyT5_{3 z9gPlgkBlJsyZLEc0NL8$QPYo}aDr44X?>MocT<8c$&*Cu?SNC;Z=c?hm(IuYf<&OX zYaem_7;6R%O9Y5n7f>Ly{a?42lxkj(=0NMg3WB=2yV z4NG@VX#*r$q;{J}bJMgA-pqysKA}xC! z|BiFqoP4^UYA102NGWvZoowS8r+@&1-HG77@PLUVPnwB%=4HaN;F7kql?{+XHyG+O z#8M|n-o!`WQAr~^x2)6k4pz;;IzPg74H&d!faj3BUVvCT%EBDg&%LVR?`tcfy1UU0z51lxK0kyGTh zWj%1#>CSjunUpo?E|Q6r#f1rb^wm>eJ`S9&s~(KM`-N9-diZG1+feDb$#yIJ&}4sN z%ZT%!%b=Ygx9MmQ8+c!O;l){WBX0Bujw$6Gf$j~3l^mVvrss5qrjkdZck*w^R&363 zT_C)|n6kl9pVjJ%D+j%wjDe<(Eb4Mn6>F$su+SDJ)!{dxRUBScX4Mn<_?9SXmQ}&; z(uC-WM|oS#J`Jt%)Cx2R7xzXFFWVAD2SKMlx@g+rp@*x!Yex!8EKsX}p6}2hd(tVW z@er!;vj!=(-GQkjt@kwdQ^}^EZRuJ0r{-8B`L{f4SGv9|M*gv^8Imr(m)2JW}=K`WIUE3^p|1 zEcvv?VCDq0%!Y&N*bE$H1sQGqULCp(u>RkuH6kat;q*b0J_`Y@2@<@n>f^!nfE9?54JnS7|VlJFgwG`~}HSfo;P zWozk8L%AvQwqA+}Q9?QN?xRW?P9HETZ-HPpHRTtNKK^s^ZIJ`^-{BBifkR8IrCsC3 z)%LhhTDIaU`N%XCNlrkJojZ~#Kx4U~Ke7s*MP_t^twUWz@c<4$mS;O<9sxZJ@)rs*4tln-~)7pRdRv z2+6lwydgY}_0d6@<18|TWD`A)S`GNHk+E+aO1M*SF*vo!o65zXEbvUhhe8S?hKQ#$Sr&1b|)2YDavz5aXg**C)0#)}?lq32rdQmByy^t$8ru9T;ryp@$ z0dl8xl%`w2)an@PMfJmd%ik0qa@ND|${r;b6oPdo3Ot1(G~@$SQgglmUVhOUD;Vuj zq3-Gk!kJ0w}q^`R6Km2%Z9R9#(CnCA*4RcwY{ z-QYPb<9JSt;jf$doT8!W#BVN=Gx(WX#!BKvR_$Bt1vvQmtyfrCm<{xU7cpnVlv|vz?aBUzt29q=IencU=-og>JweCczw6<#$m>e7yYw>$bV83Cy zUdipis+DY0ZK>R3Q2iibm;Hj=^t+e<5=}l8g(2%91vQEN=K_kInit-&|lI~XqTIUDwHqw zdUtk-m6|{K$FrzeV)Il$)$`bF!e{RDw02kqOS*(@h1S741jbkKAuQ-q)1BcNXnzkM zj9yTh7|J+)$HJ9%%Ca`(u|6!ha%&nuWE$gWK5j7yh3U<*AkK&@H5S%j; zxcL03;H>mSx*+p=1~z!b(mHA7S#vtxXZV-e%lX+~JsGUkd;;i%I+Y@W-oNtRc-a(m zI!MG=sY&=`IGuow!$-AHH^45z5VJ`P;)2SeoV4lUZVL7JL~oi9Wa-wdY-W{NkD23( zDsK^Mqla&PPPd%zq?Os>H2zS){{=pXSb;g1N=NpA$l%>HdADcT`}(lxN1{~&snUqi zpCzDmY?Qml%E{a#__Rw@V~iAz>{qIAa>Uq2jH`P#h?h(-LA_25NIxntf)xUGFe zBWj9kkG#cvu&f>^U17NgFB->ivc7AW%NVBeGJZE6*B01mRJGe@p5s?;x}jvGu^o$T z;@t(a&$$AESqw&7wYgZOQbRQ-VPi4mqlc~*!5PIh5`W)ms&JwdE+5wWF=?)$rZ?!W z4%?HFq_|%;UVx2{Eokj`Q(6ke@bT8-OLJ25J;sCY7;B=*keYF9*J)Na<1Mlcy=S#e zEOs0EY}K-_m9UqbXR3>4PaO#%<5-OxtT1&%i67z%fvqDmFo&n4X(s4>Wsu8p61I@f zR&xlS8QItzXmx~49-^TVgEm^?uAA;V`Nv)9V1mSF(>!?g!wemISwo0%4thi83;p03 zI>_1t{%euEU^n*nPYCEByOFTEAQ<}4Bx?=f&f7P(?q@E#Z>J?dfld6qh)VAp;8cRi z-jNcU)ZQ>B@L`XAK5}`w%rtpsvC$|aojcx>}e`0n1Q4RALLDKJb z?hQhZNrhW_MaA?U0d<(%XO8c8BVRspd@I`eN6^wt0>g8C8?@Vg>wdnyf%=Qx8pznu zsGokGSYAE@fXl_?ec3RS2-qUNb$3PUzeNAFj5fO1A-Y|T1Ipyw)Z7A~_7P2e{#NS2QdIx1f|;yy z5lYiR3Un9#jDmfd&Jy_<85Mrl>U5oUwNrEblS=m3^CszP?C!QNOYmm#<1A+ zozwS`jUD#N#Go{muIc`@>-s0hxOzJ@1(3J;{mj~Lp$NqfiUII=#2s?JJsw)Pzxt%+ z31iRWz?cJ7{zo$~oe#Go*T2473ai%cR#oa|hXf}bS^xA|_r3Yf_Da}8HV#0hBS6wh z^#vn((>4&e9~6-Pd>Tu{*V)tpDH}XabaUBV#M)QI`+ZkK@{dy9A(+GesgVItAlF#k z?)U#%L8bgKL<3682fZuun~b3l4IegKV`PpK7IR7 zE-30U%*D=B~!PFfnTwg5y3l6w6g8k(vc#$r~ ztCZap@W1NqZc}EEl~C|^iHGsGdQw>q&$UDh`(h&KmIURj&Ao3&hw0&r>14N*W|i9wAsL(kLx z3uxd4g4aGEqK3BW!c|t*P6{8sA@9z(w3Jh;-ZHGmP zkdd*MH#R`>M0chcD0F^r#$Npd_fRTOQL6oNXvNO~!*?lu9}4}chL#;kbr7ESSe>?n z*-oqx=r-gf*gf@Yj82qN2e$lQ@NNymG$2d+NTj`3dEM6rLe;y>P9u4=JJ&t2cn?1s zAj0yES7wvP+R(K?26ns_H=jq(60Q?iGirW+bBRW~i2xZspv;Uw3Jr?`osW&h`toC# ziFtW><;UO)-+V6gm)fQ0Qs!UCA>?-9WO0qS`79U>fDYZ`?d_r*YdyIg$wQ1m*T15xN}Y7mEE}wHQ(M=QG#vjM^zm5 zxgU`z4mYTApirvJZ6@JZ)eQ#gij{47EW zaa>z*L)wE;g)Sq~qX_;%J4dca^OdN2G&xln))*FHi}(Ui3$#yd2aN1lY5WEpqohr( zt|EL|B`#9(or>SpHpvPSCg;ZBe>kiK+Tt)MQVPEIPq;DZY9Q%uKuv{&y!cgPr5!5lQ}YhTrZ0 ze7yw0Ob6e(VGf}n!;0Old~BIJ-{!20wWl+@a@mhC3jb4oxxBR$McmP@NJS0PH5dLm6m}Ka#@eON8SvPA$sz&r(7O$|xAz zh-c*X!qFPP*ky!&CF76Zn#&Qeae-q=BP?wLosJ27OEeKt>b~O_v?ORn>YTkR89K09 zXf&axEuEB$)DHIoL5R!sq+w()4tWTY9&u7;*4=OPsMR+z0K8h9MV4C`V=07N2hRB- z+Z>*nI}_OIU{wD~b2XR@=x7v6j9uF+0Ik~=ba&xk`ygZG`a~qBT<{qi{^4HKJN*Aw z^9C_Rg{K7&2gq-T{`%->1KCm4k56!Kv3Cl8%6<9{r^#WFL@^&#RsE?kWVJ7wyk%9$ zWnc-{-YYu*VVQ0J?2xj{FIrHJ%(eIVd2omBFQF2)kU zEZO@IY%DCRu$?0nqcVD{mcqwj(_nT*+x(1Z5vDaF)@7;V0G=5k7eOsG%u;9?BBUad z7p^icjpnfHiSr>yQ9(a~hBUxX!GT*vLyylfVutm+$b0V*S@J|dJXpF>*4oVX+d^zI z3pxn~Bm&Hlir-?I055S(!;H>ApcQs2HQ>UG{@ni?8B+^Jccv8!deyBsWzpmxpg!Oi zzJd2J#Vf!y4L7Bc39Vo23p{I!_MIu|KQCr+&XIs7V8tcxszCv(i*47BJ9hme8h{LR zTIOU6R5SJX+{{uYo$i!EV!vMhA~72rr}0cpFDS)_iJaPH;e*)gm_>@m+y;{vQp(fn zQ2h?0uE!94QqVF^;jEBLvGfGk_v(q}pBrk4EFexhJ7@tSVFf+HA)Wk&k)`*G+RcA1(RXH``lM z2a1sPLVkch=(D6oS07beqLiX*CD=b1Gy;n~KJ{|f`xd&Ix9kak>t4^jTedTxL;B zVv9-U!7vGdH3`kio%`)1bNDLQ4RX$WF&=2te;8of7*Y6nniScj85c^6-zXV}B1854 z0K)5vz3hN|moAJ78_wiKSpd4B_d=$WAJI&R2FvJ^wj;hqbL5z9aEKF0AtLWJ2?vvZH@;h&eLy`Xz+`bjY>Y2rUtGTH!g zD4M-ZjQI`^50}|2qoPr|ommZKH|$M4uPh<|Nn4|_EJdYLC4#+T;7LX)x=7x8!|zjd z-qVatb%|1*(x68}gdx4M~1wvMg$ssEVCmBL;S{u8>?Eh@EU^ zP<4#L+jPlBfsE|!qT9Dzv(HVg{x){&i}`~3?4@Mrv)tByOP?R zSytJmU@jz!bXOu~D^aZAgYlV|qNF3kDlGO#;@b$6mZCgT5B6o!2>b0^%Xnwwe6 zdzp1Zdi=9KlCG8|+*TKrx_DOyzlEe{c}2}@?J&+5z~2$z*=q9sa-&QpFN3oo{f|fl z?lJ{2J%~|;!_4+Rg=T~O6%FGDAe0!KX)w#ul1qZ3x52X#AqD2@_cqom;~Q! zT^C=iP)dD;Wh|fUNZx2Q#BT3}2a6+A|7DI>-|k$tM)-%WDX<~W|?-X1a3({zQbI)K3bw4HMj(O{2o>8{d884)rh&|c`!@< z@Q?3-h9W{zJhbO6e(tzYO7Bb0a}C7SZDiWQxk~O31*|-FUMVGSJ$ibRyv4I)iT!I~ z-)cM<{|qwx_7mFE(@H&u#}M2%I^}tB8@xQQCwa^EJ+=@k{_B+_^b76f4K*5P9g-s= z94;#eQW*vI<1j+&##FqH#p7GN)M%jRG~)NW^W~5bq{SrWK`R5Rwd=_}tfKU~MRcV( zp}}$=?`b21N}S0>)3BYl#rI{uNlQ7K%1K0$P$!4bOf-J|dD<)drO6p5dfT9-$euGv zW6|`ue%-|t`^08MPT^)VSU8Mz32u0SrgIDH9eQGLQaV3@=3*y6-qWs$In!s5|a*YC~myQrGO z3>aQ7C6^1vOmwZ5tDHr->Ei(ys^k$26|I@UV|dN%@^SLb%1um%$pfW zazmQEos#FHs{t|X;LH{h-h6M} zAU$lPk$`^dBrR$Rl1n$B*6391qD$&r^fg9dL0`_5(Dsz;s6G!)BbYxhCDWSmt7gEh z2D`lbBi}2gpLR?PdW(ni_T{l6dI$NVGL`JNy0Z(y+6Z570lI@P%^kfa!ZG}|T^tn) z?@1KO9a)>>ay2-P-%z;(pUSgnCx^=IG6<^I!Q7JA)fd_|{qx81Ri4@FM{;$lwjnmL zK?ok{3ClK7mfC}njQEzG9qoeHvAhEfrz>VdAGi=ASc31Wo^$iM@H|r>2(_=hIUBFv zb0EyhYk4(=qv7y4Fo1{IU^;`@rKk28D1>AE%=pt#&uFFa0LQ|i3|3+g(#Es0s+KWr zJ-Kh>k#~1_45y7DH!BRlJ&Dq~{v^lv8ctkb?&;)E$vok}YrgS%lpsZazoa?UKT1rX zTWqO|zlWCZH!cCdhU*hee&nL0_E6l%3e>>2fKw;x7$PmG1(psdf3(4 zDp#|)L0$1ue09NNCXn?Te*=5Bcv5A4@V)#POfDUb-O7m}3~DUBHsjTZle=cs7e=it zqoK>z>|lsiYUA9NBWV#GG>NA4y`|WF2lj-Z@PlO1IHL6Q+` zy;|%g%Ty_BIz*mWeoFHw-LYlJUg=w!~&f%;8Zpx6jU)ESqC(OC-`wC6vqQk#yho6yhW~4!FQ>0bwcz=%tK$ z7;$cJz+Sy`YaO3YL_(h2$a{H9g!LvOzb+#<``9v7cIoEV@AUHSxG zUJT=?DDey#?Hz^3S)8PDBg^-9bWmS?G^b}|rz zkSzr!N?Bqi_E3IJua%d0+h-#sa?_CI>jqF${-A9EMFG_TLy8ZQA34f}mNr3rDbAPu zMl{2EzjSNW$^hG|A;D6Ib&P0R)z_~tH3{t>-(0+{szVPTU!&!XmE@lt*^*`;%cAO7 zRA(cRA+|jU8NMlNq>TRj#gIO&C`NoQ!qavu6_fj5`K?RNEC&@X<*T9PtE9q5sWPyY z?A?k3*r_?;Q`{z^-gAC0b=GK9l>B(wwtD1TVbY&yoXyMP1}nX=kNZgbm2G|~t_g*P zN%e(Wq=G+!_QY~nEBf^q8;itaEBNZU`?`6_w--tSClMJ|vXNQB>#5a5YvOAoq_|ek zkBmiMbm;}mDZc>dW4U#%t5M2s?>bqN=cs80uF2lX{m+1t-+?(!7ikGKix0|&N=9oz z0nK3j_FjN-xA273UTiB=H1W@#}&tz@b|wK83Z{W62>tZu3}$KY5)6zph% z$nese>0zcIEQvN+<0JZ#x2ucalR!xd((qXEJsp!SR zrQ=euPMi&O;8w#+Xx()#hlqg%d~hx;LC?O#LcwXLU-M6GGDH8pPYNSE$b>8VNQYLX zd|dAbvEsgvm5S9|y-ygQN|oI1+n{K~6bKzv3glLa`&lYUY|9eix{Q&2giThMKKs3% z+9@g5BUG&Kd%VO9I=~L5x+0j}8iVb4Jmp`X;!V7nh|T||C>N2xI9w)GK;e#L4-I@3#8wQVbfqID|e;w%{h#SA*nkjl#OWTnsNS&OyQpJYhf zTp_V7D5VeJ@t+al(hPG;1Eq186_X$uF0{zBM|IX7nWER?Y`ag(N z|NZgsHs1;=RSI zg@RI>RXzcR{x5rYKu||+XXT~@Uk{LmX>@!zJ7}Qw;ni2N7GPv>SPOyX6Qv0}GWdA& ze7Eq<24|#sB2i9k@+H0TZME9HoQviI^vBLphO28JqLCl^Z*Sv6}V2 zcEaLGpKlEOAL5TE_H34Y+5cK=bUd`kgACu;uQ<$>zF!fpBQ$|px1PrI#eO&eu$D|F zJPQ?a*`%_LYNKW36S|YP(dV~YIyf|nu$M}N5cG5Hk?D)n%Anu&^$#lu%4I<>YiD~c z%fB#}M`XQy#EkPP!OE5go&}w0Hilkl{{MV&MjxMGw^4$^Jl*@2cJ^CwlZpu-D6xIB zR2J!nHwG_+XvpBG)p*G`|s_3f0hCmlY%ZpER+LOdK4lTU%Q- z7+qam2fq9?h6Or(c;R${Lk{v)R*u;?I6SVh9 zwK7gIVrV}P@fVoG$n3a)G8mT=lZ1johMT^o25F#1re8X+S&wFK1>>hN;vL!#cO#=t z0D|YNGJC?_@Gt-~C;rZ4EOuUWiSf_ft1%O(1no&5MOAWtJxI!dh?`l|!4_*8SrMZt zwjPx)mKDB(yt6w$R$^(Bgv?;E0HYeTrKNzBUVFWHXoWa9{>hk9&h=>5IX{>@N6 zYnbDUDt$kF%Gi39J)?gohGr z%BgyVo~AND5i;Z_+rXA)ueZljE%`Vz7m|0lp$PB%-h@~EaP_@GVhPXp5~`_*Ewn>N z@duFwaCxGLd*co+@C)#hlLLrxCxX?1vaErxTP;^NZET;Bu!OsNQx@&hsLZ6Wx8~1> z5-s4s(;a1`+X&?e)xtmsQRSllFS;QS$%2kn8Pv2du0;I~TMz$g06A!f*QIH&5fm_u z?7VP+zD_7sQ4eaf6=<;dE|YFp{98PFsKhs-CGB|1iH}D^)IYo`m{K-{>ffm2tdNvL zQo;UX{cnAej&BUxyL#vBc^Rb6s3;tcg$t$8!UPWt2A^xTl8=9AddD*k9&r%2ScGdI zDrJ}e`FwxLnsR5GMMke#mA&}WXuXEkuad&OCfZT=_<$DIHgF2e^J?I%8{l2>8J`UM zCe0JVsTR1W$R{X4&^Qq@=n<*n|Lcfa^uU?{KOU5KrJ}gjlP#Ows`LtjB|J)Ndg@No+0jc0@)Jl1 znmy)quT(-tkJC)cv>q}7zzLs#DZZu!zPxUi{mgTPDe~*Zd*Gxu;^JWxIB`6&&<+w=B4>Gu#k z6wlgFnuI;fo?5!5EN;=`CQb9a+|YK{{TSN!#Y<~eLti}U)SIA>yuCgJw@pD#Tvhn- zg_ox`rDki9jrSPOVaYb`hdlpzk|-|!MYg+go~?touz3cYVeV_a?#i=D5ypwTf|4|b z>|CHT7XRL&#hl=-?mY@8DqHkB^tZh|{a-;(g^BM-2j+Aoi)yad&dA=w(`DK{V>KCt z64<`^%SgeeC>{K;;%#0+#&xNEyqzJQC9$WAIv#A*XpAGU&VWa+EeEqXy|~pAd!$_1 zqEIs9=2e$Na|^esQg3^5sE=7PoxI-4n*JKcTZHQeQi@l=%nCAM*PPfl`tY$OZyz$3 z={9()8vo+>kmLKa>7{$Us+^LvF!pY{9HQcyM8aZYOVdQD(NetTSMB&gaW39`PK! z+*8GaD2KE7^KMyrLg=xS4>;UFHPX@nq`s(L`4LmS%EEz{25(>Xg>BFQHEm3KvAN^U zkBszyT(Sr@9e010&lb)v{c|+?KU~=*d8E?Lp4(%d`TIFlHp=P$&deJoV4Zx{d^Cfk}b>KjM% z?nl3pNfn5XRS*Hr|F=R*Zj#ylkfkt^2BP+z{R~%no|=lYn;jFJ`N_Jjc(EuwjNm~- z|K=XDqg;4#=qK1!Y+L{@y+MQ9*ZxkWQ7ZOTd4@!!N~75+9=z`a+RhD_4qjZyDU9`(uZQ$(7fOSCBLk-Zaxw~zCJRbhHukiku6YP*=O7$doN+05fHv737#Pq zW2rPiK>TD-821(CxAEeTEb1|&=4wQ$H%h1Ga1WqOU8Qlp*wl5PhIt(>iX8&EK_ZZ_ zOdKp{425BD#7e0fN)cnV*Vg!3IZQWMV1BcZiNKb(Ln4WCC3w%}JNKpjSezp0m=aa!+302ltJNL`Gq@&(>PB;kW1NTJrALaFvla{8kDlWDGX~ zgE~ENzxL+(n(+Tz>J!>QR5Eh!EP9p(X~{{y*m%Iw1tK$SqR@e)x70il=_9wdd(3HX zOIZsGWiI9q;;&IGo*$XKkq}kmk3$H$Y{g?oLg?w81rvMX6?WzBN*tlHQ!H4jwRZZr ze1#Y*=F%vUv$UWV28jGrXnOM!*}esmT!cb6^|mX8JyitjcKE<#pMXb7fB@ITVCugv(K%hdBb$#CS2q+8N8{SL z_rfofz`kX%lgf%;-%j*;$D<@Mbfc<@(wJ`4e9zrd!;GEzKJz!WC}I3po@8>pr8t%Y z{M46Txj=O|%?U-YA*k)rer52J#XnId6U~+LqjC`*melE-#K8PV>SPwQ+WG3QeR|e$ zF-gF=v#w9GVAwe2ngVQ6>GX_QJ?lTwpNiG@wJYiC*Pt4OTeD?YYss^J+mf11X`O5}4M8%k?0d*XC zU6%omcva#v(n*oH_9$98T3$b&ICgX7u>wB>5xJgC+e0Z*=@%n)wmk2VYD>MNy!0u0Ys zIYjCCffR9et}O+2uh~uV`6D$Lrx#@UeZ>cAocNFb0n&@?M^6=O-q`#NBEzWt zC>G+TuuNKC=w$CyGC}Zgdm9@-OKf8|JI%MQo^59`egMs%RcC@3U8>Q3C+zi=f%@0u zFjH%&L6f)5y1)a##T}O&IlCn0R zI35f@y@{`V|YTTU}>|J0GqyamXU)Luie|8E~pdRjgxr|9I zx}R*Smn&=!$Cjk5R!=(-ayiu(mc6)WfJ;gt{A8h!durW(KYZLo#f4RL}%fthzWg~R9P zp%SJ7_qn11uIK$L7~gqF<`WrNK7Uz$EWd>*{31~8GUZ$ioZ5S+_@%8_w}E%=Y2w6G zGa9^eiCTsV*Q4>(QnL`%zztT*ebl>s1Ge;|2Nl`Ow&c+UTD(^xZjx;u#Z+HX=f+7b zm7F!b61gZ$l(8vzlY!t>Fa~-N#%jqD)ri`Q!j@viB|= zpl7gz)FbfJC5c-1!^UdPM99GF4!fbtWmDZsqgW3>y|IgGc%jjAsQPCNh8?^y&u>0X zaaO3<1kLdx&L>5EWzs35^4x^`MU5DL_Iv=1m}(!>%xdH$x-kfAq!E=5x8)*rPV6I7 ztAEy;URkB<{n`~g#a3-}TveoXRD&M}bn*u6)5)kDnbE-i<8V1`fZkflM%$x%h1s5@ zo*Et2E6Bi8miUpmQe^I{W(}|H*8;(jSj!?5Y`t1idtGj-m{pbOYtDW z{#|VS=rC@$eU2|ro8{(8x@n3$%5eOIIO)e8u{jharqet#c{P9g%V4((Ax?ZoVhqHF z(wB_qjGGyF$C%1yM;8*4W#&wM9q^tG4_jr3^>Z*9(td@Xw6%dw7VyK(m-kH z`uvbOJL@ZzA@N^oSHOt|l(WU=+`WbicKV1)DA@7(U8WU)76268KeMda_r7r_5k`xZ5^yD8|_iE$)-gIfk?-X33=^ z1?Gu8tLJ>8w|!w*dN_ZEJ%GDk!uyW32}L}0N!!%|>a_JHBh>6YZ*vuKLmg|;nLa){ zZRL{NkvpHS(%Tc9FJ6LEu+EITzJP)|GbDc!J^-liX_%!$eUyH)HlzQ( zbZje@-$~np>Pn_G z+umXTyt(a(SjxuzaT&ux?@MRlOUcw}-& zXz2Lo)GVo8WEAX_`|clpV0a#jzw_bET{k@DTTrw--QxRA9n!z@eNM%T1>zepT&=?u z@S8AR>=g|V6#p^+9kA!UgR%cq2g2*k>ayV>U`b6n6Y}tu@x#gbq~Z}ut7>3!1GM?G ztarbDsr-GuIY5xV=8G4q_*zQjvq#u#JpkBu8}m+Xuy<&*HYE^t*9iYx2IKz>c)R~+ zz&j%G=qT}*70|#$2RzoFh{Y<_gU1ZTKy8=i{0ypjH6-)^*rX;RokXD@{f6t|+uA{U zoPVd7t61xCy~%UMO|1lq61!=}hqEa9V$KTYH_$rH` zHk52~^vvj2BJx?4@KmzB?}lES;_FIWf9TL*4zI?~c2Hr-0}8dE`4Ef|AEv)?Io1F6 zu^^;1d{17EtquT4R?7z9c^<0rRonrbD=UIvJwfvXsmvsIUTE5c?8^U*p06Y|L5BqZ z@E`SE^n6~l^#kNT48|F43MCsGJZWsNtI}_0eO1+Jh4t-_mse)qM)q;7D z(>P5K8dC1A5(FS1b+kVExWF+zG;eyGMtOX>6n}v6CqRFxU+cmCn)oY{L?;Y%j4@oR z!i3IDctURF&mC-SflY0(2$h2nvlrdv3GyKHI<|AWOK>s-Uf8n2wUrwlRp!cJv;t2;m*Q&*uCp$YuaSZrQL~T#e#$uuIGXAjHx++}xS)K~Kf)keQ zUWTj^WTy~d+PL{oy5K^?o#_S5K*s>?=h5lxO4E0$#Ir=Ov>YUwqNuP{mvB&6(k*1@ z#~r}tbwR3%H0Wmk8&hR5|8;PqWpaF6?B>lG=A;hLH<>_t@7}$HDbV(%+dnYC9^&TW z;-mSDFh}>A|4)zS)B=hByk65tq66XA@(Th#O#+} z--Oq_EKm}2Q}pQ7i=mA9gGaO5!ot^g&2D~qUIhzCT;qdiA0HpTeft*mR9V!;fVQ$O zv$rw$vknADA?Wb}HS?u6V4+|Cx!6ECJJQZeQFlW|4AXo>G~%HZ>$HMPZcd(Ya$WIH zQ-Vp}e%GRWo?1}0qgnHStv5PSkL|)}2xN3jWAr+EHqh6FTZ~^pHP#pD^ofFiXO&PGX!OGGUuU6d`Lr+9;l?7ba$%gVq2T zM18C(R4|h_29Q?k#7aY?Q)HBRN`ozUN%?nBTewOEq?x?H{^6I4LBGHNg2k5j?=Ud1 zBpR0bRy8FU)Bx>>fJIn6dIzkP2Pj>6ianT%N`yR5?aJwSJwhN-b1tNp2V^4r;m18S zhHF)J^O-A3>Y$7kD}IDE>j*p2h#A@N&pgpsXLvb9pD&m8=A*dao8scH$B-uq57(;r ztUg#NN0t3!!ivmT8{&QT3E5U6{{lge8`i-3xP>0O6GA3`Hqe+a$aPLKa@0`i<$xC- zOw#y}8w6obDgHMX8`x9AVo53CDKV<4h9t`EO`apnHc^qKG^Zr0c>4)Ur-l+b5>zivtai5)g& zqA$DLX>&PGA1Z!>++g2vb@S_`T4%FVHu{EV@AM#iN@%PnTN{4N;$d{Z0(B?ty#LX- zFZ~tO_B&9I5oqfyH*cvjErzrbqj|ToomdjNvi1itoZIxFyiyq0_=IJs0IoW z|Lx@QtsbeSnO{1j6ukJP!XuEkY*mYG$P7z#(CtWNrI(v%IHxh z6OAqeN)D;f82DuqlziHCr1pT!C(TVbd8ipL3rZ))FMh(TJ&lAD455b?*D>TzFq0V4 zDyt?8XBB#?KGsi!?99H5<_jN^>QmHbaR03&0_FfvT}7|AHZEGMYi!}sJ3a!DlzpV7 zoRa;)=YG>5FqfL0DHpAWG{Z=+N@V5#^5TRNy>Z#QMQTDHSkw`l84pJrRiNj0#7@-v zQ7=hcL;q%^or#I8!&ySHA-f+cpBMLex6y~a+ox%fp`v67txblw{;VB_4p9Tx*q?vh6Qb-IdrWGk9cGc>-b7; zVK<=A;EFKR2@4y0pxl2CK5?Zdtb9PaW>X@(5S1$El~%aW4O;``cl zD5Jv#3=~s$@N@JC&#u%C4^4QwAgmJs^s=4kXNp|G7^@$z2{HQ)_*RP`F*Gw(hv`)&Jb!6 z8M`ECfd0sy!CHiXrz!G3Ji@h)qB$Ltmbei%UMlTF)8qt;;w2UNCK;mfg(rT8h8Aqg z*CqLj`g65`4!Ok1OP1RzskL{blR^z7X2F(-$C$k#8R2okl9umkE7*Z&P~yH@e8aODHOUJmRH0HGU4&>l=_ zDJ$Xz#^M}V>w~F2e;rX)S8-ZP?zc#*L};Z7q@xQ#rx86lLMMcL5$drkS<1l%_8H0* zotOK2cZ7Hk$peTN7QBA(l6nXt~)OTHsV{OJ#MfZb@s%*4#9(%6{ zJmp8p*=R;7tCH>#n1z_#ScO&1;F8E=a%iDY3i~ohk%8@SFYX zlTwP`;tP&zUKO$XnZISdYL|TXQQ@pk(H8DHi&<{Kv2z<|*&5qI&t2Js%O;Nelzq=R z7hwr@gs*7%evuS`d6rvpDdnS?d>Kjs1&Qi>@i2Kkw&)#C3sY5zPCZz3)_E0G21?~& z^#+^r+Z_p2*=`q+vKR%npaR7AQ(_VM0UI(?UHZU`XLe~Yje$rFAT&)L=HxriBr42< zS7tsgkQd&tpYlA_UXCW!=088+KE2?#-2|_7nH!X^=6fM^sOsi6@SY{Z7J$}L`C~ue zDU)JOb}p!&bWfRC$NZd|#|UITO^aB7JO%;|U#LtMuK-ni&<`iW_;JL7zSkLRB0dN1 zjHt>9M!aB*HXE}MpoppBW(>qukk<$+)B-EW-ydl8PO|-Cc|jkFQ03&`2!0aXhX&mX zZmk66qT3$9C4|$&ou%g-q@+;-1~28u3-!EM^tz1i+uVyP`3c|}{)WoyjMkRnqtn{% zn+%gD*=o@y%3*Pl&a-&F8KpT=viS1hmK&MGusPT?!td4<# zz)8P)e2Fl=a_4>3z$o`3FP)CUZM$=5P@RM6hTq-uriQ!8W|GcizV6#dwRMZL%<|*a zQ7~@J-S0xhK8$q}kF4iK0A9ke7M};lXYDAD+DqFjExuleeZZN zIHdpKpA(V?hcZku{l4|>`+94;hs-jLV*?V(Zvbm4UKZ8>W+(VpT0w7ZPH9_nS~x6xVtDP zqjq2Nse*&!h7|wgBrh}41yz`++rc>{y36HO2hEW9jk=#Tdx?}UD3b07nh_JN%`{8u z$%0GzRDUl(x*o8h-ISMp?p#$~*=DZEI_*}<`bXbC(B_~1)V4eEtFJuUw{he3Io+A( zXBOM(E__>ijBCF#Itq*oCaJVukA zEb1}0n*NSI30&pRk@pT{SnQ4uE};j&;|>3y{qQz!LcMhX$a1^X)}*H_-vO}R_^GlZ`Yx^-(7Ob#twxVMZy^fdS?m>zKZ`p{;5BtS5huLA^|8xCD-Q%^F0>Mu_4 zU@!Ydx#AcX9mhSu?XFz1=hH<^*YD3r>D-?C3i`V&4=t7qk1=`PCu7IH+xG3sgdgav zw~U|iC&BtC8b0yg*3zMny$rl*D(u!iHmkknQ)2>15DkJASm7vPi{k*>S~r8U78}fV z!LwxK*d}H=#O-Vn{JZ*WM=Guh+1Q9#kL%KA5<`FSBV#pFXsdkrtX8lIq4XQK7kI;I zc6XC8d+XD_Cu3sucV8TQ>I*8AIQ!K}uRz8#eRh!Mb);Xqwabh)Td2kpt1mr^R<)Zv zI?UAL*ZGRfjbIktu0qwn=$cvf5lpMa7dE7fZ>-#1C>=D>tZt`OZ?W0F z&|U6wbXvjFdc9Y*w(Gt*vRsI@3{5~IS-N)g6jaklv4shcGZc5QY@

f{SbDy?8&& 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

!*zN7- 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 Y14W+8eVx9|{KAY&ypR>i71DM8Kj?|%CIA2c literal 0 HcmV?d00001 diff --git a/docs/_static/dmi-plugin-r9-arch-diagram.PNG b/docs/_static/dmi-plugin-r9-arch-diagram.PNG new file mode 100644 index 0000000000000000000000000000000000000000..a79108194df4f02d9dbeb23e504b9f75337bdfa4 GIT binary patch literal 28969 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 F{|BA3MPdK| literal 0 HcmV?d00001 diff --git a/docs/_static/favicon.ico b/docs/_static/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..cb712ebd205e6101b23c385f1e3a963963979dfa GIT binary patch literal 2102 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 + +This page reflects the state for Istanbul-R9 release. + +.. image:: _static/dmi-plugin-r9-arch-diagram.PNG + +API definitions +=============== + +The DMI plugin provides following interfaces. + +.. list-table:: + :header-rows: 0 + + * - Interface name + - Interface definition + - Interface capabilities + - Protocol + +The DMI plugin Basic Concepts are described in :doc:`modeling`. diff --git a/docs/conf.py b/docs/conf.py new file mode 100644 index 00000000..3aaddd19 --- /dev/null +++ b/docs/conf.py @@ -0,0 +1,112 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2021 Nordix Foundation +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + + +from docutils.parsers.rst import directives +from docs_conf.conf import * + +branch = 'latest' +doc_url = 'https://docs.onap.org/projects' +master_doc = 'index' + +intersphinx_mapping = {} + +# Latest (change to branch) +intersphinx_mapping['onap-cps'] = ('{}/onap-cps/en/%s'.format(doc_url) % branch, None) + +linkcheck_ignore = [ + 'http://localhost', + 'https://example.com', + 'about:config', + # this URL is not directly reachable and must be configured in the system hosts file. + 'https://portal.api.simpledemo.onap.org:30225/ONAPPORTAL/login.htm', + # anchor issues + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#.*', + 'https://docs.linuxfoundation.org/docs/communitybridge/easycla/contributors/contribute-to-a-gerrit-project#.*', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_robot.html#docs-robot', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases_release.html#docs-usecases-release', + 'https://docs.onap.org/projects/onap-integration/en/latest/docs_usecases.html#docs-usecases', + 'https://docs.onap.org/projects/onap-integration/en/latest/usecases/release_non_functional_requirements.html#release-non-functional-requirements', +] + + +html_last_updated_fmt = '%d-%b-%y %H:%M' + + +def setup(app): + app.add_css_file("css/ribbon.css") + + +needs_extra_options = { + "target": directives.unchanged, + "keyword": directives.unchanged, + "introduced": directives.unchanged, + "updated": directives.unchanged, + "impacts": directives.unchanged, + "validation_mode": directives.unchanged, + "validated_by": directives.unchanged, + "test": directives.unchanged, + "test_case": directives.unchanged, + "test_file": directives.unchanged, + "notes": directives.unchanged, +} + +needs_id_regex = "^[A-Z0-9]+-[A-Z0-9]+" +needs_id_required = True +needs_title_optional = True + +needs_template_collapse = """ +.. _{{id}}: + +{% if hide == false -%} +.. role:: needs_tag +.. role:: needs_status +.. role:: needs_type +.. role:: needs_id +.. role:: needs_title + +.. rst-class:: need +.. rst-class:: need_{{type_name}} + +.. container:: need + + `{{id}}` - {{content|indent(4)}} + + .. container:: toggle + + .. container:: header + + Details + +{% if status and status|upper != "NONE" and not hide_status %} | status: :needs_status:`{{status}}`{% endif %} +{% if tags and not hide_tags %} | tags: :needs_tag:`{{tags|join("` :needs_tag:`")}}`{% endif %} +{% if keyword %} | keyword: `{{keyword}}` {% endif %} +{% if target %} | target: `{{target}}` {% endif %} +{% if introduced %} | introduced: `{{introduced}}` {% endif %} +{% if updated %} | updated: `{{updated}}` {% endif %} +{% if impacts %} | impacts: `{{impacts}}` {% endif %} +{% if validation_mode %} | validation mode: `{{validation_mode}}` {% endif %} +{% if validated_by %} | validated by: `{{validated_by}}` {% endif %} +{% if test %} | test: `{{test}}` {% endif %} +{% if test_case %} | test case: {{test_case}} {% endif %} +{% if test_file %} | test file: `{{test_file}}` {% endif %} +{% if notes %} | notes: `{{notes}}` {% endif %} + | children: :need_incoming:`{{id}}` + | parents: :need_outgoing:`{{id}}` +{% endif -%} +""" diff --git a/docs/conf.yaml b/docs/conf.yaml new file mode 100644 index 00000000..8425e089 --- /dev/null +++ b/docs/conf.yaml @@ -0,0 +1,25 @@ +# ============LICENSE_START======================================================= +# Copyright (C) 2021 Nordix Foundation +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# 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. +# +# SPDX-License-Identifier: Apache-2.0 +# ============LICENSE_END========================================================= + +--- +project_cfg: onap +project: onap + +# Change this to ReleaseBranchName to modify the header +default-version: latest +# diff --git a/docs/deployment.rst b/docs/deployment.rst new file mode 100644 index 00000000..0f53898b --- /dev/null +++ b/docs/deployment.rst @@ -0,0 +1,15 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _deployment: + + +DMI Plugin Deployment +##################### + +.. warning:: draft + +.. toctree:: + :maxdepth: 1 \ No newline at end of file diff --git a/docs/design.rst b/docs/design.rst new file mode 100644 index 00000000..e65c5aed --- /dev/null +++ b/docs/design.rst @@ -0,0 +1,40 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _design: + + +DMI Plugin Design +################# + +.. warning:: draft + +.. toctree:: + :maxdepth: 1 + +Offered APIs +============ + +The DMI Plugin supports the public APIs listed in the link below: + +:download:`DMI Rest OpenApi Specification ` + +Exposed API +----------- + +The standard for API definition in the RESTful API world is the OpenAPI Specification (OAS). +The OAS 3, which is based on the original "Swagger Specification", is being widely used in API developments. + +Specification can be accessed using following URI: + +.. code-block:: bash + + “http://:/v3/api-docs?group=dmi-plugin-docket” + +DMI Plugin CM Handles +===================== + +Several DMI Plugin APIs use the cm-handle parameter. +The DMI Plugin CM Handles are described in detail in :doc:`dmi-plugin-cm-handle`. diff --git a/docs/index.rst b/docs/index.rst new file mode 100644 index 00000000..bc299aeb --- /dev/null +++ b/docs/index.rst @@ -0,0 +1,41 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _dmi: + +.. THIS IS USED INTERNALLY IN CPS ONLY +.. _dmi-framework-doc: + +DMI Plugin Documentation for the Istanbul-R9 Release +---------------------------------------------------- + +.. warning:: draft + +.. toctree:: + :maxdepth: 1 + + overview.rst + architecture.rst + design.rst + modeling.rst + deployment.rst + release-notes.rst + + +CPS-Core Documentation for the Istanbul-R9 Release +--------------------------------------------------------- + +.. toctree:: + :maxdepth: 3 + +* `CPS Core(placeholder) `_ + +CPS-Temporal Documentation for the Istanbul-R9 Release +------------------------------------------------------ + +.. toctree:: + :maxdepth: 1 + +* `CPS Temporal(placeholder) `_ \ No newline at end of file diff --git a/docs/modeling.rst b/docs/modeling.rst new file mode 100644 index 00000000..63f25b7c --- /dev/null +++ b/docs/modeling.rst @@ -0,0 +1,18 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation +.. _modeling: + +DMI Plugin Modeling +################### + +.. warning:: draft + +.. toctree:: + :maxdepth: 1 + +Basic Concepts +============== + +.. image:: _static/dmi-plugin-modeling-concepts.png + :alt: Basic entities relationship diff --git a/docs/openapi/openapi.yaml b/docs/openapi/openapi.yaml new file mode 100644 index 00000000..082df223 --- /dev/null +++ b/docs/openapi/openapi.yaml @@ -0,0 +1,428 @@ +openapi: 3.0.1 +info: + title: NCMP DMI Plugin + description: Adds Data Model Inventory Registry capability for ONAP + version: 1.0.0 +servers: +- url: //localhost:8088/ +tags: +- name: dmi-plugin-internal + description: DMI plugin internal rest apis +- name: dmi-plugin + description: DMI plugin rest apis +paths: + /v1/ch/{cmHandle}/modules: + post: + tags: + - dmi-plugin + summary: Get all modules for cm handle + description: Get all modules for given cm handle + operationId: getModulesForCmHandle + parameters: + - name: cmHandle + in: path + description: The cm handle to fetch all the modules + required: true + style: simple + explode: false + schema: + type: string + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ModuleSet' + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + /v1/inventory/cmHandles: + post: + tags: + - dmi-plugin-internal + summary: register given list of cm handles (internal use only) + description: register given list of cm handles (internal use only) + operationId: registerCmHandles + requestBody: + description: list of cm handles + content: + application/json: + schema: + $ref: '#/components/schemas/CmHandles' + required: true + responses: + "201": + description: Created + content: + text/plain: + schema: + type: string + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + x-api-audience: component-internal + /v1/ch/{cmHandle}/moduleResources: + post: + tags: + - dmi-plugin + summary: Retrieve module resources + description: Retrieve module resources for one or more modules + operationId: retrieveModuleResources + parameters: + - name: cmHandle + in: path + description: The identifier for a network function, network element, subnetwork, + or any other cm object by managed Network CM Proxy + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DmiReadRequestBody' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-operational/{resourceIdentifier}: + put: + tags: + - dmi-plugin + summary: Get resource data from passthrough-operational for cm handle + description: Get resource data from passthrough-operational for cm handle + operationId: getResourceDataOperationalForCmHandle + parameters: + - name: cmHandle + in: path + description: The identifier for a network function, network element, subnetwork, + or any other cm object by managed Network CM Proxy + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + - name: accept + in: header + description: Accept parameter for response, if accept parameter is null, that + means client can accept any format. + schema: + type: string + enum: + - application/json + - application/yang-data+json + - name: fields + in: query + description: Fields parameter to filter resource + required: false + schema: + type: string + - name: depth + in: query + description: Depth parameter for response + required: false + schema: + minimum: 1 + type: integer + requestBody: + description: Operational body + content: + application/json: + schema: + $ref: '#/components/schemas/DataAccessReadRequest' + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + /v1/ch/{cmHandle}/data/ds/ncmp-datastore:passthrough-running/{resourceIdentifier}: + put: + tags: + - dmi-plugin + summary: Get resource data from passthrough-running for cm handle + description: Get resource data from passthrough-running for cm handle + operationId: getResourceDataPassthroughRunningForCmHandle + parameters: + - name: cmHandle + in: path + description: The identifier for a network function, network element, subnetwork, + or any other cm object by managed Network CM Proxy + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + - name: accept + in: header + description: Accept parameter for response, if accept parameter is null, that + means client can accept any format. + schema: + type: string + enum: + - application/json + - application/yang-data+json + - name: fields + in: query + description: Fields parameter to filter resource + required: false + schema: + type: string + - name: depth + in: query + description: Depth parameter for response + required: false + schema: + minimum: 1 + type: integer + requestBody: + description: Operational body + content: + application/json: + schema: + $ref: '#/components/schemas/DataAccessReadRequest' + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + post: + tags: + - dmi-plugin + summary: Write data for a cmHandle + description: Write data for a cmHandle using passthrough-running + operationId: writeDataByPassthroughRunningForCmHandle + parameters: + - name: cmHandle + in: path + description: The identifier for a network function, network element, subnetwork, + or any other cm object by managed Network CM Proxy + required: true + schema: + type: string + - name: resourceIdentifier + in: path + description: Resource identifier to get/set the resource data + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DataAccessWriteRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + type: object + "400": + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "401": + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' + "403": + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorMessage' +components: + schemas: + ModuleSet: + type: object + properties: + schemas: + type: array + items: + $ref: '#/components/schemas/ModuleSet_schemas' + ErrorMessage: + title: Error + type: object + properties: + status: + type: string + message: + type: string + details: + type: string + CmHandles: + type: object + properties: + cmHandles: + type: array + items: + type: string + DmiReadRequestBody: + type: object + properties: + operation: + type: string + enum: + - read + data: + $ref: '#/components/schemas/DmiReadRequestBody_data' + cmHandleProperties: + type: object + additionalProperties: + type: string + example: system-001 + DataAccessReadRequest: + type: object + properties: + operation: + type: string + enum: + - read + cmHandleProperties: + type: object + additionalProperties: + type: string + DataAccessWriteRequest: + type: object + properties: + operation: + type: string + enum: + - create + dataType: + type: string + data: + type: object + cmHandleProperties: + type: object + additionalProperties: + type: string + ModuleSet_schemas: + type: object + properties: + moduleName: + type: string + revision: + type: string + namespace: + type: string + DmiReadRequestBody_data_modules: + type: object + properties: + name: + type: string + revision: + type: string + DmiReadRequestBody_data: + type: object + properties: + modules: + type: array + items: + $ref: '#/components/schemas/DmiReadRequestBody_data_modules' diff --git a/docs/overview.rst b/docs/overview.rst new file mode 100644 index 00000000..c2e670c6 --- /dev/null +++ b/docs/overview.rst @@ -0,0 +1,21 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 +.. Copyright (C) 2021 Nordix Foundation +.. _overview: + +DMI Plugin Overview +=================== + +.. warning:: draft + +The DMI Plugin is used to allow the DMI API's access to the corresponding NCMP API's. + +DMI Plugin Interface +-------------------- + +Implementation Proposal: `DMI Plugin Interface `_ + +Contact Information +------------------- + +onap-discuss@lists.onap.org diff --git a/docs/release-notes.rst b/docs/release-notes.rst new file mode 100644 index 00000000..8e9a91a7 --- /dev/null +++ b/docs/release-notes.rst @@ -0,0 +1,129 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. http://creativecommons.org/licenses/by/4.0 + +.. DO NOT CHANGE THIS LABEL FOR RELEASE NOTES - EVEN THOUGH IT GIVES A WARNING +.. _release_notes: + + + +======================== +DMI Plugin Release Notes +======================== + +.. warning:: draft + +.. contents:: + :depth: 2 +.. + +.. ======================== +.. * * * ISTANBUL * * * +.. ======================== + +Version: 1.0.0 +============== + +Abstract +-------- + +This document provides the release notes for Istanbul release. + +Release Data +------------ + ++--------------------------------------+--------------------------------------------------------+ +| **CPS Project** | | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Docker images** | placeholder | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Release designation** | 1.0.0 Istanbul | +| | | ++--------------------------------------+--------------------------------------------------------+ +| **Release date** | 2021-14-10 | +| | | ++--------------------------------------+--------------------------------------------------------+ + +Features +-------- +* Implement plugin registration. +* Retrieve data from cmHandles using ncmp-datastores passthorugh. +* Retrieve Yang Resources from one or more modules of a CM Handle. + +.. _istanbul_deliverable: + +Deliverables +------------ + +Software Deliverables + +.. csv-table:: + :header: "Repository", "SubModules", "Version & Docker Image (if applicable)" + :widths: auto + + "cps/ncmp-dmi-plugin", "", "placeholder" + +Bug Fixes +--------- + +This document provides the release notes for Istanbul release. + +Summary +------- + +Following DMI plugin components are available with default ONAP/DMI-plugin installation. + + + * Platform components + + * Service components + + * Additional resources that CPS utilizes deployed using ONAP common charts + +Below service components (mS) are available to be deployed on-demand. + +Under OOM (Kubernetes) all CPS component containers are deployed as Kubernetes Pods/Deployments/Services into Kubernetes cluster. + +Known Limitations, Issues and Workarounds +----------------------------------------- + +*System Limitations* + +*Known Vulnerabilities* + +None + +*Workarounds* + +Security Notes +-------------- + +*Fixed Security Issues* + +*Known Security Issues* + +Test Results +------------ + * `Integration tests` + +References +---------- + +For more information on the ONAP Honolulu release, please see: + +#. `ONAP Home Page`_ +#. `ONAP Documentation`_ +#. `ONAP Release Downloads`_ +#. `ONAP Wiki Page`_ + + +.. _`ONAP Home Page`: https://www.onap.org +.. _`ONAP Wiki Page`: https://wiki.onap.org +.. _`ONAP Documentation`: https://docs.onap.org +.. _`ONAP Release Downloads`: https://git.onap.org + +Quick Links: + + - `Dmi Plugin implementation page `_ + - `Passing Badge information for CPS `_ diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt new file mode 100644 index 00000000..b3188ddd --- /dev/null +++ b/docs/requirements-docs.txt @@ -0,0 +1,15 @@ +tox +Sphinx +doc8 +docutils +setuptools +six +sphinx_rtd_theme>=0.4.3 +sphinxcontrib-blockdiag +sphinxcontrib-needs>=0.2.3 +sphinxcontrib-nwdiag +sphinxcontrib-seqdiag +sphinxcontrib-swaggerdoc +sphinxcontrib-plantuml +sphinx_bootstrap_theme +lfdocs-conf diff --git a/docs/tox.ini b/docs/tox.ini new file mode 100644 index 00000000..edac8c35 --- /dev/null +++ b/docs/tox.ini @@ -0,0 +1,22 @@ +[tox] +minversion = 1.6 +envlist = docs, +skipsdist = true + +[testenv:docs] +basepython = python3 +deps = -r{toxinidir}/requirements-docs.txt +commands = + sphinx-build -b html -n -d {envtmpdir}/doctrees ./ {toxinidir}/_build/html + echo "Generated docs available in {toxinidir}/_build/html" +whitelist_externals = + echo + git + sh + +[testenv:docs-linkcheck] +basepython = python3 +#deps = -r{toxinidir}/requirements-docs.txt +commands = echo "Link Checking not enforced" +#commands = sphinx-build -b linkcheck -d {envtmpdir}/doctrees ./ {toxinidir}/_build/linkcheck +whitelist_externals = echo diff --git a/pom.xml b/pom.xml index 7204244e..c63cc422 100644 --- a/pom.xml +++ b/pom.xml @@ -17,7 +17,108 @@ SPDX-License-Identifier: Apache-2.0 ============LICENSE_END========================================================= ---> +--> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ]> @@ -177,6 +278,17 @@ + + openapi-yaml-gen + + generate + + compile + + ${project.basedir}/docs/openapi/openapi.yml + openapi-yaml + + @@ -414,6 +526,29 @@ + + maven-resources-plugin + + + copy-resources + compile + + copy-resources + + + ${project.basedir}/docs/openapi/ + + + ${project.basedir}/target/generated-sources/swagger/ + + openapi.yaml + + + + + + + -- 2.16.6