From 7fc7f5ea7f960e12d869961fe1e2ac000fe0b6a9 Mon Sep 17 00:00:00 2001 From: Hans Trompert Date: Thu, 26 Sep 2024 17:37:59 +0200 Subject: [PATCH] add modify reservation capability (#108) - move schedule and p2p criteria to separate tables - implement modify reservation - query should report auto ending reservations as active as well - add modify reservation unit tests - fix minor connection server errors - do not allow reserve modify when reservation is not in Created and ReserveStart - more correct criteria version handling in modify reservation - also check header of ReserveCommit, ReserveAbort, Provision, Release and Terminate requests - handle unset start or end time correctly - take multiple schedules into account when recovering auto start jobs - test reserve modify with unset criteria version - correctly implement ReserveAbort for modified reservations - do not ReserveAbort abort on initial reservations - add invalid transition NSI exception to ReserveAbort - rollback to previous version of reservation on successful abort - add fixtures for modified reservation and connection - add fixture for protobuf reserve modify request - add unit test for disallowed ReserveAbort on initial reservation - add reservation rollback tests to existing ReserveAbortConfirmed unit test - better pin grpc packages - disable interactive test failure interceptor on cherrypy web test case base - alllow modify with start time in the past when connection already started - only log stp resources in use for log level debug - remove unneeded todo note - bump multiple requirement versions - pin protobuf to ~= 5.27.0 - upgrade to latest mypy version --- docs/images/DataPlaneStateMachine.png | Bin 87736 -> 91565 bytes docs/images/LifecycleStateMachine.png | Bin 44887 -> 45450 bytes docs/images/ProvisionStateMachine.png | Bin 38043 -> 37357 bytes docs/images/ReservationStateMachine.png | Bin 110630 -> 110240 bytes pyproject.toml | 2 +- requirements.txt | 62 ++-- setup.cfg | 20 +- src/supa/__init__.py | 4 +- src/supa/connection/fsm.py | 1 + src/supa/connection/provider/server.py | 287 +++++++++++++++--- src/supa/db/model.py | 129 ++++++-- src/supa/job/dataplane.py | 21 +- src/supa/job/provision.py | 9 +- src/supa/job/reserve.py | 231 +++++++++++--- src/supa/main.py | 52 ++-- src/supa/nrm/backend.py | 14 + src/supa/nrm/backends/example.py | 2 +- src/supa/nrm/backends/paristaEOS4-untested.py | 8 +- src/supa/nrm/backends/surf.py | 2 +- src/supa/util/converter.py | 49 +-- tests/conftest.py | 269 +++++++++++++--- tests/connection/provider/test_server.py | 172 ++++++++++- tests/documents/test_discovery.py | 2 + tests/documents/test_topology.py | 2 + tests/job/fake_servicer.py | 20 +- tests/job/test_dataplane.py | 37 ++- tests/job/test_lifecycle.py | 13 +- tests/job/test_provision.py | 37 ++- tests/job/test_reserve.py | 182 ++++++++--- 29 files changed, 1250 insertions(+), 377 deletions(-) diff --git a/docs/images/DataPlaneStateMachine.png b/docs/images/DataPlaneStateMachine.png index 76c9ed43c8c15fbced3786c66ead88dff4bf1beb..f472f0f50b26080c25b3e639803709baa0dd6a37 100644 GIT binary patch literal 91565 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 b{HoeAuWU*2#YN!?e}>zR*8XBMW%Yjn#S&&t literal 87736 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�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 z%0D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 diff --git a/docs/images/LifecycleStateMachine.png b/docs/images/LifecycleStateMachine.png index 276ad5c4ee042d89ec22be3dce45098a2ae27542..0399fa2943c27eae292f18fdbea3276df1787349 100644 GIT binary patch literal 45450 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 RzbN=KZp?!ZG2mu!W`0F>d5vT4uY^5& z6y)Tpi(VbOY!)kUbFW%n>oLvt3oboZKNg@X*|e&e>XTyNcDl8D^tFEm zjxYXB-qzi;SDZKKNBNL_x8|W)Cywq}kN8=sY(51=+C~mD4a#%*HO8T$UEWSCrlFz& z9K!OUqK&kC8>A@Xy*F>()Yj9xaqSxQsZ*yO=I3vu+)hlq<$FF{aPMA)D_5?>+oh$a zA2l*EvW_h;KitvLftTXsynXLp5Jq$7&Yg!D8GjI+< z_V&Uvv$GNR?sX48D=*)&YSpS;A|fh!diRY>Iy*a)9zLXKYHFsXrOD~*m$j(lpBZ06 zL&KQZ*xJ@sW{m3E=ZhI-5hH_611B{#*X`fGe|ofyFC`^~M@(#!o}S)|H*XZroMC&O zmlqKcaWyh>L;C!w)2GM16|%i|W90bf9k0&Wvq2biet!N#{M_l&rzx66_6gmmo~8fy ze|HHA-q~37=n*fzxm{LvTWV@*7+cHDn`_hUY;0`mdU`kl0|WPoie9~Xl}bZXvn|g; zYi_KQp~7SST2j&o!wMsZnSp<4K7PEv%#G>S_U zNLrf9%F61+t5@=v0g9ZS-sTF=U(p+PT)uo+S5L2|v2nHc@1L0`jW?Ukf8_00_37(Z zJ^_K%^z`(>w{EG(%TsUIuwi=PhZ!@=r_Z0;o@i}*`QY=cL)@1yU&u%@1b^vR9mDWW zoIII&^UASfH$RR0`c~Q5*_qhct>fb2>gnx$`Q{LqZhH z%~L+zy?vXKtILQ*)Ya8h9i)7pm}tds^t^xn&Fe}_OXXE8H1-+zOXZA>Su3ij@Etz9#l*y< z*kgXr{sRZ7C}h^7qFCeN<3~Py@~5I%UH#^b#&CUxjF_01`}8o?qeqXJH*E^&D{|o5 zvu7=4@;3HGYU+;u{{G=_-{{@k+;sKz8MyD~y4ESB(WF0pDzB(Wn`KaPZF<_#pu%HQ zLqkJrXJx4ts*WT=nu z^83Abp-M|jJ3RNTz1Z`YFm|k{*Megxw=^5h=IB6KQ7eny8ac(_@Ni{E$9*jcM?#*R z&At}A&wbjse0ga+M%<3`O>=WV_{$!K5#EmDA3lB@nVMqq_4VZ!5P0M;R2g&7YC~f< zH-nazR^`!1vE4WhU*9IG;923@WWz1qCe(CxZfbv`)zp!G(!|`H-&wKoTxdwE`Y8j0 zP?|OCjhn)`@!Nsv>AStWy!Lr7IWuw|R2_BCV10&}wzS;!=kH&qi5}5A(b1;$!7T1m z6~FeG)Y86q`I4SHBKP75@7#v|D&K9g%L{xzC*EJj8GI8XN|R^twsCKEd2P3=?t{I1 z_txD%U@<+OUG-t&ectH%yq$xdQ%BxBkhoRmo45W}h&EU0<*)0{WE+K@d~*B;7Zq!L zl`N&=@6SHn3J`CI}JY*P_vHkuv6@=Y{Pd7hNjCpu7BqY~&#mBZMhYDMK zVKn(xj@RNPOG`^S?l95a2L48JN=mC_R{mVJ9W39BqpVxya|G|Xkg&eXtJhN?NTSf>^jOO`Kwc|dlkxNVQ$;_TPihj%mTUcG)@xANO} zg-O5Awx<3D>yOtWRdSene9ei)I_!I2k=f$RXGd4p#^t}iads2$RldbWJ?yohJyQ@G z%7}mX`3`lnRR;&tAt85$3we6{p1sbc#(pHd-v{j6lCMTe8ky|%*MAP;^T!1!gF&)l|wnGh7-?xuJr!R z%*sl0^5jW(cX#8~hez=n4gU13%v@X{Jv}|EyB+M8(xXSz zD&boqLSuyX?q$GFfBN!8e5vB(i4(PVcAp&k!$^_i-*EKgNmeN-shpyspqn?3CHHyg z37@ZIJb(T?_Vq~hRT>T%uVS7<98o-7wx+o;GE1X;k$3N=ic~IKd;08IpUaR%OWbx! z%9AH5LteA%GWCnXZEbB|ym%4Z5-+_|ZxY*spN~($!^0!rW&BKU`IQ4D#l^QXG6aPT zOYa<0S0A^nDlU$R7Sxk(X=&NW$$9M1p+g%tZBkOdC%glJuhjc@q51nif4r84uQSn6 z($mx1;-%fjY_l^mLS_EWog_o43t}Q^siCPU3VD#~;gHX7&6&TiU%%$l*Vm7gaM)^C zJb{Q2{TjPvw~u}g6day_o^8gCEy^gdi^jd z>8Pu#Yh-q!jQ24%Ha0R{IyyR$->@j=W@dZ^lW*=Hpr?2*FMf3?l(z4ee4dk&RwU>B zqk%o;;X}FZ?DO|D_6iB@K$_ifLvaoh?vdxS^7mK1WgBn0m9Vfdc_0FFq*VyJhydnv zLrBAk*Oe>FzfUNoVHTnigJ1Oa#!_124qYB=_8qRKI#=OQ(2+k_;Te^i>s0YtBd7Gd@<@atWbmC!*_#6DJiWNUwZ;kD}V)2<{_O9dD z_poK@*487BQq}K?m-yJsBAG?uFQ^_iKal9wo0=Y}%SS9ow>op?%sRHDJ9jpwciqRY zS11Jsk0OfG`TeZ6AM{+!9MsW{uf+FE%*-5knPIuW8wD7NTC}sZW#;A%Qwm{Adj9;x{t5(j4ry20sPQ6kS<03}muN{~tMoe5 zk|;a$sgm;&CMo8@1Bo*IG6VQWE+I2z> zP@-~aY;RI>$9QX!0!8~P@88*aQ&B`c3dQ}`fZLAt1N-;ij*6l&GyAB#ZD8QpSrLky zvva4@ZC%}}*EOXg!t%|`92~*l+Mg%@dXDa*_yGp?m%1>pu&~64nyr46oGgkUBbAwt zrI_d|VjAzx4yvd)0vt-drxqok7M=dxsq0ios_XLXkwMCE9g{3A#rFMkrTv*18H^(% zBbsct&tX?B%)XT!86Nh-^15HSV$xsiq7ES1a@oS4c48HfQH-b zK7amP)6}#^Mn)z^(uvpE#f62Pz1zIYH}Cm#YD&uE$A#_#g`Y-7s8m!`j_R9d{Qkh( zLCY(zp}~0g@L~UO-t9Yg2C3ZII`XCY0ml)KgLsczth1EFOOkPFYpHR{34Z9xG7Q;$ z^0BH=a(X)baN@O2j-?gPnH5hu-km#lx_fwhKu(IZe@R6}6(i+h9b(^GP*kLXv|niZ zo*EF5cFmf)wl zhlkG#Kf#Owz)cKRZ~+F^B52&cdv`}cXlAAmWf=P*Y%=es$H|rDzvFLyPuDSRXAAj( z<)BaqlqeeVDQjrjvEfFJ`wvt89Xo2eyV);XxIlIcHV&u36QP;zrJ2_vqCS7z<0PG^ z5nt?F?Lih678k`l7taCK(@gs|@$hSEHY-=X4XqF~@Q;0%l0qvaBy`y4kM8KMOdQOB z>uZ=kyw9_6AI~gGk@;+6ZCwj!vt!4OFe4^4RaHMEALTI4(-wm%YEiA&`Q%lAZppz6 znQUD7HNO!|fb6pa7vISF_{i|`@^Ts!VQ5G;4K>%-n3$PepC9io8lCH~$*x#EoOm*# zSqHogQ0FNBhLJFdLCc>$M$uULnw}orQH~5Q> zxCpXC0%R%QaY{$$YHO=DBe&G4)-4$iHspA^KXJmhA|oP_0C1091_>pJdL9$g_W9}4 zr>guLB9MSP=0FN&=H~d3sij=T?sSx6GNM4d49nehtUbW5!nmcQjjnv&v}eyAYsW-@ zxRj?)kNy1lGwkAJM@JsYi9Te-M>@&Mo$r^i1TSi8uHuuNhE)ZNz&+`JP=j$vNl8f6 zXTQp9C+xAcH7(BzuaT*ndkqm!SyA!s-Mjz&ebUU#rE|~C>0iEn-ENWSEiigSzQAW; zWX*|Fr&2J3Ny$0(!6DiQf*VX{rl)yuP_eaH`RhKvzGpS_=_RcnrPXt)LPf&9KP|8S z?%uO6`ug;r_akhlM0@^O5Vf+giBjc%gb<@+X_;m|*bu`0vaKy*(C4>ZZ=oHR(D}-^ z)l6G8xWsMK4#*$%CLnkTYc?Lw&dRF5z%I-Wc1$gocd_{q7MYhfR?LR&il=83&~9_Q z^u04#25QLs2f;9osi|3A`WyYF%KNu?#cYc-t>5G0@q6ZvxDNt0i0qa}mVdHCJzBLg z8^q<)_wSm6gM$YzzTp^af5Pv-xmiq|_>j6BOS(cZ7I~?|2+6c01*AO? z80&mSsH)V4@j##*IbB^2q{r({9~(!8Yp!dbI<--1gIQ)|LPB`1S<|E9Vh#j)&G4+2 zp4YY9tmmr1;@Cxu>XFOAOHX`lqYiahjp(-U)_3`OY%Hfi$)x}WX4Z}DNo<^l-S_eG z@g*fEU&p!p_$<5fnyw(56q}jm9ubkIplv?E_yMFD8sES3XP;?Z+23^r5=sZ7&na%;+v7G{I$L- zzt0nn${Rs9IXUV6F-&5N`$4E^l7C>J>2USc7%VYJD+@rmRr_Ol?hsLWVR;ct{0&KY zEpdmg1ARzJN*XWCeLKu6%BtbwB6jWCwdq%TvyJCQ+n{h9b#^`oFtp~tfdfe&MFj#t zrhd%K)PjaM0h{4;kO=}S%e!dOn{OplsTU)<9jr=a_wL=2UJLt3R`C2aSyNq2ApvsX$4606 zQ3Ngq?g$rcXje4|fb49MTYk+_LSXkLI58M**zmA1@;MDa zf#c=N*YDk9H}al8Eh#OnKsb4f1`jlaV%P7S093c|(fYm_JdwvU}%_>l_l(a>Sv_+g$vsujR0T-2L}T` z9RwpXxo}~Xh=>UA#mL>WMpvIdf8MII+2$m~l!yNQw2F#~Jc5FZ*zm=^D>7u+92}U~ z+1Vuz9jbZ%e)IbE>$QR1q=apfz%zNFa}+rYDdWJ{50>9p!?aZnngsrdWI`0!dN^hM z_zaXF>Vm{bZ0Vb6X}c7al!$nC>C&Z~!oonr0%Q&fz%b;Ny8iw+&tVq|A}2r(=n(aX z4m+-hN9(n>%B~t4hAPSK&E?yMy^WCau4>byCb8ftw zNnBh!CqLi6q~s7_(W>Kv1jJ{x#th>(wl6L&7Q0Pt1zC!?eVb>|7f}j%hC&$|8yoF>#_sWJavk(F0N>=Z*+xWV zAWEIFaWyw@!pSpd0+F1|&CLnua9^0-zE#F+*WyaD$}Mdj9V!a`BVwa3*bWA(H6teb zEGT!$iDhgxp3m=)u;Rn2iQ(b35>~|a?c3*9St;{B6%hF*CMHJi>{<5S-d-1@_;03H zbaYsdvBt^~53iBmw6Fl$r6Iy9JZ zyK?%}*|Xj6pOltL&CSgj+uAZhF2g%kL)=wXR)zqnjBkOi2c3R)=EpAD&;n6mc@1cI z)U#ijp@LJ8as!b_I`kfwmzNJlD}H|l42Wcr206*ZWIGw4kx@9n`KdE!j-6wB%N}{I zVAbaP&)A2H3sb?Te!JJt={pgJ^S`9RUM*+4z30wF*Y%|isV^WT`f1N%6-PbU<(LOs+1FW-nC$3Q`2j=WS2Rn z%4gRP$-U8Ka8ys@>Z|gV1vL$4;Zr6=$G|Vv*uo-+fO;1b_K*f1UeGnO_s=ivJ9x03 zq$Q|ER8jl8uHd^52w=zsSN8(iTNqkdZZZsc@C_;u5oB})?HxBqsM2DaATqCceNQAP zHT8nDfO*E{k!Wp+Iivuyk=g*=GFKsS`~DZJ(pK5p*^PYs*gm?h0?Iy=-+Ga%Ki3?p z{uXk#i*_xN-&-7emOTwJXVU&yQ}?;~jaDbA)RYu{oRjRfuG;{a0-CY@ets0_fdyt# zjZ*CP^e(K5{uf?Hn{+-sP4+MQLv~{;s~ejSTs+vr3C+R%dqMZ`)YRKm!MOrtHh6di zjmkM>SNN$;1(^?Q^Qz} z>X%VFN#?-D*lp955s~kYy+88d!!>Ar#U&**eSKU=T+}`0CDXkHuaS+%(WEKrlQ%L&%+7f>q^3M8gGK@+}N*W1=^=9bSHR}FF*wP`J(`WHB zJJEm(x{X++j^8V|*v$FotL#cm00TP&9V$v|TU!nI77HuubupVRy13i9;bGDO&PUJt z{uPt?J#k=*q$36Vf*IdE3xeaIRWeZKR`>QT6BuFx)H_<$M%|_+rL>SAzkW4k=;cih zxD7c;OsqHV%FvVaT|R7TYKoc#zw?$xsV&0thA)6jM?QZJ07f+a*cc|?WI_R>8vgW& z7La!fl&ew6P!~y5NP-s@+>1*~P5&(X=)tCCYG}V|Q0cWfyK-qy_?AQ0fOP4(gL2mc zb+D7d5@40W`SaU+mlt;q@xQ04nD5djxzWq(@If)Lfbcrqpqh%0QYC<8Z(_w502w4N zeWGK3xZWC@D=jOl5z-9+r*2TKQd$(`)y+iYCr1m!V^lJO3Z(|3)sg^%YHiSZ?th>9fKQz`ckX7hhS=W*g`~om%V_M%qIIwM9PmusCKMQ*S$PYa(N97@#Xk$MEk;dBEmS`?VGvb zSBJu+u0ru#g;|luE;PTeGIhBQv^&Rb$|ys>Xnjph4N*3tg$>stk!@sS{`HmeZ$<%*H8lAPNK)L*qr6f(~fy#5l?_e3FvTOy)q=Gfp+#cw9Jer)#TC z<^hYAVJsgMhk#qRn66#Fo@@JlKaQcCARBPr){~Dls3^3nRsn;qMOHdN6E0qmxD+mn zf)2i^h-3=Ib-RejEf8^PN=Iks$k(qyLi&ZqND2Mz5iVNwQu(0Q@4CC6+>%*RwO&F< zAW}A^6=Em=(G7|=3ROD<1l~b+AMG!>ypfw*6LIYcK6e6ouK5GXDCR%HHapz~0Y)() zA>q!02kL-BM1$p$u)mX0W!kV-%6*y#)mbQWK`2XRzVEYt6|!|4iD&fpRMiu(Rw*1J zFzpD8g@t7k)KDk|pl_-_??pr$1(62o>6kFH99@8lWQl-4>xbf&5<*s#R3W~8LRMU;27`-`(D>5FDKL{COnM-ZxA};ZD%#zDrkKJTuX{!xjNG1O*Jyp(k+Mlye>txf);@3o03bg0>tq%a-@#O59#ZZ?E zUQ$^!uV1{Vjuz6-ftHFgU&no@`;3%G6?f?OdtP=5A;Q;1|=MSvlk-EycEVzon5tj6H(wpv&2xwZ2zNf zBhPieriPj#cc?RO-h2b9AFqr|<>@Q2&(iI_e*H>AL1Fv+n2%rJt*R1Cejp-DM;TLN z>3+Ov2ZRD+$XpUbUU^F6diweb2uLe`r+lGv?Y^H76?Gklz0f)yI+53Gv%~_5GbtX9 zZ7Z@LPU4WcPWID-f|B|isiQhMiGnS5JUwjZk^vExvb?#ZR1`|Mi@m@OUO>WwHnL&d zE3?)`XA>a`)j+FzAZ}+pSaYE3G@X~`%}zc+!BC2}qoZT;Yf@gKXe%oRcFZx!EI_=$ zz8r<7kZ69*6ilz_ct&wNRbkl z=r4()Xrr2Z1A@}8Upv9A$Z13HdWw>evur>>K-kt51bJ1;C<2x9=U1E3KPUX^bEt}d zjsy`_{P*u#T?-_38V{gVtDYQ_Fk#k>8x^~{y8dZC#{g?1uYd-88Xs4u&{4>-_i(*n zZvIcFqP*zpiVo+N?)oI9s0h*^fc?Dx;K7tc-{t#V+2^&uHuF&|-6JT-kE8IssOSma z>K!tgB_cag;QI_aiPVCoV{=;FW4$g)ye!@j9_PM2Nj$bG2@2lWP?and4;WByk;68S zvj|jSh{lC-7}o&KaAI7X25cB9nVFhpuHUVvB~b`Y2Vik2{dl13F6fo9eSh&$$|#P% zNO>lpmd0XH_=U24 z*^_$Bg2Td6@gd%&C+?j^nM*ib9}yR9yPSNn<5IG+1}8kzIL0Rybk=jf0dt6mjlKCm z!eK3U>g%P6ytg?}U!=OPN?k)O0lEs!-m_Wt|J1L#9`z<}R;k;dsUwgZ7CuF3`G>zt zy&E0<2;5L1oHq+a9Je8Fb^wUGW3)B8XB&i))_;n38?1pMFBB63P>P{_l~XUauHYT$k6%?BBYO9+#Gj^m3UZS?r7EF@JuJ4Cr2DWJ`kH|#_|;- z7;(UZ2VC$Ihyc&61!%h$m`(3O!44#04;9tgRl!sgs1>4?tvt4Ug_@(gLMu)|hwy_( z;9+SgCj*-xv((ygIU*`Qe8>ZiO3xjDr-W#)$pJ*rcp$zGQC42Xg!@IlRr|wd&t7X8 zT`=Ti-+t8)`WKXe7+K%SRvq0n$>4M-oc;MT`xd?;cB%DdBCGJJ?>)IR5GyziyXTNk z*8GmZQER{0Yc0%NlL~@0mLxG0Bu(V_fs6@&OP{fHi zl>@+6-O#WKuqF=^YjfGazxM|ADZmZYpIPQ&Xiy`-j|+c)4T*wz#2vm8*|gSd9SI=R z)YK@L@i}j7?1l8`%DdqP@t7Gqy8p;Ue##uuAo15mR8$khd4E!Zq9|2-w0O7b&23;;Op zo}NV~dAr_wP1meJk+l&VgMjJ>#5|(Nt8;z!e_UrBmw3JzJ_k2IHAGL@zjIOKB@f^w z)f9xbL$8OVFbp|AGMph)%p7Gs$tyGbw{|v_GLj!m;#E|X^qAWPA*A;Z%Xla%KSWtI zEOY%g`WlSBQZZO2fHYP!No|s3A;`WhJgeC!T+pq=?K zsD3)ffi2?=i8Qb^E2yBi{K~8&{`cW4Gm2zOGviZ={2SElkAXpnfd8&KUN3cE+qP|x z?I63-kj)l=y4KEuZhx6S(+Vh_&~XR3T*42Loq=Sv8;fd0_urzzpL7F>^xWvKjF1?3 z2jJUUU}4HQ8MS?@P@ayWKXxo}+QA@(C5*IsyZ1jMUB^L$>|J~J(opONN&{rPm#X{w zw?Kx|K6&!`^XK~kH34GUKIO=Sc3M>XQE^B*@(fATOJ&-hhAwjRHe%P@oHOLWVc;3} zrMcaRxIgB;oy4E;NJy~br(V2$s{$<*LQ~(42f&3eXC$Sjt^$xA9UGGeMO#{0f@kV( zIgxlSUR({eo|J#o#k-vB-alUjPE6D;e2b8_5SMgb0Mig?+(0t7aQoBKfnsVK3rv4G@vdlPUP zP9-2{r(4h-8M=nRE{_kx(4(WP8~pCw2{?|3h>KJDqPh9*#)e+rMZ9GCcR0XEVu*ay z@jqK%baZsi^XJ6br@knY7tXhH=NgEVJ$V*PvPt(`j>Tt@{Cn7an$p(RMu^4+R#vB# zWp9)ef$o{AW!>%~dUAn3+%7*PyP}M0J0s%3)mtepV8yo+5`?YVI@x-9SDvJ#{PS57 z%Fe*RpnL9I?YnmyATk4O_!ShmB-1>7-g2SVpB_?IEp%aUG)&$oFR7gocN;8z7(wuj z8#Mr4AeGb+s{Y^twb;XWg%b{iWC+%&&JyqrM%KpNxx;V84NDL*&Dvwfj^*U#5wF@X zD$>M5*U%84_0{8hw%qcMnvS6DiYC;SIavtKmfD`Y@aWV7l< z+$p{?D?nJ_<*zNITu$*jdVRGC@-~8GHSpcI!LY?Y)sakrySpSA3*1)N&L-qE0WAN| zFE@E+@G1&Ks}RVQP>0{LWs5)ddtQM$3wEIbi1zxehl8>0>t4K|OI8lU%Chde^htHn zy1xbp-~Eo@;<%YUvYDl5xF8USLigUwFVbwbyNC$T!14hVMo=g%)(kMy3*yt}Cl zCB*f6Zvdo1D2V`5zT)2Mk~|CKVmHZU`pu@$n(>s+gmI)XUAryD~|2n=4Z9N$XSM^9|5^ zAZ~&Z41^|Z5qskR^0@;-C7?ktmLF$2Iu0cXmUF~wgZVGx7O5WATfd6D*2u3Ne z5`s$-=}b*cZDFomE7$qkiOCbqoTnj50~l|{?_Nj2#%Jl<&d{w#&W-9CM(5=nSe{K> zAx=s1QfkeW#wRfz06b!VUA=lWz-I&SdkH010MXIpW#kSLW^lYjQFH~ac$AW&IBIDa z2^E5@6e{9L$r#JU0)KGqn~)biU>bWWy`{apz5DpM#vc*)Dan5bW0F39BvD}9?VKWv zq_K(sLxh%+hL=+10wH8WHQw6Bl&c#GovbRqEEjgv+mVqozBT6N@Dlw$jD;s&4?#k` zapOjqJz-rCKhoXw5P*z2_t2%&0Jhj2p>nT z%%tQhosR(-0F{YEmIpX!>&n!(!shz);e$M3Gg!+#LPB@XeO;O#Cw4a!W&WuZuZM;b zVV+P&#)-U;ZBQbQ3Jt9v>}SU@r|T|Sy>wm4%+J5$?Cd;>&1~s-9}@EOf`Zg5vtQb< z8407i*b=9P6rB%u%gaj;r%-lLql{valChkxT3Q5vX{qHD0vX{knDHo@0wF_<>`rX# z9-~I4@v;ru;eDh`^)wlKAahS)| zDV%@w4s_`p>=89Vu?438demKd3&snsU6YR|Yeqv^`2D;4es@pIg>Bw*EcK?j9fjk4 zKHle^4}AR#TMvhn^RDGTvs(2{P2FX05G0bYpEqyboc;}dK(%-)q(o$=XP4WvQM*EN z$%WwIg*S2eNm>-JCtr3$qgq)0J@unaWm`>MUGks-#L_IcrPtUR6cp}Zz5EF5?(plc z+i6mvEG#6Zr+-sDCM1uYTaCr~fvSmHa7bf;5)_reW}~m5tNSD*9A+aDxcVkx0wKx= zA`V6Fx?5&nPY;ij6eq}Bq=$hU+4rs!Jr^wwL7{_=K%B{OU_oscieSXsy!pQJ&?v^4 z3#-G$sj5sMFf+tW1lC&Uah;RDr=A-5{&j&-PGgiKR4l9VOB(`pI;h;WI4$x0`y-{e zQ3X+ODF3mV>LDtbU3!DBUOjEG%0sS)ym2Zo+D=uyP~Ya&o!yZ(TzEmy;Nu{CF45}8 zj`1Eja)eqARm6>3w)78+4-5>b@o(t7KRGd>p{NL`>orF6Wz<0UrSM1t9cNhOtH}sH*;) z8ai*G2mJ5{;vgWG9C|jO*X=`S0hB9{Ovd&l%mUcZ1THvOOP=Ow0099qb8b2Q4FQ_C zqe$Uxq%O#;?U53ovsFl5c^Y)@50GcqC5)L1eFQ`SQ6@4c6Hep|1z0x*7>`$6Jk9X}7GD&(4swJ&Jbzf7tEL z#eIjKUylGqTwgHapRrCLCO#fn*{YhZXuK4GR~Ijyd2(6NGyQM;vuv@Za~4aupr3D#mYI0_rgfY4=j!%Pl)YZ57y#(%=#xiYsD-xZh&Bo6B5IF=0s=bq zKkd{?V5DT)2Uvqf!<5+yF>a4MB?t3CsfMa9Rlg>5$)Mbwg<$_==^XZC;C%cfvE+lP zc0L>AJta*sJ%0RnSzvlrmNL*1z;o*3>~jTcQ7Tw~Y~_dzoPGuB?)-ZH-E1Mbmp&g$ zw;#BF|2~cmSYSZMb0ihra(7W!a`ejwSa%+mgMA;|Z+>e#3J7Ro5$c@R6J)D{vl2Ax z#A|pBn289p-#pm-9F80^&$!?NSg)`frGDoDOX28@=UXD&vTWSw5AvW9Cz-1xRR5FI z^r1SN!nPx?^6e6FaKXejIb9?5cu9EUCU*9y8#m}75*G9|q(fc1T~s7N#X}(~PpQ+# zK=Wn57d3tT2T)OoFTV26j5>UJH_We~3ODofr+|Zl1LuK@jPu{xg8(8yZ$h#R%akGR zL<-tmyr{gg_}14FOZRDbSPm`$Qa=HQaz@0t=-`HJl9HXR1)K(3ccYYHuZUr(B62gW zAJhrU!SXA25)zK%QM~vOtmGqlSKJO!2 zwX*D~*5v>7i2Jmkk>_`@vF_|`%?U>yKsQiZ`8~8^31<*-;=u}es_(D1{xCeoJCOrk zy?DWFzGA2c7D9D<$BA?yNvx4zUF3 z>c&7Wih4Jy@V(Gsh*4SKzJ(eVI6yqF6Tel0#iL^mubV3;veQqFeqPxS` zwgY)WMI=7qsGVA*@O!R9Gd4GnxNFhvQcq6dmp7XcGuLvbt8~hY*p4jRw-3crEtr zT_Xp}=%|Rh3$~XWl;|>yDmaP94uol8Be%^dyQXMVxrPzgYQd<9KRLdCi?diZgJ zs|6?!4GWB91_%;r`Nedd0KW3@-I$u0nb_D6A7M>P%X%oIr1w+*qItY3N-AKTtH9pj zGdrrU&()n}NIJ4m@aG4q)I=zSh~afC++|m$uzbP9#02~qx8O!DpLw;H^kAXiK@?pI z%4=Sm8>-vd3X*Aq+F*(t3MruhPC*ihUJj>gxMOrSj;Guj{aZ(ypJu{qL7s*4C{Jm=pH?KG)Bf-3W)k4 zG0|;l?5(6bG6k|kM@J`zjuEtM(xMB1a9sqqda&D7-nJB*L;q~`ghb)FFz?lZzmshS zVH%3v%WeCmioqZ71|QzauGAx+?7^dr>{*^F{gV~|Pe^nl@&zV~PdT(22Tass&JsPO z;}@EYGf71mo&jp1Yb~ych@wJ`$xRLnO@a zC;gX&(AVW~nnX5#@_>=do9)jypMHnc8aST}>(;dl%1qwElP^PSWAr zj)b&U0RV0X!o|SumRkqWqh5JEIXU@LXO*un^st##T>{Xsw?ig$a&jV65gQ&GbH}ZA zaZ%A4Xfq>UzN|ib_H1!+G2Ciu!yOYBO1u{L6VoR;sABHlhbhD5GIthT=T0aOWQ2GI zf+8wC%n+u4Y$<-o=m;(F6ww0^@x=}I?tYmijJ`q(uu)Fw}oh~T3RXy z>G2X1Fcrc?-L-l4xS=685puh_0^!!fyeB<=yc(u>BD=ya_n*!hpvwRBGN(39$=Ee- zAD_w&8N4zY$I&~|Wr%lzuuTBee|qbqoE&B_1k|k3-9klBmF3{#Qs2~tV^&>XPfK1O z`1gF3i6$VUFfq?g_8%gq`Q!Y~e)o<-RvbFQvnXKmVF-|r865q|z>GQ<*- zQRe5L+Rv|ZE#LoQ$i7$t=W#Y8s-Xe5o`PoAs+nt_O^ zdNZlAvNGlF<7dwp5YyAYi*}uZ(k1EnGow|MV?0(V?GS9FI~?XR=Ns716H#APL&LVt zJhZ|K>klkki&(G_%fq^H=)wXu?4(?FcA{N6hoq#a7cAb$Hu~2qjjnQJF^#_qpJ!-j zXfd5=4a!A3FwXjVMby~aFF86^Lv!*EuPHqw%$Z?b^MAYm@|knfBMNv&^y|k*U%yUM zP^x=-&kgg37KF#gbE8l&*8j9x*AvYi$Dk%4rw5RYi~`JENWzaGMl{_v zyGH)DfA>`vS71bnAGjDpoWF~Of&aN1AkmeGLlqA}Wm3?Y zu`7%`2rl%w$pQVb+;yQY${6P^K|w`WW>Kh4=z z*F9T6Wu2oKm}{vph)jPU9M4^dcZV3I|W zE1*YtVykR8J!*{%oy)ngF)?&;{<(!Fwzi@8M3PyKJ>H+;!o`d7Xl$6mF9qV4(3&NH z;cH^}NeK3%teMA?I?)`W%L_h~#RpVtQ`PS0FYpo$P^gnSuLr04yU%1=*5waS-5c$F^yt-UH45CKhK2(dS2FZVy)3#;uZSyt zzx_o0N<{Q+9CS!tH{cX3a(bHe5mCu~ZZslgHmIsf)_$mR9o({4qdMnd53L;-;6}#@ zyVNTNof9XhDR=JOV~C@L3t2^1w?|#S^1%30U#|WQ)=BKU<*Q{A`*rI8oA@1WR?9lv z=KgUjo#>_5DVP70oEa{|Nkvwd{)8|bBvD~yQusS_K5=zRDdgDt>6h~ByZY0NCuxN1OO%|P_t2W7> zx~XfqmhK&G%DvQyzsn=Ht{CdYQY&1M>264s{{7~Sn}x-%L94gH%o{db13v#<#=^;Y6QLTKGBqjIms}Yi9W@5a zrf5&ipq-`(^eh+kR%nEEFtI|6C7=S?XZq7iR@A3A07*^H&H0y>dgKiTK{tbAi4C!2uO60GHYrNQA{o9rZ_NpjcjB!Z(rnsO3<~dV*FI(j`Up5Nu-uOBY-V(M7sp@11@Ti-2R-mGQZ*OGBHW2AGfvC%QPs7M3rU7bIo|Ef;#pjG=ecxII)+3m)hXF zKB}k)&5j7>lu<~hilV;oFzF^1h65_c04)~kX;m%lK=gj;vS=Wm6*<=^P8N};Z%a}#-O`xDo> zYNTxr4*p%0Zzhex62%Xe5(rFrYVEeKB>zKXf}~6fn|KXM${&_RAjMqAQ6N0T!eR}A z9gVlipq&HLF`xb;K0E{AyO(u)we>^aLvDF z?|O)DxEtd-JdWf(5@KTcRi6K=v~phm-0wo&Z8o`Y8`T|tzc<#G7fSot91B!D z^n>eG9>UC@Dc=>+1;!?*t8LMMHl=yUe*L!JRysJD&P#S6yG&I*enjBiBhS4RCmmyun zxw*OM@*9cv_8!x(8WMlqXPOumy=a@mJGXl5*);n8VfU_KKks$*)vIIn?x?mSG7MVA zq1;VcBZ!k*@<^WRvkX{JNNXFqqKGbxo;Dz{>hA7eVKe0|XfBseVn)~FJ;fqn(nSZ+ zg4kpc+fnp87J3h@{}c%BmhZe4u&bU9DCv}`kDliK%UIHTzMuN)!{|-oP~liG8yA*!jbsgP!gF=sY#ZUHzJ&6QU%c=cIEC_7H45k}Zkze)4r4 zln>MoAp4QQWFxd(HH!p?Kq<+!#NJAU|$Uva+=QnZu$)*U$MYRlQlc7cQXl2TsM0cu^Gj zS5wd~zzc4y2$Yq7@%t+)E$b?|0Qv2}g|NxII^y>2-3}5iAWp63@h*{Y;Z7?6>_d>? z6A{U7Ve1;7O4Jq1awBIfwYw=W=dCh>w>ak!m#ZTX%~>c*sE(tK7W(h*jZxUD4IYqu zhel-ztsg#7l6MT0%(CI;CR#rLP(ZV6H%4uR`RG3gmN5!VuzwaZcf`imoA1XP6q zDt6zv~v3l#GF6Xh*aj;$Xa#%dxSU zs!N~O>YY2cfpV_W>k#rtJJ6=pi`(02{cyVE!2X@FW}JsE@l)|YyaImHiHb(nVLK!# z$xPWVCYFlgbvxRxRdG2PF>9etu9p{WPHQi2_W@{oq`_-LT}nmwy3C<>y%IarPj)py0uvCDCeX!BhGfYoFeyx2Mw=_S za0X=pM~Q| z2kF1!{9$e-v)5yoqK(_OY2l6>SU&iVU-%vjgEc)x^Zxz-kNGhr-iTm;zHY7aoaaBm%ly_1ck18iyL`Fy$$pmz3Z)^fy-w)rcosOcz$JxeMpDnu@Zjh zA*z+=c#}VM>Q4RrdyMV9J)%h$frzYU#KalfSvn@O;g7u|X;i(>?yBL=4h@|7sg2t@ zKoFo{iTB!%)CK_dIb2s{Ja0YqloQvFpn=eKpmY-wm;$=D-H$gi{d{k!kJ&kC@qPn= zI$$+ic1<3CC;wP?f5mx1%i!&=2mhEQh7~qMn;vk9=H+LmOED5^c0N+T&Q;kgbWDns zJYph78-F?A#CQ@{fY4E2r2vX~shE`VAWGmqg0Q}zmVNO@QI05en`&_t5iK`XO1qCU zHfC_+%|7n;eS<fn*rxCJSSooq+@W?v+as5r^_V;9^#zVqP zdO67l)6-whUwe(G0#*ZUEQHrM>yUMR{8#|gshiIZe~wmgbbK^j-XD170C$#COd z`E{UUHNh-=x1*z1Cu!4RH%$)i%^qAaMC67s%d5dWrl_{ipF<{h!0DgU1zP9!jcai) z#`X<2aMM9Lgeg?-zi!`NS00ZAK@NJ{u!b?XXovd%wVzO>-N)jNpd^p>-&mY3T)~pE< zKVH92h!2GX1O!M-U!>QzE9K(K5`a|Vn@P1_2Vk0G=%f*J7anGa7Bk$}ztv(Ok6>s} z8{kA1H{H2oANLuw?Ch0i%qD*WyCZ2NM9zxf5C(xo%SOTp(Kmf2SSc>73#pJ}hSV4j zNJs?1U8Hq`;-C9EdpqP&H|Mm(45kQn8SB7D)A*yB2iE?)#M8IJ1 z0&{Pai{yGH^V}+=V7Nl7J38)6NixnVZu8{jv;w*=wD;`CNYI`!!qsZg&*^o$tYAkq(EC|=+iucmo)yhhrih(tv8kg~rWE5Y?H3RUU)w*qY z%rNe(FORAjx$6&d6;V-P?gTJDj2j%V|I;!{@_4uVsC}?sl$&L z#ItcN{Djnc?^miut&1G3;kraK*RfB;*$J9KbVtAfJH1YOD@4idu&QGJLu;%7`@W5< zX7D0JI%_BMg^h^bZxdr$0?Bm)|e z*H%~mc+(o?2nd2Ku;8J~?-Arw03*`%40#TM2%!@DnPJ@fv2PjPI0;b`MK|X?11DD?P-cLufn-0ht{g89y?|J4MZk~_DAk~ zMAtC57rC4bi%+Hml@QcqNOc9GIev6+u2_?^5YPZhWXF$<>qxsUoDZZa6ly034iN{y94nLeXQto|4@k+?NZz=u@eQ_K$j3}NbQKT7 z#6&hE+Cr#sK_$9nz<5ky1VvN8KI!l_Wxxj(2q)l8=;9+*=f=iHogpwt1OA0fNoufnKUNwAupotz@U2H~!UKf0=O$K7xEVxo;URn{g{L<@-ioGC zXd(ae-vs33?8C~|p(=vf42&xl-Qq5e=l~b;!NogBu+!WDCg-Z?Iy*Xsi4l}ETVP<$ z<6Y}e3dG$AbzspwA``B{K$tMN)!}jxauF)o4_HQBw733lYdzYGMs36yNkAx)x#vs2 z;{v&AT;syT%F0UG87R|emLn!PQU%66e7aO)6ym(S@R|*G3Nn+%ibIzL;EiEICr)u$ z8MzYBOT|3)8!#K{_;f>}9INH_+R}rEkgI|ML0ur-kah^5-@M5W(h(41N$&%;F1ZI1 zS7njvJG^|+Q%3aBl~Lv;f%CFVc)1S0G<7hHxVix@c3&A1p|yN_}%jgA}LZz$B)0g(p7 z;yD6jq+4Xq?KUg%c$Rc&2^*CM|HoI1M_ZFHv820fsEuPcw#ii(Le-oPH0<;8c*c9@ z{{0)Mewx6&0oAJkvdc7jmE_gb(o<(dx$Ds;%?xr0^v#O{0~uG+d+Fd%ZcI1Icscs- z4t#&b#ZIg@bvSy!t#s?xH)_fL^~Z}9nu|ZCiN)PwxFz5gcC8smt!|Dn6*QW~@CFJ_ zq&%u>d*wCCW|WmIA)S*`M8s2^6})d!>Sa;x7{p3Yab{*_KU`KwE)#=CIcXTIfwU1pzq�lmKZ) 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×jNysy9{O!e$;j-1NMZ6{J>pZ}+9kwx9Liv~al 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 A3jhEB literal 110630 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.5.0", "wheel", - "grpcio-tools~=1.64.0", + "grpcio-tools==1.66.1", "mypy-protobuf", "bandit==1.7.2", ] diff --git a/requirements.txt b/requirements.txt index 754f4c80..b2549da0 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,11 +10,11 @@ apscheduler==3.10.4 # via supa (setup.cfg) autocommand==2.2.2 # via jaraco-text -bcrypt==4.1.3 +bcrypt==4.2.0 # via paramiko -certifi==2024.7.4 +certifi==2024.8.30 # via requests -cffi==1.16.0 +cffi==1.17.1 # via # cryptography # pynacl @@ -28,95 +28,93 @@ click==8.1.7 # via supa (setup.cfg) colorama==0.4.6 # via supa (setup.cfg) -cryptography==42.0.8 +cryptography==43.0.1 # via paramiko -grpcio==1.64.1 +grpcio==1.66.1 # via # grpcio-tools # supa (setup.cfg) -grpcio-tools==1.64.1 +grpcio-tools==1.66.1 # via supa (setup.cfg) htmlgen==2.0.0 # via supa (setup.cfg) -idna==3.7 +idna==3.10 # via requests -inflect==7.3.1 - # via jaraco-text -jaraco-collections==5.0.1 +jaraco-collections==5.1.0 # via cherrypy -jaraco-context==5.3.0 +jaraco-context==6.0.1 # via jaraco-text -jaraco-functools==4.0.1 +jaraco-functools==4.0.2 # via # cheroot # jaraco-text # tempora -jaraco-text==3.14.0 +jaraco-text==4.0.0 # via jaraco-collections -lxml==5.2.2 +lxml==5.3.0 # via supa (setup.cfg) lxml-stubs==0.5.1 # via supa (setup.cfg) -more-itertools==10.2.0 +more-itertools==10.4.0 # via # cheroot # cherrypy - # inflect # jaraco-functools # jaraco-text # supa (setup.cfg) mypy-protobuf==3.6.0 # via supa (setup.cfg) -paramiko==3.4.0 +paramiko==3.5.0 # via supa (setup.cfg) portend==3.2.0 # via cherrypy -protobuf==5.27.2 +protobuf==5.27.5 # via # grpcio-tools # mypy-protobuf # supa (setup.cfg) pycparser==2.22 # via cffi -pydantic==2.8.2 +pydantic==2.9.2 # via pydantic-settings -pydantic-core==2.20.1 +pydantic-core==2.23.4 # via pydantic -pydantic-settings==2.3.4 +pydantic-settings==2.4.0 # via supa (setup.cfg) pynacl==1.5.0 # via paramiko +python-dateutil==2.9.0.post0 + # via tempora python-dotenv==1.0.1 # via pydantic-settings -python-statemachine==2.3.4 +python-statemachine==2.3.6 # via supa (setup.cfg) -pytz==2024.1 +pytz==2024.2 # via apscheduler requests==2.32.3 # via supa (setup.cfg) six==1.16.0 - # via apscheduler -sqlalchemy==2.0.31 + # via + # apscheduler + # python-dateutil +sqlalchemy==2.0.35 # via supa (setup.cfg) -structlog==24.2.0 +structlog==24.4.0 # via supa (setup.cfg) tabulate==0.9.0 # via supa (setup.cfg) -tempora==5.6.0 +tempora==5.7.0 # via portend -typeguard==4.3.0 - # via inflect -types-protobuf==5.27.0.20240626 +types-protobuf==5.28.0.20240924 # via mypy-protobuf typing-extensions==4.12.2 # via # pydantic # pydantic-core # sqlalchemy - # typeguard tzlocal==5.2 # via apscheduler -urllib3==2.2.2 +urllib3==2.2.3 # via requests zc-lockfile==3.0.post1 # via cherrypy diff --git a/setup.cfg b/setup.cfg index 4b232922..549e7639 100644 --- a/setup.cfg +++ b/setup.cfg @@ -28,21 +28,21 @@ package_dir = = src include_package_data = true python_requires = >= 3.11 install_requires = - grpcio ~= 1.64.0 # version number should match that of `grpcio-tools` in `pyproject.toml` - grpcio-tools ~= 1.64.0 # version number should match that of `grpcio-tools` in `pyproject.toml` + grpcio == 1.66.1 # version number should match that of `grpcio-tools` in `pyproject.toml` + grpcio-tools == 1.66.1 # version number should match that of `grpcio-tools` in `pyproject.toml` mypy-protobuf ~= 3.6.0 - structlog ~= 24.2.0 + structlog ~= 24.4.0 colorama ~= 0.4.3 click ~= 8.0 - pydantic-settings ~= 2.3.3 + pydantic-settings ~= 2.4.0 python-statemachine ~= 2.3.1 - sqlalchemy ~= 2.0.30 + sqlalchemy ~= 2.0.32 apscheduler ~= 3.10.4 tabulate ~= 0.9.0 - more-itertools ~= 10.2.0 - protobuf ~= 5.27.1 + more-itertools ~= 10.4.0 + protobuf ~= 5.27.0 requests ~= 2.0 - lxml ~= 5.2.1 + lxml ~= 5.3.0 lxml-stubs ~= 0.5.0 cherrypy ~= 18.0 htmlgen ~= 2.0.0 @@ -62,11 +62,11 @@ dev = flake8-print flake8-rst # Allows run flake8 on code snippets in docstrings or rst files flake8-string-format - grpcio-tools ~= 1.64.0 # version number should match that of `grpcio-tools` in `pyproject.toml` + grpcio-tools == 1.66.1 # version number should match that of `grpcio-tools` in `pyproject.toml` grpc-stubs >= 1.53.0 pytest-grpc isort - mypy >= 0.930, <= 1.0.1 + mypy protobuf types-pytz types-tabulate diff --git a/src/supa/__init__.py b/src/supa/__init__.py index 7685c163..f1781ef7 100644 --- a/src/supa/__init__.py +++ b/src/supa/__init__.py @@ -308,7 +308,7 @@ def resolve_database_file(database_file: Union[Path, str]) -> Path: return resolved_path -settings = Settings(_env_file=resolve_env_file()) +settings = Settings(_env_file=resolve_env_file()) # type: ignore[call-arg] """Application wide settings. Initially this only has the settings, @@ -450,7 +450,7 @@ def init_app(with_scheduler: bool = True) -> None: "`database_file` did not exist. Created new SQLite DB file. Is this really what you wanted?", database_file=database_file, ) - engine = create_engine(f"sqlite:///{database_file}") + engine = create_engine(f"sqlite:///{database_file}", echo=False) import supa.db.session diff --git a/src/supa/connection/fsm.py b/src/supa/connection/fsm.py index 54c7c27c..664af47e 100644 --- a/src/supa/connection/fsm.py +++ b/src/supa/connection/fsm.py @@ -141,6 +141,7 @@ class DataPlaneStateMachine(SuPAStateMachine): activate_request = Deactivated.to(Activating) | AutoStart.to(Activating) activate_confirmed = Activating.to(Activated) auto_end_request = Activated.to(AutoEnd) + cancel_auto_end_request = AutoEnd.to(Activated) deactivate_request = Activated.to(Deactivating) | AutoEnd.to(Deactivating) | AutoStart.to(Deactivated) deactivate_confirm = Deactivating.to(Deactivated) activate_failed = Activating.to(ActivateFailed) diff --git a/src/supa/connection/provider/server.py b/src/supa/connection/provider/server.py index 39a5654d..3e00d5c7 100644 --- a/src/supa/connection/provider/server.py +++ b/src/supa/connection/provider/server.py @@ -30,7 +30,6 @@ ) from supa.connection.fsm import LifecycleStateMachine, ProvisionStateMachine, ReservationStateMachine from supa.db import model -from supa.db.model import Request from supa.grpc_nsi import connection_provider_pb2_grpc from supa.grpc_nsi.connection_common_pb2 import GenericAcknowledgment, Header, Schedule from supa.grpc_nsi.connection_provider_pb2 import ( @@ -64,7 +63,7 @@ from supa.job.shared import Job, NsiException from supa.util.converter import to_response_header, to_service_exception from supa.util.nsi import parse_stp -from supa.util.timestamp import as_utc_timestamp, current_timestamp, is_specified +from supa.util.timestamp import EPOCH, as_utc_timestamp, current_timestamp, is_specified from supa.util.type import RequestType logger = structlog.get_logger(__name__) @@ -124,7 +123,7 @@ def _validate_schedule(pb_schedule: Schedule) -> None: start_time = as_utc_timestamp(pb_schedule.start_time) end_time = as_utc_timestamp(pb_schedule.end_time) if pb_schedule.end_time: - if end_time <= current_timestamp(): + if end_time != EPOCH and end_time <= current_timestamp(): err_msg = "End time lies in the past." logger.info(err_msg, end_time=end_time.isoformat()) raise NsiException( @@ -132,7 +131,7 @@ def _validate_schedule(pb_schedule: Schedule) -> None: err_msg, {Variable.END_TIME: end_time.isoformat()}, ) - if start_time and end_time <= start_time: + if end_time != EPOCH and end_time <= start_time: err_msg = "End time cannot come before start time." logger.info( err_msg, @@ -169,7 +168,7 @@ def _register_request( with db_session() as session: session.add( - Request( + model.Request( correlation_id=UUID(request.header.correlation_id), connection_id=connection_id, request_type=request_type.value, @@ -229,6 +228,7 @@ def Reserve(self, pb_reserve_request: ReserveRequest, context: ServicerContext) log.debug("Sending response.", response_message=reserve_response) return reserve_response + reservation: model.Reservation if not pb_reserve_request.connection_id: # new reservation pb_header: Header = pb_reserve_request.header pb_path_trace: PathTrace = pb_header.path_trace @@ -239,6 +239,7 @@ def Reserve(self, pb_reserve_request: ReserveRequest, context: ServicerContext) end_time = as_utc_timestamp(pb_schedule.end_time) reservation = model.Reservation( + version=pb_criteria.version, protocol_version=pb_header.protocol_version, requester_nsa=pb_header.requester_nsa, provider_nsa=pb_header.provider_nsa, @@ -248,27 +249,35 @@ def Reserve(self, pb_reserve_request: ReserveRequest, context: ServicerContext) ), global_reservation_id=pb_reserve_request.global_reservation_id, description=pb_reserve_request.description if pb_reserve_request.description else None, - version=pb_criteria.version, ) - if is_specified(start_time): - reservation.start_time = start_time - if is_specified(end_time): - reservation.end_time = end_time - reservation.bandwidth = pb_ptps.capacity - reservation.directionality = Directionality.Name(pb_ptps.directionality) - reservation.symmetric = pb_ptps.symmetric_path - src_stp = parse_stp(pb_ptps.source_stp) - reservation.src_domain = src_stp.domain - reservation.src_topology = src_stp.topology - reservation.src_stp_id = src_stp.stp_id - reservation.src_vlans = str(src_stp.vlan_ranges) + reservation.schedules.append( + model.Schedule( + version=pb_criteria.version, + start_time=start_time if is_specified(start_time) else None, + end_time=end_time if is_specified(end_time) else None, + ) + ) + # TODO: select service type specific table based on pb_criteria.service_type + src_stp = parse_stp(pb_ptps.source_stp) dst_stp = parse_stp(pb_ptps.dest_stp) - reservation.dst_domain = dst_stp.domain - reservation.dst_topology = dst_stp.topology - reservation.dst_stp_id = dst_stp.stp_id - reservation.dst_vlans = str(dst_stp.vlan_ranges) + reservation.p2p_criteria_list.append( + model.P2PCriteria( + version=pb_criteria.version, + bandwidth=pb_ptps.capacity, + directionality=Directionality.Name(pb_ptps.directionality), + symmetric=pb_ptps.symmetric_path, + src_domain=src_stp.domain, + src_topology=src_stp.topology, + src_stp_id=src_stp.stp_id, + src_vlans=str(src_stp.vlan_ranges), + dst_domain=dst_stp.domain, + dst_topology=dst_stp.topology, + dst_stp_id=dst_stp.stp_id, + dst_vlans=str(dst_stp.vlan_ranges), + ) + ) for k, v in pb_ptps.parameters.items(): reservation.parameters.append(model.Parameter(key=k, value=v)) @@ -298,9 +307,136 @@ def Reserve(self, pb_reserve_request: ReserveRequest, context: ServicerContext) connection_id = reservation.connection_id # Can't reference it outside the session, hence new var. log = log.bind(connection_id=str(connection_id)) - else: - log = log.bind(connection_id=pb_reserve_request.connection_id) - # TODO modify reservation (else clause) + + else: # modify reservation + connection_id = UUID(pb_reserve_request.connection_id) + log = log.bind(connection_id=str(connection_id)) + + from supa.db.session import db_session + + with db_session() as session: + reservation = ( + session.query(model.Reservation) # type: ignore[assignment] + .filter(model.Reservation.connection_id == connection_id) + .one_or_none() + ) + + nsi_exception: Union[NsiException, None] = None + if not reservation: + log.info("Connection ID does not exist") + nsi_exception = NsiException( + ReservationNonExistent, str(connection_id), {Variable.CONNECTION_ID: str(connection_id)} + ) + elif ( + reservation.reservation_state != ReservationStateMachine.ReserveStart.value + or reservation.lifecycle_state != LifecycleStateMachine.Created.value + ): + log.info( + "Connection not in modifiable state", + reservation_state=reservation.reservation_state, + lifecycle_state=reservation.lifecycle_state, + ) + nsi_exception = NsiException( + InvalidTransition, + str(connection_id), + { + Variable.CONNECTION_ID: str(connection_id), + Variable.RESERVATION_STATE: reservation.reservation_state, + Variable.LIFECYCLE_STATE: reservation.lifecycle_state, + }, + ) + else: + old_version = reservation.version + old_start_time = reservation.schedules[-1].start_time + if pb_reserve_request.criteria.version != 0: + new_version = pb_reserve_request.criteria.version + else: + # cannot distinguish between unset (defaults to 0) and set to 0, + # in the latter case we wrongly treat it as unset as well + new_version = old_version + 1 + new_start_time = as_utc_timestamp(pb_reserve_request.criteria.schedule.start_time) + new_end_time = as_utc_timestamp(pb_reserve_request.criteria.schedule.end_time) + new_bandwidth = pb_reserve_request.criteria.ptps.capacity + if old_version + 1 != new_version: + log.info( + "version may only be incremented by 1", + old_version=old_version, + new_version=new_version, + ) + nsi_exception = NsiException(UnsupportedParameter, f"version={new_version}") + elif ( + old_start_time < current_timestamp() + and new_start_time > current_timestamp() + and old_start_time != new_start_time + ): + log.info( + "cannot change start time when reservation already started", + old_start_time=old_start_time.isoformat(), + new_start_time=new_start_time.isoformat(), + ) + nsi_exception = NsiException(UnsupportedParameter, f"start_time={new_start_time.isoformat()}") + if nsi_exception: + reserve_response = ReserveResponse( + header=to_response_header(pb_reserve_request.header), + service_exception=to_service_exception(nsi_exception, connection_id), + ) + log.debug("Sending response.", response_message=reserve_response) + return reserve_response # return NSI Exception to requester + + # now that the parameters are sane, process the modify request + try: + rsm = ReservationStateMachine(reservation, state_field="reservation_state") + rsm.reserve_request() + except TransitionNotAllowed as tna: + log.info("Not scheduling ReserveJob", reason=str(tna)) + reserve_response = ReserveResponse( + header=to_response_header(pb_reserve_request.header), + service_exception=to_service_exception( + NsiException( + InvalidTransition, + str(tna), + { + Variable.CONNECTION_ID: str(connection_id), + Variable.RESERVATION_STATE: reservation.reservation_state, + }, + ), + connection_id, + ), + ) + return reserve_response + + log.info( + "modify reservation", + version=new_version, + start_time=new_start_time.isoformat(), + end_time=new_end_time.isoformat(), + bandwidth=new_bandwidth, + ) + schedule = model.Schedule( + version=new_version, + start_time=new_start_time if is_specified(new_start_time) else None, + end_time=new_end_time if is_specified(new_end_time) else None, + ) + p2p_criteria = model.P2PCriteria( + # connection_id=connection_id, + version=new_version, + bandwidth=new_bandwidth, + directionality=reservation.p2p_criteria.directionality, + symmetric=reservation.p2p_criteria.symmetric, + src_domain=reservation.p2p_criteria.src_domain, + src_topology=reservation.p2p_criteria.src_topology, + src_stp_id=reservation.p2p_criteria.src_stp_id, + src_vlans=reservation.p2p_criteria.src_vlans, + src_selected_vlan=reservation.p2p_criteria.src_selected_vlan, + dst_domain=reservation.p2p_criteria.dst_domain, + dst_topology=reservation.p2p_criteria.dst_topology, + dst_stp_id=reservation.p2p_criteria.dst_stp_id, + dst_vlans=reservation.p2p_criteria.dst_vlans, + dst_selected_vlan=reservation.p2p_criteria.dst_selected_vlan, + ) + reservation.version = new_version + reservation.schedules.append(schedule) + reservation.p2p_criteria_list.append(p2p_criteria) from supa import scheduler @@ -312,9 +448,6 @@ def Reserve(self, pb_reserve_request: ReserveRequest, context: ServicerContext) reserve_response = ReserveResponse( header=to_response_header(pb_reserve_request.header), connection_id=str(connection_id) ) - # - # TODO: add reservation version to timeout job so we do not accidentally timeout a modify - # log.info( "Schedule reserve timeout", job="ReserveTimeoutJob", @@ -346,6 +479,16 @@ def ReserveCommit( log = logger.bind(method="ReserveCommit", connection_id=str(connection_id)) log.debug("Received message.", request_message=pb_reserve_commit_request) + try: + _validate_message_header(pb_reserve_commit_request.header) + except NsiException as nsi_exc: + reserve_commit_response = GenericAcknowledgment( + header=to_response_header(pb_reserve_commit_request.header), + service_exception=to_service_exception(nsi_exc), + ) + log.debug("Sending response.", response_message=reserve_commit_response) + return reserve_commit_response + from supa.db.session import db_session with db_session() as session: @@ -431,6 +574,16 @@ def ReserveAbort(self, pb_reserve_abort_request: GenericRequest, context: Servic log = logger.bind(method="ReserveAbort", connection_id=str(connection_id)) log.debug("Received message.", request_message=pb_reserve_abort_request) + try: + _validate_message_header(pb_reserve_abort_request.header) + except NsiException as nsi_exc: + reserve_abort_response = GenericAcknowledgment( + header=to_response_header(pb_reserve_abort_request.header), + service_exception=to_service_exception(nsi_exc), + ) + log.debug("Sending response.", response_message=reserve_abort_response) + return reserve_abort_response + from supa.db.session import db_session with db_session() as session: @@ -449,29 +602,43 @@ def ReserveAbort(self, pb_reserve_abort_request: GenericRequest, context: Servic ), ) else: - try: - rsm = ReservationStateMachine(reservation, state_field="reservation_state") - rsm.reserve_abort_request() - except TransitionNotAllowed as tna: - log.info("Not scheduling ReserveAbortJob", reason=str(tna)) + if len(reservation.p2p_criteria_list) <= 1: + log.info("Cannot abort an initial reserve request, abort only allowed on modify") reserve_abort_response = GenericAcknowledgment( header=to_response_header(pb_reserve_abort_request.header), service_exception=to_service_exception( NsiException( InvalidTransition, - str(tna), - { - Variable.CONNECTION_ID: str(connection_id), - Variable.RESERVATION_STATE: reservation.reservation_state, - }, + "cannot abort an initial reserve request, abort only allowed on modify", + {Variable.CONNECTION_ID: str(connection_id)}, ), connection_id, ), ) else: - reserve_abort_response = GenericAcknowledgment( - header=to_response_header(pb_reserve_abort_request.header) - ) + try: + rsm = ReservationStateMachine(reservation, state_field="reservation_state") + rsm.reserve_abort_request() + except TransitionNotAllowed as tna: + log.info("Not scheduling ReserveAbortJob", reason=str(tna)) + reserve_abort_response = GenericAcknowledgment( + header=to_response_header(pb_reserve_abort_request.header), + service_exception=to_service_exception( + NsiException( + InvalidTransition, + str(tna), + { + Variable.CONNECTION_ID: str(connection_id), + Variable.RESERVATION_STATE: reservation.reservation_state, + }, + ), + connection_id, + ), + ) + else: + reserve_abort_response = GenericAcknowledgment( + header=to_response_header(pb_reserve_abort_request.header) + ) if not reserve_abort_response.service_exception.connection_id: from supa import scheduler @@ -501,6 +668,16 @@ def Provision(self, pb_provision_request: GenericRequest, context: ServicerConte log = logger.bind(method="Provision", connection_id=str(connection_id)) log.debug("Received message.", request_message=pb_provision_request) + try: + _validate_message_header(pb_provision_request.header) + except NsiException as nsi_exc: + provision_response = GenericAcknowledgment( + header=to_response_header(pb_provision_request.header), + service_exception=to_service_exception(nsi_exc), + ) + log.debug("Sending response.", response_message=provision_response) + return provision_response + from supa.db.session import db_session with db_session() as session: @@ -534,11 +711,11 @@ def Provision(self, pb_provision_request: GenericRequest, context: ServicerConte connection_id, ), ) - elif (current_time := current_timestamp()) > reservation.end_time: + elif (current_time := current_timestamp()) > reservation.schedule.end_time: log.info( "Cannot provision a reservation that is passed end time", current_time=current_time.isoformat(), - end_time=reservation.end_time.isoformat(), + end_time=reservation.schedule.end_time.isoformat(), ) provision_response = GenericAcknowledgment( header=to_response_header(pb_provision_request.header), @@ -604,6 +781,16 @@ def Release(self, pb_release_request: GenericRequest, context: ServicerContext) log = logger.bind(method="Release", connection_id=str(connection_id)) log.debug("Received message.", request_message=pb_release_request) + try: + _validate_message_header(pb_release_request.header) + except NsiException as nsi_exc: + release_response = GenericAcknowledgment( + header=to_response_header(pb_release_request.header), + service_exception=to_service_exception(nsi_exc), + ) + log.debug("Sending response.", response_message=release_response) + return release_response + from supa.db.session import db_session with db_session() as session: @@ -637,11 +824,11 @@ def Release(self, pb_release_request: GenericRequest, context: ServicerContext) connection_id, ), ) - elif (current_time := current_timestamp()) > reservation.end_time: + elif (current_time := current_timestamp()) > reservation.schedule.end_time: log.info( "Cannot release a reservation that is passed end time", current_time=current_time.isoformat(), - end_time=reservation.end_time.isoformat(), + end_time=reservation.schedule.end_time.isoformat(), ) release_response = GenericAcknowledgment( header=to_response_header(pb_release_request.header), @@ -706,6 +893,16 @@ def Terminate(self, pb_terminate_request: GenericRequest, context: ServicerConte log = logger.bind(method="Terminate", connection_id=str(connection_id)) log.debug("Received message.", request_message=pb_terminate_request) + try: + _validate_message_header(pb_terminate_request.header) + except NsiException as nsi_exc: + terminate_response = GenericAcknowledgment( + header=to_response_header(pb_terminate_request.header), + service_exception=to_service_exception(nsi_exc), + ) + log.debug("Sending response.", response_message=terminate_response) + return terminate_response + from supa.db.session import db_session with db_session() as session: diff --git a/src/supa/db/model.py b/src/supa/db/model.py index 2fcc9e0d..8172c6f4 100644 --- a/src/supa/db/model.py +++ b/src/supa/db/model.py @@ -203,6 +203,7 @@ class Reservation(Base): # attribute comes from. connection_id: Mapped[uuid.UUID] = mapped_column(primary_key=True, default=uuid.uuid4) + version: Mapped[int] # header protocol_version: Mapped[str] requester_nsa: Mapped[str] @@ -226,48 +227,17 @@ def correlation_id(self) -> uuid.UUID: global_reservation_id: Mapped[str] description: Mapped[Optional[str]] - # reservation request criteria - version: Mapped[int] - - # schedule - start_time: Mapped[datetime] = mapped_column(default=current_timestamp, index=True) - end_time: Mapped[datetime] = mapped_column(default=NO_END_DATE, index=True) - - # p2p - bandwidth: Mapped[int] = mapped_column(comment="Mbps") - directionality = mapped_column(Enum("BI_DIRECTIONAL", "UNI_DIRECTIONAL"), nullable=False, default="BI_DIRECTIONAL") - symmetric: Mapped[bool] - - src_domain: Mapped[str] - src_topology: Mapped[str] - src_stp_id: Mapped[str] = mapped_column(comment="uniq identifier of STP in the topology") - src_vlans: Mapped[str] - - # `src_vlans` might be a range of VLANs in case the reservation specified an unqualified STP. - # In that case it is up to the reservation process to select an available VLAN out of the - # supplied range. - # This also explain the difference in column types. A range is expressed as a string (eg "1-10"). - # A single VLAN is always a single number, hence integer. - src_selected_vlan: Mapped[Optional[int]] - dst_domain: Mapped[str] - dst_topology: Mapped[str] - dst_stp_id: Mapped[str] = mapped_column(comment="uniq identifier of STP in the topology") - dst_vlans: Mapped[str] - - # See `src_selected_vlan` - dst_selected_vlan: Mapped[Optional[int]] - # internal state keeping reservation_state = mapped_column( Enum(*[s.value for s in ReservationStateMachine.states]), nullable=False, - default=ReservationStateMachine.ReserveStart.value, + default=ReservationStateMachine.ReserveStart.value, # type: ignore[has-type] ) provision_state = mapped_column(Enum(*[s.value for s in ProvisionStateMachine.states])) lifecycle_state = mapped_column( Enum(*[s.value for s in LifecycleStateMachine.states]), nullable=False, - default=LifecycleStateMachine.Created.value, + default=LifecycleStateMachine.Created.value, # type: ignore[has-type] ) data_plane_state = mapped_column(Enum(*[s.value for s in DataPlaneStateMachine.states])) # need this because the reservation state machine is missing a state @@ -301,6 +271,42 @@ def correlation_id(self) -> uuid.UUID: passive_deletes=True, ) # one-to-one + schedules = relationship( + "Schedule", + order_by="asc(Schedule.version)", + back_populates="reservation", + cascade="all, delete-orphan", + passive_deletes=True, + ) + + schedule = relationship( + "Schedule", + uselist=False, + primaryjoin="""and_( + Reservation.connection_id==Schedule.connection_id, + Reservation.version==Schedule.version + )""", + viewonly=True, + ) + + p2p_criteria_list = relationship( + "P2PCriteria", + order_by="asc(P2PCriteria.version)", + back_populates="reservation", + cascade="all, delete-orphan", + passive_deletes=True, + ) + + p2p_criteria = relationship( + "P2PCriteria", + uselist=False, + primaryjoin="""and_( + Reservation.connection_id==P2PCriteria.connection_id, + Reservation.version==P2PCriteria.version + )""", + viewonly=True, + ) + notification = relationship( "Notification", back_populates="reservation", @@ -315,8 +321,65 @@ def correlation_id(self) -> uuid.UUID: passive_deletes=True, ) + +class Schedule(Base): + """DB mapping for versioned schedules.""" + + __tablename__ = "schedules" + + schedule_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) + connection_id: Mapped[uuid.UUID] = mapped_column(ForeignKey(Reservation.connection_id, ondelete="CASCADE")) + version: Mapped[int] = mapped_column() + UniqueConstraint(connection_id, version) + + # schedule + start_time: Mapped[datetime] = mapped_column(default=current_timestamp, index=True) + end_time: Mapped[datetime] = mapped_column(default=NO_END_DATE, index=True) __table_args__ = (CheckConstraint(start_time < end_time),) + reservation = relationship( + Reservation, + back_populates="schedules", + ) # (cascades defined in parent) + + +class P2PCriteria(Base): + """DB mapping for versioned P2P criteria.""" + + __tablename__ = "p2p_criteria" + + p2p_criteria_id: Mapped[int] = mapped_column(primary_key=True, autoincrement=True) + connection_id: Mapped[uuid.UUID] = mapped_column(ForeignKey(Reservation.connection_id, ondelete="CASCADE")) + version: Mapped[int] = mapped_column() + UniqueConstraint(connection_id, version) + + # p2p criteria + bandwidth: Mapped[int] = mapped_column(comment="Mbps") + directionality = mapped_column(Enum("BI_DIRECTIONAL", "UNI_DIRECTIONAL"), nullable=False, default="BI_DIRECTIONAL") + symmetric: Mapped[bool] + + src_domain: Mapped[str] + src_topology: Mapped[str] + src_stp_id: Mapped[str] = mapped_column(comment="uniq identifier of STP in the topology") + src_vlans: Mapped[str] + # `src_vlans` might be a range of VLANs in case the reservation specified an unqualified STP. + # In that case it is up to the reservation process to select an available VLAN out of the + # supplied range. + # This also explain the difference in column types. A range is expressed as a string (eg "1-10"). + # A single VLAN is always a single number, hence integer. + src_selected_vlan: Mapped[Optional[int]] + dst_domain: Mapped[str] + dst_topology: Mapped[str] + dst_stp_id: Mapped[str] = mapped_column(comment="uniq identifier of STP in the topology") + dst_vlans: Mapped[str] + # See `src_selected_vlan` + dst_selected_vlan: Mapped[Optional[int]] + + reservation = relationship( + Reservation, + back_populates="p2p_criteria_list", + ) # (cascades defined in parent) + def src_stp(self, selected: bool = False) -> nsi.Stp: """Return :class:`~supa.util.nsi.STP` instance for src data. diff --git a/src/supa/job/dataplane.py b/src/supa/job/dataplane.py index edb1de7d..a701551b 100644 --- a/src/supa/job/dataplane.py +++ b/src/supa/job/dataplane.py @@ -23,7 +23,7 @@ from supa.connection import requester from supa.connection.error import GenericInternalError, Variable from supa.connection.fsm import DataPlaneStateMachine, LifecycleStateMachine -from supa.db.model import Connection, Reservation, connection_to_dict +from supa.db.model import Connection, Reservation, Schedule, connection_to_dict from supa.grpc_nsi.connection_requester_pb2 import DataPlaneStateChangeRequest, ErrorEventRequest from supa.job.shared import Job, NsiException, register_notification from supa.util.converter import to_activate_failed_event, to_data_plane_state_change_request, to_deactivate_failed_event @@ -89,7 +89,7 @@ def __call__(self) -> None: else: dpsm.activate_confirmed() request = to_data_plane_state_change_request(reservation) - if auto_end_job := ((end_time := reservation.end_time) != NO_END_DATE): + if auto_end_job := ((end_time := reservation.schedule.end_time) != NO_END_DATE): dpsm.auto_end_request() stub = requester.get_stub() @@ -123,10 +123,11 @@ def recover(cls: Type[ActivateJob]) -> List[Job]: connection_ids: List[UUID] = list( flatten( session.query(Reservation.connection_id) + .join(Schedule) .filter( Reservation.lifecycle_state == LifecycleStateMachine.Created.value, Reservation.data_plane_state == DataPlaneStateMachine.Activating.value, - Reservation.end_time > current_timestamp(), + Schedule.end_time > current_timestamp(), ) .all() ) @@ -140,7 +141,7 @@ def trigger(self) -> DateTrigger: """Trigger for ActivateJob's. Returns: - DateTrigger set to start_time of reservation. + DateTrigger set to run immediately. """ return DateTrigger(run_date=None) # Run immediately @@ -248,8 +249,7 @@ def trigger(self) -> DateTrigger: """Trigger for DeactivateJob's. Returns: - DateTrigger set to None if (run immediately) if reservation is released or not active anymore or - to end_time otherwise (end_time can be in the past when recovering). + DateTrigger set to run immediately. """ return DateTrigger(run_date=None) # Run immediately @@ -304,10 +304,13 @@ def recover(cls: Type[AutoStartJob]) -> List[Job]: connection_ids: List[UUID] = list( flatten( session.query(Reservation.connection_id) + .join(Schedule) .filter( Reservation.lifecycle_state == LifecycleStateMachine.Created.value, Reservation.data_plane_state == DataPlaneStateMachine.AutoStart.value, - Reservation.end_time > current_timestamp(), + Reservation.connection_id == Schedule.connection_id, + Reservation.version == Schedule.version, + Schedule.end_time > current_timestamp(), ) .all() ) @@ -327,7 +330,7 @@ def trigger(self) -> DateTrigger: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == self.connection_id).one() - return DateTrigger(run_date=reservation.start_time) + return DateTrigger(run_date=reservation.schedule.start_time) class AutoEndJob(Job): @@ -398,4 +401,4 @@ def trigger(self) -> DateTrigger: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == self.connection_id).one() - return DateTrigger(run_date=reservation.end_time) + return DateTrigger(run_date=reservation.schedule.end_time) diff --git a/src/supa/job/provision.py b/src/supa/job/provision.py index 856785a3..33b00864 100644 --- a/src/supa/job/provision.py +++ b/src/supa/job/provision.py @@ -24,7 +24,7 @@ from supa.connection import requester from supa.connection.error import GenericConnectionError, GenericInternalError, InvalidTransition, Variable from supa.connection.fsm import DataPlaneStateMachine, LifecycleStateMachine, ProvisionStateMachine -from supa.db.model import Connection, Reservation, connection_to_dict +from supa.db.model import Connection, Reservation, Schedule, connection_to_dict from supa.grpc_nsi.connection_requester_pb2 import ErrorRequest, GenericConfirmedRequest from supa.job.dataplane import ActivateJob, AutoEndJob, AutoStartJob, DeactivateJob from supa.job.shared import Job, NsiException, register_result @@ -111,7 +111,7 @@ def __call__(self) -> None: ), self.connection_id, ) - elif current_timestamp() < reservation.start_time: + elif current_timestamp() < reservation.schedule.start_time: try: dpsm.auto_start_request() except TransitionNotAllowed as tna: @@ -128,7 +128,7 @@ def __call__(self) -> None: self.connection_id, ) else: - start_time = reservation.start_time + start_time = reservation.schedule.start_time request = to_generic_confirmed_request(reservation) psm.provision_confirmed() else: @@ -187,10 +187,11 @@ def recover(cls: Type[ProvisionJob]) -> List[Job]: connection_ids: List[UUID] = list( flatten( session.query(Reservation.connection_id) + .join(Schedule) .filter( Reservation.lifecycle_state == LifecycleStateMachine.Created.value, Reservation.provision_state == ProvisionStateMachine.Provisioning.value, - Reservation.end_time > current_timestamp(), + Schedule.end_time > current_timestamp(), ) .all() ) diff --git a/src/supa/job/reserve.py b/src/supa/job/reserve.py index 438e2c1d..0e85806a 100644 --- a/src/supa/job/reserve.py +++ b/src/supa/job/reserve.py @@ -38,8 +38,23 @@ UnknownStp, Variable, ) -from supa.connection.fsm import LifecycleStateMachine, ProvisionStateMachine, ReservationStateMachine -from supa.db.model import Connection, Path, PathTrace, Reservation, Segment, Topology, connection_to_dict +from supa.connection.fsm import ( + DataPlaneStateMachine, + LifecycleStateMachine, + ProvisionStateMachine, + ReservationStateMachine, +) +from supa.db.model import ( + Connection, + P2PCriteria, + Path, + PathTrace, + Reservation, + Schedule, + Segment, + Topology, + connection_to_dict, +) from supa.grpc_nsi.connection_requester_pb2 import ( ErrorRequest, GenericConfirmedRequest, @@ -47,6 +62,7 @@ ReserveConfirmedRequest, ReserveTimeoutRequest, ) +from supa.job.dataplane import AutoEndJob, AutoStartJob from supa.job.shared import Job, NsiException, register_notification, register_result from supa.util.bandwidth import format_bandwidth from supa.util.converter import ( @@ -57,6 +73,7 @@ to_header, to_notification_header, ) +from supa.util.timestamp import NO_END_DATE from supa.util.type import NotificationType, ResultType from supa.util.vlan import VlanRanges @@ -146,18 +163,23 @@ def _stp_resources_in_use(self, session: scoped_session) -> Dict[str, StpResourc # To calculate the active overlapping reservation we need to perform a self-join. # One part of the join is for our (current) reservation. # The other part is for joining the overlapping ones with our (current) reservation. - CurrentReservation = aliased(Reservation, name="cr") + CurrentSchedule = aliased(Schedule, name="cs") overlap_active = ( select(Reservation) # The other part .join( - CurrentReservation, + Schedule, + and_(Reservation.connection_id == Schedule.connection_id, Reservation.version == Schedule.version), + ) + .join( + CurrentSchedule, # Do they overlap? and_( - CurrentReservation.start_time < Reservation.end_time, - CurrentReservation.end_time > Reservation.start_time, + CurrentSchedule.start_time < Schedule.end_time, + CurrentSchedule.end_time > Schedule.start_time, ), - ).filter( + ) + .filter( # Only select active reservations or_( and_( @@ -169,9 +191,9 @@ def _stp_resources_in_use(self, session: scoped_session) -> Dict[str, StpResourc ) ) # And only those that overlap with our reservation. - .filter(CurrentReservation.connection_id == self.connection_id) - ).subquery() - OverlappingActiveReservation = aliased(Reservation, overlap_active, name="oar") + .filter(CurrentSchedule.connection_id == self.connection_id) + ) + OverlappingActiveReservation = aliased(Reservation, overlap_active.subquery(), name="oar") # To map STP's to resources (bandwidth and vlan) in use # we need to unpivot the two pair of STP columns from the reservations table into separate rows. @@ -185,13 +207,19 @@ def _stp_resources_in_use(self, session: scoped_session) -> Dict[str, StpResourc # row 2: connection_id, stp, vlan <-- former dst_stp, dst_selected_vlan src_stp = session.query( Reservation.connection_id.label("connection_id"), - Reservation.src_stp_id.label("stp"), - Reservation.src_selected_vlan.label("vlan"), + P2PCriteria.src_stp_id.label("stp"), + P2PCriteria.src_selected_vlan.label("vlan"), + ).join( + P2PCriteria, + and_(Reservation.connection_id == P2PCriteria.connection_id, Reservation.version == P2PCriteria.version), ) dst_stp = session.query( Reservation.connection_id, - Reservation.dst_stp_id.label("stp"), - Reservation.dst_selected_vlan.label("vlan"), + P2PCriteria.dst_stp_id.label("stp"), + P2PCriteria.dst_selected_vlan.label("vlan"), + ).join( + P2PCriteria, + and_(Reservation.connection_id == P2PCriteria.connection_id, Reservation.version == P2PCriteria.version), ) stps = src_stp.union(dst_stp).subquery() @@ -200,16 +228,23 @@ def _stp_resources_in_use(self, session: scoped_session) -> Dict[str, StpResourc stp_resources_in_use = ( session.query( stps.c.stp, - func.sum(OverlappingActiveReservation.bandwidth).label("bandwidth"), + func.sum(P2PCriteria.bandwidth).label("bandwidth"), func.group_concat(stps.c.vlan, ",").label("vlans"), # yes, plural! ) .select_from(OverlappingActiveReservation) + .join( + P2PCriteria, + and_( + OverlappingActiveReservation.connection_id == P2PCriteria.connection_id, + OverlappingActiveReservation.version == P2PCriteria.version, + ), + ) .join(stps, OverlappingActiveReservation.connection_id == stps.c.connection_id) .filter( stps.c.stp.in_( ( - OverlappingActiveReservation.src_stp_id, - OverlappingActiveReservation.dst_stp_id, + P2PCriteria.src_stp_id, + P2PCriteria.dst_stp_id, ) ) ) @@ -226,15 +261,16 @@ def _process_stp(self, target: str, var: Variable, reservation: Reservation, ses Target can be either "src" or "dst". When the STP is valid and a VLAN is available - the corresponding {src|dst}_selected_vlan will be set on the reservation + the corresponding {src|dst}_selected_vlan will be set on the reservation.p2p_criteria and the associated port will be stored in {src|dst}_port_id on the job instance. """ stp_resources_in_use = self._stp_resources_in_use(session) - res_stp = getattr(reservation, f"{target}_stp_id") - nsi_stp = str(getattr(reservation, f"{target}_stp")()) # <-- mind the func call - domain = getattr(reservation, f"{target}_domain") - topology = getattr(reservation, f"{target}_topology") - requested_vlans = VlanRanges(getattr(reservation, f"{target}_vlans")) + self.log.debug("stp resources in use", stp_resources_in_use=stp_resources_in_use) + res_stp = getattr(reservation.p2p_criteria, f"{target}_stp_id") + nsi_stp = str(getattr(reservation.p2p_criteria, f"{target}_stp")()) # <-- mind the func call + domain = getattr(reservation.p2p_criteria, f"{target}_domain") + topology = getattr(reservation.p2p_criteria, f"{target}_topology") + requested_vlans = VlanRanges(getattr(reservation.p2p_criteria, f"{target}_vlans")) stp = session.query(Topology).filter(Topology.stp_id == res_stp).one_or_none() if ( stp is None @@ -251,13 +287,13 @@ def _process_stp(self, target: str, var: Variable, reservation: Reservation, ses else: bandwidth_available = stp.bandwidth available_vlans = VlanRanges(stp.vlans) - if bandwidth_available < reservation.bandwidth: + if bandwidth_available < reservation.p2p_criteria.bandwidth: raise NsiException( CapacityUnavailable, - f"requested: {format_bandwidth(reservation.bandwidth)}, " + f"requested: {format_bandwidth(reservation.p2p_criteria.bandwidth)}, " f"available: {format_bandwidth(bandwidth_available)}", { - Variable.CAPACITY: str(reservation.bandwidth), + Variable.CAPACITY: str(reservation.p2p_criteria.bandwidth), var: nsi_stp, }, ) @@ -271,7 +307,7 @@ def _process_stp(self, target: str, var: Variable, reservation: Reservation, ses {var: nsi_stp}, ) selected_vlan = random.choice(list(candidate_vlans)) - setattr(reservation, f"{target}_selected_vlan", selected_vlan) + setattr(reservation.p2p_criteria, f"{target}_selected_vlan", selected_vlan) # remember port id, will be stored as part of Connection below setattr(self, f"{target}_port_id", stp.port_id) @@ -301,22 +337,24 @@ def __call__(self) -> None: .filter(Reservation.connection_id == self.connection_id) .one() ) + assert reservation.version == reservation.schedule.version # assert versions on references are the same + assert reservation.version == reservation.p2p_criteria.version # TODO: refactor into unit test(s) rsm = ReservationStateMachine(reservation, state_field="reservation_state") try: - if reservation.src_stp_id == reservation.dst_stp_id: + if reservation.p2p_criteria.src_stp_id == reservation.p2p_criteria.dst_stp_id: raise NsiException( # Not sure if this is the correct error to use. # As its descriptive text refers to path computation - # it suggests its an error typically returned by an aggregator. + # it suggests it's an error typically returned by an aggregator. # On the other hand it is the only error related to a path/connection as a whole # and that is what is at issue here. NoServiceplanePathFound, "source and destination STP's are the same", { Variable.PROVIDER_NSA: settings.nsa_id, - Variable.SOURCE_STP: str(reservation.src_stp()), - Variable.DEST_STP: str(reservation.dst_stp()), + Variable.SOURCE_STP: str(reservation.p2p_criteria.src_stp()), + Variable.DEST_STP: str(reservation.p2p_criteria.dst_stp()), }, ) for target, var in (("src", Variable.SOURCE_STP), ("dst", Variable.DEST_STP)): @@ -326,25 +364,32 @@ def __call__(self) -> None: circuit_id = backend.reserve( connection_id=reservation.connection_id, - bandwidth=reservation.bandwidth, + bandwidth=reservation.p2p_criteria.bandwidth, src_port_id=self.src_port_id, - src_vlan=reservation.src_selected_vlan, # type: ignore[arg-type] + src_vlan=reservation.p2p_criteria.src_selected_vlan, dst_port_id=self.dst_port_id, - dst_vlan=reservation.dst_selected_vlan, # type: ignore[arg-type] + dst_vlan=reservation.p2p_criteria.dst_selected_vlan, ) - session.add( - Connection( - connection_id=reservation.connection_id, - bandwidth=reservation.bandwidth, - src_port_id=self.src_port_id, - src_vlan=reservation.src_selected_vlan, - dst_port_id=self.dst_port_id, - dst_vlan=reservation.dst_selected_vlan, - circuit_id=circuit_id, + if len(reservation.schedules) == 1: # new reservation + session.add( + Connection( + connection_id=reservation.connection_id, + bandwidth=reservation.p2p_criteria.bandwidth, + src_port_id=self.src_port_id, + src_vlan=reservation.p2p_criteria.src_selected_vlan, + dst_port_id=self.dst_port_id, + dst_vlan=reservation.p2p_criteria.dst_selected_vlan, + circuit_id=circuit_id, + ) ) - ) + else: # modify reservation + connection = session.query(Connection).filter(Connection.connection_id == self.connection_id).one() + connection.bandwidth = reservation.p2p_criteria.bandwidth + if circuit_id: + connection.circuit_id = circuit_id except NsiException as nsi_exc: + # FIXME: should we rollback the reservation version and remove the latest schedule and p2p_criteria? self.log.info("Reservation failed.", reason=nsi_exc.text) request = to_generic_failed_request(reservation, nsi_exc) # type: ignore[misc] rsm.reserve_failed() @@ -434,9 +479,61 @@ def __call__(self) -> None: reservation = session.query(Reservation).filter(Reservation.connection_id == self.connection_id).one() connection = session.query(Connection).filter(Connection.connection_id == self.connection_id).one() rsm = ReservationStateMachine(reservation, state_field="reservation_state") + psm = ProvisionStateMachine(reservation, state_field="provision_state") + dpsm = DataPlaneStateMachine(reservation, state_field="data_plane_state") + reschedule_auto_start = False + cancel_auto_end = False + schedule_auto_end = False try: + # always reserve commit (possible new values) to NRM, also in case of modify if circuit_id := backend.reserve_commit(**connection_to_dict(connection)): connection.circuit_id = circuit_id + if len(reservation.schedules) > 1: # modify reservation + old_start_time = reservation.schedules[-2].start_time + old_end_time = reservation.schedules[-2].end_time + old_bandwidth = reservation.p2p_criteria_list[-2].bandwidth + new_start_time = reservation.schedule.start_time + new_end_time = reservation.schedule.end_time + new_bandwidth = reservation.p2p_criteria.bandwidth + job: Job + # 1. if start time has changed: + # - start time was not reached yet, this is checked in ConnectionProviderService.Reserve + # - if the reservation was not provisioned then let ProvisionJob take care of everything + # - if the reservation was provisioned then reschedule a AutoStartJob with new start time + if ( + new_start_time != old_start_time + and psm.current_state == ProvisionStateMachine.Provisioned + and dpsm.current_state == DataPlaneStateMachine.AutoStart + ): + reschedule_auto_start = True + # 2. if end time has changed and the reservation was provisioned: + # - if there is an AutoEndJob then either: + # - if end time changed to NO_END_DATE then remove AutoEndJob + # - otherwise reschedule AutoEndJob + # - if the data plane was active with NO_END_DATA then now schedule AutoEndJob + # - in all other cases the AutoStartJob or ProvisionJob will take the new end time into account + if new_end_time != old_end_time and psm.current_state == ProvisionStateMachine.Provisioned: + if dpsm.current_state == DataPlaneStateMachine.AutoEnd: + dpsm.cancel_auto_end_request() + cancel_auto_end = True + if dpsm.current_state == DataPlaneStateMachine.Activated and new_end_time != NO_END_DATE: + dpsm.auto_end_request() + schedule_auto_end = True + # 3. if bandwidth has changed and data plane is active then call modify() on backend + # to allow NRM to change the bandwidth on the active connection in the network + if new_bandwidth != old_bandwidth: + if ( + dpsm.current_state == DataPlaneStateMachine.Activated + or dpsm.current_state == DataPlaneStateMachine.AutoEnd + ): + self.log.info( + "modify bandwidth on connection", + old_bandwidth=old_bandwidth, + new_bandwidth=new_bandwidth, + ) + if circuit_id := backend.modify(**connection_to_dict(connection)): + connection.circuit_id = circuit_id + except NsiException as nsi_exc: self.log.info("Reserve commit failed.", reason=nsi_exc.text) request = to_generic_failed_request(reservation, nsi_exc) @@ -455,6 +552,18 @@ def __call__(self) -> None: stub = requester.get_stub() if isinstance(request, GenericConfirmedRequest): + from supa import scheduler + + if reschedule_auto_start: + self.log.info("Reschedule auto start", job="AutoStartJob", start_time=new_start_time.isoformat()) + scheduler.remove_job(job_id=AutoStartJob(self.connection_id).job_id) + scheduler.add_job(job := AutoStartJob(self.connection_id), trigger=job.trigger(), id=job.job_id) + if cancel_auto_end: + self.log.info("Cancel previous auto end") + scheduler.remove_job(job_id=AutoEndJob(self.connection_id).job_id) + if schedule_auto_end: + self.log.info("Schedule new auto end", job="AutoEndJob", end_time=new_end_time.isoformat()) + scheduler.add_job(job := AutoEndJob(self.connection_id), trigger=job.trigger(), id=job.job_id) register_result(request, ResultType.ReserveCommitConfirmed) self.log.debug("Sending message", method="ReserveCommitConfirmed", request_message=request) stub.ReserveCommitConfirmed(request) @@ -510,7 +619,7 @@ def __call__(self) -> None: The reservation will be aborted and a ReserveAbortConfirmed message will be sent to the NSA/AG. - If the reservation state machine is not in the correct state for a ReserveCommit + If the reservation state machine is not in the correct state for a ReserveAbort an NSI error is returned leaving the state machine unchanged. """ self.log.info("Reserve abort reservation") @@ -549,7 +658,28 @@ def __call__(self) -> None: ) else: request = to_generic_confirmed_request(reservation) - rsm.reserve_abort_confirmed() + reservation.reservation_timeout = False # would probably be better to add reservation state to fsm + # only allowed to abort a reserve modify request, e.q. there is more than one criteria version + if len(reservation.p2p_criteria_list) > 1: + # 1. set connection.bandwidth to previous bandwidth + connection.bandwidth = reservation.p2p_criteria_list[-2].bandwidth + # 2. remove most recent version of criteria + session.delete(reservation.p2p_criteria_list[-1]) + # 3. remove most recent version of schedule + session.delete(reservation.schedules[-1]) + # 4. decrement reservation version with one + reservation.version -= 1 + rsm.reserve_abort_confirmed() + else: # the server should have prevented that this code is reached + request = to_error_request( + to_header(reservation), + NsiException( + GenericInternalError, + "cannot abort an initial reserve request, should not have reached this code", + {Variable.CONNECTION_ID: str(self.connection_id)}, + ), + self.connection_id, + ) stub = requester.get_stub() if isinstance(request, GenericConfirmedRequest): @@ -658,7 +788,7 @@ def __call__(self) -> None: ) else: # - # TODO: release reserved resources(?) + # TODO: release reserved resources in NRM(?) # self.log.debug("set reservation timeout to true in db") request = _to_reserve_timeout_request(reservation) @@ -705,8 +835,9 @@ def trigger(self) -> DateTrigger: from supa.db.session import db_session with db_session() as session: - timeout_date = session.query(Reservation.create_date).filter( - Reservation.connection_id == self.connection_id - ).scalar() + timedelta(seconds=settings.reserve_timeout) + reservation = session.query(Reservation).filter(Reservation.connection_id == self.connection_id).one() + timeout_date = reservation.create_date if len(reservation.schedules) == 1 else reservation.last_modified + timeout_date += timedelta(seconds=settings.reserve_timeout) # type: ignore + self.log.debug("reserve timeout set", timeout_date=timeout_date) return DateTrigger(run_date=timeout_date) diff --git a/src/supa/main.py b/src/supa/main.py index 19775830..9470aee9 100644 --- a/src/supa/main.py +++ b/src/supa/main.py @@ -35,6 +35,7 @@ from tabulate import tabulate from supa import current_timestamp, init_app, recover_jobs, settings +from supa.db.model import P2PCriteria, Schedule from supa.documents import webengine from supa.grpc_nsi import connection_provider_pb2_grpc from supa.util.vlan import VlanRanges @@ -605,33 +606,42 @@ def reservation_list(only: Optional[str], order_by: str) -> None: from supa.db.session import db_session with db_session() as session: - reservations = session.query(Reservation) + reservations = ( + session.query(Reservation) + .join(Schedule) + .join(P2PCriteria) + # only current schedule and p2p_criteria + .filter(Schedule.version == Reservation.version, P2PCriteria.version == Reservation.version) + ) if only == "current": - reservations = reservations.filter(Reservation.end_time >= current_timestamp()) + reservations = reservations.filter(Schedule.end_time >= current_timestamp()) elif only == "past": - reservations = reservations.filter(Reservation.end_time < current_timestamp()) + reservations = reservations.filter(Schedule.end_time < current_timestamp()) if order_by == "start_time": - reservations = reservations.order_by(Reservation.start_time) + reservations = reservations.order_by(Schedule.start_time) elif order_by == "end_time": - reservations = reservations.order_by(Reservation.end_time) + reservations = reservations.order_by(Schedule.end_time) reservation_entities = reservations.with_entities( Reservation.connection_id, - Reservation.start_time, - Reservation.end_time, - Reservation.src_stp_id, - Reservation.src_selected_vlan, - Reservation.dst_stp_id, - Reservation.dst_selected_vlan, - Reservation.bandwidth, + Reservation.version, + Schedule.start_time, + Schedule.end_time, + P2PCriteria.src_stp_id, + P2PCriteria.src_selected_vlan, + P2PCriteria.dst_stp_id, + P2PCriteria.dst_selected_vlan, + P2PCriteria.bandwidth, Reservation.lifecycle_state, Reservation.reservation_state, Reservation.provision_state, + Reservation.data_plane_state, ) click.echo( tabulate( tuple(reservation_entities), headers=( "connection id", + "version", "start time", "end time", "src", @@ -642,6 +652,7 @@ def reservation_list(only: Optional[str], order_by: str) -> None: "lifecycle", "reservation", "provision", + "dataplane", ), tablefmt="simple", ) @@ -667,21 +678,22 @@ def connection_list(only: Optional[str], order_by: str) -> None: from supa.db.session import db_session with db_session() as session: - connections = session.query(Connection).join(Reservation) - connections = connections.filter(Connection.circuit_id != None) # noqa: E711 (needed for NOT NULL clause) + connections = session.query(Connection).join(Reservation).join(Schedule) + connections = connections.filter(Schedule.version == Reservation.version) # only current schedule + # connections = connections.filter(Connection.circuit_id != None) # noqa: E711 (needed for NOT NULL clause) if only == "current": - connections = connections.filter(Reservation.end_time >= current_timestamp()) + connections = connections.filter(Schedule.end_time >= current_timestamp()) elif only == "past": - connections = connections.filter(Reservation.end_time < current_timestamp()) + connections = connections.filter(Schedule.end_time < current_timestamp()) if order_by == "start_time": - connections = connections.order_by(Reservation.start_time) + connections = connections.order_by(Schedule.start_time) elif order_by == "end_time": - connections = connections.order_by(Reservation.end_time) + connections = connections.order_by(Schedule.end_time) connection_entities = connections.with_entities( Connection.connection_id, Connection.circuit_id, - Reservation.start_time, - Reservation.end_time, + Schedule.start_time, + Schedule.end_time, Connection.src_port_id, Connection.src_vlan, Connection.dst_port_id, diff --git a/src/supa/nrm/backend.py b/src/supa/nrm/backend.py index 6a01fc09..00d46397 100644 --- a/src/supa/nrm/backend.py +++ b/src/supa/nrm/backend.py @@ -95,6 +95,20 @@ def reserve( ) return None + def modify( + self, + connection_id: UUID, + bandwidth: int, + src_port_id: str, + src_vlan: int, + dst_port_id: str, + dst_vlan: int, + circuit_id: str, + ) -> Optional[str]: + """Modify resources in NRM.""" + self.log.info("Modify resources in NRM", backend="no-op", primitive="reserve", connection_id=str(connection_id)) + return None + def reserve_timeout( self, connection_id: UUID, diff --git a/src/supa/nrm/backends/example.py b/src/supa/nrm/backends/example.py index 60170d97..a98a3d0d 100644 --- a/src/supa/nrm/backends/example.py +++ b/src/supa/nrm/backends/example.py @@ -34,7 +34,7 @@ class BackendSettings(BaseSettings): target_port: int = 80 -backend_settings = BackendSettings(_env_file="src/supa/nrm/backends/example.env") +backend_settings = BackendSettings(_env_file="src/supa/nrm/backends/example.env") # type: ignore[call-arg] class Backend(BaseBackend): diff --git a/src/supa/nrm/backends/paristaEOS4-untested.py b/src/supa/nrm/backends/paristaEOS4-untested.py index 77ad7178..f5a66820 100644 --- a/src/supa/nrm/backends/paristaEOS4-untested.py +++ b/src/supa/nrm/backends/paristaEOS4-untested.py @@ -109,7 +109,13 @@ class Backend(BaseBackend): def __init__(self) -> None: """Load properties from 'paristaEOS4.env'.""" super(Backend, self).__init__() - self.backend_settings = BackendSettings(_env_file=(env_file := find_file("paristaEOS4.env"))) + self.backend_settings = BackendSettings( + _env_file=( + env_file := find_file( + "paristaEOS4.env", + ) + ) + ) # type: ignore[call-arg] self.log.info("Read backend properties", path=str(env_file)) def _get_ssh_shell(self) -> None: diff --git a/src/supa/nrm/backends/surf.py b/src/supa/nrm/backends/surf.py index a52eebeb..06bcb493 100644 --- a/src/supa/nrm/backends/surf.py +++ b/src/supa/nrm/backends/surf.py @@ -54,7 +54,7 @@ class Backend(BaseBackend): def __init__(self) -> None: """Load properties from 'surf.env'.""" super(Backend, self).__init__() - self.backend_settings = BackendSettings(_env_file=(env_file := find_file("surf.env"))) + self.backend_settings = BackendSettings(_env_file=(env_file := find_file("surf.env"))) # type: ignore[call-arg] self.log.info("Read backend properties", path=str(env_file)) def _retrieve_access_token(self) -> str: diff --git a/src/supa/util/converter.py b/src/supa/util/converter.py index 33f07c8e..366125e9 100644 --- a/src/supa/util/converter.py +++ b/src/supa/util/converter.py @@ -11,13 +11,13 @@ # See the License for the specific language governing permissions and # limitations under the License. """Converter functions for converting data to and from Protobuf messages.""" -from typing import Optional +from typing import List, Optional from uuid import UUID, uuid4 from supa import const, settings from supa.connection.fsm import DataPlaneStateMachine from supa.db import model -from supa.db.model import Reservation +from supa.db.model import Parameter, Reservation from supa.grpc_nsi.connection_common_pb2 import ( ConnectionStates, EventType, @@ -103,7 +103,9 @@ def to_header(reservation: model.Reservation, *, add_path_segment: bool = False) pb_segment = Segment() pb_segment.id = settings.nsa_id pb_segment.connection_id = str(reservation.connection_id) - pb_segment.stps.extend([reservation.src_stp(selected=True), reservation.dst_stp(selected=True)]) + pb_segment.stps.extend( + [reservation.p2p_criteria.src_stp(selected=True), reservation.p2p_criteria.dst_stp(selected=True)] + ) pb_path.append(pb_segment) return pb_header @@ -156,47 +158,48 @@ def to_service_exception(nsi_exc: NsiException, connection_id: Optional[UUID] = return pb_se -def to_schedule(reservation: model.Reservation) -> Schedule: +def to_schedule(schedule: model.Schedule) -> Schedule: """Create Protobuf ``Schedule`` out of DB stored reservation data. See Also: warning in :func:`to_header` Args: - reservation: DB model + schedule: DB model Returns: - A Schedule object. + A protobuf ``Schedule`` object. """ pb_s = Schedule() - pb_s.start_time.FromDatetime(reservation.start_time) - if not reservation.end_time == NO_END_DATE: - pb_s.end_time.FromDatetime(reservation.end_time) + pb_s.start_time.FromDatetime(schedule.start_time) + if not schedule.end_time == NO_END_DATE: + pb_s.end_time.FromDatetime(schedule.end_time) return pb_s -def to_p2p_service(reservation: model.Reservation) -> PointToPointService: +def to_p2p_service(p2p_criteria: model.P2PCriteria, parameters: List[Parameter]) -> PointToPointService: """Create Protobuf ``PointToPointService`` out of DB stored reservation data. See Also: warning in :func:`to_header` Args: - reservation: DB Model + p2p_criteria: DB Model + parameters: List of per reservation parameters Returns: - A ``PointToPointService`` object. + A protobuf ``PointToPointService`` object. """ pb_ptps = PointToPointService() - pb_ptps.capacity = reservation.bandwidth - pb_ptps.symmetric_path = reservation.symmetric - pb_ptps.source_stp = str(reservation.src_stp(selected=True)) - pb_ptps.dest_stp = str(reservation.dst_stp(selected=True)) + pb_ptps.capacity = p2p_criteria.bandwidth + pb_ptps.symmetric_path = p2p_criteria.symmetric + pb_ptps.source_stp = str(p2p_criteria.src_stp(selected=True)) + pb_ptps.dest_stp = str(p2p_criteria.dst_stp(selected=True)) # The initial version didn't have to support Explicit Routing Objects. - for param in reservation.parameters: - pb_ptps.parameters[param.key] = param.value + for param in parameters: + pb_ptps.parameters[param.key] = param.value # type: ignore[assignment] return pb_ptps -def to_confirm_criteria(reservation: model.Reservation) -> ReservationConfirmCriteria: +def to_confirm_criteria(reservation: Reservation) -> ReservationConfirmCriteria: """Create Protobuf ``ReservationConfirmCriteria`` out of DB stored reservation data. Args: @@ -207,9 +210,9 @@ def to_confirm_criteria(reservation: model.Reservation) -> ReservationConfirmCri """ pb_rcc = ReservationConfirmCriteria() pb_rcc.version = reservation.version - pb_rcc.schedule.CopyFrom(to_schedule(reservation)) + pb_rcc.schedule.CopyFrom(to_schedule(reservation.schedule)) pb_rcc.serviceType = const.SERVICE_TYPE - pb_rcc.ptps.CopyFrom(to_p2p_service(reservation)) + pb_rcc.ptps.CopyFrom(to_p2p_service(reservation.p2p_criteria, reservation.parameters)) return pb_rcc @@ -224,11 +227,11 @@ def to_criteria(reservation: model.Reservation) -> QueryResultCriteria: """ pb_rsc = QueryResultCriteria() pb_rsc.version = reservation.version - pb_rsc.schedule.CopyFrom(to_schedule(reservation)) + pb_rsc.schedule.CopyFrom(to_schedule(reservation.schedule)) pb_rsc.service_type = const.SERVICE_TYPE # Leave empty as this is an uPA, and uPA's do not have children # pb_rsc.child - pb_rsc.ptps.CopyFrom(to_p2p_service(reservation)) + pb_rsc.ptps.CopyFrom(to_p2p_service(reservation.p2p_criteria, reservation.parameters)) return pb_rsc diff --git a/tests/conftest.py b/tests/conftest.py index 2d8d7a76..d31a4588 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -2,7 +2,7 @@ from concurrent import futures from datetime import datetime, timedelta, timezone from typing import Generator -from uuid import uuid4 +from uuid import UUID, uuid4 import grpc import pytest @@ -17,10 +17,11 @@ ProvisionStateMachine, ReservationStateMachine, ) -from supa.db.model import Connection, Request, Reservation, Topology +from supa.db.model import Connection, P2PCriteria, Request, Reservation, Schedule, Topology from supa.grpc_nsi import connection_provider_pb2_grpc from supa.job.dataplane import AutoEndJob, AutoStartJob from supa.job.reserve import ReserveTimeoutJob +from supa.util.timestamp import NO_END_DATE from supa.util.type import RequestType @@ -95,7 +96,7 @@ def add_stp_ids(init: Generator) -> None: @pytest.fixture() -def connection_id() -> Column: +def connection_id() -> Generator[UUID, None, None]: """Create new reservation in db and return connection ID.""" from supa.db.session import db_session @@ -109,22 +110,32 @@ def connection_id() -> Column: global_reservation_id="global reservation id", description="reservation 1", version=0, - start_time=datetime.now(timezone.utc) + timedelta(minutes=10), - end_time=datetime.now(timezone.utc) + timedelta(minutes=20), - bandwidth=10, - symmetric=True, - src_domain="example.domain:2001", - src_topology="topology", - src_stp_id="port1", - src_vlans="1783", - src_selected_vlan=1783, - dst_domain="example.domain:2001", - dst_topology="topology", - dst_stp_id="port2", - dst_vlans="1783", - dst_selected_vlan=1783, lifecycle_state="CREATED", ) + reservation.schedules.append( + Schedule( + version=0, + start_time=datetime.now(timezone.utc) + timedelta(minutes=10), + end_time=datetime.now(timezone.utc) + timedelta(minutes=20), + ) + ) + reservation.p2p_criteria_list.append( + P2PCriteria( + version=0, + bandwidth=10, + symmetric=True, + src_domain="example.domain:2001", + src_topology="topology", + src_stp_id="port1", + src_vlans="1783", + src_selected_vlan=1783, + dst_domain="example.domain:2001", + dst_topology="topology", + dst_stp_id="port2", + dst_vlans="1783", + dst_selected_vlan=1783, + ) + ) session.add(reservation) session.flush() # let db generate connection_id connection_id = reservation.connection_id @@ -139,12 +150,53 @@ def connection_id() -> Column: yield connection_id session.delete(session.query(Reservation).filter(Reservation.connection_id == connection_id).one()) - # connection is deleted through cascade + # connection, schedule and p2p_criteria are deleted through cascade + + +@pytest.fixture() +def connection_id_modified(connection_id: UUID) -> None: + """Transform a connection ID into a modified connection ID.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.version = 1 + reservation.schedules.append( + Schedule( + version=1, + start_time=datetime.now(timezone.utc) + timedelta(minutes=20), + end_time=datetime.now(timezone.utc) + timedelta(minutes=30), + ) + ) + reservation.p2p_criteria_list.append( + P2PCriteria( + version=1, + bandwidth=20, + symmetric=True, + src_domain="example.domain:2001", + src_topology="topology", + src_stp_id="port1", + src_vlans="1783", + src_selected_vlan=1783, + dst_domain="example.domain:2001", + dst_topology="topology", + dst_stp_id="port2", + dst_vlans="1783", + dst_selected_vlan=1783, + ) + ) + request = Request( + connection_id=connection_id, + correlation_id=uuid4(), + request_type=RequestType.Reserve, # should add specific request type + request_data=b"should add request message here", + ) + session.add(request) @pytest.fixture def connection(connection_id: Column) -> None: - """Set reserve state machine of reservation identified by connection_id to state ReserveCommitting.""" + """Add connection record for given connection_id.""" from supa.db.session import db_session with db_session() as session: @@ -154,9 +206,10 @@ def connection(connection_id: Column) -> None: src_port_id, dst_port_id = ( session.query(src_topology.port_id, dst_topology.port_id) .filter( - Reservation.connection_id == connection_id, - Reservation.src_stp_id == src_topology.stp_id, - Reservation.dst_stp_id == dst_topology.stp_id, + P2PCriteria.connection_id == connection_id, + P2PCriteria.version == reservation.version, + P2PCriteria.src_stp_id == src_topology.stp_id, + P2PCriteria.dst_stp_id == dst_topology.stp_id, ) .one() ) @@ -164,13 +217,23 @@ def connection(connection_id: Column) -> None: connection_id=connection_id, bandwidth=10, src_port_id=src_port_id, - src_vlan=reservation.src_selected_vlan, + src_vlan=reservation.p2p_criteria.src_selected_vlan, dst_port_id=dst_port_id, - dst_vlan=reservation.dst_selected_vlan, + dst_vlan=reservation.p2p_criteria.dst_selected_vlan, ) session.add(connection) +@pytest.fixture +def connection_modified(connection_id: Column, connection: None) -> None: + """Add connection record for given connection_id.""" + from supa.db.session import db_session + + with db_session() as session: + connection_from_db = session.query(Connection).filter(Connection.connection_id == connection_id).one() + connection_from_db.bandwidth = 20 + + @pytest.fixture() def reserve_timeout_job(connection_id: Column) -> None: """Schedule a ReserveTimeoutJob for connection_id.""" @@ -186,7 +249,7 @@ def src_stp_id_equals_dst_stp_id(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_stp_id = reservation.src_stp_id + reservation.p2p_criteria.dst_stp_id = reservation.p2p_criteria.src_stp_id @pytest.fixture @@ -196,7 +259,7 @@ def unknown_stp_id(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_stp_id = "unknown_stp" + reservation.p2p_criteria.dst_stp_id = "unknown_stp" @pytest.fixture @@ -206,14 +269,14 @@ def disabled_stp(connection_id: Column) -> Generator: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - port = session.query(Topology).filter(Topology.stp_id == reservation.dst_stp_id).one_or_none() + port = session.query(Topology).filter(Topology.stp_id == reservation.p2p_criteria.dst_stp_id).one_or_none() port.enabled = False yield None with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - port = session.query(Topology).filter(Topology.stp_id == reservation.dst_stp_id).one_or_none() + port = session.query(Topology).filter(Topology.stp_id == reservation.p2p_criteria.dst_stp_id).one_or_none() port.enabled = True @@ -224,7 +287,7 @@ def unknown_domain_stp_id(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_domain = "unknown_domain" + reservation.p2p_criteria.dst_domain = "unknown_domain" @pytest.fixture @@ -234,7 +297,7 @@ def unknown_topology_stp_id(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_topology = "unknown_topology" + reservation.p2p_criteria.dst_topology = "unknown_topology" @pytest.fixture @@ -244,7 +307,7 @@ def empty_vlans_stp_id(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_vlans = "" + reservation.p2p_criteria.dst_vlans = "" @pytest.fixture @@ -254,7 +317,7 @@ def to_much_bandwidth(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.bandwidth = 1000000000 + reservation.p2p_criteria.bandwidth = 1000000000 @pytest.fixture @@ -264,7 +327,7 @@ def no_matching_vlan(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.dst_vlans = "3333" + reservation.p2p_criteria.dst_vlans = "3333" @pytest.fixture @@ -274,7 +337,7 @@ def all_vlans_in_use(connection_id: Column) -> Generator: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - port = session.query(Topology).filter(Topology.stp_id == reservation.dst_stp_id).one_or_none() + port = session.query(Topology).filter(Topology.stp_id == reservation.p2p_criteria.dst_stp_id).one_or_none() original_vlans = port.vlans port.vlans = "" @@ -282,7 +345,7 @@ def all_vlans_in_use(connection_id: Column) -> Generator: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - port = session.query(Topology).filter(Topology.stp_id == reservation.dst_stp_id).one_or_none() + port = session.query(Topology).filter(Topology.stp_id == reservation.p2p_criteria.dst_stp_id).one_or_none() port.vlans = original_vlans @@ -483,6 +546,21 @@ def auto_end(connection_id: Column) -> Generator: pass # job already removed from job store +@pytest.fixture +def auto_end_job(connection_id: Column) -> Generator: + """Run AutoEndtJob for connection_id.""" + from supa import scheduler + + job_handle = scheduler.add_job(job := AutoEndJob(connection_id), trigger=job.trigger(), id=job.job_id) + + yield None + + try: + job_handle.remove() + except JobLookupError: + pass # job already removed from job store + + @pytest.fixture def deactivating(connection_id: Column) -> None: """Set data plane state machine of reservation identified by connection_id to state Deactivating.""" @@ -511,3 +589,124 @@ def flag_reservation_timeout(connection_id: Column) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() reservation.reservation_timeout = True + + +@pytest.fixture +def start_now(connection_id: Column) -> None: + """Set reservation start time to now.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.schedule.start_time = datetime.now(timezone.utc) + + +@pytest.fixture +def no_end_time(connection_id: Column) -> None: + """Set reservation start time to now.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.schedule.end_time = NO_END_DATE + + +def p2p_criteria_from_p2_criteria(p2p_criteria: P2PCriteria) -> P2PCriteria: + """Create deepcopy of given P2PCriteria object with version set to 1.""" + return P2PCriteria( + version=1, + bandwidth=p2p_criteria.bandwidth, + symmetric=p2p_criteria.symmetric, + src_domain=p2p_criteria.src_domain, + src_topology=p2p_criteria.src_topology, + src_stp_id=p2p_criteria.src_stp_id, + src_vlans=p2p_criteria.src_vlans, + src_selected_vlan=p2p_criteria.src_selected_vlan, + dst_domain=p2p_criteria.dst_domain, + dst_topology=p2p_criteria.dst_topology, + dst_stp_id=p2p_criteria.dst_stp_id, + dst_vlans=p2p_criteria.dst_vlans, + dst_selected_vlan=p2p_criteria.dst_selected_vlan, + ) + + +@pytest.fixture +def modified_start_time(connection_id: Column) -> None: + """Add Schedule with modified start time on connection set to Provisioned and AutoStart.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.data_plane_state = DataPlaneStateMachine.AutoStart.value + reservation.provision_state = ProvisionStateMachine.Provisioned.value + reservation.schedules.append( + Schedule( + version=1, + start_time=reservation.schedule.start_time + timedelta(minutes=1), + end_time=reservation.schedule.end_time, + ) + ) + reservation.p2p_criteria_list.append(p2p_criteria_from_p2_criteria(reservation.p2p_criteria)) + reservation.version = reservation.version + 1 + + +@pytest.fixture +def modified_no_end_time(connection_id: Column) -> None: + """Add Schedule with no end time on connection set to Provisioned and AutoEnd.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.data_plane_state = DataPlaneStateMachine.AutoEnd.value + reservation.provision_state = ProvisionStateMachine.Provisioned.value + reservation.schedules.append( + Schedule( + version=1, + start_time=reservation.schedule.start_time, + end_time=NO_END_DATE, + ) + ) + reservation.p2p_criteria_list.append(p2p_criteria_from_p2_criteria(reservation.p2p_criteria)) + reservation.version = reservation.version + 1 + + +@pytest.fixture +def modified_end_time(connection_id: Column) -> None: + """Add Schedule with end time of 30 minutes in the future on connection set to Provisioned and Activated.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.data_plane_state = DataPlaneStateMachine.Activated.value + reservation.provision_state = ProvisionStateMachine.Provisioned.value + reservation.schedules.append( + Schedule( + version=1, + start_time=reservation.schedule.start_time, + end_time=datetime.now(timezone.utc) + timedelta(minutes=30), + ) + ) + reservation.p2p_criteria_list.append(p2p_criteria_from_p2_criteria(reservation.p2p_criteria)) + reservation.version = reservation.version + 1 + + +@pytest.fixture +def modified_bandwidth(connection_id: Column) -> None: + """Add P2PCriteria with modified bandwidth on connection set to Provisioned and Activated.""" + from supa.db.session import db_session + + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + reservation.data_plane_state = DataPlaneStateMachine.Activated.value + reservation.provision_state = ProvisionStateMachine.Provisioned.value + reservation.schedules.append( + Schedule( + version=1, + start_time=reservation.schedule.start_time, + end_time=reservation.schedule.end_time, + ) + ) + new_p2p_criteria = p2p_criteria_from_p2_criteria(reservation.p2p_criteria) + new_p2p_criteria.bandwidth = new_p2p_criteria.bandwidth + 10 + reservation.p2p_criteria_list.append(new_p2p_criteria) + reservation.version = reservation.version + 1 diff --git a/tests/connection/provider/test_server.py b/tests/connection/provider/test_server.py index 21c132d8..4d5a447f 100644 --- a/tests/connection/provider/test_server.py +++ b/tests/connection/provider/test_server.py @@ -2,7 +2,7 @@ from datetime import datetime, timedelta, timezone from json import dumps from typing import Any -from uuid import uuid4 +from uuid import UUID, uuid4 import pytest from google.protobuf.json_format import Parse @@ -65,6 +65,7 @@ def pb_reservation_request_criteria(pb_schedule: Schedule, pb_ptps: PointToPoint reservation_request_criteria.schedule.CopyFrom(pb_schedule) reservation_request_criteria.service_type = const.SERVICE_TYPE reservation_request_criteria.ptps.CopyFrom(pb_ptps) + reservation_request_criteria.version = 1 return reservation_request_criteria @@ -81,6 +82,13 @@ def pb_reserve_request( return pb_request +@pytest.fixture() +def pb_reserve_modify_request(pb_reserve_request: ReserveRequest, connection_id: UUID) -> ReserveRequest: + """Create protobuf reserve modify request with connection_id added to request.""" + pb_reserve_request.connection_id = str(connection_id) + return pb_reserve_request + + @pytest.fixture() def pb_reserve_request_end_time_before_start_time(pb_reserve_request: ReserveRequest) -> ReserveRequest: """Modify schedule of reserve request so that end time is before start time.""" @@ -184,6 +192,124 @@ def test_reserve_request_end_time_in_past(pb_reserve_request_end_time_in_past: R assert "End time lies in the past" in caplog.text +def test_reserve_modify( + pb_reserve_modify_request: ReserveRequest, connection_id: UUID, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve Modify happy path.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert reserve_response.connection_id == str(connection_id) + assert not reserve_response.HasField("service_exception") + assert "modify reservation" in caplog.text + assert "Schedule reserve" in caplog.text + assert "Schedule reserve timeout" in caplog.text + + +def test_reserve_modify_illegal_version( + pb_reserve_modify_request: ReserveRequest, connection_id: UUID, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve Modify returns UnsupportedParameter exception on illegal version.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + # criteria version may only be incremented by 1 + pb_reserve_modify_request.criteria.version = pb_reserve_modify_request.criteria.version + 2 + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert not reserve_response.connection_id + assert reserve_response.HasField("service_exception") + assert reserve_response.service_exception.error_id == "00102" + assert reserve_response.service_exception.connection_id == str(connection_id) + assert "version may only be incremented by 1" in caplog.text + + +def test_reserve_modify_unknown_connection_id( + pb_reserve_modify_request: ReserveRequest, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve returns ReservationNonExistent exception for unknown connection id.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + # add unknown connection_id to this modify request + non_existing_connection_id = str(uuid4()) + pb_reserve_modify_request.connection_id = str(non_existing_connection_id) + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert not reserve_response.connection_id + assert reserve_response.HasField("service_exception") + assert reserve_response.service_exception.connection_id == non_existing_connection_id + assert reserve_response.service_exception.error_id == "00203" + assert "Connection ID does not exist" in caplog.text + assert reserve_response.service_exception.variables[0].type == "connectionId" + assert reserve_response.service_exception.variables[0].value == non_existing_connection_id + + +def test_reserve_modify_reservation_already_started( + pb_reserve_modify_request: ReserveRequest, connection_id: UUID, start_now: None, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve returns UnsupportedParameter exception when already started.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + # change start time to 1 minute in te future + pb_reserve_modify_request.criteria.schedule.start_time.FromDatetime( + datetime.now(timezone.utc) + timedelta(minutes=1) + ) + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert not reserve_response.connection_id + assert reserve_response.HasField("service_exception") + assert reserve_response.service_exception.connection_id == str(connection_id) + assert reserve_response.service_exception.error_id == "00102" + assert "cannot change start time when reservation already started" in caplog.text + + +def test_reserve_modify_invalid_transition( + pb_reserve_modify_request: ReserveRequest, connection_id: UUID, reserve_held: None, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve Modify returns InvalidTransition exception when not in modifiable state.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert not reserve_response.connection_id + assert reserve_response.HasField("service_exception") + assert reserve_response.service_exception.connection_id == str(connection_id) + assert reserve_response.service_exception.error_id == "00201" + assert "Connection not in modifiable state" in caplog.text + assert reserve_response.service_exception.variables[0].type == "connectionId" + assert reserve_response.service_exception.variables[0].value == str(connection_id) + + +def test_reserve_modify_unset_criteria_version( + pb_reserve_modify_request: ReserveRequest, connection_id: UUID, connection: None, caplog: Any +) -> None: + """Test the connection provider Reserve Modify returns InvalidTransition exception when not in modifiable state.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + request_correlation_id = pb_reserve_modify_request.header.correlation_id + # criteria version set to 0, is equivalent to unset (Python ProtoBuf is unable to distinguish) + pb_reserve_modify_request.criteria.version = 0 + reserve_response = service.Reserve(pb_reserve_modify_request, mock_context) + assert request_correlation_id == reserve_response.header.correlation_id + assert not reserve_response.header.reply_to + assert reserve_response.connection_id == str(connection_id) + assert not reserve_response.HasField("service_exception") + # assert that the supplied version 0 was incremented by 1 + assert any(record.msg["event"] == "modify reservation" and record.msg["version"] == 1 for record in caplog.records) + assert "Schedule reserve" in caplog.text + assert "Schedule reserve timeout" in caplog.text + + def test_reserve_commit(pb_reserve_commit_request: GenericRequest, reserve_held: None, caplog: Any) -> None: """Test the connection provider ReserveCommit happy path.""" service = ConnectionProviderService() @@ -252,7 +378,14 @@ def test_reserve_commit_timed_out( assert "Cannot commit a timed out reservation" in caplog.text -def test_reserve_abort(pb_reserve_abort_request: GenericRequest, reserve_held: None, caplog: Any) -> None: +def test_reserve_abort( + connection_id: UUID, + connection_id_modified: None, + connection: None, + pb_reserve_abort_request: GenericRequest, + reserve_held: None, + caplog: Any, +) -> None: """Test the connection provider ReserveAbort happy path.""" service = ConnectionProviderService() mock_context = unittest.mock.create_autospec(spec=ServicerContext) @@ -281,8 +414,33 @@ def test_reserve_abort_random_connection_id(pb_reserve_abort_request: GenericReq assert "Connection ID does not exist" in caplog.text +def test_reserve_abort_initial_reserve_request( + connection_id: UUID, + pb_reserve_abort_request: GenericRequest, + caplog: Any, +) -> None: + """Test the connection provider ReserveAbort returns service exception when aborting initial reserve request.""" + service = ConnectionProviderService() + mock_context = unittest.mock.create_autospec(spec=ServicerContext) + reserve_abort_response = service.ReserveAbort(pb_reserve_abort_request, mock_context) + assert pb_reserve_abort_request.header.correlation_id == reserve_abort_response.header.correlation_id + assert pb_reserve_abort_request.connection_id == reserve_abort_response.service_exception.connection_id + assert not reserve_abort_response.header.reply_to + assert reserve_abort_response.HasField("service_exception") + assert reserve_abort_response.service_exception.error_id == "00201" + assert len(reserve_abort_response.service_exception.variables) == 1 + assert reserve_abort_response.service_exception.variables[0].type == "connectionId" + assert reserve_abort_response.service_exception.variables[0].value == pb_reserve_abort_request.connection_id + assert "Cannot abort an initial reserve request, abort only allowed on modify" in caplog.text + + def test_reserve_abort_invalid_transition( - pb_reserve_abort_request: GenericRequest, reserve_aborting: None, caplog: Any + connection_id: UUID, + connection_id_modified: None, + connection: None, + pb_reserve_abort_request: GenericRequest, + reserve_aborting: None, + caplog: Any, ) -> None: """Test the connection provider ReserveAbort returns service exception when in invalid state for request.""" service = ConnectionProviderService() @@ -376,8 +534,8 @@ def test_provision_passed_end_time( with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.start_time = datetime.now(timezone.utc) - timedelta(hours=2) - reservation.end_time = datetime.now(timezone.utc) - timedelta(hours=1) + reservation.schedule.start_time = datetime.now(timezone.utc) - timedelta(hours=2) + reservation.schedule.end_time = datetime.now(timezone.utc) - timedelta(hours=1) service = ConnectionProviderService() mock_context = unittest.mock.create_autospec(spec=ServicerContext) provision_response = service.Provision(pb_provision_request, mock_context) @@ -465,8 +623,8 @@ def test_release_passed_end_time( with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.start_time = datetime.now(timezone.utc) - timedelta(hours=2) - reservation.end_time = datetime.now(timezone.utc) - timedelta(hours=1) + reservation.schedule.start_time = datetime.now(timezone.utc) - timedelta(hours=2) + reservation.schedule.end_time = datetime.now(timezone.utc) - timedelta(hours=1) service = ConnectionProviderService() mock_context = unittest.mock.create_autospec(spec=ServicerContext) release_response = service.Release(pb_release_request, mock_context) diff --git a/tests/documents/test_discovery.py b/tests/documents/test_discovery.py index a6385b31..d8ec8b39 100644 --- a/tests/documents/test_discovery.py +++ b/tests/documents/test_discovery.py @@ -55,6 +55,8 @@ class SimpleCPTest(helper.CPWebCase): """Simple Cherry Pie test server.""" + helper.CPWebCase.interactive = False + @staticmethod def setup_server() -> None: """Mount endpoint that needs to be tested.""" diff --git a/tests/documents/test_topology.py b/tests/documents/test_topology.py index 2db34d03..6119e327 100644 --- a/tests/documents/test_topology.py +++ b/tests/documents/test_topology.py @@ -131,6 +131,8 @@ class SimpleCPTest(helper.CPWebCase): """Simple Cherry Pie test server.""" + helper.CPWebCase.interactive = False + @staticmethod def setup_server() -> None: """Mount endpoint that needs to be tested.""" diff --git a/tests/job/fake_servicer.py b/tests/job/fake_servicer.py index 7842e9cb..66224878 100644 --- a/tests/job/fake_servicer.py +++ b/tests/job/fake_servicer.py @@ -52,11 +52,11 @@ def ReserveFailed(self, request: GenericFailedRequest, context: Any) -> GenericA reservation = ( session.query(Reservation).filter(Reservation.connection_id == UUID(request.connection_id)).one() ) - port = session.query(Topology).filter(Topology.stp_id == reservation.dst_stp_id).one_or_none() + port = session.query(Topology).filter(Topology.stp_id == reservation.p2p_criteria.dst_stp_id).one_or_none() # By this time the reservation in the database already transitioned to ReserveFailed. assert reservation.reservation_state == ReservationStateMachine.ReserveFailed.value # test_reserve_job_reserve_failed_src_stp_id_equals_dst_stp_id() - if reservation.src_stp_id == reservation.dst_stp_id: + if reservation.p2p_criteria.src_stp_id == reservation.p2p_criteria.dst_stp_id: test_hit_count += 1 assert request.service_exception.error_id == "00407" assert len(request.service_exception.variables) == 3 @@ -65,7 +65,7 @@ def ReserveFailed(self, request: GenericFailedRequest, context: Any) -> GenericA assert request.service_exception.variables[2].type == "destSTP" assert request.service_exception.variables[1].value == request.service_exception.variables[2].value # test_reserve_job_reserve_failed_unknown_stp_id() - if reservation.dst_stp_id == "unknown_stp": + if reservation.p2p_criteria.dst_stp_id == "unknown_stp": test_hit_count += 1 assert request.service_exception.error_id == "00701" assert len(request.service_exception.variables) == 1 @@ -78,28 +78,28 @@ def ReserveFailed(self, request: GenericFailedRequest, context: Any) -> GenericA assert len(request.service_exception.variables) == 1 assert request.service_exception.variables[0].type == "destSTP" # test_reserve_job_reserve_failed_unknown_domain_stp_id() - if reservation.dst_domain == "unknown_domain": + if reservation.p2p_criteria.dst_domain == "unknown_domain": test_hit_count += 1 assert request.service_exception.error_id == "00701" assert len(request.service_exception.variables) == 1 assert request.service_exception.variables[0].type == "destSTP" assert "unknown_domain" in request.service_exception.variables[0].value # test_reserve_job_reserve_failed_unknown_topology_stp_id() - if reservation.dst_topology == "unknown_topology": + if reservation.p2p_criteria.dst_topology == "unknown_topology": test_hit_count += 1 assert request.service_exception.error_id == "00701" assert len(request.service_exception.variables) == 1 assert request.service_exception.variables[0].type == "destSTP" assert "unknown_topology" in request.service_exception.variables[0].value # test_reserve_job_reserve_failed_empty_vlans_stp_id() - if reservation.dst_vlans == "": + if reservation.p2p_criteria.dst_vlans == "": test_hit_count += 1 assert request.service_exception.error_id == "00709" assert len(request.service_exception.variables) == 1 assert request.service_exception.variables[0].type == "destSTP" assert request.service_exception.variables[0].value.endswith("vlan=") # test_reserve_job_reserve_failed_to_much_bandwidth() - if reservation.bandwidth == 1000000000: + if reservation.p2p_criteria.bandwidth == 1000000000: test_hit_count += 1 assert request.service_exception.error_id == "00705" assert len(request.service_exception.variables) == 2 @@ -108,7 +108,7 @@ def ReserveFailed(self, request: GenericFailedRequest, context: Any) -> GenericA assert request.service_exception.variables[1].type == "sourceSTP" assert "requested: 1 Pbit/s, available: 1 Gbit/s" in request.service_exception.text # test_reserve_job_reserve_failed_no_matching_vlan() - if reservation.dst_vlans == "3333": + if reservation.p2p_criteria.dst_vlans == "3333": test_hit_count += 1 assert request.service_exception.error_id == "00704" assert len(request.service_exception.variables) == 1 @@ -279,7 +279,7 @@ def DataPlaneStateChange(self, request: DataPlaneStateChangeRequest, context: An # test_activate_job_end_date() if ( reservation.data_plane_state == DataPlaneStateMachine.AutoEnd.value - and reservation.end_time != NO_END_DATE + and reservation.schedule.end_time != NO_END_DATE ): test_hit_count += 1 assert request.data_plane_status.active @@ -287,7 +287,7 @@ def DataPlaneStateChange(self, request: DataPlaneStateChangeRequest, context: An # test_activate_job_no_end_date() if ( reservation.data_plane_state == DataPlaneStateMachine.Activated.value - and reservation.end_time == NO_END_DATE + and reservation.schedule.end_time == NO_END_DATE ): test_hit_count += 1 assert request.data_plane_status.active diff --git a/tests/job/test_dataplane.py b/tests/job/test_dataplane.py index 52bc7369..99435103 100644 --- a/tests/job/test_dataplane.py +++ b/tests/job/test_dataplane.py @@ -1,7 +1,6 @@ from datetime import timedelta from typing import Any - -from sqlalchemy import Column +from uuid import UUID import tests.shared.state_machine as state_machine @@ -11,7 +10,7 @@ def test_activate_job_end_date( - connection_id: Column, connection: None, activating: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, activating: None, get_stub: None, caplog: Any ) -> None: """Test ActivateJob to transition to AutoEnd.""" activate_job = ActivateJob(connection_id) @@ -22,14 +21,14 @@ def test_activate_job_end_date( def test_activate_job_no_end_date( - connection_id: Column, connection: None, activating: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, activating: None, get_stub: None, caplog: Any ) -> None: """Test ActivateJob to transition to Activated when no end date.""" from supa.db.session import db_session with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.end_time = NO_END_DATE + reservation.schedule.end_time = NO_END_DATE activate_job = ActivateJob(connection_id) activate_job.__call__() assert state_machine.is_activated(connection_id) @@ -37,7 +36,7 @@ def test_activate_job_no_end_date( assert "Schedule auto end" not in caplog.text -def test_activate_job_recover(connection_id: Column, activating: None, get_stub: None, caplog: Any) -> None: +def test_activate_job_recover(connection_id: UUID, activating: None, get_stub: None, caplog: Any) -> None: """Test ActivateJob to recover reservations in state Created and Activating and are not passed end time.""" activate_job = ActivateJob(connection_id) job_list = activate_job.recover() @@ -54,16 +53,14 @@ def test_activate_job_recover(connection_id: Column, activating: None, get_stub: assert msgs[0]["event"] == "Recovering job" -def test_activate_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_activate_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ActivateJob to return trigger to run immediately.""" terminate_job = ActivateJob(connection_id) job_trigger = terminate_job.trigger() assert current_timestamp() - job_trigger.run_date < timedelta(seconds=5) # more or less now -def test_deactivate_job( - connection_id: Column, connection: None, deactivating: None, get_stub: None, caplog: Any -) -> None: +def test_deactivate_job(connection_id: UUID, connection: None, deactivating: None, get_stub: None, caplog: Any) -> None: """Test DeactivateJob to transition to Deactivated.""" deactivate_job = DeactivateJob(connection_id) deactivate_job.__call__() @@ -71,7 +68,7 @@ def test_deactivate_job( assert "Deactivate data plane" in caplog.text -def test_deactivate_job_recover(connection_id: Column, deactivating: None, get_stub: None, caplog: Any) -> None: +def test_deactivate_job_recover(connection_id: UUID, deactivating: None, get_stub: None, caplog: Any) -> None: """Test DectivateJob to recover reservations in state Created and Deactivating.""" deactivate_job = DeactivateJob(connection_id) job_list = deactivate_job.recover() @@ -88,14 +85,14 @@ def test_deactivate_job_recover(connection_id: Column, deactivating: None, get_s assert msgs[0]["event"] == "Recovering job" -def test_deactivate_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_deactivate_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test DeactivateJob to return trigger to run immediately.""" terminate_job = DeactivateJob(connection_id) job_trigger = terminate_job.trigger() assert current_timestamp() - job_trigger.run_date < timedelta(seconds=5) # more or less now -def test_auto_start_job(connection_id: Column, auto_start: None, get_stub: None, caplog: Any) -> None: +def test_auto_start_job(connection_id: UUID, auto_start: None, get_stub: None, caplog: Any) -> None: """Test AutoStartJob to transition to Activating.""" auto_start_job = AutoStartJob(connection_id) auto_start_job.__call__() @@ -103,7 +100,7 @@ def test_auto_start_job(connection_id: Column, auto_start: None, get_stub: None, assert "Schedule activate" in caplog.text -def test_auto_start_job_recover(connection_id: Column, auto_start: None, get_stub: None, caplog: Any) -> None: +def test_auto_start_job_recover(connection_id: UUID, auto_start: None, get_stub: None, caplog: Any) -> None: """Test AutoStartJob to recover reservations in state Created and AutoStart and not passed end time.""" auto_start_job = AutoStartJob(connection_id) job_list = auto_start_job.recover() @@ -120,7 +117,7 @@ def test_auto_start_job_recover(connection_id: Column, auto_start: None, get_stu assert msgs[0]["event"] == "Recovering job" -def test_auto_start_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_auto_start_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test AutoStartJob to return trigger with start time of reservation.""" auto_start_job = AutoStartJob(connection_id) job_trigger = auto_start_job.trigger() @@ -129,10 +126,10 @@ def test_auto_start_job_trigger(connection_id: Column, caplog: Any) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - assert job_trigger.run_date == reservation.start_time + assert job_trigger.run_date == reservation.schedule.start_time -def test_auto_end_job(connection_id: Column, auto_end: None, get_stub: None, caplog: Any) -> None: +def test_auto_end_job(connection_id: UUID, auto_end: None, get_stub: None, caplog: Any) -> None: """Test AutoEndJob to transition to Deactivating and PassedEndTime.""" auto_end_job = AutoEndJob(connection_id) auto_end_job.__call__() @@ -143,7 +140,7 @@ def test_auto_end_job(connection_id: Column, auto_end: None, get_stub: None, cap assert "Schedule deactivate" in caplog.text -def test_auto_end_job_recover(connection_id: Column, auto_end: None, get_stub: None, caplog: Any) -> None: +def test_auto_end_job_recover(connection_id: UUID, auto_end: None, get_stub: None, caplog: Any) -> None: """Test AutoEndJob to recover reservations in state Created and AutoEnd.""" auto_end_job = AutoEndJob(connection_id) job_list = auto_end_job.recover() @@ -158,7 +155,7 @@ def test_auto_end_job_recover(connection_id: Column, auto_end: None, get_stub: N assert msgs[0]["event"] == "Recovering job" -def test_auto_end_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_auto_end_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test AutoEndJob to return trigger with end time of reservation.""" auto_end_job = AutoEndJob(connection_id) job_trigger = auto_end_job.trigger() @@ -167,4 +164,4 @@ def test_auto_end_job_trigger(connection_id: Column, caplog: Any) -> None: with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - assert job_trigger.run_date == reservation.end_time + assert job_trigger.run_date == reservation.schedule.end_time diff --git a/tests/job/test_lifecycle.py b/tests/job/test_lifecycle.py index 4d72b3e9..6ad0015e 100644 --- a/tests/job/test_lifecycle.py +++ b/tests/job/test_lifecycle.py @@ -1,7 +1,6 @@ from datetime import timedelta from typing import Any - -from sqlalchemy import Column +from uuid import UUID import tests.shared.state_machine as state_machine @@ -10,7 +9,7 @@ def test_terminate_job_auto_start( - connection_id: Column, + connection_id: UUID, connection: None, terminating: None, auto_start: None, @@ -28,7 +27,7 @@ def test_terminate_job_auto_start( def test_terminate_job_auto_end( - connection_id: Column, connection: None, terminating: None, auto_end: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, terminating: None, auto_end: None, get_stub: None, caplog: Any ) -> None: """Test TerminateJob to transition to Terminated, add DeactivateJob and canceling AutoEndJob.""" terminate_job = TerminateJob(connection_id) @@ -41,7 +40,7 @@ def test_terminate_job_auto_end( def test_terminate_job_activated( - connection_id: Column, connection: None, terminating: None, activated: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, terminating: None, activated: None, get_stub: None, caplog: Any ) -> None: """Test TerminateJob to transition to Terminated and add DeactivateJob.""" terminate_job = TerminateJob(connection_id) @@ -53,7 +52,7 @@ def test_terminate_job_activated( assert "Schedule deactivate" in caplog.text -def test_terminate_job_recover(connection_id: Column, terminating: None, get_stub: None, caplog: Any) -> None: +def test_terminate_job_recover(connection_id: UUID, terminating: None, get_stub: None, caplog: Any) -> None: """Test TerminateJob to recover reservations in state Terminating.""" terminate_job = TerminateJob(connection_id) job_list = terminate_job.recover() @@ -70,7 +69,7 @@ def test_terminate_job_recover(connection_id: Column, terminating: None, get_stu assert msgs[0]["event"] == "Recovering job" -def test_terminate_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_terminate_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test TerminateJob to return trigger to run immediately.""" terminate_job = TerminateJob(connection_id) job_trigger = terminate_job.trigger() diff --git a/tests/job/test_provision.py b/tests/job/test_provision.py index f6392110..6f9bb118 100644 --- a/tests/job/test_provision.py +++ b/tests/job/test_provision.py @@ -1,7 +1,6 @@ from datetime import datetime, timedelta, timezone from typing import Any - -from sqlalchemy import Column +from uuid import UUID import tests.shared.state_machine as state_machine @@ -11,7 +10,7 @@ def test_provision_job_provision_confirmed( - connection_id: Column, connection: None, provisioning: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, provisioning: None, get_stub: None, caplog: Any ) -> None: """Test ProvisionJob to transition to Provisioned.""" provision_job = ProvisionJob(connection_id) @@ -22,7 +21,7 @@ def test_provision_job_provision_confirmed( def test_provision_job_already_terminated( - connection_id: Column, connection: None, provisioning: None, terminated: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, provisioning: None, terminated: None, get_stub: None, caplog: Any ) -> None: """Test ProvisionJob to return Error when reservation is already terminated.""" provision_job = ProvisionJob(connection_id) @@ -33,15 +32,15 @@ def test_provision_job_already_terminated( def test_provision_passed_start_time( - connection_id: Column, connection: None, provisioning: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, provisioning: None, get_stub: None, caplog: Any ) -> None: """Test ProvisionJob to transition to Provisioned and not start a AutoStartJob.""" from supa.db.session import db_session with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.start_time = datetime.now(timezone.utc) - timedelta(hours=1) - reservation.end_time = datetime.now(timezone.utc) + timedelta(hours=1) + reservation.schedule.start_time = datetime.now(timezone.utc) - timedelta(hours=1) + reservation.schedule.end_time = datetime.now(timezone.utc) + timedelta(hours=1) provision_job = ProvisionJob(connection_id) provision_job.__call__() assert state_machine.is_provisioned(connection_id) @@ -49,7 +48,7 @@ def test_provision_passed_start_time( def test_provision_cannot_auto_start( - connection_id: Column, connection: None, provisioning: None, activated: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, provisioning: None, activated: None, get_stub: None, caplog: Any ) -> None: """Test ProvisionJob to return error when data plane cannot transition to auto start.""" provision_job = ProvisionJob(connection_id) @@ -60,15 +59,15 @@ def test_provision_cannot_auto_start( def test_provision_cannot_activate( - connection_id: Column, connection: None, provisioning: None, activate_failed: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, provisioning: None, activate_failed: None, get_stub: None, caplog: Any ) -> None: """Test ProvisionJob to return error when data plane cannot transition to activating.""" from supa.db.session import db_session with db_session() as session: reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() - reservation.start_time = datetime.now(timezone.utc) - timedelta(hours=1) - reservation.end_time = datetime.now(timezone.utc) + timedelta(hours=1) + reservation.schedule.start_time = datetime.now(timezone.utc) - timedelta(hours=1) + reservation.schedule.end_time = datetime.now(timezone.utc) + timedelta(hours=1) provision_job = ProvisionJob(connection_id) provision_job.__call__() assert state_machine.is_provisioning(connection_id) @@ -76,7 +75,7 @@ def test_provision_cannot_activate( assert "Can't activate_request when in ActivateFailed" in caplog.text -def test_provision_job_recover(connection_id: Column, provisioning: None, get_stub: None, caplog: Any) -> None: +def test_provision_job_recover(connection_id: UUID, provisioning: None, get_stub: None, caplog: Any) -> None: """Test ProvisionJob to recover reservations in state Created and Provisioning and not passed end time.""" provision_job = ProvisionJob(connection_id) job_list = provision_job.recover() @@ -93,7 +92,7 @@ def test_provision_job_recover(connection_id: Column, provisioning: None, get_st assert msgs[0]["event"] == "Recovering job" -def test_provision_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_provision_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ProvisionJob to return trigger to run immediately.""" provision_job = ProvisionJob(connection_id) job_trigger = provision_job.trigger() @@ -101,7 +100,7 @@ def test_provision_job_trigger(connection_id: Column, caplog: Any) -> None: def test_release_job_release_confirmed_auto_start( - connection_id: Column, + connection_id: UUID, connection: None, releasing: None, auto_start: None, @@ -118,7 +117,7 @@ def test_release_job_release_confirmed_auto_start( def test_release_job_release_confirmed_auto_end( - connection_id: Column, connection: None, releasing: None, auto_end: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, releasing: None, auto_end: None, get_stub: None, caplog: Any ) -> None: """Test ReleaseJob to transition to Released and, disable auto end and schedule deactivate of data plane.""" release_job = ReleaseJob(connection_id) @@ -129,7 +128,7 @@ def test_release_job_release_confirmed_auto_end( def test_release_job_release_confirmed_invalid_data_plane_state( - connection_id: Column, connection: None, releasing: None, activate_failed: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, releasing: None, activate_failed: None, get_stub: None, caplog: Any ) -> None: """Test ReleaseJob to transition to Released even when data plane is in activate failed state.""" release_job = ReleaseJob(connection_id) @@ -140,7 +139,7 @@ def test_release_job_release_confirmed_invalid_data_plane_state( def test_release_job_already_terminated( - connection_id: Column, connection: None, releasing: None, terminated: None, get_stub: None, caplog: Any + connection_id: UUID, connection: None, releasing: None, terminated: None, get_stub: None, caplog: Any ) -> None: """Test ReleaseJob to return Error when reservation is already terminated.""" release_job = ReleaseJob(connection_id) @@ -150,7 +149,7 @@ def test_release_job_already_terminated( assert "No deactivate" in caplog.text -def test_release_job_recover(connection_id: Column, releasing: None, get_stub: None, caplog: Any) -> None: +def test_release_job_recover(connection_id: UUID, releasing: None, get_stub: None, caplog: Any) -> None: """Test ReleaseJob to recover reservations in state Created and releasing.""" release_job = ReleaseJob(connection_id) job_list = release_job.recover() @@ -165,7 +164,7 @@ def test_release_job_recover(connection_id: Column, releasing: None, get_stub: N assert msgs[0]["event"] == "Recovering job" -def test_release_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_release_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ReleaseJob to return trigger to run immediately.""" release_job = ReleaseJob(connection_id) job_trigger = release_job.trigger() diff --git a/tests/job/test_reserve.py b/tests/job/test_reserve.py index 851001c4..cca074b3 100644 --- a/tests/job/test_reserve.py +++ b/tests/job/test_reserve.py @@ -1,15 +1,16 @@ from datetime import timedelta from typing import Any, Generator - -from sqlalchemy import Column +from uuid import UUID import tests.shared.state_machine as state_machine +from supa.db.model import Connection, Reservation +from supa.db.session import db_session from supa.job.reserve import ReserveAbortJob, ReserveCommitJob, ReserveJob, ReserveTimeoutJob from supa.util.timestamp import current_timestamp -def test_reserve_job_reserve_confirmed(connection_id: Column, reserve_checking: None, get_stub: None) -> None: +def test_reserve_job_reserve_confirmed(connection_id: UUID, reserve_checking: None, get_stub: None) -> None: """Test ReserveJob to transition to ReserveHeld.""" reserve_job = ReserveJob(connection_id) reserve_job.__call__() @@ -17,7 +18,7 @@ def test_reserve_job_reserve_confirmed(connection_id: Column, reserve_checking: def test_reserve_job_reserve_failed_src_stp_id_equals_dst_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, src_stp_id_equals_dst_stp_id: None, @@ -32,7 +33,7 @@ def test_reserve_job_reserve_failed_src_stp_id_equals_dst_stp_id( def test_reserve_job_reserve_failed_unknown_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, unknown_stp_id: None, @@ -47,7 +48,7 @@ def test_reserve_job_reserve_failed_unknown_stp_id( def test_reserve_job_reserve_failed_disabled_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, disabled_stp: Generator, @@ -62,7 +63,7 @@ def test_reserve_job_reserve_failed_disabled_stp_id( def test_reserve_job_reserve_failed_unknown_domain_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, unknown_domain_stp_id: None, @@ -77,7 +78,7 @@ def test_reserve_job_reserve_failed_unknown_domain_stp_id( def test_reserve_job_reserve_failed_unknown_topology_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, unknown_topology_stp_id: None, @@ -92,7 +93,7 @@ def test_reserve_job_reserve_failed_unknown_topology_stp_id( def test_reserve_job_reserve_failed_empty_vlans_stp_id( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, empty_vlans_stp_id: None, @@ -107,7 +108,7 @@ def test_reserve_job_reserve_failed_empty_vlans_stp_id( def test_reserve_job_reserve_failed_to_much_bandwidth( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, to_much_bandwidth: None, @@ -122,7 +123,7 @@ def test_reserve_job_reserve_failed_to_much_bandwidth( def test_reserve_job_reserve_failed_no_matching_vlan( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, no_matching_vlan: None, @@ -137,7 +138,7 @@ def test_reserve_job_reserve_failed_no_matching_vlan( def test_reserve_job_reserve_failed_all_vlans_in_use( - connection_id: Column, + connection_id: UUID, reserve_checking: None, reserve_timeout_job: None, all_vlans_in_use: None, @@ -151,7 +152,7 @@ def test_reserve_job_reserve_failed_all_vlans_in_use( assert state_machine.is_reserve_failed(connection_id) -def test_reserve_job_recover(connection_id: Column, reserve_checking: None, get_stub: None, caplog: Any) -> None: +def test_reserve_job_recover(connection_id: UUID, reserve_checking: None, get_stub: None, caplog: Any) -> None: """Test ReserveJob to recover reservations in state ReserveChecking.""" reserve_job = ReserveJob(connection_id) job_list = reserve_job.recover() @@ -166,7 +167,7 @@ def test_reserve_job_recover(connection_id: Column, reserve_checking: None, get_ assert msgs[0]["event"] == "Recovering job" -def test_reserve_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_reserve_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ReserveJob to return trigger to run immediately.""" reserve_job = ReserveJob(connection_id) job_trigger = reserve_job.trigger() @@ -176,7 +177,7 @@ def test_reserve_job_trigger(connection_id: Column, caplog: Any) -> None: # # TODO rewrite test to check correct reservation timeout handling # -# def test_reserve_commit_job_invalid_transition(caplog: Any, connection_id: Column, reserve_held: None) -> None: +# def test_reserve_commit_job_invalid_transition(caplog: Any, connection_id: UUID, reserve_held: None) -> None: # """Test ReserveCommitJob to detect an invalid transition. # # Verify that a ReserveCommitJob will detect an invalid transition @@ -194,7 +195,7 @@ def test_reserve_job_trigger(connection_id: Column, caplog: Any) -> None: def test_reserve_commit_job_reserve_commit_confirmed( - connection_id: Column, connection: None, reserve_committing: None, get_stub: None + connection_id: UUID, connection: None, reserve_committing: None, get_stub: None ) -> None: """Test ReserveCommitJob to transition to ReserveStart. @@ -206,9 +207,94 @@ def test_reserve_commit_job_reserve_commit_confirmed( assert state_machine.is_reserve_start(connection_id) -def test_reserve_commit_job_recover( - connection_id: Column, reserve_committing: None, get_stub: None, caplog: Any +def test_reserve_commit_modified_start_time( + connection_id: UUID, + connection: None, + reserve_committing: None, + modified_start_time: None, + auto_start_job: None, + get_stub: None, + caplog: Any, ) -> None: + """Test ReserveCommitJob to reschedule AutoStartJob when start time is modified. + + Verify (see fake_servicer) that a ReserveCommitJob will + ...... + """ + reserve_commit_job = ReserveCommitJob(connection_id) + reserve_commit_job.__call__() + assert state_machine.is_reserve_start(connection_id) + assert "Reschedule auto start" in caplog.text + + +def test_reserve_commit_modified_no_end_time( + connection_id: UUID, + connection: None, + reserve_committing: None, + modified_no_end_time: None, + auto_end_job: None, + get_stub: None, + caplog: Any, +) -> None: + """Test ReserveCommitJob to reschedule AutoStartJob when start time is modified. + + Verify (see fake_servicer) that a ReserveCommitJob will + transition reservation state machine to ReserveStart, + and transition data plane state machine from AutoEnd to Activated, + and that the previous auto end job is canceled. + """ + reserve_commit_job = ReserveCommitJob(connection_id) + reserve_commit_job.__call__() + assert state_machine.is_reserve_start(connection_id) + assert state_machine.is_activated(connection_id) + assert "Cancel previous auto end" in caplog.text + + +def test_reserve_commit_modified_set_end_time( + connection_id: UUID, + connection: None, + reserve_committing: None, + modified_end_time: None, + get_stub: None, + caplog: Any, +) -> None: + """Test ReserveCommitJob to schedule AutoEndJob when end time is set on connection without end time. + + Verify (see fake_servicer) that a ReserveCommitJob will + transition reservation state machine to ReserveStart, + and transition data plane state machine from Activated to AutoEnd, + and that a auto end job is scheduled. + """ + reserve_commit_job = ReserveCommitJob(connection_id) + reserve_commit_job.__call__() + assert state_machine.is_reserve_start(connection_id) + assert state_machine.is_auto_end(connection_id) + assert "Schedule new auto end" in caplog.text + + +def test_reserve_commit_modified_change_bandwidth( + connection_id: UUID, + connection: None, + reserve_committing: None, + modified_bandwidth: None, + get_stub: None, + caplog: Any, +) -> None: + """Test ReserveCommitJob to call modify() on backend of activated connection without end time. + + Verify (see fake_servicer) that a ReserveCommitJob will + transition reservation state machine to ReserveStart, + and that modify() is called on the backend. + """ + reserve_commit_job = ReserveCommitJob(connection_id) + reserve_commit_job.__call__() + assert state_machine.is_reserve_start(connection_id) + assert state_machine.is_activated(connection_id) + assert "modify bandwidth on connection" in caplog.text + assert "Modify resources in NRM" in caplog.text + + +def test_reserve_commit_job_recover(connection_id: UUID, reserve_committing: None, get_stub: None, caplog: Any) -> None: """Test ReserveCommitJob to recover reservations in state ReserveCommitting.""" reserve_commit_job = ReserveCommitJob(connection_id) job_list = reserve_commit_job.recover() @@ -225,47 +311,49 @@ def test_reserve_commit_job_recover( assert msgs[0]["event"] == "Recovering job" -def test_reserve_commit_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_reserve_commit_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ReserveCommitJob to return trigger to run immediately.""" reserve_commit_job = ReserveCommitJob(connection_id) job_trigger = reserve_commit_job.trigger() assert current_timestamp() - job_trigger.run_date < timedelta(seconds=5) # more or less now -# -# TODO removed this check from ReserveAbortJob, what else should we check here? -# -# def test_reserve_abort_job_invalid_transition(caplog: Any, connection_id: Column, reserve_held: None) -> None: -# """Test ReserveAbortJob to detect an invalid transition. -# -# Verify that a ReserveAbortJob will detect an invalid transition -# when the reservation reserve state machine is not in state ReserveAborting. -# """ -# reserve_abort_job = ReserveAbortJob(connection_id) -# caplog.clear() -# reserve_abort_job.__call__() -# assert "Cannot abort reservation" in caplog.text -# -# # verify that reservation is still in state ReserveHeld -# with db_session() as session: -# reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() -# assert reservation.reservation_state == ReservationStateMachine.ReserveHeld.value - - def test_reserve_abort_job_reserve_abort_confirmed( - connection_id: Column, connection: None, reserve_aborting: None, get_stub: None + connection_id: UUID, + connection_id_modified: None, + connection: None, + connection_modified: None, + reserve_aborting: None, + get_stub: None, ) -> None: """Test ReserveAbortJob to transition to ReserveStart. Verify that a ReserveAbortJob will transition the reserve state machine - to state ReserveStart when in state ReserveAborting. + to state ReserveStart when in state ReserveAborting. Also Check that + the return to the previous version of the reservation. """ + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + connection_from_db = session.query(Connection).filter(Connection.connection_id == connection_id).one() + assert len(reservation.p2p_criteria_list) == 2 + assert len(reservation.schedules) == 2 + assert reservation.version == 1 + assert connection_from_db.bandwidth == reservation.p2p_criteria.bandwidth + assert connection_from_db.bandwidth == 20 reserve_abort_job = ReserveAbortJob(connection_id) reserve_abort_job.__call__() assert state_machine.is_reserve_start(connection_id) + with db_session() as session: + reservation = session.query(Reservation).filter(Reservation.connection_id == connection_id).one() + connection_from_db = session.query(Connection).filter(Connection.connection_id == connection_id).one() + assert len(reservation.p2p_criteria_list) == 1 + assert len(reservation.schedules) == 1 + assert reservation.version == 0 + assert connection_from_db.bandwidth == reservation.p2p_criteria.bandwidth + assert connection_from_db.bandwidth == 10 -def test_reserve_abort_job_recover(connection_id: Column, reserve_aborting: None, get_stub: None, caplog: Any) -> None: +def test_reserve_abort_job_recover(connection_id: UUID, reserve_aborting: None, get_stub: None, caplog: Any) -> None: """Test ReserveAbortJob to recover reservations in state ReserveAborting.""" reserve_abort_job = ReserveAbortJob(connection_id) job_list = reserve_abort_job.recover() @@ -282,7 +370,7 @@ def test_reserve_abort_job_recover(connection_id: Column, reserve_aborting: None assert msgs[0]["event"] == "Recovering job" -def test_reserve_abort_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_reserve_abort_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ReserveAbortJob to return trigger to run immediately.""" reserve_abort_job = ReserveAbortJob(connection_id) job_trigger = reserve_abort_job.trigger() @@ -290,7 +378,7 @@ def test_reserve_abort_job_trigger(connection_id: Column, caplog: Any) -> None: def test_reserve_timeout_job_invalid_transition( - caplog: Any, connection_id: Column, connection: None, reserve_committing: None + caplog: Any, connection_id: UUID, connection: None, reserve_committing: None ) -> None: """Test ReserveTimeoutJob to detect an invalid transition. @@ -305,7 +393,7 @@ def test_reserve_timeout_job_invalid_transition( def test_reserve_timeout_job_reserve_timeout_notification( - connection_id: Column, connection: None, reserve_held: None, get_stub: None + connection_id: UUID, connection: None, reserve_held: None, get_stub: None ) -> None: """Test ReserveTimeoutJob to transition to ReserveTimeout. @@ -317,7 +405,7 @@ def test_reserve_timeout_job_reserve_timeout_notification( assert state_machine.is_reserve_timeout(connection_id) -def test_reserve_timeout_job_recover(connection_id: Column, reserve_held: None, get_stub: None, caplog: Any) -> None: +def test_reserve_timeout_job_recover(connection_id: UUID, reserve_held: None, get_stub: None, caplog: Any) -> None: """Test ReserveTimeoutJob to recover reservations in state ReserveHeld.""" reserve_timeout_job = ReserveTimeoutJob(connection_id) job_list = reserve_timeout_job.recover() @@ -334,7 +422,7 @@ def test_reserve_timeout_job_recover(connection_id: Column, reserve_held: None, assert msgs[0]["event"] == "Recovering job" -def test_reserve_timeout_job_trigger(connection_id: Column, caplog: Any) -> None: +def test_reserve_timeout_job_trigger(connection_id: UUID, caplog: Any) -> None: """Test ReserveTimeoutJob to return trigger to when the reservation is timed out.""" reserve_timeout_job = ReserveTimeoutJob(connection_id) job_trigger = reserve_timeout_job.trigger()