From c8d753e474dfbe61ac85fe5c9dc974c9b10080fa Mon Sep 17 00:00:00 2001 From: Bin Yang Date: Thu, 1 Nov 2018 12:38:54 +0000 Subject: [PATCH] Refactor the docs Dedicated sections for APIs, User guides, and specs Change-Id: Icf57b4b14d775507b40b65681be2aba9a8e2e62f Issue-ID: MULTICLOUD-309 Signed-off-by: Bin Yang --- ...n-V1.rst => MultiCloud-APIv0-Specification.rst} | 2 +- docs/MultiCloud-APIv1-Specification.rst | 2 +- docs/MultiCloud-HPA-Deployment-Guide.rst | 211 --------------- docs/images/mc-windriver/esr-vim-register.png | Bin 0 -> 20158 bytes docs/index.rst | 38 ++- ...Provision-Discovery-WindRiver-TitaniumCloud.rst | 68 +++++ .../Tutorial-Onboard-WindRiver-TitaniumCloud.rst | 289 +++++++++++++++++++++ ...VESagent-MultiCloud-WindRiver-TitaniumCloud.rst | 139 ++++++++++ ...serGuide-MultiCloud-WindRiver-TitaniumCloud.rst | 152 +++++++++++ 9 files changed, 682 insertions(+), 219 deletions(-) rename docs/{MultiCloud-API-Specification-V1.rst => MultiCloud-APIv0-Specification.rst} (99%) delete mode 100644 docs/MultiCloud-HPA-Deployment-Guide.rst create mode 100644 docs/images/mc-windriver/esr-vim-register.png create mode 100644 docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst create mode 100644 docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst create mode 100644 docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst create mode 100644 docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst diff --git a/docs/MultiCloud-API-Specification-V1.rst b/docs/MultiCloud-APIv0-Specification.rst similarity index 99% rename from docs/MultiCloud-API-Specification-V1.rst rename to docs/MultiCloud-APIv0-Specification.rst index 8283077..b89a51e 100644 --- a/docs/MultiCloud-API-Specification-V1.rst +++ b/docs/MultiCloud-APIv0-Specification.rst @@ -3,7 +3,7 @@ International License. ================================ -MultiCloud API Specification V1 +MultiCloud API v0 Specification ================================ API Catalog diff --git a/docs/MultiCloud-APIv1-Specification.rst b/docs/MultiCloud-APIv1-Specification.rst index edecd4a..b68fbe0 100644 --- a/docs/MultiCloud-APIv1-Specification.rst +++ b/docs/MultiCloud-APIv1-Specification.rst @@ -3,7 +3,7 @@ International License. ================================ -MultiCloud APIv1 Specification +MultiCloud API v1 Specification ================================ The is the specification for MultiCloud API version v1. diff --git a/docs/MultiCloud-HPA-Deployment-Guide.rst b/docs/MultiCloud-HPA-Deployment-Guide.rst deleted file mode 100644 index 0e815cc..0000000 --- a/docs/MultiCloud-HPA-Deployment-Guide.rst +++ /dev/null @@ -1,211 +0,0 @@ -.. - This work is licensed under a Creative Commons Attribution 4.0 - International License. - -==================================== -ONAP MultiCloud HPA Deployment Guide -==================================== - -The guide for MultiCloud HPA Deployment. - -Architecture & Policies & Mappings -================================== - -Please refer to the link for more architecture details: - -https://wiki.onap.org/pages/viewpage.action?pageId=20874679 - -Please refer to the link for more Policies&Mappings details: - -https://wiki.onap.org/display/DW/HPA+Policies+and+Mappings - -Prerequisites -============= -configure openstack with proper flavors (with name prefixed by "onap." to carry HPA information to ONAP), example flavor: - -.. code-block:: console - - nova flavor-create onap.hpa.medium 110 4096 0 6 - #cpu pining - nova flavor-key onap.hpa.medium set hw:cpu_policy=dedicated - nova flavor-key onap.hpa.medium set hw:cpu_thread_policy=prefer - #cpu topology - nova flavor-key onap.hpa.medium set hw:cpu_sockets=2 - nova flavor-key onap.hpa.medium set hw:cpu_cores=4 - nova flavor-key onap.hpa.medium set hw:cpu_threads=8 - #hugepage - nova flavor-key onap.hpa.medium set hw:mem_page_size=large - #numa - nova flavor-key onap.hpa.medium set hw:numa_nodes=2 - nova flavor-key onap.hpa.medium set hw:numa_cpus.0=0,1 hw:numa_cpus.1=2,3,4,5 hw:numa_mem.0=2048 hw:numa_mem.1=2048 - -collect following information for on-boarding this Cloud instance to ONAP: - -.. code-block:: console - - your openstack project name - your openstack user - your openstack password - your openstack keystone endpoint - your openstack Region ID: e.g. RegionOne - your openstack owner name/ID (any string without underscore character '_'), e.g. CloudOwner - -Note: along with the Region ID, the owner name/ID comprises unique ID of a cloud region within ONAP - -With Heat based ONAP: - -.. code-block:: console - - export ONAP_AAI_IP= - export ONAP_AAI_PORT=8443 - export ONAP_MSB_IP= - export ONAP_MSB_PORT=80 - -With OOM based ONAP: - -.. code-block:: console - - export ONAP_AAI_IP= - export ONAP_AAI_PORT=30233 - export ONAP_MSB_IP= - export ONAP_MSB_PORT=30280 - -The geographic location of the cloud region -=========================================== -make sure there is complex object to represent the geographic location of the cloud region -in case you need create a complex object "clli1": - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/complexes/complex/clli1 \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 2b272126-aa65-41e6-aa5d-46bc70b9eb4f' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "physical-location-id": "clli1", - "data-center-code": "example-data-center-code-val-5556", - "complex-name": "clli1", - "identity-url": "example-identity-url-val-56898", - "physical-location-type": "example-physical-location-type-val-7608", - "street1": "example-street1-val-34205", - "street2": "example-street2-val-99210", - "city": "Beijing", - "state": "example-state-val-59487", - "postal-code": "100000", - "country": "example-country-val-94173", - "region": "example-region-val-13893", - "latitude": "39.9042", - "longitude": "106.4074", - "elevation": "example-elevation-val-30253", - "lata": "example-lata-val-46073" - }' - -Register a cloud region -======================= -register a cloud region to represent the VIM with the specific tenant - -note: please update the parameters enclosed with "<>" - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "cloud-owner": "CloudOwner", - "cloud-region-id": "RegionOne", - "cloud-type": "openstack", - "owner-defined-type": "t1", - "cloud-region-version": "titanium_cloud", - "complex-name": "clli1", - "cloud-zone": "CloudZone", - "sriov-automation": false, - "identity-url": "WillBeUpdatedByMultiCloud", - "esr-system-info-list": { - "esr-system-info": [ - { - "esr-system-info-id": "", - "service-url": "http://", - "user-name": "", - "password": "", - "system-type": "VIM", - "ssl-insecure": true, - "cloud-domain": "Default", - "default-tenant": "", - "system-status": "active" - } - ] - } - }' - -associate the cloud region with the location object: - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/relationship-list/relationship \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 7407d60c-8ce7-45de-ada3-4a7a9e88ebd4' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "related-to": "complex", - "related-link": "/aai/v13/cloud-infrastructure/complexes/complex/clli1", - "relationship-data": [ - { - "relationship-key": "complex.physical-location-id", - "relationship-value": "clli1" - } - ] - }' - - -Trigger the MultiCloud registration -=================================== - -.. code-block:: console - - curl -X POST \ - 'http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud-titanium_cloud/v0/CloudOwner_RegionOne/registry' \ - -H 'Accept: application/json' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' - - -Verify -====== -verify if the cloud region was registered properly (with HPA information populated) - -.. code-block:: console - - curl -X GET \ - 'https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne?depth=all' \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 2899359f-871b-4e61-a307-ecf8b3144e3f' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' - -Note: The response of querying a cloud region above should return with a comprehensive cloud region object, you should find out the "hpa-capabilities" under certain flavor object with name prefixed by "onap." - - diff --git a/docs/images/mc-windriver/esr-vim-register.png b/docs/images/mc-windriver/esr-vim-register.png new file mode 100644 index 0000000000000000000000000000000000000000..571f56dd5005514a846c6a154830a19186ccb878 GIT binary patch literal 20158 zcmdVC2|Sd4+c&ILr4U7Bt5lLTLI|ZINfffrRQA2GO$??@k+sBx&}PY6#0+ChvhPLK zS=2Cg=ag-jF*ENu^#A|w|8-yYbHAVKzMl7a-ael`opY|g?Kpnl<9mFMqRcKE?%1|( z8xIf94xw(a0Q>-?`8>hlzJh);k&HoBfMIm5&AA)asL z#wPIh)>{{B{CRkU0=R$IkzJ&2^YC0YH#&F5;x=T4MDi843jZF)J`jz2j^EGo1gCoa zR5b3E&_)Bn&DiP|?UvEIdm7Z;q*NV zB63(Gyq5d>#-srIyFjEi&!LChE8K&~|N3D3+pzAmsi|qF0JnX@pDDU8P(n9B$W}%%={?SHw=Vxv+LT_DW;ijJv|P{MpMs1OJ?MgeRc=3I$SWUj(=q z^+W_J^g4G+cB%fV#7y-tT0=g_LqB#Zb`p*Ao4aQe2Ta$~1$hGcu7tm|#q570G;KPG z+bF6h^guL#vltnDDhrceNXpka0J!a;n6xS|uZ2 zy)Sd2Pjq0&w%s{};i&|6wLrQam*B4Rgg&S>?dmz%eEXMcVIT|&xDN5|x(BHgff7?g zNR!z-F9~sb;O0N3DKS{LqFt`P2I@s{C4-kuo-BB`B16iF3MZrv8C2_W-}oM*@nGAA zPrtO1F!@{Aky4M>^X$8I5PT-N{pJYRB!Q!CPp=dQ76l{`HA{EwlWd3YM5 z|Lb}EUrhObamj)x#lu5!#TFg+=e@IWC!FVkAh-nn#|QM21x4W%C4N&C#i9_jd^%SG&gon)h>W1%)0b)JQKs)TMqn%_oqXLJiLB7m(fb%5VGW&L5b2wdFccZ| zHZ`TAWM*KQwhIt zeAIZ9^#0$sO2D9E^Rr7@vGoofWF@cMMQWs(h zYYRpT@w(5u`)+Ns3Y_-1X3`P}lv4d_?YETJb#t(8(C+qMrD4jM!XD}D&`!vi7E;Jh zmYivLAT|7rl}nr;J$ft~5;7Lu_4)m;iRE`zN>Bv_C*{lGg7p0}@mQx5as?*ACPZgv zt6T3@&cW#Ay_vLp)O*i7tB;v-%et6I1j4ekv(a%DV;m{bJ>M`KzL36`xt>Cd4OQDb zjNyd|bj7u*EFU5{ii#-a#}nvHU_jOE&35XG&Gdgvg>RIfe{yc}nN-Na<4co!Wz-`P3CSy`%anIQpwsz2A^sy> zZ8{v~ge4cetz*tugvs8kGYqNRylgsi(Q@SBL>Xdt>Amz;)K!RsU(AsxY-;J4bEiQf zOzHBE1+xmh$;G`fTeX(&dpy|7@6kmipc5S~69VG(U(kvvThsDRVrNn>^Sv z1E%f5zPUE|r}!7}h{jO)ckz!0;EMP|e3GG*rR2yq!cinTuDagUh;nvO6hs&}>&6V=Uvm|%Jk;wV|K+Fbkl=O+x%0@)F zz7s8Y1!>Fn#B_(`=Ba`-AD?_fhhSFwHRxw-ex6Pu^hL^3!lL6Fbs&OOfegM@c$&DE z7wqW+jN$dynEY2BQx>l69_7Hu4$CJ!5M1aHJDW$4G|jooH$DUS2Njc)hny#7DHu%E)uv-RM=<3RFJPft%$(r%`27Y|9g z5&vS-V(6!hT&MNC+JCI0p`pS2W&X$#s`O5^X&lDz^r(Eiq|V^rV8|~@J^vRSzme8o zO0IWb@GTa6ItdQItj;^}0W21~s0&_O>jW--)d$`IVF{T)D5c*8o^T!DUrz2Sf_MCw zCSN3TBu*Qcx?ka*qemQ)>frh_#{&<;SOM|!u+hy^K|icLkRj2+#XbXl$8QFH>o|GaS z#hi&qDK!?Dk$4#adJyx+*h`b8QSZ~gTMZW#P2N6G)Ijnprg+zQsUnkB);}T01y|Y) zgk5er8^n^QrbGozU@i&K%cfji{T?;V@1*G3zgLp$kRMPw_T>aca%9i2qW|1vk5G3n zBbb~0#%nF{8F<{r|Cn3LvFQL zc2vYYF&k=61b>#s5W3p~?G#cCO*z73Sr)%mPb;M1UVKf{{+^00Tp7m@;IGPWeNmJ^ zeZh#%<}o}KFr=PtZ|d~IVYpfYUS1k4L6^8Q5WaY>^xbEfi!PY!8HeREap8!Gm|%nO zb{WE!zFUG1Fua-o2K_)|IPS|^7`!BM>XNIfXPR$WcILDn(Q<%KYJ=903p2QTLF8Mk z2ayy2F(j&!hB^kO)F&29c@6dhXP(AkHJ)g6FJ9QxPV9-5A7{sFl|}qWy_6NbpwvKW z$0}G&>PLEtx@=R0qYq=va3Oa&wx8~TQykYu92VIHuaI3=W~q>5>#hPU?=V$2lG+WY z_1xuIbr`3w6HWX}om`JQ*j2vGE2K=#7G_vJM*NVCXq8oiX~^9U>l15}%ByoIP6)fb zU381i5yMrNxv`OSqVI%7M8EQk$a2{eaJv~bZAL0<9|QDxNzI>i4g&f}NjEb82FIPN z-YBt-mGC%a^I*)Hr#=ag>jl-KTo^GI*1T10CvlEXnryl2B{dQuNRhnTFw9>Uxq9<{ z;0`zlpc{zP-oJJ&DJiMF-GqJDDLgU^8O0}H3MJi%eHa*s}aQTqpv!0&gd z^~L#WnN5{OamW_X76128|G&U}|0F;_hy%omx$aE%{Kdy3Va?c5n(*nfV58rLNg-E$ z^+A!|w4C!~RFyV^|3oy`d6mCQCMCdSXkW?ezH9^=FK1QMZ#Oad8L{!Q5Z96O3O>dd z-ob3xvim%-kJrEZG7^K=dyxq!5gPTkGZ_eXUFus zPbQv@xaiX#SXTo>F|avlrt5J}YN~>Z(9Wfwyzt+9@6({cv-xs#F`SC9FR|DG>r!oz z0#4CjMIFt?;TDtzY*Zj6S()Yg-Ns|E68zE zVPD)rvV-lJ-|b(g<}9mwVw&&_Mae*0qulI?Gg>|-*qvwb53DR<7hx!pT==6`LlMke z|4i5A-3mD9mWS(#5OKEZI#67gj)jbsRYp&Pe(n)`MWr0+? zE09dTjHBoFV{M4-jrVWro$+)9JYFHb-mm)AAXbc9OvS0Lhw-L@Yt8f-<5N?r^$Y3D zvf70t+ zw|^J7>N#zacg*T^_`7sd2oR$uRZ1=VC*uCib}Gb1J>OTOH@5K^2>mXU3$ZmU#A@{F zwsC(peSB6De;9gjS${zL^cdJ+`wG8$^5?rt`s?`Sb?^_#JE8ieC`;H6@R^mkRMyfSR)y!K@0arJ+st?-f<;SFE zYJm_T?0VB@N(*2a!U`7d4s}*@E^nKfd?Yd>r_OZ$`U?Za2DOJ;s={gHveowpI}~94t{^u8Ks*+cV zv&j1FW)!XS^h|~_)?1H2Bs8OTT}wt!L-H9z`b}1CU*cV8TAaZ_4=l%EG8=K8MfGb4 z7pb0YkqhdXm_U<5T32l;y9`FJOf2Q&^Vczo^0;^yuqk|iB-}E#s5)jOla*^5z?!N>qES*cX4!ul*@pV{yVFK0RW z7>?|YTMn-%55GSWByuKyHc1oV_6z3MZdcv@$m8z|&3s7P;$hT+8`li!&a(f3S5?%|HBwBXM zH)k!|%LbTVxYR@T&{@8ubrJw<$Yapz*&0}9rl(#=E8<{D3)UfZiaw)Wnm$dJd0r7s zrBY3Gm+Q!TLFQ~PMb}pH-Q?~u;q#?O>O{9Sfp+upt<7?l@{R0eg|o!F+d)HaPZfk7 z-46y8r~ka?XMEtLd&q(fKeP7Ir!`h$7|_K%3LM<0TFk=tcDqHFvrDdv4NsN$K_Bql zIA9cD&1SL-vD5I`xW50mk1^*Anv*XX7hm7FOfd`kgqn2TOY1as!FPwLaG`U+z`Few zC4EGe9wNmdu{k`&RPU|JJZm{)xl}#k(QFi+F_-v|6d97cgu1nx_$L+6ZRNtV|3amn zS=rqpmSeIDq?n!X*5PU@X{@uoh=iSKI=d(U8MWJdr`$*b$o>u~<3nz4Y#`;AvgUHx znQ!SuGvl2PDQ~M+9PN1A;vWnbQ3z?RoTRK4THCivxEU?pPGXeyonB*2fFX2IcR~F_ zxfj-fIEOcA$gGH7NyW~b1ULNqZ-@DL9L|IE_%28@dKMxf=0{U79Yi zC#GnJ<}4MAxlVU%LR`BJqO5hx85VKVg(QJ;y53FYN=8j zbv0PStOjfRZp-B#0}534IEeX)2-2I&4g(-J>Yju55>@x|PQW(=Al*>C`xbk&M8i*M zknHTytw)Z~sDhnZf5fzfk=SEQ;wP$E#DXfdCCaYbMo-;O;Ljwb0w;$j&TS0p2vnitMuOzW@_Ne3aFy%fm`AI&RW$_{V z3s?BQrFx{X*u;?2EQJNGN~=zKcgtE6CsMLS`tsz-}s% z)Ihb#5u}Tinyb131gvPMiHS*irj8+T@75h46H&) z9Z4Oj?tu;-CIt!$0r=s)zUkBY6<0%mbFkvzNINt-{??ilx>K6W9ruEl;7;d1=Mg+_yJPi z7n%||rw++icd!-d z)9YCu5*=+v}K+bZctc*EtWiM_1-<6ifI)gT1o_e9HdY_r+VjMraW1nee{Op&>bJN zEr`X{s;X*gst6x&kqUv_-i5T`BG-2ICio9ZMrV73{Ilt6!+^;gA6h|)W!tXK3RAXA z;HY&671qNv&K}OdsCMlEAHpJE9>aCW&}yr{^{Q36B&UzrvoTxEhl(ux%8e16?k7b7ifdQV@l&(-`WY`)%kk|$~jFG=NjQ^hQ z{HMIAoE%!xJA6KrR=b+eaBcbjzsPdNuJI$9Y*~=2_;=BttM7qfK&I0a$>^5LF@!iQ)&M*1^hyIe6Y|1Wel=@u35JvEx#{LnnXnD^J2=nlQ&+P|z^nZt4`y!dQ z!UrdI^g7iru6GchClu&$cUe0BdtzpW)F2_XiW{rw9vfH+z`tMETA;KzFQ#ppaJ$v*`%SLbq zqK~uvr}Kb>FnpmBD4I!cft%1~O{k?_^kZ!E={F4N8n23vW3MacN=EvJi{M6Alx*V= zFqy_ihbk~&aY0ZD(c}_t*dQ3~qSU&lNbU7E=i-i8`5On_$`jzdEjd5R)5zVie)U!E zWnLzd$7puF=U!=8#)8CJiP^PQasdl>%zRf+v`|=5D0aYItt`M>8X0-9w<)Cl%$?M?m8P<+na@oarc`)VXMNs(j2b?ie1b_6ijC$oa5udg z1&*6=TE*~BaLWS2{q=Pcr;mcGnZmzD0$B5cXK^slr3bf?y|%280yrbnq7E`*?(>Gd zL)b4PN|kd0P8+tIBc=s`nZfKZ7y7PLjb_`r#+!RCz%1_1{VH{aqE%cq4G3 zH7UuC!xNCi1xB1%mg>k5h3nc8Zqt5sd&Xy0w_XqMwNK<`85pan)RfXwq4Vs~ z-Y&Qj8CgEJ?*7-Z1BTUq%fsv+N(4E~GG@&p+i<&q#-qPq^wNg`^x(-P|Y`ETIj1}B7UXo+j4Yfh6bN=*>qIUroF(GCrV%<7!GbgA3#Xf-p&jY z9tzd>Zpl~5*%K0n{MknGF6l~;{E9d>~sDwI)?4KaGPYWalK=iZ% zfrp4>sW4m#UY0fRNn>5iHE?$Yp#Z#PBMg7LBlD)HHgIL?c?#CSd@#Ldh^**yv2&_j zX5D>QjsZqrN#?5G~d?JcL(ZqemVEkyf=&k-{>2+o(2lUp2myROoZ3(cpO?`-ALe8ojVo3DV;$`9AnGEtN3colnHz}+UkJ-?87sG3G9B5@t zEZ1E3v7HiFDEU!Up{=7+ELyN5WE3EtR*~0Krypu5aX}8~)E5+}=lVG1SG03Ykriyy zFIEt&^a}k((s#>h?(nG_G0;1r<-^vGS$ffo6hP1$V=jHzdqvRi- zW6H1V7Dy_l_rNA_?#9>5Xux{Qbc3)r|apr%~YX#6H_p69RT% z-ewHr*S9ceQe+HoEe?E(+I-|Z@&4OA^pQ)u;QIrAr`fsLSx^dadNqj)E&)OK={2Cb zIwGsk^uN93Q%g(B=;#s7Y4yrWzvD*waWKjLX>xLsgoRU^$RtwIS@H3G|G>cfZ?_pP zaa6)NvSTf8e!Y|T(j72k6*mDTE_-GBv=T~N$ zo$(OvHfNxN_n)W-?u42iGhFNicnM6Y<9kTrf0Gv65&tsegQtfUhk~IOY4576iMT3j z;{6zEXUlajAQ#0=&1>zV|5%xyU-?4bYj_RJhY=3fKkDW6XU!U*n2Go=hkiS%iOa-C ztO|&4r4Z%bjUlc8Bc_~7bf|)@vh~tl;9??0V%yOP_tLVhh84loF7tSTo=0p9mgJY_0z}N` zii-|vgMkr39puTb6k=*#B$in*ltNsZqd_jpz~|yyIFZ`Hsj--U+#5V_JQ^+L#eKI%l@965fvYg zmAhU2ydu_tPp+ShsCzNId;I<f0!Kn~4Vjx3;ZpKH+aM*bbZ4z(L zsl{4Y@E91oYlr_yY;o9|9X1*?afS0LH0Ck0XWriK-Artc8i!}Q0;o7eX4I8bGAn9pX2xahl-*xp5| zjDYw%w3aLvIOObt+Z28a!C65tIPcLn@87Qo)yGt#{W-G*cF*x{?fiX8^Fi9k)_Tzr z0o*fM%=B}DQCa(>Rs2rfwb;D2(czKN*H>4Pu2|6K8LmWA8;7U%JNWGKi9Pwj7mJe) zYb*J(6As8>(wqDH6o5Qcj~i^Eyg^Ca7hHO37@ut}q+Z!>4*z-Ji)p|a)Q_1$gvhYl z8lC~Y^Q$*RPh@U#u+A}(^LQL0lQ%{fTzH_{{Is>v!9>$o)r_Wi-xS;Z`=n7PXuQ|f z(9idiAj&(Z@sBLy|G&`5@cYWj%94_soPqUgSmG~!9u5!(`ulHhTZ<~b{6WiqePd{6 zXQu?I>gPh4(7)lV)73Ib(g--bkIcIUb3g`ibteIRDuF;iAP|3Opg`>=S18K$s2(&P zhr_PxU|i$_stv&XtgC{n>I6Z4kb#I6=mZ`5C4cW`ea@LugW5axEaotG_*`Dw>(b+y zgD*8StkLj&V20fhwDY%MUPmQ*5;H;|e%+~59~SnZ&#vI34&q`^Qa0vED%PLHenDjY z+Ehxc3iyo$b`2L@O*3sUR?9pJq)@A?Z%QY^IJTj>8fa6i!p>{gNBPA;n&Z&dR+S(Z zZ)wjXvqvad7;LDhv#|exco98?ZSkq?BG>i_E4T<# zWt~(9!5!oE<9iDBJn`-@s9re~V$;x(=iMI5NWs2l0L5>z=SG1SQHbg~h*Kw!Ixb4_ zL0=0_s+C^Vom|bRkhzc9aPOZ>QNWOO%PNEb6WRazEq7N1E$uj*4nk^N^7qt|8@VDj z5Ws@D+11&#;)lKT{0B@bKJq+SGdk3CTR@^X=NV`~{|5E(s)`w;fUS8!3b;UejRO8Z zw<@3BTvf=OMc6etWNBEJ^1VL03c3RJ1575ELLyTtal!}wJ`Yi9Ko^)9 z(2iZK_Mw&7u(q?r`*jE#gZ0OV@kTQ-b}|d!QxN6VtW!VB9W`z?n>!r=I%}qeAt}S2 zbrR3N4Y5c=1G(B9Mlr`jY7X2MoX{P|s zzRtl!N0-s*g)-J7V^>#^ zJ{U)X8|7_~v&z~FC$%{M$4Xq(fclv&*b-&q5!uD+jL%r?q!t!2v2ykxv|@h3@7$xz zihRse3xS{p!-vV{S5P z-S$NIi-)nXJN$X7nE*EE%BEG!e5(znhn@c-zwvT+JaT1NiZyPycv)iAie9E*ri?0a z>!qhK1hf*hbfIjD?}20vwIf|SGi)&hXZ~o_47WsMv0YDDr`50>PdS){uB$Tw78T#) z)WP@#1fuJQ`QJwU%jWuj+!o_&Cnr%LNj(jHwJ{+6|4wEJr0UkvdxN6%vNOJeDN+Ef zn9B&MF|S8*`JB$qWjjTkfQ_JiPE^!X;^6YX_h)w-q9xK;*7pQp6X6NT#r<*G3e3WE zvz!qG%?wO5wVK_re|@7cSDIf3vNKm~b^U(xGayiJh~lDnOIY!Ub@OnM;vH)jHD6Z2 zH(q;$Y`sH<53MDrfczTrvRr*n+rVKUaHe-exJjkh4Qfjpdri7Zm7cr+YT%C*j}c>M zw`IX1uL{E(Cb-F&42<#F(i4P?Yr~3i*!OuYrb2L|Cj-$YNbv*{NgXJ?^Kr*c0V)2PWpyQ=j= zUb*^EaY{wnqg|W>%^#DH%Am^D_Ga(Q!nVwfh0)l&_daMnBNU++Qtjb`i4g6qkf}5j zh{4J`jdq-j1$Y0CNuisrj8h>~Emww`d{0WX`nZWJ<1F@Lhaa?11^MMz$La=L3g6ad;Ky4{ahLvG z>th1T6f1B==NO(_z60rNx+b~kIX8oMb2O;x-T8a|x>_)NDK>qb?NQ7FjjUEBlXSeb zZPWF0C%6KH1_vQ`AkU^M8@O1|o<2dQFc`0~368zV2yt6 z9EOA`(5}$G9wfl#&qC%)Q5TK^E*B_K+HW>-zqBl1k^gEw#Jdl5xbpq7h{e78!w`oY zA^0*h&2M@CSAjBFfWe4*a(*RRwRrG+svUbG82i1a)wRO}H{T%|;;duZM-)@wB95&_-TVjpt(G zZx>2~Az9ayzs4-ryeo0YUqp*?vm7WGiv4gX=kMMNbXwEC@Hy=5{g_ zeSslFKkH+q=u14(lM%o$Jav1W(uS#`JnU(0C;T@{QGHc z8O<5uf^&e?7!&0>la#zt5|c4FwfkGDVs8XkFV$FE?;k!64iUFgAU6#*kS$=bunCSc ztMqEGPV8)Fsd*w_PAX!?j86!4p6vN;{37(Tv0a^)_r{0_tRadYn4#wj$YPg~tf0+r zoY!9F7CKs#>T@eAVrS=?2ig~}eSha~Z}iUs$v^WXk{~>=i&xhRsixnUu>M2h^r!p@ zRG=%-h`8n3bHkuOiYf@+@Q)RE|8vAnKRMmp-`WWBZ?Qk57X3u7`_0+ z|0oi?L^&=3^HtKk2VY!72li5}kt<&CVM2Ow22halq51k--T7CFja7dZ1-;nm2l+z( z5Q#8O(Zq^3s<O*tf!%;|UVQ^J)gWCOo1Ep;Qyah3a| zOLuE#b6SVISNs;ze)IWY5s;rjQ}6-TN2yf=)y-;=2(jj8POflhwoH8HObh%C*i!1` zXm4+Cw5U?h9pH&Hbd7*bP}T3?)6^ajzcCxm1Ab*RwGA9Fu_1tnSkeC@%GTY!hRd2N z_PaiKA?g=&%X##A9WM3~5lemC8YZ6v#mCs6?~~gbKrn`V=>%2|NkUFdPAy#`Y8(dAv^h(=VZ6J9;hNGT zRSBi{F;deXDMc-iZ8zV*loVv2LOP}9Z%2(F0C=iqtB}3Dm=nG9v(JXyiU9(5A&ED2lOSSaY1088#hmD<< zf6xTu9?SGTSl@Z(vJ6lr(J7M3Cy_dleQAzl`K0Vjr@i|Vu^@>nu~_MyR-UOj`BWCZ zUGkahI|cffvvG+&yP&Ju8D@pRxIwLyWOeHaS!cs8Qu%k&34AuK7DQj;skA7Bz4`av znZh{ctqCtppk(C&=dKo5KjIE0I@_i@97UT?dk}jpC9s>4zIhO%jpu{jeqEGZZo`dE zCLp3-NWrnb%UT1T&9T#!q0YSPC5`|>W%5$$fGbKemHFrlQH(-?us26wKvBhN7euu# z5u*imFx9D980JDj^2hALl7W@0mkt2oPtw1_;F(4P#u%~s_y<2i%Li&tf}eEShFoNL z8%4eDeWF=?Wg=3;jeO6LcB49f`HjoaIcIuFaTMIW6_Mi+hRf`sXW^@iCnsFlWA&k(hM{e_ z5wowRa4&3ge)e>W1^8M7NhA7}k zYB>%Up%Zf|6oC>@%Y3%ZfpoGb1q;1vClGaidVd&|Oqcv|-Rkx=KanK7l)@~V{P zsAW)LPMK3MdHfQ)_adQlNdHIF0PZ&$!c5Gsp9ahOnV#am5kGRH$sZ6F!FD7Pd%`m`Gf(f0y*S`8kpWs zFS_H8zDAO+Juxu;1j{~6uRZj^?Y9@}J2P7HcP*a5ge_{M;dfTtcsC}}+f09dtF|~8 z7IuYUA7E<1%tkS_ZC*+#d^|aHn`+r|5fneBJtkwW?_Umqiq3e4n9-!Ut;Yz87RST*ONHbx*Vzr<>>$g4Ya!C)4x&hV}bYvuR{ z?BT}4gmGmU>W~D8FgBshjyd{{c`}mZcdJ@8C5HHvtJZExQeHTRccxm&o;qLXRjytc zqG@S_<}h%(hO2|ZnsrC@CvZb7LZ5TgU}nK!gdufz=ZN;Tx#~78Hl%qf!^S$7xyKCr zrV2pLA4j|RjG692ixMS+wyk{|R4Uir_{PpPmoaE^C>veE@FiWS#l7&zx8!W-S&JKaRgw)JHAI2_Y7;?l;x zZ%z#Ji|<(N5?Hcjxq42T!f(MXKEuU!#Udu)?0w(rl6y=yd4!9EQ1Ar*P-qrr?J~bG z{l*65Bj&H@Q^1?*rg|zM+8=v%x@RZZn2r7UXr)IsxO58%>*2Du>aWBNo> z^>m3?1XW=diU||o2uWNc@x3E5k>7*Xs{_CWBeF3fJS~F@dAtLjW30xb(wt?Wqbn$( zy~{BwoZ+SNO<8IQAs8TO1&rX z7f4=poc;ttoT%(T^K{fg=@ooD8*8p)A$+o|tTKQBQ!4O(L90i8eNn~7lDE<1XtU;G zt=L$rCYLD0Tkf3b0FxG-gN3QDJ6(lQ7vUohhxP@kFg;yN;aN@Z9+kw6A=8pbk-<@) z&ArOEVXfXu9(&tP2nY4fEjEIdJNPEPA+q}BwXB(w1B7OB$!qmJ;&2&)FfQFORB6&6 z(3PltwKI@*ln_V!sR3b1PH7-6u1&OI9Addx<3ofa4RgilE)@m*u;)e0ZR&`AITiT>8oF5l1*31Hp2KgOq5}vv2u9=Z%k^ceLL&juR37- zFxW!o2vi~dna#npuASdz@kO}VXYzJObkx4eKQkUl3#7e%j}Fv((3VMQlsg3Y(4VOq z8%w(Y;o@Og=$F@2H|eqIPif^%x}*hNi(yFULaN45r~7XtwSw11(trYSwD?9z>eBY0 zBA%E=Oxry&2bp)S1$Yp1vKKks$g8zP!BL<#>j$0%mzGk~xV-fB>@7}p`W`j7uE`nb zgCC#u@HeGc4A8f|ACqi+bDqJxBN9gDrps`#`<_>D(46dt6~|Q_Y3xPgzVI2nJpZ!A zEB?a|q;z)m1k_?@zZ~pAr;u__F{sFuvdopiV$zZZXHkA%LV660|&;o!1Q=P52+(T_eImILn`N##Ofr{%@zK7#fbP5)lF}}*-?RUd=S1M z;77#wtTQ2gl_+x-{R4RN!u0mQe5Ey=;6e0ETt8yPi_Xyv{*{Sb?7_t<@H++6+=X3(U<*yGDUQEEPqgY+Nzx8HEONmHL7 zaGGe>VxRJ4qPed#$V$UV|TJ{E<03)3HTU>D$M2j8r5BjS|OdSJG5WpU}=q z=@CdvL1Xzj+MX_6Dtq1ugyps#SNdB6pM`-R^>AS;4&Bx5i$ZC(q6w4qq4osF^qLES zPK_1fbAQ$yw++agBN8t2J0>orJ6HzqC2Ti9J=C10E@{}vObZ_bV9HUQ55=k54MZOz z`x6)T|4*xa{<8$?|C=*!DQq4dK|MlXY|7t7lK-Oo(t*D8Yq(R7vjU|YLMSqQhm6uW zzvy%}D=m}F5RD1}WnbF<~n&ag}mBC95UKT@HF-p*-c`BZ*$LU0}Oh(kZ!{E+I>0t~^y2khV!+4Yq81=EoYUKo$bsCRKgSD}g|%hF#FGZAre%IS8)pAXY%lEIUa1Ev zXRoWrI_A1Fo2HaA-)Z6&?;B?hIO}O^uR`AYJ^(9M6Ort~jmh(Tlk3z)J_)@ze z4p3?9$LZ~5kB-r2-psyxkN2M%?n?D(ezke+LopjD>^b8xuQx35se6R%d;)uR7S5x` z%%7Ov7Edhi)SAJ#x~p&MY^d$jkW3}?Y1nr=n`pFiXqmL>wB0Ke_+#Pj+UvlC=@ysn zlMQ!O;c0&D5q8Nd*K5>P94x)UWPIV5B^6YZK=9Fbw%!)=a_Uv~WU@ns$sF}z`dfm` zD8F8?%-YbXs+4K9motOwHVi{DTICd?u##C$2(-iejCaasRPu zs!V<@)ACu&J43NLq2g80w+pB7l355Fwmi+ZM}1W^I41S3N#gv z>~grKs}E95-0>9tx?Ene6%$u&Q=%L+syG`v(ic1#eh4wC3g=W_JU-9>M?d!W?_qT* z^^fS8>8xymgM#zG|8tJV N==|k#Mf%t8{XZDWh`j&+ literal 0 HcmV?d00001 diff --git a/docs/index.rst b/docs/index.rst index b326ecf..8e2196f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -4,21 +4,43 @@ .. _index-multicloud: -MultiCloud Documentation Repository +MultiCloud API +----------------------------------- +.. toctree:: + :maxdepth: 2 + + MultiCloud-APIv0-Specification + MultiCloud-APIv1-Specification + + +MultiCloud Release Notes ----------------------------------- .. toctree:: :maxdepth: 2 Release Notes + + +MultiCloud Deployment +----------------------------------- +.. toctree:: + :maxdepth: 2 + MultiCloud-Deployment-Guide - MultiCloud-Test-Guide - MultiCloud-API-Specification-V1 - Multicloud-Fake_Cloud-Guide - MultiCloud-Heat-Deployment-Guide MultiCloud-Administrator-Guide + MultiCloud-Heat-Deployment-Guide + +MultiCloud Plugins User Guides +----------------------------------------------- +.. toctree:: + :maxdepth: 2 + + multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud + Multicloud-Fake_Cloud-Guide + MultiCloud-Test-Guide -MultiCloud Specification Documentation +MultiCloud Specifications -------------------------------------- .. toctree:: :maxdepth: 1 @@ -31,3 +53,7 @@ MultiCloud Specification Documentation specs/multicloud-container-plugin specs/MultiCloud-HPA-Discovery-design specs/parallelism_improvement + specs/multicloud_infra_workload + specs/multicloud-cloud-region-id + specs/multicloud-heat-aai-bridge + specs/multicloud-multi-region diff --git a/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..0480146 --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst @@ -0,0 +1,68 @@ +.. + This work is licensed under a Creative Commons Attribution 4.0 + International License. + +Tutorial: Enable ONAP HPA Orchestation to Wind River Titanium Cloud +``````````````````````````````````````````````````````````````````` + + +To fulfil the functional requirement of HPA enablement, MultiCloud plugin for +Wind River Titanium Cloud expects the administrator to provision the Titanium +Cloud instance conforming to certain conventions. + +This tutorial demonstrates how to enable ONAP HPA orchestration to Wind River Titanium Cloud. + +Architecture & Policies & Mappings +---------------------------------- + +Please refer to the link for more architecture details: + +.. + https://wiki.onap.org/pages/viewpage.action?pageId=20874679 + +Please refer to the link for more Policies&Mappings details: + +.. + https://wiki.onap.org/display/DW/HPA+Policies+and+Mappings + +Provision Flavors +----------------- + +configure openstack with proper flavors (with name prefixed by "onap." to carry HPA information to ONAP), example flavor: + +.. code-block:: console + + nova flavor-create onap.hpa.medium 110 4096 0 6 + #cpu pining + nova flavor-key onap.hpa.medium set hw:cpu_policy=dedicated + nova flavor-key onap.hpa.medium set hw:cpu_thread_policy=prefer + #cpu topology + nova flavor-key onap.hpa.medium set hw:cpu_sockets=2 + nova flavor-key onap.hpa.medium set hw:cpu_cores=4 + nova flavor-key onap.hpa.medium set hw:cpu_threads=8 + #hugepage + nova flavor-key onap.hpa.medium set hw:mem_page_size=large + #numa + nova flavor-key onap.hpa.medium set hw:numa_nodes=2 + nova flavor-key onap.hpa.medium set hw:numa_cpus.0=0,1 hw:numa_cpus.1=2,3,4,5 hw:numa_mem.0=2048 hw:numa_mem.1=2048 + +Access configuration of Titanium Cloud Instance +----------------------------------------------- + +collect following information for on-boarding this Cloud instance to ONAP: + +.. code-block:: console + + your openstack project name + your openstack user + your openstack password + your openstack keystone endpoint + your openstack Region ID: e.g. RegionOne + + +On-board the Titanium Cloud instance +------------------------------------ + +Now you can onboard this Titanium Cloud instance, make sure the multicloud registration process is triggered. + +See :ref:`Tutorial: Onboard instance of Wind River Titanium Cloud ` diff --git a/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..52926bb --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst @@ -0,0 +1,289 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +Tutorial: Onboard instance of Wind River Titanium Cloud +``````````````````````````````````````````````````````` + +Prerequisites +------------- + +Collect ONAP Access Info +^^^^^^^^^^^^^^^^^^^^^^^^ + +With Heat based ONAP: +..................... + +.. code-block:: console + + export ONAP_AAI_IP= + export ONAP_AAI_PORT=8443 + export ONAP_MSB_IP= + export ONAP_MSB_PORT=80 + +With OOM based ONAP: +.................... + +.. code-block:: console + + export ONAP_AAI_IP= + export ONAP_AAI_PORT=30233 + export ONAP_MSB_IP= + export ONAP_MSB_PORT=30280 + +Determine the ID of the cloud region: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + cloud region is ONAP's representation of the on-boarded VIM/Cloud instance (Titanium Cloud instance in this case). + The ID of a cloud region is specified by ONAP user while on-boarding the VIM/Cloud instance, this ID will be + internal to ONAP only, comprised by the composite keys of "cloud-owner" and "cloud-region-id". + +.. code-block:: console + + export CLOUD_OWNER="CloudOwner" + export CLOUD_REGION_ID="RegionOne" + + +Notes: +...... + + 1, It is suggested to populate "cloud-owner" to be "CloudOwner". + The restriction is that underscore "_" can not be used. + + 2, There is restriction from ONAP Amsterdam Release that the + "cloud-region-id" must be the same as OpenStack Region ID in case that + the cloud region represent an OpenStack Instance. + From Casablanca Release, the restriction of "cloud-region-id" has been + removed by MultiCloud plugin for Wind River Titanium Cloud. It is not + mandatory to be populate the "cloud-region-id" with OpenStack Region ID. + + +The geographic location of the cloud region +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +make sure there is complex object to represent the geographic location of the cloud region +in case you need create a complex object "clli1": + +.. code-block:: console + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/complexes/complex/clli1 \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 2b272126-aa65-41e6-aa5d-46bc70b9eb4f' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "physical-location-id": "clli1", + "data-center-code": "example-data-center-code-val-5556", + "complex-name": "clli1", + "identity-url": "example-identity-url-val-56898", + "physical-location-type": "example-physical-location-type-val-7608", + "street1": "example-street1-val-34205", + "street2": "example-street2-val-99210", + "city": "Beijing", + "state": "example-state-val-59487", + "postal-code": "100000", + "country": "example-country-val-94173", + "region": "example-region-val-13893", + "latitude": "39.9042", + "longitude": "106.4074", + "elevation": "example-elevation-val-30253", + "lata": "example-lata-val-46073" + }' + + + + +On-board Wind River Titanium Cloud Instance +------------------------------------------- + +You can on-board the instance of Wind River Titanium Cloud with either way as below + + +With curl commands +^^^^^^^^^^^^^^^^^^ + +Step 1: Create a cloud region to represent the instance +....................................................... + +.. code-block:: console + + ### on-board a single OpenStack region + ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"} + + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "cloud-owner": "<${CLOUD_OWNER}>", + "cloud-region-id": "<${CLOUD_REGION_ID}>", + "cloud-type": "openstack", + "owner-defined-type": "t1", + "cloud-region-version": "titanium_cloud", + "complex-name": "clli1", + "cloud-zone": "CloudZone", + "sriov-automation": false, + "identity-url": "WillBeUpdatedByMultiCloud", + "cloud-extra-info":"{\"openstack-region-id\":\"RegionOne\"}" + "esr-system-info-list": { + "esr-system-info": [ + { + "esr-system-info-id": "", + "service-url": "http://", + "user-name": "", + "password": "", + "system-type": "VIM", + "ssl-insecure": true, + "cloud-domain": "Default", + "default-tenant": "", + "system-status": "active" + } + ] + } + }' + + + +.. code-block:: console + + ### on-board multiple OpenStack regions with a single request by indicating {"multi-region-discovery":true} + ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"} + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "cloud-owner": "<${CLOUD_OWNER}>", + "cloud-region-id": "<${CLOUD_REGION_ID}>", + "cloud-type": "openstack", + "owner-defined-type": "t1", + "cloud-region-version": "titanium_cloud", + "complex-name": "clli1", + "cloud-zone": "CloudZone", + "sriov-automation": false, + "identity-url": "WillBeUpdatedByMultiCloud", + "cloud-extra-info":"{\"multi-region-discovery\":true, \"openstack-region-id\":\"RegionOne\"}" + "esr-system-info-list": { + "esr-system-info": [ + { + "esr-system-info-id": "", + "service-url": "http://", + "user-name": "", + "password": "", + "system-type": "VIM", + "ssl-insecure": true, + "cloud-domain": "Default", + "default-tenant": "", + "system-status": "active" + } + ] + } + }' + + +Step 2: associate the cloud region with the location object +........................................................... + + +This association between the cloud region and location is required for OOF homing/placement of VNF + +.. code-block:: console + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}/relationship-list/relationship \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 7407d60c-8ce7-45de-ada3-4a7a9e88ebd4' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "related-to": "complex", + "related-link": "/aai/v13/cloud-infrastructure/complexes/complex/clli1", + "relationship-data": [ + { + "relationship-key": "complex.physical-location-id", + "relationship-value": "clli1" + } + ] + }' + + + +Step 3: Trigger the MultiCloud Plugin registration process +.......................................................... + + +Make sure trigger MultiCloud plugin to discover and register Infrastructure +resources, including HPA + +.. code-block:: console + + curl -X POST \ + http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud/v0/${CLOUD_OWNER}_${CLOUD_REGION_ID}/registry \ + -H 'Accept: application/json' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' + + +With ESR GUI Portal +^^^^^^^^^^^^^^^^^^^ +ESR will conduct all steps mentioned above with a single click. + +The url of the ESR GUI Portal is: + +.. + http://$ONAP_MSB_IP:$ONAP_MSB_PORT/iui/aai-esr-gui/extsys/vim/vimView.html + +.. image:: ../images/mc-windriver/esr-vim-register.png + :alt: ESR VIM Registrer GUI Portal + :width: 500 + :height: 700 + :align: center + + +Verification +------------ + +You may want to verify if the cloud region was registered properly (with HPA information populated) +to represent the instance of Wind River Titanium Cloud, you can do it with the curl command as below + +.. code-block:: console + + curl -X GET \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}?depth=all \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 2899359f-871b-4e61-a307-ecf8b3144e3f' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' + + +Note: +^^^^^ +The response of querying a cloud region above should return with a comprehensive cloud region object, you should find out the "hpa-capabilities" under certain flavor object with name prefixed by "onap." + diff --git a/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..2d17692 --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst @@ -0,0 +1,139 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +Tutorial: VESagent configuration and Testing +```````````````````````````````````````````` + +VESagent is a FCAPS relaying service offered by MultiCloud Plugin for Wind +River Titanium Cloud. It allows user to monitor specified VM status and report +VES collector with onset or abate fault event "Fault_MultiCloud_VMFailure" + +VESagent provisoning APIs +------------------------- + +### assume OOM deployment as below endpoints: + +* OOM k8s Node IP, e.g. 10.12.5.184 +* OOM k8s Node port for multicloud-titaniumcloud POD: 30294 +* On-boarded cloud region with {cloud-owner}/{cloud-region-id} : CloudOwner/pod01 +* VES collector endpoint: 10.12.6.79:8081 + + + +.. code-block:: console + + #!/bin/bash + export MC_EP_IP=10.12.5.184 + export MC_EP_PORT=30294 + + export MC_EPv0=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_pod01 + export MC_EPv1=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v1/CloudOwner/pod01 + + + +1. Setup VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +** Option 1: monitor all VMs of a tenant** + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config": \ + {"backlogs":[ {"domain":"fault","type":"vm","tenant":"VIM"}],\ + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}'\ + -X POST $MC_EPv0/vesagent + +** Option 2: monitor specified VMs** + +.. code-block:: console + + ### zdfw1lb01dns01, zdfw1lb01dns02 + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\ + {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"},\ + {"source":"zdfw1lb01dns02", "domain":"fault","type":"vm","tenant":"VIM"}], + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \ + -X POST $MC_EPv0/vesagent + +2. Dump the VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -X GET $MC_EPv0/vesagent + +3. Delete the VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -X DELETE $MC_EPv0/vesagent + + +VESagent exercises +------------------ + +Step 1: Monitor the DMaaP events +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Subscribe to and keep polling DMaaP Topic: "unauthenticated.SEC_FAULT_OUTPUT" with curl command + +.. code-block:: console + + curl -X GET \ + 'http://$DMAAP_IP:3904/events/unauthenticated.SEC_FAULT_OUTPUT/EVENT-LISTENER-POSTMAN/304?timeout=6000&limit=10&filter=' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 4e2e3589-d742-48c7-8d48-d1b3577df259' \ + -H 'X-FromAppId: 121' \ + -H 'X-TransactionId: 9999' + + +Step 2: Setup VESagent backlog +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. code-block:: console + + ### zdfw1lb01dns01, zdfw1lb01dns02 + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\ + {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"}],\ + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \ + -X POST $MC_EPv0/vesagent + +Step 3: Simulate the Faults +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Manually stop the monitored VMs,e.g. VM with name 'zdfw1lb01dns01', + +Step 4: Observe DMaaP event: "Fault_MultiCloud_VMFailure" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Poll the subscribed DMaaP topic "unauthenticated.SEC_FAULT_OUTPUT" with curl command, +you should be able to observe the following VES fault event generated from DMaaP: + +.. code-block:: console + + [ + + "{\"event\":{\"commonEventHeader\":{\"startEpochMicrosec\":1537233558255872,\"sourceId\":\"8e606aa7-39c8-4df7-b2f4-1f6785b9f682\",\"eventId\":\"a236f561-f0fa-48a3-96cd-3a61ccfdf421\",\"reportingEntityId\":\"CloudOwner_pod01\",\"internalHeaderFields\":{\"collectorTimeStamp\":\"Tue, 09 18 2018 01:19:19 GMT\"},\"eventType\":\"\",\"priority\":\"High\",\"version\":3,\"reportingEntityName\":\"CloudOwner_pod01\",\"sequence\":0,\"domain\":\"fault\",\"lastEpochMicrosec\":1537233558255872,\"eventName\":\"Fault_MultiCloud_VMFailure\",\"sourceName\":\"zdfw1lb01dns01\"},\"faultFields\":{\"eventSeverity\":\"CRITICAL\",\"alarmCondition\":\"Guest_Os_Failure\",\"faultFieldsVersion\":2,\"specificProblem\":\"Fault_MultiCloud_VMFailure\",\"alarmInterfaceA\":\"aaaa\",\"alarmAdditionalInformation\":[{\"name\":\"objectType\",\"value\":\"VIM\"},{\"name\":\"eventTime\",\"value\":\"2018-09-18 01:19:18.255937\"}],\"eventSourceType\":\"virtualMachine\",\"vfStatus\":\"Active\"}}}", + + ] + + +Step 5: Simulate the Recovery +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Manually restart the stopped VM 'zdfw1lb01dns01' + + +Step 6: Observe DMaaP event: "Fault_MultiCloud_VMFailureCleared" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + [ + "{\"event\":{\"commonEventHeader\":{\"startEpochMicrosec\":1537233558255872,\"sourceId\":\"8e606aa7-39c8-4df7-b2f4-1f6785b9f682\",\"eventId\":\"a236f561-f0fa-48a3-96cd-3a61ccfdf421\",\"reportingEntityId\":\"CloudOwner_pod01\",\"internalHeaderFields\":{\"collectorTimeStamp\":\"Tue, 09 18 2018 01:19:31 GMT\"},\"eventType\":\"\",\"priority\":\"Normal\",\"version\":3,\"reportingEntityName\":\"CloudOwner_pod01\",\"sequence\":1,\"domain\":\"fault\",\"lastEpochMicrosec\":1537233570150714,\"eventName\":\"Fault_MultiCloud_VMFailureCleared\",\"sourceName\":\"zdfw1lb01dns01\"},\"faultFields\":{\"eventSeverity\":\"NORMAL\",\"alarmCondition\":\"Vm_Restart\",\"faultFieldsVersion\":2,\"specificProblem\":\"Fault_MultiCloud_VMFailure\",\"alarmInterfaceA\":\"aaaa\",\"alarmAdditionalInformation\":[{\"name\":\"objectType\",\"value\":\"VIM\"},{\"name\":\"eventTime\",\"value\":\"2018-09-18 01:19:30.150736\"}],\"eventSourceType\":\"virtualMachine\",\"vfStatus\":\"Active\"}}}" + + ] diff --git a/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..8e3b851 --- /dev/null +++ b/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst @@ -0,0 +1,152 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +=============================================== +MultiCloud Plugin for Wind River Titanium Cloud +=============================================== + +The following guides are provided to describe tasks that a user of +ONAP may need to perform when operating ONAP to orchestrate VNF onto +an instance of Wind River Titanium Cloud + + +Supported Features +`````````````````` + +**Proxy endpoints for OpenStack services** + + MultiCloud plugin for Wind River Titanium Cloud supports the proxy of OpenStack services + The catalog of proxied services is exactly the catalog of OpenStack services + +**VFC specific Northbound API** + + MultiCloud plugin for Wind River Titanium Cloud supports VFC with the legacy APIs + which was inherited from OPEN-O MultiVIM project. + +**Support enhanced SO/OOF workflow** + + MultiCloud plugin for Wind River Titanium Cloud supports infra_workload APIs from Casablanca Release. + + These APIs enhances the workflow of Heat based VNF orchestration by: + offloading Heat template/parameter updating from SO to MultiCloud plugins + + Enabling the "Centralized Representation of Cloud Regions" + + Automate the heatbridge action by updating the AAI with deployed Heat stack resources + +**Support OOF** + + MultiCloud plugin for Wind River Titanium Cloud supports capacity check from Beijing Release. + +**Conform to Consistent ID of a Cloud Region** + + Northbound API v1 supports the composite keys {cloud-owner}/{cloud-region-id} as + the ID of a cloud region + +**Decoupling between cloud-region-id and OpenStack Region ID** + + {cloud-region-id} should be populated by users while on-boarding a cloud region, + With ONAP A and B release, it must be the same as the "OpenStack Region ID" of the + represented OpenStack instance. From ONAP C release, this restriction has been removed. + + The backward compatibility is maintained so that user can still populate the {cloud-reigon-id} by + "OpenStack Region ID". + + Users could also specify the "OpenStack Region ID" while onboarding a cloud region + out of multi-region instances. + + Note: There are still restrictions to populate {cloud-owner} and {cloud-region-id}, please + refer to section "On-board a Cloud Region" + +**Support on-boarding of Multi-Region instances** + + Multiple OpenStack instances federated with the "multi-region" feature + can be on-boarded into ONAP with a single click. ONAP user needs to + register only the primary region into ONAP, and the multicloud plugin for Wind River + + Titanium Cloud will discover and on-board all other secondary regions automatically. + + This feature supports Titanium Cloud feature "Distributed Cloud" to on-board all subclouds with a single click. + + This feature can be controlled by user with configuration options while on-boarding a cloud region + +**HPA discovery** + + MultiCloud plugin for Wind River Titanium Cloud supports discover and + registration into AAI with regarding to following HPA capability: + CPU Pinning, HugePage, ... + +**Cloud Region decommission** + + MultiCloud plugin for Wind River Titanium Cloud support the decommission of a cloud region with a single API requests. + This API is not yet integrated with ESR GUI portal. + +**VESagent** + + MultiCloud plugin for Wind River Titanium Cloud supports VESagent + which can be configured to monitor the VM status and assert or abate + fault event to VES collector for close loop control over + infrastructure resources. + +**LOGGING** + MultiCloud plugin for Wind River Titanium Cloud supports centralized logging with OOM deployed ONAP + + +Supported Use Cases +``````````````````` + +**vFW/vDNS** + + The vFW/vDNS are the VNFs modeled with HEAT templates + MultiCloud plugin for Wind River Titanium Cloud has been tested with vFW/vDNS use cases from Amsterdam Release. + +**vCPE** + + **vCPE without HPA orchestration** + vCPE is the VNF modeled with HEAT templates, basic Use case from Amsterdam Release + does not include any HPA orchestration. + + **vCPE with HPA orchestration** + From Beijing Release,a variation of vCPE use case include HPA orchestration + + MultiCloud plugin for Wind River Titanium Cloud has been tested with both cases. + +**vVoLTE** + + MultiCloud plugin for Wind River Titanium Cloud has been tested with vVoLTE use case. + + +Known Issues: +`````````````````` + +1, MULTICLOUD-359 : The image uploading API from VFC specific NBI does not work with large image file. + + + +.. include:: Tutorial-Onboard-WindRiver-TitaniumCloud.rst + + +Tutorial: Cloud Region Decommission: +```````````````````````````````````` + +ESR GUI Portal cannot decommission a cloud region which has been updated by +MultiCloud Plugin for Wind River Titanium Cloud, and it does not request MultiCloud +to help on that yet. So it is required to issue a rest API request to MultiCloud with +a single curl commands: + + +.. code-block:: console + + curl -X DELETE \ + 'http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_RegionOne' \ + -H 'Accept: application/json' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' + + +.. include:: Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst + + +.. include:: Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst -- 2.16.6