From d4ee0c786ca2cc27b35fdfaa7d9d53718fa0bd20 Mon Sep 17 00:00:00 2001 From: Denes Nemeth Date: Thu, 31 May 2018 13:59:34 +0200 Subject: [PATCH] Fix template generation for R2 Change-Id: Ibf53ee4f203f248c930611812f3eb248e3023be8 Signed-off-by: Denes Nemeth Issue-ID: VFC-728 --- nokiav2/docs/onboarding.rst | 2 + .../simple/cbam.instantiation.request.json | 60 ---------- nokiav2/docs/sampleVnfs/simple/simple.v1.csar | Bin 11484 -> 7668 bytes nokiav2/docs/sampleVnfs/simple/simple.v2.csar | Bin 0 -> 7787 bytes .../simpleDual/cbam.instantiation.request.json | 60 ---------- .../docs/sampleVnfs/simpleDual/cbam.package.zip | Bin 0 -> 7488 bytes .../docs/sampleVnfs/simpleDual/etsi_config.json | 39 +++++++ .../docs/sampleVnfs/simpleDual/simple.dual.v1.csar | Bin 0 -> 8334 bytes .../docs/sampleVnfs/simpleDual/simple.dual.v2.csar | Bin 0 -> 8516 bytes nokiav2/docs/sampleVnfs/simpleDual/simpleDual.csar | Bin 12325 -> 0 bytes nokiav2/docs/sampleVnfs/simple_cmcc/simple.v1.csar | Bin 11484 -> 7668 bytes nokiav2/docs/sampleVnfs/simple_cmcc/simple.v2.csar | Bin 7773 -> 7787 bytes nokiav2/docs/samplevnf.rst | 34 ++++-- .../OnapAbstractVnfdBuilder.java | 83 +++++++++++++- ...OnapVnfdBuilder.java => OnapR1VnfdBuilder.java} | 126 +++------------------ .../packagetransformer/OnapR2VnfdBuilder.java | 117 +++---------------- ...kageBuilder.java => OnapVnfPackageBuilder.java} | 6 +- .../vnfm/svnfm/nokia/restapi/ConverterApi.java | 4 +- .../vnfm/svnfm/nokia/vnfm/LifecycleManager.java | 1 + .../driver/vnfm/svnfm/nokia/FullUnitTestSuite.java | 8 +- .../TestOnapAbstractVnfdBuilder.java | 33 ++++++ ...VnfdBuilder.java => TestOnapR1VnfdBuilder.java} | 18 +-- .../packagetransformer/TestOnapR2VnfdBuilder.java | 8 +- .../TestOnapVnfPackageBuilder.java | 53 ++++++++- .../vnfm/svnfm/nokia/restapi/TestConverterApi.java | 25 +++- .../test/resources/application-direct.properties | 4 - .../src/test/resources/application.properties | 4 - .../unittests/packageconverter/cbam.package.zip | Bin 1288 -> 1333 bytes .../packageconverter/cbam.package.zip.vnfd | 5 + .../packageconverter/nodes.vnfd.cbam.yaml | 1 - .../packageconverter/nodes.vnfd.onap.v2.yaml | 1 - 31 files changed, 306 insertions(+), 386 deletions(-) delete mode 100644 nokiav2/docs/sampleVnfs/simple/cbam.instantiation.request.json create mode 100644 nokiav2/docs/sampleVnfs/simple/simple.v2.csar delete mode 100644 nokiav2/docs/sampleVnfs/simpleDual/cbam.instantiation.request.json create mode 100644 nokiav2/docs/sampleVnfs/simpleDual/cbam.package.zip create mode 100644 nokiav2/docs/sampleVnfs/simpleDual/etsi_config.json create mode 100644 nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v1.csar create mode 100644 nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v2.csar delete mode 100644 nokiav2/docs/sampleVnfs/simpleDual/simpleDual.csar rename nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/{OnapVnfdBuilder.java => OnapR1VnfdBuilder.java} (55%) rename nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/{OnapR1VnfPackageBuilder.java => OnapVnfPackageBuilder.java} (93%) create mode 100644 nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapAbstractVnfdBuilder.java rename nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/{TestOnapVnfdBuilder.java => TestOnapR1VnfdBuilder.java} (83%) diff --git a/nokiav2/docs/onboarding.rst b/nokiav2/docs/onboarding.rst index 80aff0b2..4613777d 100644 --- a/nokiav2/docs/onboarding.rst +++ b/nokiav2/docs/onboarding.rst @@ -181,6 +181,8 @@ The following section requires the CSAR and the ETSI configuration of the VNF to - Select the ETSI configuration file using Browse + - the name of the file on the local file system must be etsi_config.json + - Click on Done - Click on Check in diff --git a/nokiav2/docs/sampleVnfs/simple/cbam.instantiation.request.json b/nokiav2/docs/sampleVnfs/simple/cbam.instantiation.request.json deleted file mode 100644 index a85ca0ae..00000000 --- a/nokiav2/docs/sampleVnfs/simple/cbam.instantiation.request.json +++ /dev/null @@ -1,60 +0,0 @@ -{ - "apiVersion":"3.1", - "computeResourceFlavours": [ - { - "vnfdVirtualComputeDescId": "server_compute", - "resourceId": "m1.small" - } - ], - "extVirtualLinks": [ - { - "extCps": [ - { - "cpdId": "commisioning_ecp" - } - ], - "resourceId": "pub_net" - }, - { - "extCps": [ - { - "cpdId": "vnftovnf_ecp" - } - ], - "resourceId": "preservedNetwork" - } - ], - "zones": [ - { - "resourceId": "compute-a", - "id": "zoneInfoId" - } - ], - "flavourId": "scalable", - "grantlessMode": true, - "softwareImages": [ - { - "resourceId": "ubuntu.16.04", - "vnfdSoftwareImageId": "server_image" - } - ], - "vims": [ - { - "accessInfo": { - "username": "", - "tenant": "", - "password": "", - "region": "RegionOne" - }, - "interfaceInfo": { - "endpoint": "https://:5000/v2.0/", - "trustedCertificates": [], - "skipCertificateVerification": true, - "skipCertificateHostnameCheck": true - }, - "vimInfoType": "OPENSTACK_V2_INFO", - "id": "vim_id" - } - ], - "instantiationLevelId": "default" -} diff --git a/nokiav2/docs/sampleVnfs/simple/simple.v1.csar b/nokiav2/docs/sampleVnfs/simple/simple.v1.csar index bdea8ad84a3573578c490ec974b4447016fada32..3f66c11faaba09ed3374208d438ba4cdd74c81b5 100644 GIT binary patch literal 7668 zcmb7pWl$Z=mMsw6Ew~*t*umWi?(Xic2X}XugS!*lB@o=51h){JKsdO+eDmktnR<7s zW_5K{@9M7IyL;``KYFXke}Kh>LPSJ_BGB(wfciHu{vC_Cfo!cz%|Y%g5|%Cw&OVNo zP9PR#4H-!_7IQOGN1%(TxxJ~iCD7N_B|{fZLv!Ot1r7QZ4RZi5r;L}Ete5-v=P(L- zY&A+64@CMDr)0ICDvMi-H09wh-j{xt+Lr-|UiXCV=U>Oxc6bi;-0KPLs~G{5Sl^0E zN(NI1+8KvlT}*dk+H*3~VS8e^hBqfk%w|InE9*fRx6g%$?@uzX{e!aa$nX0f5&Qf` zct`IbL?Y^@+64C`!So6y3{5Sl1Cg~{V*8s@7dl2zvXrwPUPUFyxuKI)*0KqQ3*Y`E zL%N?S7~Lm2D?=xt9D>pM!rPS6Y!OGdYcZ#aYmn7dF0`{uNLAE`(1cW9UL?BO`uz%E z9->BN*A!3^y`Es-w9J1Au-%8RzLuK)d?Eg|XKH%?&ZVNS=fF5jBn_m?iV$(_iUJ`L3T3lPh__6yo_h$dY?k(k8nKYBot={h` zAs|e)LdYLQ=nTtP*zRq?!_rz+j#SU>01~P1e7H=Hq2TAh1PKa_SLq8Cp@tZ*VnoIo z%E#c60b)SJI<0CgxM0)hOhZGLNc^U~Fzs-O$-w7A`@-!zP9BJ3i0dQ}SQ?+KQCeol zt`x{X=*3C@fn>eO+SVX3(wPs1)Qi1~m5w8Q|Bcs*g+Y__fwRw~IkY;$!hWX3rh$*! zZIPS#ETuyEq$7-2DUTq*NtvQ{ebRg@m8t3@$ZK6yvr0fbbg29rFO?C`ZE@i-9lay{ z+pSeG{bc#4ZpK3PZ3SvEzEh4p+S1!GuKIm;K?4NAW{&uHXsio3-(_>PAY4i2f<31Am7ZN_i& zr>iAlt=4UE%A(w7V{;jIO);Dq{MIQqR;xplS{}RQ6%zlG@e$hXKFPp=S_^X3$%a*8L z`a9BYj~}NxXQIk(*=eWFg*YxGAzd2Ia*lS6AS9(Jr>ypyB6eJ?y0Z)eTAeN{wJE+z zt`}jfRrS64Q4kf;o<8@V>kO%zTGG#nEy&_pgdYc!%VOJG#xgXKVew`)6ViH(!e~z) z(j~w=&IDMJx^`v3Byka;$FMNz0ZQTA3bs6?Ig4Gfi#mN>5=Q*sI26i_hd}S@bZFlC z`s<#Y`WmK8M08p``0|TdATuZZIOg0bpgo~!u><)--sw@QKRR9mjv6l{+LvUW-I9kY zs@<=(Qc_O<-SGmDWpSXeo^r<$t~fg1t1Kc%IY^qKfZ293f_y6$6mVKu7U?0F zkzxur##?Uf6$c*PWFYKr;6g9SE9+!(+P~L1XV*UcQM(+=?iW{YU1({zC7B;otGJ#|wKwP9rw;7h8|SV5v@Ct3k!Zs2#-L*iG& zO7ozP&61lX{Dh>Fvl8oK#gY0oh~?`Ed2!j_#O5MJ^?GT(dqN!j_kmLVrWDiuCNF5; z)gazzEjKlJ;h_`UIF}t{*#?~F-v@eWq3b_t0O;o*tbHeK{JC(HkAaGMdcvoE`!Z_7 zA1v077zqdh2C4$9N1wi^Cga-hkyf;zN9p`}c5esK8#L1~-3dtGxaukkKtg=m?0B%i z5M5|Tt#8^Gk=u3Gbd{dDMs{PQ2d;@<4UJrfv0u15C=t>e&J6NsN>3x51XS8%$d53Z zOT|4Sh~_dEHrHmce^U`d#|0)Go{&IQ4MkZQuewNQ!I{{la_cqeXNw`K$`^rLoyu$2u}HhM+}KEAsZ zk(6>97cgCft<|~%?~9WSn=nW|Env*Jdhe&~SEu!*(g4%b_M*T{y?fKv2Khj)5xQ+; zx_zgtE26_r$!<*2z|Y|s(!!au>*Z^OU^HhA*bQv7$@=6xB zXc7Z0mx+60+vJH(K5lN6O`UpxHl<54l_XN!nY##Rx2k79+b1a@SnP&p4DgMw)V@zU z+Te*_^C?Q?hp^qtGc=1L89A3tr|s36i!*ZAvt)_VcdlfDdV*Xfnv-il!gxV&eF&*6 zvFv$>qa5Le_Ml;2gS)G)JKHQQbF+IoN^?y>53h5b^;QG;D{E=c(j<#5SA@5|-|E3z zN)IBWFPmo<{_S})jnOSFc5vrF_+e*8Xer-&HOw&oi=q(IO#U=;-j@)gS#GUw@4aFM z7i1xQhbEN)seGDl14~*<8Bgu3&zKdg#y^CPj%iPcdTKESM6MMtU{knZe)Cn5cR2ow{UxZ$vV3$L*ct&;!hz z`ja)3*_9YOjJWXf&DZ+d2;W@fgDPI1vK*GL2Ss((!SOO(!XT>Ccuj#mYy$KlTKWP1cV{dnUGpA%OdFz^B|~b9uEGZ z8B_CeWpcfL&RU`g)OHLMm8RRM?_|{$hJ4UfLI^VTP7O9UY4lTEHrLTKe!<4Br+Jm? z<#F3s9W&cokUY5_%FTYk_|~TCs>RU^Ey(9d3k?}y!lh1#^Olp}`nJbG02fUovV1P34E{+> zTx%RpyQC_oKt1ppA4@zU?{o(BD6uWD&NN&;z?Fda z$-4!ftU0*Ejnk!OXTHLsln=fQ6_{))|DH`6eWPl_-GAb1&6#1omB;1F?_7`nh-W~7 z#z@w2Y$}?J>-wg`im0b4p1@`hJmk5YY^Jrkl3Bxc0vxEJGg_9I;1cKzgm4mxFQ&DzHsLf!ISizayuI(IaJB;A^8EU(Is%q6Xxk?8-BI`7Ljk=*KR^&Q zxH+m*4zHYqB<3+#j+1?yRhmxwPU~tu{*dtI6XQ{?O)ZQjYY*5)lRLDUd~y#X3epNZ zctb9Aq5lKtB8ew0*(8ld!88XZkeb#CZ zfyg#COooU-7ET^qF}xNNY;d<(w+3EO3Q}X5)7Q##w4;~i)^{<^YRf75js#n~UjLM= z2rZhw&2sWIsML%23rU@>BHsn+)&0S?R#4^e_6b67qrU(?>wygFh#wlz@i(xoe3 ztNT3(<8$32$W>|QcN|pmDlUm;UUYLW{AV*FN5Gv_!}0dUFtvD^cqBKERKtqBT3UB^ zEADsXx)&!otlTYkxx)a+m6mJilpvLR0kb}gxkVvJGm+TO1$TwTM(xueMf%#r z97d5T3w0EK69S|V2U)}Nyg?B+z7W&6h;ybS-F^e-QFwpl z8d`E~B{m}>i?&ML$0eHWJUyIo&6I3hgz*!(ShSy~8RB6#ZLGn^&c)N!5FGa`{KQIa zJ9C9b)^!VG46_!r#QE+K{Ps?d+lb#y-DtbIYt{|<_jr3kNtkY#T5e=GM~h4o_0bHB zr&f4(D6kFS10zEuWB=UJy0mZTgiZx_UQiot$$e`R=pK%Zp8O{U;Oyei=gBtTWLENV zHar)V`KMijn?Vqkc>H_!&fx^60WyovE?rK&A=ms_`0OD=Wa$XCK~hpCEOYv2_dix2 z1mq)E0?(;t3V9tMW2rvmczwM`o^CeV8H0sn-n!22lrld9T^4@AYZrUWAb6JQQ^x;U zaR?06O?Tg<)u@1BTRwo4j4%j~zL8aMN!uWCUZ`2HyY{%kSS!%d=qHq*J2fdutO>8 zzyN1V?v^}Tz-#O27Ein_G=AKeF*@Yrqi>9z>&K8Ofy6*EcICR{kYzIVjCr3$wVSDx zO74+;tSf1*R~(f965br0v!rA0yp=2hxbNC-12XHXCr?8>Z@zfUVA;FwYVPzkhu16B zr^|Imt|>If2V`;rF%(qdYwCP1ROH?{mE9kwWRzK23)^3+$&Kzx1nrvP2g}A6G7G)U z7vWmLvK{jJ3LmHHyUcrWhjIqYzmfB-!iUQ)|5Q*9??v?bV*T6s_KR_jAo(CbuksfDgc zD|e{<{0o<1E4s?aO!$VKuw+rDE1pI>b|F|m6H##)h=hPiH9^J`TpU68FSYBqDG6h1 z!`?B3A!v_cgeJz(ho;^r7oy=M$y0bs!w{a-`Dtb0j|Pn;)Xml~M&E+D!wCwgIxz+w zDpq^9>3%741i-fvq6=hr+#B8%!Ows%3zz}@9Zht5i7%73fs7fS_Gl=;65!AVe7j`? zV!urVoF9-Vat|0jYUj(?2%__yN36yC)h^Mul*^P?lxyo^=w3fqz3$)v;A~K5LFHkd z9X=wachx;y3bl{Y2^$GI*)5?HP`xjv&TzC@lz06K@Kw0Fe5(i-@O|^}iIY*84Dyx6 z4GAm9?_xgrbV}U|O})K%D|HSlY#?Tt|IbqU=9$@mB_)%v&FrM_5ZdEhLbd8xg>kgB zm&+qNxM8AacRdy4m6g4#7ZFC5+{F+A)1;m%s-(>JY^e*-%FMgDNV4DsUWFc`M; z6>z5qelc1U6cb*qTRZWQK77nn7k>(6VFqBbbR>wv&mqxot(}871WW+(4 zxNJn@$`Op(=ay|F_6T>jEb zx^ypUs+*H9FSP%;JzXcHyX28umhf@vs$gKkBDC1>=CiL>&&^iSn?cBRjdi=;zHW?Q zgJIu><1f#^joaBD_=x>2#52af?+TkS9h}}PAB}9QJ3*mPb@;wX>@LwG_nsmbhX`tU zM>W%W@^-7Hdfz`$^9&bVc3{*J^wBlBuTQ`QZTEC~mSFQUgCwuh$lK`8X}#xIVRY6W z+QSZvro*mdSm+&azhQdRk8=OCM}x-oppgs`utWM8S8N#oC;u>rjR4j`VmyfQ6SFvR zr(`@@B}avL)Ia{@%3iU%3WkCI2FjY1y`u@urA|m(q9s?o6lF=T40viq;R!x6bCb;Z zN>&LI$iyjV--l@d9m-EM-+CABkyPoy4}N$Yu1mRI7`04GP{LYNSC&t}$LTl8_iGY? zm(tFzb(>!!)rGBT75?S(DkYD}{mFJIyM9_UT2PZ5<{<93A}}=8#IXN}wE1Vvw-2hZ zVm@_g;l8-2()+UkfWh;MXZKw)qCbMKYmPJz=>b1uey{r8j3HqI$KO8hk||eI zQ(P!kC)9((f_9!yo2y5Xs9k9G;$&eUU2>Z)K;;g29U3_?{e5Bi`z^|Yu2u5_0#oFn zjv)<8GVR#5%Qa~l6#zHZR*8hzL~y{t`646ofmYvHTYj@ryRIa=;CwKaT^X5oQ)wRk z^2VD?p9I*Eb(XD6(7nMC6|m@j+txKUK^u>GjXf4Bz#9yBMOjQS|FpZCaWN^et@F5h zT>Ht}M}}&M=swsA+;m4)-J3%U>DzxfS_ALV$`Gs2;Mg(Qd>zn=CHsr^xOnrK|~Q@u8H z@we8`TH~<5N{3ML$P&%9qNkH$9<{~b&F=g8(v>?5`k(sb-W6Jl(mNyU*a}hxXZ!57 zGBnYiONVBx@XMNpL`nJY;m(v%7fn@RfZz)) zTWM)+^f;#j0O%P$7#O~_9()93Nag~t0RQ{WCprTHCNBUDWcyMO-J1^m(CCmX^Wv@^ z6I~v~opt{E))SD9mrqw;yv!gk|I+CWIC~1bo5jQ^3PY%+6yWgd|6yMGniiow?FQ zXh5PtGuR+uyoYL*9=qpd3UFX$bN|6RU(8}QP1zX1+-bHAr#1g`Lfr^>Kim4H4snbRy8 ze4aDUtC3o`ZjwJ&cjY}VANS*Vb*E2um|%c>FIOQ}%qT0{!b?5zdnXX;0F^{l->RA0 z31+m*E1M^eNHnb68#WuJ>AAt3AzEJ+-!n2Xf(^dxp*5Me_(Sx&RM`6?sYRrrj@5KBv%l$&Edl!47-{BLXJEdGroJ6h(el*`!qZJuo<=I`1wrY*UY_NX|jkxt^w8LC%=%c|sLI#^6zmd3E@-bP;%M<2V z(0RuNqD!7I?~Hs^&>5Q%V~(PqLA~4}%l>h()T|k0aa1{nN(`F(SPgMQdHr}pZ6{}J z;JVFWj;+4@Czuvp;}#khxRuN^LRPMi)cr>qyQ+%XesZD?n!++09q^WLI!YrcomAZY z#kyNCA~W<;Ywhs0$du*r)XgE}XB7T+EF`6Bbf(84ysW8DoIw{00oU>MdV0ff0n`ns z6Cw!Q{Z{59+oQ5DKv9@lJo z0m;eDXE&E<1Dp&z%n&LImwPq4*&^~dhuu#$0Ulyjt$!Tpe&Rj$eC~+#-~IDd-)FF@ z-`ys$U*88vmb~NLhN^%hL;x#FgrqSvGbXwnS$H4jrP>gq8AO`VU$?rb5K%gY7P^VM2zg)`z_Ro_DzzXw@B%h%3HVf6XVm^kJJ;o zo42p;0V|hYX~Fk6_Uwl{ZCU+4gB&=&v{St5B~l=;@#}>x_Z>k+9s%)Scb8v)5DMy) z3<^r+Kh|XaE`ZWdR{t!6F5fCL%PynIGc(Li&$Xzr zE_3X1&ofWEH2TrxTC?ZhD}$~>frw;efUo~$A@lmaP$B%!0>+eLdWf@eAncDa!m zA6%tWS`gIa5>wq+&=(Ye<@U3)t>5xrJ!zvtW9TCA{g!>8Ta@{P)D*;zI;rkaOs3PW zMdhEmhJ#%>nVR5oR-RHy4SB%*r{&5!Biw|6=q*;1n7wq=tR_dwN_bOp99U)VM=Tn8 zewwdB8F(Ks=VU;OCz-{U4N4Sz`9fUL7jsMp26>0;rJ6o7zgsI$asFW^+Y!M|2O0|M z4d#Di2k$?y<7lO*G=Ll`irf4Aar=Yr8Rog-H02=Ia-ZtOc(Y}V`YI0wT`mr{Mlh<`Ez(V%0{~DD7Qn04Q_%H#O+Fcxg8*4 zFUy==JSIAUqWBK~&jB4-LdEj`hClsZ=?4vi3-zz6<-cp^pQ`15$N!;*sUrX19shgI z|0BJBA^orUABFfo-TXT_{|Mw?;3E3Za`~TL{{062A@W~XBL4q-akNsAhlBrT9qix6 M@HahLN&d0^ADmz}Bme*a literal 11484 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 diff --git a/nokiav2/docs/sampleVnfs/simple/simple.v2.csar b/nokiav2/docs/sampleVnfs/simple/simple.v2.csar new file mode 100644 index 0000000000000000000000000000000000000000..a74662598b82fadfd701edf825fb3a47e7a57ba8 GIT binary patch literal 7787 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", - "tenant": "", - "password": "", - "region": "RegionOne" - }, - "interfaceInfo": { - "endpoint": "https://:5000/v2.0/", - "trustedCertificates": [], - "skipCertificateVerification": true, - "skipCertificateHostnameCheck": true - }, - "vimInfoType": "OPENSTACK_V2_INFO", - "id": "vim_id" - } - ], - "instantiationLevelId": "default" -} diff --git a/nokiav2/docs/sampleVnfs/simpleDual/cbam.package.zip b/nokiav2/docs/sampleVnfs/simpleDual/cbam.package.zip new file mode 100644 index 0000000000000000000000000000000000000000..4884162474218b366f1099cc91ca7c7eebf4c6d0 GIT binary patch literal 7488 zcma)>1z1#D*MNrxNkK+J8l;Ctq*Jx^1PyYJC2HXRvDXNNzFw2{{8krio z8nLLWp#cyi(?HtS;^u)4fI~cn0{{^3z;023fv$g1zk}jl(khg02>0CJeFsco^%@+l%B$rWo8&29H~-ao#a?{#)4po0@>D`K{E18((+?&h1Dwi z10%z7>&`=r^o5gd(((g?159v*jI}Cs!-LGd(ob0w6b7Z``lY8B2V`Z(0uN5&-ZF834ff&+RTQmIgLvo*+jv zyYF-UFC@E!I;`SN+#r|q)pg5YLfdk6;m|6~A!AA9 zCVld10J5TLX*y?XK&ILP;a3y{axn6TF8QQu8U;<0+&CcXWMt{eeAE`7m~R>Oik>;`fI*vlBIB}3y)&1=ZFs_$&dLPb=Q5X9VaC?*>^b~ z&Ct?%holC;1LdDpE_x)OCf|Ep8m*pos=O?m)w;9}-=b0W^49XbXB*uwXGG<`*m|V1 z9d|A4pw0NtK8=&5fbi#bG-K$P`qo}D8&&|Tv^r$)ajIk$&<;fMbz?Xd7)<6~_p5Si zGLuB;<64lDyE4XdaYY6RRK)d8r(N_Ck&aGu0l<~&ov2=vk9$lEI2{BVYI`U?P$qLo zov&Z)!g~yTZlw9>)5N~ip$Do%*-qDtPI|V%OIRnNzs%e<s z0vsXncfvOyjM*NyULASKDqr=^(!Xs0zSuW;k&n?(aZsZO$zyuEi`(DJ}#vBOBV zQ=>vP+^`%`E-RXD;A8D=NTBygk<#bR|DLJU!dZB~}yGWGLE9mHbeyCo_dRmO(u8G+tRG9YaEJC5(Crqhg zw~722thRwu&(g!*@IlTHGpg$jU&HY-nlsaJtW{_O#-f+zJe4&D>d2nq8Pn}C zIeRjzi+i*3!?g{$TdfA=O$ZKY?a`(!J&5jVg9T_>QzEa1@68s{S$ZQ-#d*c@j?59e z9W_%gJ}w3=9YV=-YkJpM*r7=SCFnIdQbf;s3}2kEI}Zo!2=%ZaNAeosa6yrvjsTXi%3H@Ax4tC%J#4DdU+@Qr9b{kY~3xkk<&MxSXP zXDl9mn?vx@e(%$%ii|IEMC+R;d6hclGzX%K-j)c6gCoejjoTF>;FxGnM{mv(C;(3Gk639Bch|JZ4G)|KLOihvRgZRS}r5>Fv+Z>WU-$i)G^si7HU zkf+G5*Me}Xe{obakF03^Dc%ZPmurq7@<^;5uFl|BMe$C~53HS3oU~09>X`fQ`g}}nw3_bur z2Mcd5R(6iIW(F=MMz%)Awq_uRy}2pq?<-da*eS@<$j$X@qk%0{+#rz89pA`3Xm8&^`g}P~gHx zE`9mIL^6*3?4bJhDg;f&vu&Y>TG;GON)J0^2BJEy&k?u|z`X<#PN(8bBEuYZ8$2ZhpiKuR=m*dZw97~VbZ(|1Xc*6H(@E&LHF z+A>lZ(QoZ@icBjUP3x2`ypCNbI9oT3sVbW|=)64X<4$ab-!B57h%lzJlkjloTS+qm za{x3bIf(pJ92ZiYbNzEJE0l2pU@@MW%5+t1H=4@!wJDH@WzdHWhqA94LxKsqRRL(P z4`xtH>T4DDo=2Jmd=pm#BDtrEa{|$N(L^wL49_X6 zHR$ruI3>mTdq@CiLAC)u^P3?!b7Qq>ae zyn4VGt>53D4aU7tTJ_JkXu{qPYu6(1a;B|78Dgw&3;ZCD?CgwFF)aV;s}H_TZ@k6) z6#f0T)-80*JBaNym@BhNEW&PL4T0wFDJRXE76RId1C z$4@WRa?v`vtz)A}bM-+vx~bF8jGOLDe4|pMtj6VlVic{;o*uxBLMi;EOgZ7zBV{zL z1NI^Qb~DC{mt#?<`oXq4dTJ3-OG&dD!;V%G3QmQqcGQ~#LjKm4%waveOo+>m%QGvB zzL6TGN)DnsFJ+uLpu})+%R%^ZV|g6V2-vH@C5FM1JCI%~g5tcFB72@L)P%l$r^k{pw2jU!#M;Pd7DL{h7ZtlU5kG7`bMWzq=|xO- zHiwKNt*Nt&;wp7@5PCTR_%cAa?&gJkl! zsyH4M^|L(5wFe~=^0msPHJrqLhqpQLH8%%mh2`&WQr&&8DyGRmQ#02pno(cSO^4@5 zE|CwfYkmcBSC=TQ!B?%}^GG^OBk>>TBl1SUVJrw@8=2ZZOUbQYrbI%DwYPlDS5Kxp z3SXMyW_K*Q9jWUzty|ciKJ@I{#5?D+%kGcu?k|YMY zAD-{3aLxMOs_^l>I+na>hTxVC1$1iQD#Y14JA`3LcGT4&lE4c~cc@r$qS~)pQpm>O zHt(8FE1H?dA71r|BTjxp))={16Ig;2M#C>`&u zlqzGckTyj1p!Y0@G&yYGEv>rQBTneBT3J@*6P;=mH zEOOTNo%rN6nJ`M~d@y19en?oQ+v8Kkf}rDE8?fC&klUaZcT&Lgn}C;uymK$T+dk_a zZ+-qpQUyD{Z%EgE{znzWu1+ThE8YG+aAAJl&dSBr*~pgJ-ND($*ulZZSCRrJ0fK&oHqL176E7&`)3ihdEZ9g)fZuQc!a! zj_ao3odtGNRHZu$XsNt>K{P7wL-Fc*pJ3BV8st&GQ-J-4HpTmN@!)JXhg!N9SaVwj zw7hNOAz>axq{vMc?McVA@r0Y+eo|M2~;f2Fha3c@7VRZ z2`yFry?MmNw@yB-^0=+pWr}YJ4?QQTH;8;m3H1k6mXy3rhMA2+DM2sEzHu)&j03y} zMEFDx)x4JqP{|V*gj@;ERn8oy`r2!uE38o5l=*k)gxQp(gX<5A1PQ2WU&}AX z^V1@!0vY7;`zQ(C!UF*5r~m-bUw8k=WI!+w$i%_U&cXhtK`OI?wXfwD<_mRsmswVv z=0irvCO)cDtip~Bwp|{FRo+ozpJh-pGEHrc3_DufN~=4~z=v!na(@KPi{q1KJ;Xe^~ltq*_6UJ{Fz-1R}V?_xBPu&+IUPBJt?Y#TA zv*ttl$G4YUvJ=ELt5)ZD({-j8+;;Jg*2M8X2(@V6VksBy5skF6h36gRT_l;n%jfeMJ4OK;h)}H!$#|(?p%7#vgDw@#9@6-| zHLQ@el`voZDF`BBWT*8yZ$QF~mqMa1Vc^5z`bQ}`dGG;Lo+~Y76P0R&r$ihjYF6~q zvXWn+1g!SS?fYMC*dJbfHH($Q-9CylNEap8k@CW+9TMFU+j;*qLHmmtRZ$i`wj?tF z?>sOA3v1j!4!{M}W?o@WVRKM*GXf zR)vbm%}%%7g_c(vk1c2t_belmx?fL-yQabAPSl{6KkEu>f@@thdrFq}`BDR%#pxdD{HmJLdn;)$%Xy#*&j^$|#PW_F#i_3;i zPU=kpQ6S8B3nKym6u+;OzcYP1BdZ$=M#4l@`&xcoFscLgfvh-9hxkQm${=bPgS&zm z(PBCU30?)11OCDFaC4PO)pXmf)5%a2c{OdP<&~L~nVI*48S1&=W1<1P8u<5F%lv?- zWzi3?l^iMj%SRv5VgP%?YaDEYyKm7@)hDMLMCWU)4Orn=+I#q~Kg$A;rypjuASmUs z1-KWPmM0vcs^5{R40K?gy_Fvn7n~)HkfzquD{|9otyNjh*M97F=Z_FHnZH|e6>bL+o^oM?AjuXdyApp3#idx-BVW*^ z9uH-gO=Rd8*LA{W$4d>*p;;5}c5wsKeta`_n~M;SU1WOJa+541yID2T$qG?jp1S$o zSGt3MrJsJV3FZgaQWC%!Fh3Xu3;ciZgDz&y5HshWe$bT-tbHxNyw>;X^02^+(Y&F7 zBVgypVY&brt7$90SBunJF3W~mD9>kYCmm;civDFU+jO8L$sDusg!Lm13R=NwZ;zyB zV7p87(}G~h#Y{I9M&zEzIg=;Y(FlvI@N= z32>R~&bTMMT!x#f!!;G(JQ5j(VlCw)(lEWh4@?Aa@BG2^OlxGyU{pnmd>}SMbw@| zE%Pc5P!1NXs^EK+_j=keGhiPm6@s>Av9a{w^qc)9kbBBb$9Sp9x5_;E58P*|i~R*$ z({0rI3o%*6A~3-rvRe6L~8IJhv@raAD<}jY;yzjuU-;+>WOEq&xR-~t5eOL zJ~|^aQ+Vz%HQw>rt^F0&hfaYErbxgg|L6QnXRDKlE2mzq(vv7dL{ICq zIG?#WYe%Vi5b_ZxeeLT~ku#5ppsA%TS@(bnx2P_h=23AEwA=fy(&r5IDlOck4CLR6 zh1OQaFyF29AguJ`m#M!@(y;WlQXI)|l}w7S*{ohLc_S%%QI#ri(ivZQduoqMpzVaZ zF-*XS_^ol}hl5pqQ(961j)uq{?=dv3NDi&gxwS_{N!#FgjFNBgO0sb9qzHfB;l~CL z{FUe80NO;ZPk(EBApK~2{9^P!p#QDu@dFC;n*cw5>EEF@TOj|2|Fh0W|Iir)Hp*W; z3K;5-{fX=8|J3xK9g3TpKKc*pAN`8|jrz|Gx|`G&uujN#1^=dAZ`b|*)Ze$8Zc=Gr zsoVd)`2-v74;xQ64deHs=f`N*+l_4^m{@>6mOwD>AIqPgPyF`+=;kc6{>Z&i4#5Wa zLn(Aq@!zxIn~Im<0RGC2VWdCi#XnX3Ju|+k>ds%J|CT4i_&yUx&FF=3x9kgg7NxB$yQg02r{37%Uaq_>TNP D^<^ng literal 0 HcmV?d00001 diff --git a/nokiav2/docs/sampleVnfs/simpleDual/etsi_config.json b/nokiav2/docs/sampleVnfs/simpleDual/etsi_config.json new file mode 100644 index 00000000..a0cff014 --- /dev/null +++ b/nokiav2/docs/sampleVnfs/simpleDual/etsi_config.json @@ -0,0 +1,39 @@ +{ + "extensions": [ + { + "name": "myNameKey", + "value": "myName" + } + ], + "computeResourceFlavours": [ + { + "vnfdVirtualComputeDescId": "server_compute", + "resourceId": "m1.small" + } + ], + "extVirtualLinks": [ + { + "extCps": [ + { + "cpdId": "universal_ecp" + } + ], + "resourceId": "pub_net" + } + ], + "zones": [ + { + "resourceId": "compute-a", + "id": "zoneInfoId" + } + ], + "flavourId": "scalable", + "vimType": "OPENSTACK_V3_INFO", + "instantiationLevel": "default", + "softwareImages": [ + { + "resourceId": "ubuntu.16.04", + "vnfdSoftwareImageId": "server_image" + } + ] +} \ No newline at end of file diff --git a/nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v1.csar b/nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v1.csar new file mode 100644 index 0000000000000000000000000000000000000000..6f2aeec6aa960141f29dc3e2dbdd1ff091ca921c GIT binary patch literal 8334 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 Bx*q@l literal 0 HcmV?d00001 diff --git a/nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v2.csar b/nokiav2/docs/sampleVnfs/simpleDual/simple.dual.v2.csar new file mode 100644 index 0000000000000000000000000000000000000000..89c448b7c002a20a5dd1653acbcd3a9eda01461a GIT binary patch literal 8516 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 diff --git a/nokiav2/docs/sampleVnfs/simple_cmcc/simple.v1.csar b/nokiav2/docs/sampleVnfs/simple_cmcc/simple.v1.csar index bdea8ad84a3573578c490ec974b4447016fada32..eb52ccb3581cfbed14b470e6d251ca0e926138a1 100644 GIT binary patch literal 7668 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 literal 11484 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 diff --git a/nokiav2/docs/sampleVnfs/simple_cmcc/simple.v2.csar b/nokiav2/docs/sampleVnfs/simple_cmcc/simple.v2.csar index dbb6cdadb8ce6f27340e1d5676598aca851127ac..e142609d8bdde9e53ba70191c509615b80476dba 100644 GIT binary patch delta 837 zcmca>^V&u_z?+#xgn@&DgJEaXejf%Tpgq|@R&SzbAd9Kg7VVAmUP!32b8w!LJ7X=$ z!0<|rfdPlk$+IPEwAeW=mA{LN0-BZ%#5hy}Wh59TUzC-qZw)!wciBN;?{n>6>>G}8 zs60_to?vk%#^_N~!0NZ__?EuxjpKP{aNn=8cdmu;#6=NbQy%9E!LD_XwaVqI#(Xz0@P>VQPl{NOk9C7MMhnxE6M z>18|?^n78GA?udqnkw~*W{kB`UUq+(zCC^UqqjHHvct~L=e3GXtJ>f9{qfs(IUjcQ z?`;jub!_2W{?4|grTEpZ4cs!RN9FDscTIn6q5Co;FuOvtd-uQH)3?0I>I(~xU=k7X`8ViG*5ZU`5QXlnr=j;vV|S3>zON8pBc&j=J}z3 zs4aT^t9QOCW;0jqN;<^+=bXfWhPiVE6fd~s%XmL~bWd^<|DK{Pg>M4iztXsEcH^eY z*Ng|+Tf?5+yzyKinN4^5%_{;sg10Q2(UPmte|N3tqxW_%FS}&5h?{2Z(dbl6UHEdZ zgj?+NyRQr8CLP#uA$KFM*ZWuYx6U1}|72VJV~_U5A2l=mjX#*4IW;@|j97KDkf7B6 zXQuD}YL{PGwD_ptq?pGg@14H9ZJ+u-t;2hwOaJ_ZBAaTTwPl6+aLPVRJN)K#YN5@+Dc($!RhRmDo9Q^_v{$0u#m=aI#@! z5@A3jPEg{TEGg^D4o$6-b7iHOrbtd+AStaK;Ek#l*=`A-SqNY{`GTyp4!U||dx0)O d0$wt}Bq}D6n-<{B$_5f=0YWXHx3pzJJOJ71GXDSo delta 824 zcmaEDbJs>9z?+#xgn@yBgW+1`J|7X=s4idfFmNzzuG!~vA~5meSw;qi%Pb5G5)3j7zKNN6!Kp=MnaQaksksF? zi6yCem5I4Ip&^_M%!(`dqCvQ{f}4Sn08wl+Et^I>pbkQPKE?Ma< z4*VyNI_kSR20XeT*%G~TMJWHzZ++JSw#}9>sMk4D{rO%_QPD=>m?o!g&bhsN+67)N zOw4Rjl3L&R`+>-%_X<7FOxN?bKiPBnoyiB5BLbYWn3FSV{R(T6c!FH+S+4$I!Y<+6 z+}?In>BAqrXEQB34E=mwtK_(K|NH)Xef8ay53-gVJGE+` z(xIl{uX0ZHhfKGclr=8Sxv{s}>0`~D-Kw&>QM~6%OO5N+tL7GK6&k$?bc**9-LdWO3lV;!K?cbJ!h`2H7?QmaH{E>)+y5-r(4(0D6_l9y*2LH*N*t6 z9?30t(k?qa@Vn@dB(!a@OX{w*X}4qJy#*+e@qrjC%hFle{$78wIn8A`M~-fMxGlX7JF|?%GGajoC}QRGm{f#_6RXDi7=q1y~*~nzRIw~2v2E14Zt*s1X?DqmsQY^V+N%d zY-vvdtQMH27#bQyr6vbTNvVg1utE|YT7nDkMsdYt1vzOZ6B(cuF^Sx?0B=?{kWnl^ M=ma#5RTjhp07FMYhyVZp diff --git a/nokiav2/docs/samplevnf.rst b/nokiav2/docs/samplevnf.rst index dd6efdbe..3228786d 100644 --- a/nokiav2/docs/samplevnf.rst +++ b/nokiav2/docs/samplevnf.rst @@ -4,7 +4,13 @@ Sample VNFs Simple ------ -- CSAR: :download:`csar ` +- CSAR R1: :download:`csar ` + +- CSAR R2: :download:`csar ` + +- Original CBAM package: :download:`csar ` + +- ETSI configuration: :download:`csar ` - NS creation request on VF-C API :download:`create.json ` (several fields must be changed to fit actual environment) @@ -23,7 +29,11 @@ Simple CMCC The Simple VNF altered to suite the CMCC lab environment (no support for floating IPs) -- CSAR: :download:`csar ` +- CSAR R1: :download:`csar ` + +- CSAR R2: :download:`csar ` + +- Original CBAM package: :download:`csar ` - ETSI configuration: :download:`csar ` @@ -43,18 +53,22 @@ The Simple VNF altered to suite the CMCC lab environment (no support for floatin Simple Dual ----------- -- CSAR: :download:`csar ` +- CSAR R1: :download:`csar ` -- NS creation request on VF-C API :download:`create.json ` (several fields must be changed to fit actual environment) +- CSAR R2: :download:`csar ` -- NS instantiation request on VF-C API :download:`instantiate.json ` (several fields must be changed to fit actual environment) +- Original CBAM package: :download:`csar ` -- NS heal request on VF-C API: :download:`heal.json ` (several fields must be changed to fit actual environment) +- ETSI configuration: :download:`csar ` + +- NS creation request on VF-C API :download:`create.json ` (several fields must be changed to fit actual environment) + +- NS instantiation request on VF-C API :download:`instantiate.json ` (several fields must be changed to fit actual environment) -- VNF scale request on VF-C API: :download:`scale.json ` (several fields must be changed to fit actual environment) +- NS instantiation request on VF-C API when ETSI config is not supplied: download:`instantiate.json ` (several fields must be changed to fit actual environment) +- E2E scaling data: :download:`instantiate.json ` (several fields must be changed to fit actual environment) -VOLTE IMS ---------- +- NS heal request on VF-C API: :download:`heal.json ` (several fields must be changed to fit actual environment) -- TODO \ No newline at end of file +- VNF scale request on VF-C API: :download:`scale.json ` (several fields must be changed to fit actual environment) \ No newline at end of file diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapAbstractVnfdBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapAbstractVnfdBuilder.java index f7f247a0..5e9be7f6 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapAbstractVnfdBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapAbstractVnfdBuilder.java @@ -21,6 +21,7 @@ import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; +import java.util.HashMap; import java.util.Map; import java.util.NoSuchElementException; import java.util.Set; @@ -33,9 +34,9 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElem import static org.slf4j.LoggerFactory.getLogger; /** - * Transforms a CBAM package into an ONAP package + * Generic non ONAP version dependent package conversion */ -public class OnapAbstractVnfdBuilder { +abstract class OnapAbstractVnfdBuilder { public static final String DESCRIPTION = "description"; public static final String PROPERTIES = "properties"; public static final String REQUIREMENTS = "requirements"; @@ -63,7 +64,7 @@ public class OnapAbstractVnfdBuilder { return null; } - private JsonElement get(String name, Set> nodes) { + protected JsonElement get(String name, Set> nodes) { for (Map.Entry node : nodes) { if (name.equals(node.getKey())) { return node.getValue(); @@ -71,4 +72,80 @@ public class OnapAbstractVnfdBuilder { } throw new NoSuchElementException("The VNFD does not have a node called " + name + " but required by an other node"); } + + protected String buildEcp(String name, JsonElement ecp, Set> nodes) { + if (ecp.getAsJsonObject().has(REQUIREMENTS)) { + String icpName = getRequirement(ecp.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "internal_connection_point"); + if (icpName != null) { + return buildEcpInternal(name, icpName, nodes); + } else { + logger.warn("The {} ecp does not have an internal connection point", name); + } + } else { + logger.warn("The {} ecp does not have an requirements section", name); + } + return ""; + } + + private String buildEcpInternal(String ecpName, String icpName, Set> nodes) { + JsonObject icpNode = get(icpName, nodes).getAsJsonObject(); + if (icpNode.has(REQUIREMENTS)) { + String vdu = getRequirement(icpNode.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "virtual_binding"); + //internal connection point is bound to VDU + if (vdu != null) { + return buildVduCpd(ecpName, vdu, child(icpNode, PROPERTIES)); + } else { + logger.warn("The {} internal connection point of the {} ecp does not have a VDU", icpName, ecpName); + } + } else { + logger.warn("The {} internal connection point of the {} ecp does not have a requirements section", icpName, ecpName); + } + return ""; + } + + /** + * @param cbamVnfd the CBAM VNFD + * @return the converted ONAP VNFD + */ + public String toOnapVnfd(String cbamVnfd) { + JsonObject root = new Gson().toJsonTree(new Yaml().load(cbamVnfd)).getAsJsonObject(); + JsonObject topologyTemplate = child(root, "topology_template"); + JsonObject substitution_mappings = child(topologyTemplate, "substitution_mappings"); + Map virtualLinks = new HashMap<>(); + if (topologyTemplate.has("node_templates")) { + Set> nodeTemplates = child(topologyTemplate, "node_templates").entrySet(); + StringBuilder body = new StringBuilder(); + for (Map.Entry node : nodeTemplates) { + String type = childElement(node.getValue().getAsJsonObject(), "type").getAsString(); + if ("tosca.nodes.nfv.VDU".equals(type)) { + body.append(buildVdu(node.getKey(), substitution_mappings, node.getValue().getAsJsonObject(), nodeTemplates)); + } else if ("tosca.nodes.nfv.VirtualStorage".equals(type)) { + body.append(buildVolume(node.getKey(), node.getValue().getAsJsonObject())); + } else if ("tosca.nodes.nfv.VL".equals(type)) { + virtualLinks.put(node.getKey(), node.getValue()); + body.append(buildVl(node.getValue().getAsJsonObject().get(PROPERTIES).getAsJsonObject(), node.getKey())); + } else if ("tosca.nodes.nfv.ICP".equals(type)) { + body.append(buildIcp(node.getKey(), node.getValue().getAsJsonObject())); + } else if ("tosca.nodes.nfv.ECP".equals(type)) { + body.append(buildEcp(node.getKey(), node.getValue(), nodeTemplates)); + } else { + logger.warn("The {} type is not converted", type); + } + } + return buildHeader(topologyTemplate, virtualLinks) + body.toString(); + } + return buildHeader(topologyTemplate, virtualLinks); + } + + abstract protected String buildHeader(JsonObject toplogyTemplate, Map virtualLinks); + + abstract protected String buildVduCpd(String name, String vdu, JsonObject properties); + + abstract protected String buildVdu(String name, JsonObject vnf, JsonObject vdu, Set> nodes); + + abstract protected String buildIcp(String name, JsonObject icp); + + abstract protected String buildVolume(String nodeName, JsonObject volume); + + abstract protected String buildVl(JsonObject vlProperties, String name); } diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfdBuilder.java similarity index 55% rename from nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java rename to nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfdBuilder.java index b5dd9616..4e0fbb0b 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfdBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfdBuilder.java @@ -16,90 +16,33 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer; -import com.google.common.annotations.VisibleForTesting; -import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import java.util.Map; -import java.util.NoSuchElementException; import java.util.Set; -import java.util.regex.Pattern; import org.slf4j.Logger; -import org.yaml.snakeyaml.Yaml; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElement; +import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ETSI_CONFIG; import static org.slf4j.LoggerFactory.getLogger; /** * Transforms a CBAM package into an ONAP package */ -public class OnapVnfdBuilder { - public static final String DESCRIPTION = "description"; - public static final String PROPERTIES = "properties"; - public static final String REQUIREMENTS = "requirements"; - private static Logger logger = getLogger(OnapVnfdBuilder.class); - - @VisibleForTesting - static String indent(String content, int prefixSize) { - StringBuilder sb = new StringBuilder(); - for (int i = 0; i < prefixSize; i++) { - sb.append(" "); - } - Pattern pattern = Pattern.compile("^(.*)$", Pattern.MULTILINE); - return pattern.matcher(content).replaceAll(sb.toString() + "$1"); - } +public class OnapR1VnfdBuilder extends OnapAbstractVnfdBuilder { + private static Logger logger = getLogger(OnapR1VnfdBuilder.class); private static String trimUnit(String data) { - //FIXME the unit should not be trimmed VF-C bug + //The R1 templates in Amsterdam release can not handle the scalar-unit types in Tosca + //templates, so that the MB, GB, ... units need to be removed even though the created + //Tosca template will be invalid return data.trim().replaceAll("[^0-9]", ""); } - public static String getRequirement(JsonArray requirements, String key) { - for (int i = 0; i < requirements.size(); i++) { - JsonElement requirement = requirements.get(i); - Map.Entry next = requirement.getAsJsonObject().entrySet().iterator().next(); - String s = next.getKey(); - if (key.equals(s)) { - return next.getValue().getAsString(); - } - } - return null; - } - - /** - * @param cbamVnfd the CBAM VNFD - * @return the converted ONAP VNFD - */ - public String toOnapVnfd(String cbamVnfd) { - JsonObject root = new Gson().toJsonTree(new Yaml().load(cbamVnfd)).getAsJsonObject(); - JsonObject topologyTemplate = child(root, "topology_template"); - if (topologyTemplate.has("node_templates")) { - Set> nodeTemplates = child(topologyTemplate, "node_templates").entrySet(); - StringBuilder body = new StringBuilder(); - for (Map.Entry node : nodeTemplates) { - String type = childElement(node.getValue().getAsJsonObject(), "type").getAsString(); - if ("tosca.nodes.nfv.VDU".equals(type)) { - body.append(buildVdu(node.getKey(), node.getValue().getAsJsonObject(), nodeTemplates)); - } else if ("tosca.nodes.nfv.VirtualStorage".equals(type)) { - body.append(buildVolume(node.getKey(), node.getValue().getAsJsonObject())); - } else if ("tosca.nodes.nfv.VL".equals(type)) { - body.append(buildVl(node.getKey())); - } else if ("tosca.nodes.nfv.ICP".equals(type)) { - body.append(buildIcp(node.getKey(), node.getValue().getAsJsonObject())); - } else if ("tosca.nodes.nfv.ECP".equals(type)) { - body.append(buildEcp(node.getKey(), node.getValue(), nodeTemplates)); - } else { - logger.warn("The {} type is not converted", type); - } - } - return buildHeader(topologyTemplate) + body.toString(); - } - return buildHeader(topologyTemplate); - } - - private String buildHeader(JsonObject toplogyTemplate) { + @Override + protected String buildHeader(JsonObject toplogyTemplate, Map virtualLinks) { JsonObject properties = child(child(toplogyTemplate, "substitution_mappings"), PROPERTIES); String descriptorVersion = properties.get("descriptor_version").getAsString(); return "tosca_definitions_version: tosca_simple_yaml_1_0\n" + @@ -115,22 +58,14 @@ public class OnapVnfdBuilder { " vnfdVersion: " + descriptorVersion + "\n\n" + "topology_template:\n" + " inputs:\n" + - " etsi_config:\n" + + " " + ETSI_CONFIG + ":\n" + " type: string\n" + " description: The ETSI configuration\n" + " node_templates:\n"; } - private JsonElement get(String name, Set> nodes) { - for (Map.Entry node : nodes) { - if (name.equals(node.getKey())) { - return node.getValue(); - } - } - throw new NoSuchElementException("The VNFD does not have a node called " + name + " but required by an other node"); - } - - private String buildVdu(String name, JsonObject vdu, Set> nodes) { + @Override + protected String buildVdu(String name, JsonObject vnf, JsonObject vdu, Set> nodes) { String memorySize = ""; String cpuCount = ""; StringBuilder body = new StringBuilder(); @@ -167,37 +102,7 @@ public class OnapVnfdBuilder { return header + body.toString(); } - private String buildEcp(String name, JsonElement ecp, Set> nodes) { - if (ecp.getAsJsonObject().has(REQUIREMENTS)) { - String icpName = getRequirement(ecp.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "internal_connection_point"); - if (icpName != null) { - return buildEcpInternal(name, icpName, nodes); - } else { - logger.warn("The {} ecp does not have an internal connection point", name); - } - } else { - logger.warn("The {} ecp does not have an requirements section", name); - } - return ""; - } - - private String buildEcpInternal(String ecpName, String icpName, Set> nodes) { - JsonObject icpNode = get(icpName, nodes).getAsJsonObject(); - if (icpNode.has(REQUIREMENTS)) { - String vdu = getRequirement(icpNode.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "virtual_binding"); - //internal connection point is bound to VDU - if (vdu != null) { - return buildVduCpd(ecpName, vdu, child(icpNode, PROPERTIES)); - } else { - logger.warn("The {} internal connection point of the {} ecp does not have a VDU", icpName, ecpName); - } - } else { - logger.warn("The {} internal connection point of the {} ecp does not have a requirements section", icpName, ecpName); - } - return ""; - } - - private String buildIcp(String name, JsonObject icp) { + protected String buildIcp(String name, JsonObject icp) { if (icp.has(REQUIREMENTS)) { JsonArray requirements = icp.get(REQUIREMENTS).getAsJsonArray(); String vdu = getRequirement(requirements, "virtual_binding"); @@ -224,7 +129,7 @@ public class OnapVnfdBuilder { return ""; } - private String buildVduCpd(String name, String vdu, JsonObject properties) { + protected String buildVduCpd(String name, String vdu, JsonObject properties) { return indent(name + ":\n" + " type: tosca.nodes.nfv.VduCpd\n" + " " + PROPERTIES + ":\n" + @@ -236,7 +141,7 @@ public class OnapVnfdBuilder { " - virtual_binding: " + vdu + "\n", 2); } - private String buildVolume(String nodeName, JsonObject volume) { + protected String buildVolume(String nodeName, JsonObject volume) { return indent(nodeName + ":\n" + " type: tosca.nodes.nfv.VDU.VirtualStorage\n" + " properties:\n" + @@ -245,7 +150,8 @@ public class OnapVnfdBuilder { " size_of_storage: " + trimUnit(childElement(child(volume, PROPERTIES), "size_of_storage").getAsString()) + "\n", 2); } - private String buildVl(String name) { + @Override + protected String buildVl(JsonObject vlProperties, String name) { return indent(name + ":\n" + " type: tosca.nodes.nfv.VnfVirtualLinkDesc\n" + " properties:\n" + diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR2VnfdBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR2VnfdBuilder.java index 099f641c..e242284c 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR2VnfdBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR2VnfdBuilder.java @@ -16,97 +16,39 @@ package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer; -import com.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.util.HashMap; import java.util.Map; -import java.util.NoSuchElementException; import java.util.Set; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.core.SelfRegistrationManager; import org.slf4j.Logger; -import org.yaml.snakeyaml.Yaml; -import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapVnfdBuilder.getRequirement; -import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapVnfdBuilder.indent; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.child; import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.CbamUtils.childElement; +import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.LifecycleManager.ETSI_CONFIG; import static org.slf4j.LoggerFactory.getLogger; /** * Transforms a CBAM package into an ONAP package */ -public class OnapR2VnfdBuilder { - public static final String DESCRIPTION = "description"; - public static final String PROPERTIES = "properties"; - public static final String REQUIREMENTS = "requirements"; +public class OnapR2VnfdBuilder extends OnapAbstractVnfdBuilder { private static Logger logger = getLogger(OnapR2VnfdBuilder.class); - private static String trimUnit(String data) { - //FIXME the unit should not be trimmed VF-C bug - return data; - //data.trim().replaceAll("[^0-9]", ""); - } - - /** - * @param cbamVnfd the CBAM VNFD - * @return the converted ONAP VNFD - */ - public String toOnapVnfd(String cbamVnfd) { - JsonObject root = new Gson().toJsonTree(new Yaml().load(cbamVnfd)).getAsJsonObject(); - JsonObject topologyTemplate = child(root, "topology_template"); - JsonObject substitution_mappings = child(topologyTemplate, "substitution_mappings"); - Map virtualLinks = new HashMap<>(); - if (topologyTemplate.has("node_templates")) { - Set> nodeTemplates = child(topologyTemplate, "node_templates").entrySet(); - - StringBuilder body = new StringBuilder(); - for (Map.Entry node : nodeTemplates) { - String type = childElement(node.getValue().getAsJsonObject(), "type").getAsString(); - if ("tosca.nodes.nfv.VDU".equals(type)) { - body.append(buildVdu(node.getKey(), substitution_mappings, node.getValue().getAsJsonObject(), nodeTemplates)); - } else if ("tosca.nodes.nfv.VirtualStorage".equals(type)) { - body.append(buildVolume(node.getKey(), node.getValue().getAsJsonObject())); - } else if ("tosca.nodes.nfv.VL".equals(type)) { - virtualLinks.put(node.getKey(), node.getValue()); - body.append(buildVl(node.getValue().getAsJsonObject().get(PROPERTIES).getAsJsonObject(), node.getKey())); - } else if ("tosca.nodes.nfv.ICP".equals(type)) { - body.append(buildIcp(node.getKey(), node.getValue().getAsJsonObject())); - } else if ("tosca.nodes.nfv.ECP".equals(type)) { - body.append(buildEcp(node.getKey(), node.getValue(), nodeTemplates)); - } else { - logger.warn("The {} type is not converted", type); - } - } - return buildHeader(topologyTemplate, virtualLinks) + body.toString(); - } - return buildHeader(topologyTemplate, virtualLinks); - } - - private String buildHeader(JsonObject toplogyTemplate, Map virtualLinks) { + protected String buildHeader(JsonObject toplogyTemplate, Map virtualLinks) { JsonObject substitution_mappings = child(toplogyTemplate, "substitution_mappings"); String vnfContent = buildVnf(substitution_mappings, virtualLinks); return "tosca_definitions_version: tosca_simple_profile_yaml_1_1\n" + "\n" + "topology_template:\n" + " inputs:\n" + - " etsi_config:\n" + + " " + ETSI_CONFIG + ":\n" + " type: string\n" + " description: The ETSI configuration\n" + " node_templates:\n" + vnfContent; } - private JsonElement get(String name, Set> nodes) { - for (Map.Entry node : nodes) { - if (name.equals(node.getKey())) { - return node.getValue(); - } - } - throw new NoSuchElementException("The VNFD does not have a node called " + name + " but required by an other node"); - } - - private String buildVdu(String name, JsonObject vnf, JsonObject vdu, Set> nodes) { + protected String buildVdu(String name, JsonObject vnf, JsonObject vdu, Set> nodes) { String memorySize = ""; String cpuCount = ""; StringBuilder body = new StringBuilder(); @@ -118,7 +60,7 @@ public class OnapR2VnfdBuilder { if ("virtual_compute".equals(s)) { JsonObject virtualCompute = get(next.getValue().getAsString(), nodes).getAsJsonObject(); cpuCount = childElement(child(child(virtualCompute, PROPERTIES), "virtual_cpu"), "num_virtual_cpu").getAsString(); - memorySize = trimUnit(childElement(child(child(virtualCompute, PROPERTIES), "virtual_memory"), "virtual_mem_size").getAsString()); + memorySize = childElement(child(child(virtualCompute, PROPERTIES), "virtual_memory"), "virtual_mem_size").getAsString(); } else if ("virtual_storage".equals(s)) { String item = indent( "- virtual_storage:\n" + @@ -144,27 +86,13 @@ public class OnapR2VnfdBuilder { indent( "properties:\n" + " virtual_memory:\n" + - " virtual_mem_size: " + trimUnit(memorySize) + "\n" + + " virtual_mem_size: " + memorySize + "\n" + " virtual_cpu:\n" + " num_virtual_cpu: " + cpuCount + "\n", 3) + " " + REQUIREMENTS + ":\n", 2); return header + body.toString(); } - private String buildEcp(String name, JsonElement ecp, Set> nodes) { - if (ecp.getAsJsonObject().has(REQUIREMENTS)) { - String icpName = getRequirement(ecp.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "internal_connection_point"); - if (icpName != null) { - return buildEcpInternal(name, icpName, nodes); - } else { - logger.warn("The {} ecp does not have an internal connection point", name); - } - } else { - logger.warn("The {} ecp does not have an requirements section", name); - } - return ""; - } - private String buildVnf(JsonObject vnf, Map virtualLinks) { JsonObject vnfProperties = child(vnf, PROPERTIES); JsonObject flavourProperties = child(child(child(vnf, "capabilities"), "deployment_flavour"), "properties"); @@ -192,23 +120,7 @@ public class OnapR2VnfdBuilder { vlContent.toString(); } - private String buildEcpInternal(String ecpName, String icpName, Set> nodes) { - JsonObject icpNode = get(icpName, nodes).getAsJsonObject(); - if (icpNode.has(REQUIREMENTS)) { - String vdu = getRequirement(icpNode.getAsJsonObject().get(REQUIREMENTS).getAsJsonArray(), "virtual_binding"); - //internal connection point is bound to VDU - if (vdu != null) { - return buildVduCpd(ecpName, vdu, child(icpNode, PROPERTIES)); - } else { - logger.warn("The {} internal connection point of the {} ecp does not have a VDU", icpName, ecpName); - } - } else { - logger.warn("The {} internal connection point of the {} ecp does not have a requirements section", icpName, ecpName); - } - return ""; - } - - private String buildIcp(String name, JsonObject icp) { + protected String buildIcp(String name, JsonObject icp) { if (icp.has(REQUIREMENTS)) { JsonArray requirements = icp.get(REQUIREMENTS).getAsJsonArray(); String vdu = getRequirement(requirements, "virtual_binding"); @@ -237,7 +149,7 @@ public class OnapR2VnfdBuilder { return ""; } - private String buildVduCpd(String name, String vdu, JsonObject properties) { + protected String buildVduCpd(String name, String vdu, JsonObject properties) { return indent(name + ":\n" + " type: tosca.nodes.nfv.VduCp\n" + " " + PROPERTIES + ":\n" + @@ -250,21 +162,22 @@ public class OnapR2VnfdBuilder { " - virtual_binding: " + vdu + "\n", 2); } - private String buildVolume(String nodeName, JsonObject volume) { + protected String buildVolume(String nodeName, JsonObject volume) { return indent(nodeName + ":\n" + " type: tosca.nodes.nfv.Vdu.VirtualStorage\n" + " properties:\n" + " type_of_storage: volume\n" + - " size_of_storage: " + trimUnit(childElement(child(volume, PROPERTIES), "size_of_storage").getAsString()) + "\n", 2); + " size_of_storage: " + childElement(child(volume, PROPERTIES), "size_of_storage").getAsString() + "\n", 2); } - private String buildVl(JsonObject vlProperties, String name) { + protected String buildVl(JsonObject vlProperties, String name) { + JsonObject connectivityType = child(vlProperties, "connectivity_type"); return indent(name + ":\n" + " type: tosca.nodes.nfv.VnfVirtualLink\n" + " properties:\n" + " connectivity_type:\n" + - " layer_protocol: [ " + childElement(child(vlProperties, "connectivity_type"), "layer_protocol").getAsString() + " ]\n" + - " flow_pattern: " + childElement(child(vlProperties, "connectivity_type"), "flow_pattern").getAsString() + "\n" + + " layer_protocol: [ " + childElement(connectivityType, "layer_protocol").getAsString() + " ]\n" + + (connectivityType.has("flow_pattern") ? " flow_pattern: " + childElement(connectivityType, "flow_pattern").getAsString() + "\n" : "") + " vl_profile:\n" + " max_bit_rate_requirements:\n" + " root: " + Integer.MAX_VALUE + "\n" + //FIXME GAP IN CBAM TEMPLATE diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfPackageBuilder.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfPackageBuilder.java similarity index 93% rename from nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfPackageBuilder.java rename to nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfPackageBuilder.java index 6542a032..8de82347 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapR1VnfPackageBuilder.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/OnapVnfPackageBuilder.java @@ -33,7 +33,7 @@ import static org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.CatalogManager.getV * Transforms a CBAM package into an ONAP package */ -public class OnapR1VnfPackageBuilder { +public class OnapVnfPackageBuilder { /** * Entry point for the command line package transformer @@ -41,7 +41,7 @@ public class OnapR1VnfPackageBuilder { * @param args not used (required due to signature) */ public static void main(String[] args) throws Exception { - byte[] covert = new OnapR1VnfPackageBuilder().covert(systemFunctions().in(), SupportedOnapPackageVersions.V1); + byte[] covert = new OnapVnfPackageBuilder().covert(systemFunctions().in(), SupportedOnapPackageVersions.V1); systemFunctions().out().write(covert); } @@ -57,7 +57,7 @@ public class OnapR1VnfPackageBuilder { byte[] cbamVnfdContent = vnfdContent.toByteArray(); String onapVnfd = SupportedOnapPackageVersions.V2 == version ? new OnapR2VnfdBuilder().toOnapVnfd(new String(cbamVnfdContent, StandardCharsets.UTF_8)) : - new OnapVnfdBuilder().toOnapVnfd(new String(cbamVnfdContent, StandardCharsets.UTF_8)); + new OnapR1VnfdBuilder().toOnapVnfd(new String(cbamVnfdContent, StandardCharsets.UTF_8)); byte[] modifiedCbamPackage = new CbamVnfPackageBuilder().toModifiedCbamVnfPackage(cbamVnfPackage, vnfdLocation, new CbamVnfdBuilder().build(new String(cbamVnfdContent))); return buildNewOnapPackage(modifiedCbamPackage, onapVnfd); } diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/ConverterApi.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/ConverterApi.java index 95438caa..758c8b3f 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/ConverterApi.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/ConverterApi.java @@ -22,7 +22,7 @@ import java.io.IOException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.Part; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapR1VnfPackageBuilder; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapVnfPackageBuilder; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.SupportedOnapPackageVersions; import org.slf4j.Logger; import org.springframework.stereotype.Controller; @@ -47,7 +47,7 @@ import static org.springframework.web.bind.annotation.RequestMethod.POST; @RequestMapping(value = BASE_URL) public class ConverterApi { private static Logger logger = getLogger(ConverterApi.class); - private OnapR1VnfPackageBuilder vnfPackageConverter = new OnapR1VnfPackageBuilder(); + private OnapVnfPackageBuilder vnfPackageConverter = new OnapVnfPackageBuilder(); /** * Return the converted ONAP package diff --git a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java index f64ce1e0..7c8e2318 100644 --- a/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java +++ b/nokiav2/driver/src/main/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/vnfm/LifecycleManager.java @@ -334,6 +334,7 @@ public class LifecycleManager { return child(child(operation.getValue().getAsJsonObject(), "inputs"), "additional_parameters").entrySet(); } } + throw buildFatalFailure(logger, "Unable to find operation named " + operationName); } diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/FullUnitTestSuite.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/FullUnitTestSuite.java index 69e3482c..b37d95ff 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/FullUnitTestSuite.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/FullUnitTestSuite.java @@ -28,10 +28,7 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.TestSdcPackageProvi import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.direct.notification.*; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.so.TestSoLifecycleManager; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.onap.vfc.*; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.TestCbamVnfPackageBuilder; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.TestCbamVnfdBuilder; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.TestOnapVnfPackageBuilder; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.TestOnapVnfdBuilder; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.*; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.restapi.*; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.TestRealConfig; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.spring.TestServletInitializer; @@ -70,7 +67,8 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.notification.TestReportedA TestVfcNotificationSender.class, TestCbamVnfdBuilder.class, - TestOnapVnfdBuilder.class, + TestOnapR1VnfdBuilder.class, + TestOnapR2VnfdBuilder.class, TestCbamVnfPackageBuilder.class, TestOnapVnfPackageBuilder.class, diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapAbstractVnfdBuilder.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapAbstractVnfdBuilder.java new file mode 100644 index 00000000..0d2c348c --- /dev/null +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapAbstractVnfdBuilder.java @@ -0,0 +1,33 @@ +/* + * Copyright 2016-2017, Nokia Corporation + * + * 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. + */ +package org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer; + +import org.junit.Test; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase; + +import static junit.framework.TestCase.assertEquals; + +public class TestOnapAbstractVnfdBuilder extends TestBase { + + @Test + public void indent() { + assertEquals(" x", OnapAbstractVnfdBuilder.indent("x", 2)); + assertEquals(" x\n", OnapAbstractVnfdBuilder.indent("x\n", 2)); + assertEquals(" x\n y", OnapAbstractVnfdBuilder.indent("x\ny", 2)); + assertEquals(" x\n y\n", OnapAbstractVnfdBuilder.indent("x\ny\n", 2)); + assertEquals(" \n", OnapAbstractVnfdBuilder.indent("\n", 2)); + } +} diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfdBuilder.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR1VnfdBuilder.java similarity index 83% rename from nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfdBuilder.java rename to nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR1VnfdBuilder.java index a97ee4f1..8c0e8a46 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfdBuilder.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR1VnfdBuilder.java @@ -27,22 +27,14 @@ import static org.mockito.Mockito.verify; import static org.springframework.test.util.ReflectionTestUtils.setField; -public class TestOnapVnfdBuilder extends TestBase { - private OnapVnfdBuilder packageTransformer = new OnapVnfdBuilder(); +public class TestOnapR1VnfdBuilder extends TestBase { + private OnapR1VnfdBuilder packageTransformer = new OnapR1VnfdBuilder(); @Before public void init() { - setField(OnapVnfdBuilder.class, "logger", logger); - } - - @Test - public void indent() { - assertEquals(" x", packageTransformer.indent("x", 2)); - assertEquals(" x\n", packageTransformer.indent("x\n", 2)); - assertEquals(" x\n y", packageTransformer.indent("x\ny", 2)); - assertEquals(" x\n y\n", packageTransformer.indent("x\ny\n", 2)); - assertEquals(" \n", packageTransformer.indent("\n", 2)); + setField(OnapAbstractVnfdBuilder.class, "logger", logger); + setField(OnapR1VnfdBuilder.class, "logger", logger); } /** @@ -73,7 +65,7 @@ public class TestOnapVnfdBuilder extends TestBase { * if a node refers to a non existing node it results in a failure */ @Test - public void testInconsitentVnfd() { + public void testInconsistentVnfd() { try { packageTransformer.toOnapVnfd(new String(TestUtil.loadFile("unittests/packageconverter/nodes.vnfd.inconsistent.cbam.yaml"))); fail(); diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR2VnfdBuilder.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR2VnfdBuilder.java index 6916d382..a8f6a645 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR2VnfdBuilder.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapR2VnfdBuilder.java @@ -23,6 +23,7 @@ import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase; import static junit.framework.TestCase.assertEquals; import static junit.framework.TestCase.fail; +import static org.mockito.Mockito.verify; import static org.springframework.test.util.ReflectionTestUtils.setField; @@ -32,7 +33,8 @@ public class TestOnapR2VnfdBuilder extends TestBase { @Before public void init() { - setField(OnapVnfdBuilder.class, "logger", logger); + setField(OnapAbstractVnfdBuilder.class, "logger", logger); + setField(OnapR2VnfdBuilder.class, "logger", logger); } @@ -50,14 +52,14 @@ public class TestOnapR2VnfdBuilder extends TestBase { @Test public void testNodes() { assertEquals(new String(TestUtil.loadFile("unittests/packageconverter/nodes.vnfd.onap.v2.yaml")), packageTransformer.toOnapVnfd(new String(TestUtil.loadFile("unittests/packageconverter/nodes.vnfd.cbam.yaml")))); - /* verify(logger).warn("The {} ecp does not have an internal connection point", "myEcpWithoutIcp"); + verify(logger).warn("The {} ecp does not have an internal connection point", "myEcpWithoutIcp"); verify(logger).warn("The {} ecp does not have an requirements section", "ecpWithIcpWithOutRequirements"); verify(logger).warn("The {} internal connection point of the {} ecp does not have a VDU", "icpWithoutVdu", "myEcpWithoutIcpWithoutVdu"); verify(logger).warn("The {} internal connection point of the {} ecp does not have a requirements section", "icpWithOutRequiements", "myEcpWithoutIcpWithoutIcpReq"); verify(logger).warn("The {} internal connection point does not have a VDU", "icpWithOutVdu"); verify(logger).warn("The {} internal connection point does not have a requirements section", "icpWithOutRequiements"); verify(logger).warn("The {} internal connection point does not have a VL", "icpWithOutVl"); - verify(logger).warn("The {} type is not converted", "tosca.nodes.nfv.Unknown")*/ + verify(logger).warn("The {} type is not converted", "tosca.nodes.nfv.Unknown"); } /** diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfPackageBuilder.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfPackageBuilder.java index 55949ab0..d2a92556 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfPackageBuilder.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/packagetransformer/TestOnapVnfPackageBuilder.java @@ -46,10 +46,10 @@ public class TestOnapVnfPackageBuilder extends TestBase { when(systemFunctions.loadFile("MainServiceTemplate.mf")).thenCallRealMethod(); String cbamVnfd = new String(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip.vnfd")); - String expectedOnapVnfd = new OnapVnfdBuilder().toOnapVnfd(cbamVnfd); + String expectedOnapVnfd = new OnapR1VnfdBuilder().toOnapVnfd(cbamVnfd); //when - OnapR1VnfPackageBuilder.main(null); + OnapVnfPackageBuilder.main(null); //verify assertFileInZip(bos.toByteArray(), "TOSCA-Metadata/TOSCA.meta", TestUtil.loadFile("TOSCA.meta")); assertFileInZip(bos.toByteArray(), "MainServiceTemplate.yaml", expectedOnapVnfd.getBytes()); @@ -59,13 +59,60 @@ public class TestOnapVnfPackageBuilder extends TestBase { assertItenticalZips(expectedModifiedCbamPackage, actualModifiedCbamVnfPackage.toByteArray()); } + /** + * Test conversion for V1 package + */ + @Test + public void testConversionViaV1() throws Exception { + when(systemFunctions.loadFile("cbam.pre.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("cbam.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("cbam.post.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("TOSCA.meta")).thenCallRealMethod(); + when(systemFunctions.loadFile("MainServiceTemplate.mf")).thenCallRealMethod(); + + String cbamVnfd = new String(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip.vnfd")); + String expectedOnapVnfd = new OnapR1VnfdBuilder().toOnapVnfd(cbamVnfd); + //when + byte[] convertedPackage = new OnapVnfPackageBuilder().covert(new ByteArrayInputStream(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip")), SupportedOnapPackageVersions.V1); + //verify + assertFileInZip(convertedPackage, "TOSCA-Metadata/TOSCA.meta", TestUtil.loadFile("TOSCA.meta")); + assertFileInZip(convertedPackage, "MainServiceTemplate.yaml", expectedOnapVnfd.getBytes()); + assertFileInZip(convertedPackage, "MainServiceTemplate.mf", TestUtil.loadFile("MainServiceTemplate.mf")); + ByteArrayOutputStream actualModifiedCbamVnfPackage = getFileInZip(new ByteArrayInputStream(convertedPackage), "Artifacts/Deployment/OTHER/cbam.package.zip"); + byte[] expectedModifiedCbamPackage = new CbamVnfPackageBuilder().toModifiedCbamVnfPackage(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip"), "vnfdloc/a.yaml", new CbamVnfdBuilder().build(cbamVnfd)); + assertItenticalZips(expectedModifiedCbamPackage, actualModifiedCbamVnfPackage.toByteArray()); + } + + /** + * Test conversion for V2 package + */ + @Test + public void testConversionViaV2() throws Exception { + when(systemFunctions.loadFile("cbam.pre.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("cbam.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("cbam.post.collectConnectionPoints.js")).thenCallRealMethod(); + when(systemFunctions.loadFile("TOSCA.meta")).thenCallRealMethod(); + when(systemFunctions.loadFile("MainServiceTemplate.mf")).thenCallRealMethod(); + + String cbamVnfd = new String(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip.vnfd")); + String expectedOnapVnfd = new OnapR2VnfdBuilder().toOnapVnfd(cbamVnfd); + //when + byte[] convertedPackage = new OnapVnfPackageBuilder().covert(new ByteArrayInputStream(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip")), SupportedOnapPackageVersions.V2); + //verify + assertFileInZip(convertedPackage, "TOSCA-Metadata/TOSCA.meta", TestUtil.loadFile("TOSCA.meta")); + assertFileInZip(convertedPackage, "MainServiceTemplate.yaml", expectedOnapVnfd.getBytes()); + assertFileInZip(convertedPackage, "MainServiceTemplate.mf", TestUtil.loadFile("MainServiceTemplate.mf")); + ByteArrayOutputStream actualModifiedCbamVnfPackage = getFileInZip(new ByteArrayInputStream(convertedPackage), "Artifacts/Deployment/OTHER/cbam.package.zip"); + byte[] expectedModifiedCbamPackage = new CbamVnfPackageBuilder().toModifiedCbamVnfPackage(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip"), "vnfdloc/a.yaml", new CbamVnfdBuilder().build(cbamVnfd)); + assertItenticalZips(expectedModifiedCbamPackage, actualModifiedCbamVnfPackage.toByteArray()); + } /** * Prevents moving the class (customer documentation) must be updated */ @Test public void testPreventMove() { - assertEquals("b3JnLm9uYXAudmZjLm5mdm8uZHJpdmVyLnZuZm0uc3ZuZm0ubm9raWEucGFja2FnZXRyYW5zZm9ybWVyLk9uYXBSMVZuZlBhY2thZ2VCdWlsZGVy", Base64.getEncoder().encodeToString(OnapR1VnfPackageBuilder.class.getCanonicalName().getBytes())); + assertEquals("b3JnLm9uYXAudmZjLm5mdm8uZHJpdmVyLnZuZm0uc3ZuZm0ubm9raWEucGFja2FnZXRyYW5zZm9ybWVyLk9uYXBWbmZQYWNrYWdlQnVpbGRlcg==", Base64.getEncoder().encodeToString(OnapVnfPackageBuilder.class.getCanonicalName().getBytes())); } diff --git a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestConverterApi.java b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestConverterApi.java index 48d2cab0..99fd203a 100644 --- a/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestConverterApi.java +++ b/nokiav2/driver/src/test/java/org/onap/vfc/nfvo/driver/vnfm/svnfm/nokia/restapi/TestConverterApi.java @@ -31,7 +31,7 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.CbamVnfPackageBuilder; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.CbamVnfdBuilder; -import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapVnfdBuilder; +import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.packagetransformer.OnapR1VnfdBuilder; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.util.TestUtil; import org.onap.vfc.nfvo.driver.vnfm.svnfm.nokia.vnfm.TestBase; import org.springframework.http.HttpHeaders; @@ -88,7 +88,7 @@ public class TestConverterApi extends TestBase { private void verifyVnfPackageWritterToOutputStream(ByteArrayOutputStream bos) throws Exception { String cbamVnfd = new String(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip.vnfd")); - String expectedOnapVnfd = new OnapVnfdBuilder().toOnapVnfd(cbamVnfd); + String expectedOnapVnfd = new OnapR1VnfdBuilder().toOnapVnfd(cbamVnfd); assertFileInZip(bos.toByteArray(), "TOSCA-Metadata/TOSCA.meta", TestUtil.loadFile("TOSCA.meta")); assertFileInZip(bos.toByteArray(), "MainServiceTemplate.yaml", expectedOnapVnfd.getBytes()); assertFileInZip(bos.toByteArray(), "MainServiceTemplate.mf", TestUtil.loadFile("MainServiceTemplate.mf")); @@ -133,6 +133,27 @@ public class TestConverterApi extends TestBase { } } + /** + * error is propagated if unable to extract version from HTTP request + */ + @Test + public void testUnableToExtractVersion() throws Exception { + IOException expectedException = new IOException(); + Part part = Mockito.mock(Part.class); + when(part.getInputStream()).thenReturn(new ByteArrayInputStream(TestUtil.loadFile("unittests/packageconverter/cbam.package.zip"))); + when(httpRequest.getPart("fileToUpload")).thenReturn(part); + when(httpRequest.getPart("version")).thenThrow(expectedException); + when(part.getInputStream()).thenReturn(new ByteArrayInputStream("V1".getBytes())); + try { + converterApi.convert(httpResponse, httpRequest); + fail(); + } catch (Exception e) { + verify(logger).error("Unable to determine the desired ONAP package version", expectedException); + assertEquals("Unable to determine the desired ONAP package version", e.getMessage()); + assertEquals(expectedException, e.getCause()); + } + } + /** * error is propagated if unable to extract package from HTTP request */ diff --git a/nokiav2/driver/src/test/resources/application-direct.properties b/nokiav2/driver/src/test/resources/application-direct.properties index 5702c913..b9c1c68c 100644 --- a/nokiav2/driver/src/test/resources/application-direct.properties +++ b/nokiav2/driver/src/test/resources/application-direct.properties @@ -13,9 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################### - server.error.whitelabel.enabled=false - ############################################################################### # Beginning of mandatory properties # ############################################################################### @@ -42,7 +40,6 @@ skipCertificateVerification=true trustedCertificates= # the identifier of the VNFM in A&AI core system registry vnfmId=7c267318-2a6a-4d47-b039-a7cce5fea38b - ############################################################################### # Configuration parameters for direct integration ############################################################################### @@ -61,7 +58,6 @@ aaiPassword=AAI sdcUsername=SDC #The password to access SDC sdcPassword=SDC - ############################################################################### # End of mandatory properties for driver # ############################################################################### diff --git a/nokiav2/driver/src/test/resources/application.properties b/nokiav2/driver/src/test/resources/application.properties index af64fd95..d2732910 100644 --- a/nokiav2/driver/src/test/resources/application.properties +++ b/nokiav2/driver/src/test/resources/application.properties @@ -13,9 +13,7 @@ # See the License for the specific language governing permissions and # limitations under the License. ############################################################################### - server.error.whitelabel.enabled=false - ############################################################################### # Beginning of mandatory properties # ############################################################################### @@ -42,7 +40,6 @@ skipCertificateVerification=true trustedCertificates= # the identifier of the VNFM in A&AI core system registry vnfmId=53fbba58-464e-4cc4-8d33-aaaf072f0a27 - ############################################################################### # Configuration parameters for direct integration ############################################################################### @@ -61,7 +58,6 @@ aaiPassword=AAI sdcUsername=SDC #The password to access SDC sdcPassword=SDC - ############################################################################### # End of mandatory properties for driver # ############################################################################### diff --git a/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip b/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip index ac555dffda8f06dcd1e406bf401bf38fb95c5ca3..fe996956b25bb515c85d846609fccddb434404e9 100644 GIT binary patch delta 404 zcmeC++RC-TiIHz}-hLmx*H(=>j0_BAOp^l`CF>m@@kfJjX$3a}BgnVWGCwZTAu_HkS18xKD3wV`R*|xSbB{Eq~v~{`*SP zy9*PP)!t8%GgPyDBYHkykzK?U#VY4b((+r47vFoi*5|oB=c=yS57*+=&uXM3+zIzu zy3n)U$0jB8t~1Azb(+jxmiHGv(@f9|dhW2wb^AYy`DtBOxFu$8SfZiYV-}Q<*|2M` z)$>c+%R5+JRqS~CDmU)@o!`Y~O!-`TuarwAy3a_xZJV~WInFA23HOXW5A{2KtbZ`a z>)en1pXDXI>o=ccJ!)jx7%FREGU0=(PSN^DJ*~$ct#NheGnC2*cjlY0B35ta1PPho zjsMd<{QTd^Whpv1Pm`IHEA^;k delta 373 zcmdnW)xovFiIFd4f|*Z8=}P(k3=9mf7$*lXO4jR3rbU5pX$3a}Bg{I% zi%qIuy5g2(lFGg(OcI9=E}WWu>`crlH38i}0_V<5n6W`ifLlV1|MA@k!YNYQ-4#<9#j?KD z>#m*Inf*$5^BShf7y;(XqRyl*Ir$)q?Bs1sLc9{dfC2#lh69fElQ*$=G47lEm&J&U Ig&8CY0Qy3dTL1t6 diff --git a/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip.vnfd b/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip.vnfd index 3c121386..af4a530a 100644 --- a/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip.vnfd +++ b/nokiav2/driver/src/test/resources/unittests/packageconverter/cbam.package.zip.vnfd @@ -15,3 +15,8 @@ topology_template: Basic: instantiate: terminate: + capabilities: + deployment_flavour: + properties: + flavour_id: myFlavorId + description: myFlavorDescription diff --git a/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.cbam.yaml b/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.cbam.yaml index 3870605f..c893b930 100644 --- a/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.cbam.yaml +++ b/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.cbam.yaml @@ -67,7 +67,6 @@ topology_template: properties: connectivity_type: layer_protocol: ipv4 - flow_pattern: mesh description: myDescription icpWithOutEcp: diff --git a/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.onap.v2.yaml b/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.onap.v2.yaml index fe0ccf4c..ba1c8fa8 100644 --- a/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.onap.v2.yaml +++ b/nokiav2/driver/src/test/resources/unittests/packageconverter/nodes.vnfd.onap.v2.yaml @@ -77,7 +77,6 @@ topology_template: properties: connectivity_type: layer_protocol: [ ipv4 ] - flow_pattern: mesh vl_profile: max_bit_rate_requirements: root: 2147483647 -- 2.16.6