From 6e281c2e17d42435ee0539d7468490693eca86d9 Mon Sep 17 00:00:00 2001 From: IsaacLera Date: Mon, 2 Sep 2019 16:27:49 +0200 Subject: [PATCH] fixing doc --- .../api_reference/yafs.application.doctree | Bin 40781 -> 40776 bytes .../doctrees/api_reference/yafs.core.doctree | Bin 55164 -> 60736 bytes .../build/doctrees/api_reference/yafs.doctree | Bin 25463 -> 29344 bytes .../api_reference/yafs.selection.doctree | Bin 22796 -> 26587 bytes docs/build/doctrees/environment.pickle | Bin 128852 -> 142486 bytes docs/build/doctrees/index.doctree | Bin 24780 -> 25696 bytes .../build/doctrees/introduction/basic.doctree | Bin 59126 -> 59130 bytes docs/build/html/_modules/yafs/core.html | 302 +++++++++++++++--- docs/build/html/_modules/yafs/placement.html | 29 +- docs/build/html/_modules/yafs/selection.html | 29 +- docs/build/html/_modules/yafs/topology.html | 58 +++- docs/build/html/api_reference/yafs.core.html | 38 ++- docs/build/html/api_reference/yafs.html | 21 ++ .../html/api_reference/yafs.selection.html | 39 ++- .../html/api_reference/yafs.topology.html | 24 +- docs/build/html/api_reference/yafs.utils.html | 22 +- docs/build/html/contents.html | 1 + docs/build/html/genindex.html | 8 +- docs/build/html/index.html | 24 +- docs/build/html/introduction/basic.html | 2 +- docs/build/html/objects.inv | Bin 1447 -> 1479 bytes docs/build/html/searchindex.js | 2 +- docs/index.rst | 21 +- 23 files changed, 489 insertions(+), 131 deletions(-) diff --git a/docs/build/doctrees/api_reference/yafs.application.doctree b/docs/build/doctrees/api_reference/yafs.application.doctree index 31606f43b50d54e105e3ed6636d439df83e82fb0..679df55854fa504139a61209df01757b78a6cd03 100644 GIT binary patch delta 221 zcmX@RkLkodrVW$lI){p-W#**DXXX{B7L{b?=f$VyB_`#hrW6UVF)(z5au+3*!-WKa zLf(v_yeXx*1@XnHB_)}8>BU7tlW)(J;}!QIFPC>l9(JjPg+zG$j;EH zEs_G#8W~!#8M?7W(vy4V#RnY(=SQnJL9Z NieRNmK(aJR4*&vZHWB~; diff --git a/docs/build/doctrees/api_reference/yafs.core.doctree b/docs/build/doctrees/api_reference/yafs.core.doctree index 4bf87598a4e88dbead21a33f8ee50c671c87ab19..428732202ce883b6a42f135de891e3916fb91f2c 100644 GIT binary patch literal 60736 zcmd6Q2b`Qm`G0`aOC|KahIZLYF7$E;5;_+MC0Seo;n=&|-0rfsd++RC3iwhaK!S?W zR1`r3L9wAUsnP^QK@llRks`e*C3 zyeF^T(_8ErENAnj_Cm2YU25TLf4Wd^aaNmpinF@wtkIenQ%Lov%S#5*C1<$njA%{9 zh7B9GB(k1W2q4BTOKu*4FzLQ*shl=l>4gy8W^RcyZdr1Z2TdLmmTd%BslEV*WcM7prhS#w!(t4P9t$s!BA>F&Y4u2iX% z?PIYP$|YxVV@6(H)>@WaFGA0Xvd_MAoVAzLsS<+)lTP(yQr-DwDqv7X zg)Bgw4VMij)+`Nnmr!ZZ42lKlXFI?11%G4lHx7T}@izf~6Y)0*e{14zGXB=W-`e70Z$132kG~BP8?rf0 zXLFn$=wZ62hb=N2W;Ps5jPA)~^SzMW*>b+KRc*U3rF)ox7H4ZT`&QSPie_(8i@aRM z6T=cCp$=r+Y0Iph80p1NOYVnqn2{)@O=(89luGsF(4{P0lq#juo*3l`nbkAU*=Jj8m4-@_Pq#R`LuGro z&gWV)@#GY6I`-Ir$+5?(Zo))X*UddMZJE~0w9NEOdt!vhI5RWI++MAj?dE5;pP$)b zerCt{nO)`&W*|$(lVI;oD0b)Eev1KU`Y49@hkNz@!U+d6tfIsgN5t@2oo!3(lPa0(|fa}9+NJoeItpM4lB7Z zYl;PS0kK8daz@}LT`Dv4mQtxBHjq#CqzN-E2FqK_7yFh>ix(Y6<7d17R5u|Jh9I3~F|>gm9e zNZToP=Qy}@O34ubkbF)V<`)DNKbR?p1alU))|ISF1Df)nfk9pb85g_G5;l%+fF?5D zTB*IX_~?Y}z;5@g)j~>LsM+ngQn9f0v=|2~ApnhC!s#ZB_O$!#Vj+$CKWO?w)aIH& zM1odd+ISEcP^1R)We_YOD0K~_${8h1Mce3y!8!~QeyRqGBXZ|>w2ukYVMQ^{2`rv3 zu&Ow2X5Ca`q;2NTiM58tqz5np%l2SO(Bhm_(+!-Aih7Fce6c%h0-aMyaP)$~e4hGs zmL}J*ig!*+jId>TItCFV7G&AgpRqh#qRSeTXsUoAlx$0jvm8Zwrt5r(MLN>2CNXGm zF?vzvb)xcGL2Z5F1Tuh!JVus~mfrKm7*&PImM zah-E*l@Iq$XR2k^uaE4jpotdeJcxe2>wKM}w?OouV`&eGKhBD8ahz{Z_HVXk&dM|s z^8$!jP0;xkME$nwTo@Jg{3fDWIllurFLIrWftxukB-$8>rc(Vb<+|jf5Pwj5H|WT~qv2hIeFw_T){EkRVb7&hVyfj%r9K$YFjdGnV+CM z0-F)Abgn_qL$24l&UNIv8Mv}8gbZY@1*I_8Hx=fW5M~I3oEsqHjjnT(FXOe6G2_d0 zv+LYKnK&72ZnP=VtxZMx6-4@II?ip7=yun+!N1hKg<@qP@tU+=f2Cqk4=TV>6gVnqqbDckv7kwoSyHaxgOH&B`be)$hGthn+11+R*kdzp`Fq>Y){@QsZ zF%prOIml(xV8ZRZis?O}I5bPFQ7ZR3uUXL&V-XLD^Vyzkd3j}uLvVQ1;OI+C?((Jw zmDy8b1d_A8nbQVg37@9DdA)W_ku7j)-Qv7~Y`p0@e-E*&!_XzZyvl`*xv2=^aiI_&Q9WABW&nb~F%kHTC4ia%L8j=XRuE5kXkl}t z%VKOH+$}9`avn-^<&`6pM^OXi*>=2@c-M;BVM}XkC3b4zWC((pR=`80QxUi(F68)7 zks%(nf#E1RLenM^(>xLrp_rQ5Yo;U3!?BLm%zIRQJ5hpuQ}Yy5dqpftnSz;t^yTUt zZEt6`L4u22TfjAW3=McDNPdvSTF-J+%&t~8Qrmw0q*@_|= zss%AKE#bXHcyCMiV^Ihy2gYig#b8awH@IdW35SH7XCn6%oBcdCmq5^2D0&*ns)p zIjWL#GYfH0B2^O@fShkP4-!H>Ca5R}6Q#3?*la|ho*aU}HHQj0p7S_R1l5t8XC4m| z)ZrG&n#VbMspaQM2bOb{&Jk5Y$VXV@sV~TfWBxj z{o~L~>oci*U(sNproST|H$@=ZvAj3Nv{iFJG^3fC=$iuv0JXy_n7Lx1uf-Uop$?T0 zxTY*h@thc;TN%`QE#gBBMfaLp1t{XT_aK!q^oBdvhu zcpC#HVkyL&AdD|mFf_3_3j9BHXL@_E)xo&n=PkOJ6UDpHQlL3W$@4V62?)emEAC&e z#{_HJQ!{IG6~>$ltm=iB43=EXDTsE>7e&%8|8RQYNyB9qbE?vu<(UQxEt!%A6#+xD z6bPBY9D|Va+ngpkSVA$UeOq<}43!sTRtsvvfK<-&Knf=Bt2i&A>Nqz9xES z>pgCDsU1()0RvS~Stt=t)bCQ%a|GJdhi}d$nq6oQ>WDcHk;uUL2wd}ZQDK>f=cg3L z8bqv&m~RO3n-)@CacuV(7pNkFaaF`zAi(B=eG4!UjAI0kmiacKAl8KlT=N~#s1=KX zSi6T-3h#-zNWd2dz{ZA-8gX)aMZ`?v3j+@+RWa#sk4`6vcqb_u$a z$qvN2)8$3!bRmXfiFv!fv?lG(PqfjkJ=<$80~P3p5>}d$d>7vr{fIoX0^h~u#OYi? z{#Sqq)cFGhuKA%@#&Z%XT+qz1EokQdN&)}K0w;Tr{{zdMj2F_}<(4u_*l}cg;k?Q& zz;Ecr+rHFp-DR<09aL(V+Olo??Di^EP2VH7Z9AygwSGaFAA?_gP5nfYL^b7aSusB) zYUe7G^k-lPonD2&H9wbd@tnjD>y%pbYbpC=b|=3O%GDOd_uu&I>*gB8H#GIvDtVqZ z-PvYr=WW=fZv+A?J%g~Nze#jx>2Jm_ z*W9A_xb~-1%%aT+il0Kk*dMbJdsuGSzj73fUuYq7q{@o&ZkKW_SamabNbfFU}4#vY1SXTdDK{q$9zad&@grK<( z@yN+<5xC}eB2;T(DN@Do-!I4qEM(YNM`V-X|Gfa4%k~Gr)ENE;5e2dSh`==uiAJqh z6vS^*GW>rM@WTPHUw?dE$?!j-u|v;*iGMmBvn7r70FKJr zr<%WjH?+!pt(sQwI5~OV^e2?@h@vVz(vt-4{6A65Q(%qS@mB<{d0K+TbJAAW=CS}Q z{n#@Ce%1mfx3&G)U_K&Qrj=sPPs&GSe>K3+iJnimCTN4-^GRiiLw1N{dbk}nDEWe<%TPOU?-k_qz) z5+OB_?A9$gBwr;;#37lRf#~JAZSd4kGaysP`}i6OHuFB_wj;!=x$PO8mfHbAZbv-S z8DQ@AI^*e4d;>pR^Cq73C`w)o&;G7=>D2s#zjM3cnIqet(U zCWTd$1sJo1M`7kakfeSE|F2|>R`3!24F7*b?M(jP=ix&Lf&w0fZGTww#FKSO84KG5 zYF>7s)+^!dD(>pWsgmPb%<3S38oGw44Y$Vt|7JI(_FI z4Dg%*I5L2vDof1HKt?sDU??)LLCJBli^xXAs0>qgC5|E;uOzG zmT-T<{Mlkum`_3VFJk)(-r4K!R>y&Kolxb7YyW?r+qf@4u z&w)byEbl4W(JTi8&Y48*OwJq%?`KcGFx&g=$={iV|B%4@Wu?H&RI?X|K?i#yaLqnq z9nVR)unw4O>7cexRbSfW4B}*3i`f@YP|<#(wZElB$A?$2+{iXIgkTN;2+jC`0*&N2 zsB4`_&w1VTEc|xOLBfb9_lFMbw8~bmqqg5+KAejuP~{!j-Y%Z)v8wMt?z=d;3d*3v ztC3b2?8PZ~Q2%m%w|y{q<(PiB*3=cg&BIRqq8VuvDd&0!SI9^c4O zH7X>#6V30b4;SE^3Ltyxzz;Q7@eRAsgp%!&L*=Mx>(p956!unUioH`a6V!hm0jxUx z=jRdaYB9kR*_T9p=aFL7wD05=ddtbo12j5L2H}qLC=p@Dc{F~xX1?Cz$sK@64^$`* zs1P`9;m-)G4<6a`NJWDa6*)?c&h=cY{{mpZoST3GT;n1VBAkf8H7ALRhP62|tQO&9!JJ}Yw6VN$ zPLDEtQ7O%3I2ABn@mG+|Qp7@t(-64kbdj+_kY%+HX9#AQh0zWwznxNq<%(}E!kK`9 z2;A=Lqna-v4g!1`0T%Z}#0o%mfdI6o*qm+764+NmV74*PpmKk<`5Ke#7VS)v&DrK` zz{$^ZjwqfRPy~(hM8n^Toe4HzW1m-LlXd3P*k7HaDZm!%9P`CmdOkz!s5W2657&GH zPg^k|);IN{e%f3>xa#fHIp%~kzQwS5Q?>av;-KXV5n!ngPrtg8kJYl>Se*&BQrqP| zAzU0nu=dzDK6bfJ$&CjPmnfaXx9^GErIuXsc+>-JnD$3*@VCGPJWwo@ve@A)*CF?f z^8hb>HE}dtY-866vN#vU7}=X$pyTIdIC#DN6s1^e(8{Vi7W!&mEzwvRXRQc3cT+vg@>HY!u z+Owq=b0yMIsy`CPAA1~mTD_{I*erjd#M)f9<;a0`_NNT(S&~p8o1Y;XS-J`VmjCed zt1Vfo+9pQ(;+S734pcZaU*YOut_C^qz6OD7uEi6)KONF_bPW5J8w1Z7w0WHvUT+y{ z{BEmh&eo#bIDk>5zZ68RN-K-(Hz3{LA$g-{-ehSeuY!K;CUWRH*gxJ8vkvZ=l}2`~ zb<<<_qd!iIKp*O-RA7S>iM*gtwUAi3rr0yAZhM*Fufw zJo;phDvN^N%ogPpkmDs6~Y;}b(4I&ff0dA*gD2L=5{51LoPL@Sadf*#c_4>Fe$Id>dGS|z}1yU@xwKb;R(}_lf)>) zKkHq(G=Jf5yShTQ;nkJL@m{^ULcLJmPcXE$Fq9MXB%-0~rx3X2uXy^lkYd;_JXl}h zOwG1k^Rz{KMrhAkG|6GpgQDRGixulR0shScj8kWR6OXjf+QwhMay>6v(aJTFnSDWt zom%6m$H=@00A%|m1g?2m(D8=Q5Pf7z{^`H zu1Ic1Al1VP)w7YrXhzQAiBhzdX}kRTO0##8!ART$$5P@qp60kk)T?ZI- zg|d4!Y-6Ep;-ORyM+IXfvnkR%oKXGRj2KPp7pLMrl{&R6MzSkXyFNn#tX)&^!!?^z zAk;32i`un?-fivLlD}>3BHM87+6wR0wTl{I?b@25o$LD9Fs+D#o~I(fp)@@GxLEn0QmvL%ALRdooU+TGhO^cfaCvh8pi#Y>@;li0y!Q)XKw&r5ENQt@1L z{Y71D*VyH|phj$Q&~W)O2)lfD77@C9cfl_l zSJQi3duc;1Uq2sO1BfjcENCyrG)&)d7=V|->BgyeTo+YvZcfoLH$N7tSZRJ=Pbkwt zUY_rFH^~p*?`IjgVLjjP?npre+XI1XK8I(u?{`lRajEVLi|WA4BtX>vyBDIZ|95Zv z!g7$_?RdJnHb6a8HU{yY~aJjBr?rqKUgqy1kV=hLp;{QJ=UB+9ompiTaE(L zW*o+_GwGw5!|{%s&q3gtxp?~af^4k4@Lj>NX%(pPwZyIhu6yg}AH5Z}_Fc5%=jA-ID30Vh{*K@^JtMdV~aG**c#m{x(VVCIX})L}?hu)z=4l<>3_ z6JnM1V*AZO!qvEfnG@1j$gsv0ya;j7@?r!ypoOPj-O0ylxvnetcp;n+La-*?)n}%o9cKBug$i1=V0?Z*R=*?e+b^+&hX5orYT&28#G`GQgoCin6Nu zhEvGP^WAVID3*$Y@C?B(v+!~d zT7BfKsDXoUxgZ*s#hFa^J%nEp(Jxz~$y-?*!3k;|oQ4yAsy!@?EhS#Z+0x?Muvn}A z3n!xepYYG8co$_pk3&4TqHtmHIBW>!*+=Z+rtiKKT%#IXSjpnvx`eZmxT&rsY@Dh% zq++-tV*r=*VlQVEkk6V2tf?n-k)Bq3f8ke@#fVnyVc)Zu==%%5iWe*>2|nyEJR30} zPmNW``~Jdn1m1xBxkL&33(rFYYQXsja4<}$@tjAW>}|Pw{=#nv>YEnI`U@}6OD#7~ zHnjh5DV@#j+d{t3BI~wm?RDjm_&aO_Pv@vw1;2ZjxLsBc`Z6`!aoTKo;d*Ac)sFxTS+>o~%R zYb4~!W^O zn}xDQ=61c*^7Etv%R7*+mU^df@3Oeb-Jt6g(=lZUvTu#guSL98mX29tIoi2fiJjV$ zG8E3{9w0z7_abo3Z-gBmGB(PG8AiW+C47M}vGH_fuVcI5Pg7QfuY6l$eG4 zk&fbvjLaWEJS6=+0xYzMh#eY}DGCs`5(LYi^i2m<)jVi1|0v9dET%T11Rz01FtR40 zeXu;G%hc%U&_5lh{F5j=Y$$H}q^gs^oc6t~c@IHxU}UH73ff@fgtR zxHbNaXxIEjG^GY#6zybtT=7G7YdisHxHTAr-5O7d2;CY_;TINM^d6UMCN!m2Ca@@G z_cq3~;n6!7LMH|V#XxmFN@S%uF(`t0nv6UT#xoKX9*k!hIkBDx<2j_DI{giSYo5om z+Jo_ehqyFJUt>*n&5KNpx-VWrv~^#+j9;#KMep`f$xx9)E7U03wI{QD7q1Gq-i)#0 zyLgRgc3mt)&%BOk6|MGaz+v@Y8HF&2Xt+pJcq(yj_p`F6{sOH~@Lzdq|;F|aG^rvuSr$!uX zUi&~W|FJOE=YgR$ng3UD^)gan{y)Hgxm+bcGaup|jE5ltM}YA38Iw&l*0!R&Uyr3z*>7w?LAr}5d-F<5a6Oek+3$9tODk~dti*fT0&s9+6C@`u}m6* zdte;kR8cu$I7{ahP-9>{*`i#TGCeD;?zLV@gw7v;is@mS=IoSjR-W zm()3#+ELj@)^Z?^r{cn%d>$W3zz7lND0nwR5qr(5&LGoIfk`b6F5~J}jvcW=kXo3< zkqZIO4F>F0v4!An9a=Ep%a9|m0#c_Ek+n(Cuy$0Sa)xX>Y z$C``Q-G-0D@R~7BYW>e$wY1p&*XQB&#%(!f6r(XOTfUoYcL^EEmfcpj2NV5S?C0=; z+am=Zc9YFS47A2PSIGNrvb_Y}fc)M>3A@SmK?G{#z6e~ipHSmDk3QL>QdYLr?JuYU zER>zW9;laEZk}vt2AxW0w=+w~2U%o&1nr~B#vBY_zCY>}yD+c8THqeBSa zIW!iB0v7o{41sG77u9&q<4cK^e@(&X2xP7WN$!Ojw&FDhcbzxN;SpjK&7oXBpC?-9 zrzHdjq0qsR2wXEyeB(J!GUmFXgQEm;v<1;tv3fP%%m+aIayv$-(OhYlM;FoTezm$} zk3~AJh?UfK3?GUCS;Yd z`3Xd`_pDS=G+#gha^xa#&55E^I{~Lqwt;fzz)6BU*+M3_Kp73CSR;~aI(~|%G?)B~ zg5h-hRQz(yQoYBue(!VUwDh!wwAyl%nIopt8P-h4&p;d$unYmtLE-5Sn8*&UFoELVw!ofnf?HT$y#bB={c zVn#U(t%t17RaA4<=K%(+JuGuRUcvV32yjqI_?9i1RI~l2U@ovQ5$7iPe@ki2`F|TQ z;2-ggUWj-I@*M=Oxk!YpAY>Z|;`;?I7T9+~V75I3et}DvGz7oE_W&oqz@?&iSwIol z`MzkZ62AZq0{sHa7c1!H4CxoR0zX{y13YbYgjhe+i#j%QCE;rP0?Y|%{D@(VU*N}x zgO-1Sz%@U`)34;@W3^n@FYq%VToppFw%NBo@(cW2$&ns67)1X<=^UV4Eppdba!G?4 z{Ly}as*~pM4B(Qn(h&Uu!PZ+`Srtrjpl#-A74-txuxFQq#+em;D``huuHFr=XOzb5v8tR>Tw+;0!{_U zno-+Ul(RKFm{I>;5RpnA7=u4B-JeoFD58I~M3Yz29t?3x?RB3kI;#$^5P!TSb?#B2 zPB0epG~iFZA5wNA8nBb^KQYmtd_RmA*E}Nl@Z|eZ#DF}tQz7q9z8@2K1M+_+N_g`9 z7et`aJdVIMPY5-h^XQX3>P=J)yjBQIdP0 zHdOCCv7c)i@}85%*5U)Ph-zV+zv<*Z1n@1!eB@b`&)h&bq(atCcG*mN=s z-}0@u^-*6}SPh9#b(q-dh=ShMK!Ei=A;)tb2Z~T-HAV<(q=m9pW0YQMGv!H#$~_wC zYII|S+hTEbBb43x@iEnlj8lpr%TI%X-?GTEG`84plsV*&y!8Vb*T z<+3>*gktt8TTCX2z?vR``ddsUE45Z;ONnM-Eu^EcBGag~5f2&HLExHoMZ`{{$P~rZ zc#Fw;7IS@JZeTGZTTE<5FdV4bV&XTJ4TZarhr16_3?yi7u`0)N-I=eRv}1n}F$rg(A9X2P*<0iU~xArf3DUr;xK zM)4V8)Z+pUQ;1?GQ318h5eFS_fxtCe3OkfKL*!PUDzBS+P9^&Wr}RJsEZ z;3HjlR=av2)>@1t>WiB zlxX&dST#v=7*dd*!x6YBH&QC{-UeJPW(+FI%K%C<_$rdhk=3nZyOIb3N zeL~4t6x0&?o!SI+^XV_hqzem87My(hm=o8A_VG9+&(kRdpf)jzYsx6*0bj=`_9GhW zRU%d~ik=)YibbV;45K&z1QI&t7C0uzbE|Y<0 z{stui%-=#ru369gEkX+F&SC^ukixUt{2lKhF0IN&)aIQ4IBWC1AWE*@<64KX8K+Xv zNIdam=uQ++b5n8>(d>E#E6~Y!g}A36z=e9kuQekSpkm!l735M28Ma6$i)xW%-A)r= zbCFI5OpSFr15prb83HUWiAJqh6r{?!ohjfi1;BpY@Kq%1_GKkU>`35d`wG%!-OduV zuUcxlYKZ$v;P=8VlX7}`dLa#6DLBg2nmSIq3_4DBrLsfu-tQDV7SKTkou1wkNua3R`w^n8-TN_q;R-#y+mUcoSx^=AigxDZ zKxXi#!f9@EenzxT4X~qR%~eQ627itKC$B`V*8EUBYZbY;f3+a52_S3b(yINnN^UBb zcgp)Zk-I)ZE?BPpC6k7*TzdoHv|M|mDBcuM#9Z=b(O4zRwJdBd*D_z6rryGk%eA-S z2X3dsGgz*@O)s*N=61r>EY~t8q;Utsn&sL%5r=ZS3juDT!_!~tAs>_$>UiDd+Pj5t zPYA)bK)+h4>$q3R5%V2%9lt@kx{muq?YEYij=|vDJLom&*})#_&=*-SF1EW$(!mX# zr51i_r6ZQ@oz6{cE#9T>saPI&hHxMqK`_4~W884ZU|P|Ry-%c!yOehSKCqjQ78{tl%S(JcBOPw`BbUg)je2R(pAp(r_Gphx&`sn)XoD-iOD5 zfKG}*xRZK9bl6EfiC?aHO79i#Lv?;o(>KKx6-?*zbpJ@U0BBm1tBBNi(#vj0Z9jO=@&_P(X2 ze*EA=_B!yOePc8CnR)2knR5?3WcD2M0ioM+?HbW*JO-aE3pWxp>R7l@h{l;VF{oHLPc~V&F-mJ{ z;Q--(o}mT5Vcr;o&D&TJp?MpJU--(D-t9^h2d9m5g{ngtVd_?K`Ai^J&*)8*xG;K? z7&*C~(OVNKsEv~m;20d9)kbe^4{@oMM4DyUtV7V~sC->STN}6@e&K|i-t9D|k@}!K z>KpCO%Z;qz2EuG^Z#E>FU1VuQ+-w9GWO-u*uGvIHYYh-ZwRVvs^i2i1SpZopokr*} zB{!AM8=-$j6~cd~zF>vxKoWOea=ean!M2 z7x2eY-9@az(iLP4s{g6h@OQeW$L9LqnmTZw*!0*OZJCc9tOLCuD*exQDq3hBjV zPh;HYH!Wth$78;`Z_P<**Wkd`(_-;>3Y!jj?u5BPC%G!iu#+sk9&(m)g&y)CMvkl3 zLmrG2RM*)ETyqGX)ji~)9^%sE2F)~M4kKK&dpsP`wtJj|U${hLMj~{1BJlQ&8WDI{;@E~H+j7hUdz=)*PTk*8L&0<-33};4;F?}M z{f>vsZO7vuS4j(IfrZggx_S+OGW7|jUN$Q-WdH-2_&MKtWK0(65G;qlHOGmdEJBWA zR120DOuvQEmT21sDM~@H%|$5!2BP3O%p#fr{04Iefolw&zE;R8V9psFFP|(4tQ-Qf zwKy2`3^Hj5gPw(e)1YUOC@u~tA|p#gW0eeg*qk}&VZK;>j%Ub0&k6Y9nlIoP40>F> z*g?;UgsU0!FejvO62qE7&&h~`mQO)|MK(NrEt8Mca@|4CsX|y9La>(Bw;CGsoTlW+ zP$3xfoQ`x2dd?8FWtLi!yNc!>vdCL-;{_oivYoH`4G#W^oI4HkHQ=ejs05vip9id?`IGR>~9?b>XtmK72K*)a6}D zx%*r*h_wD*VC|J;p}+-%Al~``^p(3kT8kZWqgehTK!%sNJ57>TNFA+2~hK*r|8%0ytJVz~FwsTgv;B4P3f{4f$DEU>S`)2}P z6V2Bx&E#2VeD-Lc%&LEEZ=dvnYytZwQ?U}ZQpUJg*&aJ^0d`Xs?EN>D0*RsH!p&bC zRp4{zI!B=Ez4Dcly|JE5s(|g6a%(M2nOJ;DYC);Jr)bjcAk%fAHY%c)`b=1Rp-W_ZDJ6o*Jl-_mA(rE${~9|4Eea@x6Z` z0tNaG0@u7N)OgOLPxiJLy(^~wEvWY_6p9gM?A{5sg(WQI#61uDM-X@k5=5tpjMx!x)6;Ve5(r=V9yN z7nZa1ZvAzfhgD}Ii%-nAW>On5vZdZkYGb6J`fP&0 zHJjpDJ(JqZL#*7bQ_U^L^yr-GGl;fxswwz|k67v5-mOzb0J@b+!s?Q8F9_CrV27{A-&U25xF!gY77C&6GJD$Nv zc@MqFl$y^Gu4bgnoRG$z3~NTpGZ6yDK75yHM91l!vE8m*D? zeoC&j@s--VztTBUK0xFSwB$4p;A<}U_J>^xw0Ee5E@g?OkceY5WmC-Ou^AAT zwCZZr?qV^YP8Hf)61ec1-vh^WtHG77t&uM-hHj;Z^`r_I9dd-uL7`=gGGJa;ksa$K zD{qKCOWKHNuQEhGNC2J5&!dA|N$N5Og9qxzYy?;Z62th)WLRafSS!%JUqA&pR0164 z2~htQm&1{Y;vyEwv}g1w;5o!uv0Gf`lA?O^#8{JFkY3DNH?!sC!Ke9h+wm*VujaOA za9VB$1i2k~JAMY09W5_G0=&iL2>ihJzbF!RKS^NN748%B&di%5`P<&&Lbgc^ukbPA z>8So@9^R{OaiLa7|0sr$TU?GtEXr;^0(|ZZPrq$b3fs1WTU=sb^HEK~bXkJOieSnT z)b$%5g;}RmF_7}-gx#XoW9ey5Xj@#)wuWF%*ei%gg9zq?X{7se!Udw)XKCsigLY1s z?QQoAig!sW_a$U|xy-#Fiw{U)w=iQudlTAGr6?hKYfm13`j!#(h&=XV*jXm})3+R6 zuu>)X@boQ@7?7v174rV{tzX~`$QOtbp1u_kfx;d@;2KA$@tjAW?A2BJUlccjDp@Ey zeJkswmYXLVs@NdXHGNws+(i~QxjpL5C(x-`OmaB>#K2dqoo+1=ep4(pZ-}zx)99CUf)EI3g;HM71Z6Q=^9&SYXKqH)Ecs0EXWoF|ADc1~AX(+NfO zCh9YQfH?(&@SI|q=x|Q49KT$1rrzV4j@dayaR7CM0-^im1>`G9%U>b~Z}#wI34z(e zR~Wf|z1hQANI@<7DgxZ2h-dZe;cO3aX>~@T^M!K&Xy*&(iqv^}k87QgC5XIJF=!v2 zfSM+pFR13j@vjrjt}?0`eFN{1_?rk^bAbrd&JHMos=p3oe@l?xwvg2vUaI7X z4GDUR%aAT(_I**i+)_(+BcC%1OTunGjR@f{#NIaE@Q(}r)jz<;H<-8E+i=B5*$y<* zrF2YZPkdiOdu%U!b}qdjHJC5+g8*8MY&TbsJB~XsnC7=Exte|;K_YTjhI~IHPUor; z^h$6;`TPihYkn-*;yFnlE+XpC8qUf$fPNyBpIQ{(P;y8nOZGFxH?(9|DS2LUOV5&h zw0C5z4BF3uSI40J0@1FyT0{ebMp zzp&t@_qcWWd+y*M7jTZ48vuYRK+#~@jsb&}W7>SC=0Ny!R3qAk zC$;R}uLa%Q#@tObdu36Wpt%R}$j-e8aG#+F)!ILbWbGffKHn$E-&)9uccfY@c}IRH znC4>L4;Xnz9uV2zSChpA;13OnwB;xY$M_F247?+M#2a$-5CW{5;pva<$pZO6S%klL#&W*1 zh7sS$e-Vqa`yT?=e2AytvMGga*@16lGc>rUhohqxR(SJtJd8 zJtB|wjI=P(_l%6ii)+RSKI|D8j~LWf3R@xXdqyS*yaD-%LMFkYcjE(aM!oEpV&vS0m-%HC`gcV>lxWl zlxqd?JR=(s{*!w~HU>JBv1}==ZV66Nl8sSBbx~^W)b}Xe=@aF2DXC*@4FIq zO~8BxT+uOTYB5C;G@M#&u4H@WyoOBUwb${QU2Fl=I%Px0shIT0Ji);2l9J0PI0(_baPrt(@JKN#0x%pn#=qYc}9D8iwNZ7#xLfPo0~A6P_l zIAXwj4g#Ec5(&$ktODlrb@A{>LSRRPz-*Narfr{R(h#O?^h9dfcBClI3n(HZM~TKN znYOW2a@xjxv7Q{wkkhvL_<9t1eJ zgr{HE$j55A?zAl}gasi4Yb1RWplMs5k|VuvFxJW-UBiK_sO2m*eSyTJ`-=;?2N7%A z{(5$BH%+#Hy@|TN#!p(5EoZE^k(U|sA_ClG8LrDM3rrD?eebK%En!l)P@aa~97k!| za?BY_nb$4J*O-@Jk$hC9Q2oT|{J#>s0PZNmA_CV8NY;2xxe5CosbdtV{;}2YV2mRa zV^M;k$jZ4G3@03TOJ}MZI}p0^_`r6_l)%^@jg%!s!_ml~lIJC-!9YYQHMs?69gRp9 z0=>?NWD%lWvskn%BN9(6jYyU#t?7uQdI9HnAYf3!AUr5JL3B7M`2v1nMNRMV;108B zp3I2=L4Bl*7<{aw~L0=PKa|zD|3?#%<+h12Q=O7AVor}OV z=ZQwGSQI2^>0ApsU%+1vfc<*qYfSd~8%mDYxxik36X~+o7l_)oEHw?R_r~s`R2F-| zb&qALoa#KUm*ob7(*!$g^?ls>gxwafdL(zGyP6qcvQH}^wF}U9$ zj-A4N63!O^9U8nC0anw*ES{4%VT;LJhAbwGru~=VH^CEQ%O+JQ@$QDSF_!>zc4GX3 zVzG=*S*N?O^`&IKC-Rr#nHY@-_DUslnIgZ>$VsIo{oTcUmycC4mm_+Ye>xK49CXOzpwNzL#H{i9kr?=QMh%*MIc68%dUM%#s z9FfWorb{j6Mx+*XTye~^k7)TE=NBDes0lSgS9ilOzgbS$$ zK%n1VgmkB3$CryeT@_L8BEb>ZMPrtjU-S1kvw-O(Tzp{i=59u9oGF(FN*yz1l(9pv z)SgY37qk~m-;7MTKR?6VLy$4O_!=<^p?|>Ki}%?eqeAM+qp9W1ZxA)^xkj0Z~P zC6FwW#*N+&B7S*d6I_IX<>E&4|42e3DOyk2Jj9prB~+!tV1L(QHc9g*#G$|^_73(B zbOp7$WFAI53LEu__pW%rk67Rdi&Cb*ynt>x)o&gZ>^dy!1w8kP;^``<`;iqig~yPX z7>%^)TW+&MulX}y*Gwm z*mZjH#nf?K>HbtU-<9g^;+&Q|!c=5;M;uIx%9fykPn+<^}$4@kp_nzi27xvm-$vo0kYSMkv#9p_qA@?-RRl zPY8#NXjoF>E5aQEBQyXhvWv~D1RIvv1fxr|QxuL>K5|JL*M%l<+~9zD4N%L`lvCYZ zi!jH`nAZ_8Yjk2lbxk&JklKjE-2EW;oBTbh%L;D(jw+$>V?7yvyj}`C_5Z{F^^FuGVo)Lwye*IW?dO zwBcP9rM^$()$yH=5BOsOT1>cd{0EWC6B}9M;9b05f?ms+t{%@+{1+f-YF??S36;$M z5IH}wuG$lZ3u#l%77M5VniiN3k-7{UM^lS}s9_jhvxku`gI-}Z#A4AQu}*D2XuGA= ziG;Nl*Q|kGt(mcQm3-~o>DXzSnUFggpD@X+X>Sx?-|igRBGZ}~Y47_TV=r19XKzuN zn0pGJXU(jeS)3Vf{amB%=YA*K8^~Jh0fh~7yAW)Y{Y1phl^%=p)KZJ><66vc$b;e7 z2n4PfDdFtIqct-vb3~>+G15YsQAnfnWVB!~6v8Nc4C8iAWp z^D)r~hDMm#t!EFUPs(k;Y_65NnVDWk1JJ?5WVCXa{W7{!DBg}qT0qw|V@bUoV+3#= tSK&%-BW(l7O!xRD#`t|~$&3f+d@}*h#7H*B-jbP!7uQU}bFjPp{{aHcHRS*R literal 55164 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 COldO! diff --git a/docs/build/doctrees/api_reference/yafs.doctree b/docs/build/doctrees/api_reference/yafs.doctree index 6f5c297edb57f55eb9b7aa48218581a6dae9843e..0746a1723addba5f2ce2dc2c7721bd3763bcd8e6 100644 GIT binary patch literal 29344 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

}mBCQIr2{Khc|-v^6|rEIMTKluW!!!H~_@N*bOW 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 P@(>EXJdEGkP|yDWHZAZ% literal 25463 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 X0eKQnz0sB~&QpkBi5SnyV9);moy0i$ literal 22796 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 delta 30941 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 code for yafs.core

 import copy
 
 import simpy
+import scipy.spatial
 from tqdm import tqdm
+import networkx as nx
 
 from yafs.topology import Topology
 from yafs.application import Application
@@ -59,7 +61,11 @@ 

Source code for yafs.core

 from yafs.distribution import *
 from yafs import utils
 
+from trackanimation.animation import AnimationTrack
+
 import numpy as np
+import smopy
+from PIL import Image as pimg
 
 EVENT_UP_ENTITY = "node_up"
 EVENT_DOWN_ENTITY = "node_down"
@@ -206,10 +212,25 @@ 

Source code for yafs.core

 
 
 
+
+        """
+        MOBILE ADAPTATIONS
+        """
+        self.service_coverage = {}
+        self.tolerance = 0.0001
+        self.user_tracks = None
+
+        #v2
+        self.endpoints = []
+        self.user_tracks = None
+        self.map = None
+        self.coverage = None
+        self.control_movement_class = None
+
     # self.__send_message(app_name, message, idDES, self.SOURCE_METRIC)
     def __send_message(self, app_name, message, idDES, type):
         """
-        Any exchange of messages is done with this function. It is responsible for updating the metrics
+        Any exchange of messages between modules is done with this function and updates the metrics when the message achieves the destination module
 
         Args:
             app_name (string)º
@@ -221,12 +242,21 @@ 

Source code for yafs.core

         """
         #TODO IMPROVE asignation of topo = alloc_DES(IdDES) , It has to move to the get_path process
         try:
-            paths,DES_dst = self.selector_path[app_name].get_path(self,app_name, message, self.alloc_DES[idDES], self.alloc_DES, self.alloc_module, self.last_busy_time)
+            paths,DES_dst = self.selector_path[app_name].get_path(self,app_name, message, self.alloc_DES[idDES], self.alloc_DES, self.alloc_module, self.last_busy_time,from_des=idDES)
 
             if DES_dst == [None] or DES_dst==[[]]:
                 self.logger.warning(
                     "(#DES:%i)\t--- Unreacheable DST:\t%s: PATH:%s " % (idDES, message.name, paths))
-                self.print_debug_assignaments()
+
+                if self.logger.isEnabledFor("Debug"):
+                    self.logger.debug("From __send_message function: ")
+                    # self.print_debug_assignaments()
+                    # print "NODES (%i): %s"%(len(self.topology.G.nodes()),self.topology.G.nodes())
+                    self.logger.debug("NODES (%i)" % len(self.topology.G.nodes()))
+
+                    if self.control_movement_class is not None:
+                        self.logger.debug("STEP : ",self.control_movement_class.current_step)
+
             else:
 
                 self.logger.debug("(#DES:%i)\t--- SENDING Message:\t%s: PATH:%s  DES:%s" % (idDES, message.name,paths,DES_dst))
@@ -243,6 +273,7 @@ 

Source code for yafs.core

         except KeyError:
             self.logger.warning("(#DES:%i)\t--- Unreacheable DST:\t%s " % (idDES, message.name))
 
+
     def __network_process(self):
         """
         This is an internal DES-process who manages the latency of messages sent in the network.
@@ -250,7 +281,8 @@ 

Source code for yafs.core

         In this way, the message has a transmission latency.
         """
         edges = self.topology.get_edges().keys()
-        self.last_busy_time = {} # dict(zip(edges, [0.0] * len(edges)))
+        self.last_busy_time = {}  # dict(zip(edges, [0.0] * len(edges)))
+
         while not self.stop:
             message = yield self.network_ctrl_pipe.get()
 
@@ -323,9 +355,9 @@ 

Source code for yafs.core

                     self.env.process(self.__wait_message(message, latency_msg_link, shift_time))
                 except:
                     #This fact is produced when a node or edge the topology is changed or disappeared
-                    self.logger.warning("The initial path assigned is unreachabled. Link: (%i,%i). Routing a new one. "%(link[0],link[1]))
+                    self.logger.warning("The initial path assigned is unreachabled. Link: (%i,%i). Routing a new one. %i"%(link[0],link[1],self.env.now))
 
-                    paths, DES_dst = self.selector_path[message.app_name].get_path_from_failure(self, message, link, self.alloc_DES,self.alloc_module, self.last_busy_time,self.env.now)
+                    paths, DES_dst = self.selector_path[message.app_name].get_path_from_failure(self, message, link, self.alloc_DES,self.alloc_module, self.last_busy_time,self.env.now,from_des=message.idDES)
 
                     if DES_dst == [] and paths==[]:
                         #Message communication ending:
@@ -427,7 +459,6 @@ 

Source code for yafs.core

 
     def __update_node_metrics(self, app, module, message, des, type):
         try:
-
             """
             It computes the service time in processing a message and record this event
             """
@@ -443,7 +474,9 @@ 

Source code for yafs.core

                 """
                 id_node = self.alloc_DES[des]
 
-                att_node = self.topology.get_nodes_att()[id_node]
+                # att_node = self.topology.get_nodes_att()[id_node] # WARNING DEPRECATED from V1.0
+                att_node = self.topology.G.nodes[id_node]
+
                 time_service = message.inst / float(att_node["IPT"])
 
 
@@ -454,21 +487,24 @@ 

Source code for yafs.core

             #     from_id_source = id_node  # same src like dst
             # else:
             #     from_id_source = message.path[0]
-
-            # print "-"*50
-            # print "Module: ",module # module that receives the request (RtR)
-            # print "DES ",des # DES process who RtR
-            # print "ID MODULE: ",id_node  #Topology entity who RtR
-            # print "Message.name ",message.name # Message name
-            # print "Message.id ", message.id #Message generator id
-            # print "Message.path ",message.path #enrouting path
-            # print "Message src ",message.src #module source who send the request
-            # print "Message dst ",message.dst #module dst (the entity that RtR)
-            # print "Message idDEs ",message.idDES #DES intermediate process that process the request
-            # print "TOPO.src ", message.path[0] #entity that RtR
-            # print "TOPO.dst ", int(self.alloc_DES[des]) #DES process that RtR
-
             #
+     # # if message.id == 1072:
+     #        print "-"*50
+     #        print "Module: ",module # module that receives the request (RtR)
+     #        print "DES ",des # DES process who RtR
+     #        print "ID MODULE: ",id_node  #Topology entity who RtR
+     #        print "Message.name ",message.name # Message name
+     #        print "Message.id ", message.id #Message generator id
+     #        print "Message.path ",message.path #enrouting path
+     #        print "Message src ",message.src #module source who send the request
+     #        print "Message dst ",message.dst #module dst (the entity that RtR)
+     #        print "Message idDEs ",message.idDES #DES intermediate process that process the request
+     #        print "TOPO.src ", message.path[0] #entity that RtR
+     #        print "TOPO.dst ", int(self.alloc_DES[des]) #DES process that RtR
+     #        print "time service ",time_service
+     #        exit()
+
+     #
             # # print "MODULE: ",self.alloc_module[app][module]
             # # tmp = []
             # # for it in self.alloc_module[app][module]:
@@ -507,8 +543,10 @@ 

Source code for yafs.core

             return time_service
         except KeyError:
             # The node can be removed
-            self.logger.debug("Updating node metrics - Node removed: DES:%i" % des)
+            self.logger.critical("Make sure that this node has been removed or it has all mandatory attributes - Node: DES:%i" % des)
             return 0
+
+
         # self.logger.debug("TS[%s] - DES: %i - %d"%(module,des,time_service))
         # except:
         #     self.logger.warning("This module has been removed previously to the arrival time of this message. DES: %i"%des)
@@ -585,23 +623,27 @@ 

Source code for yafs.core

                         """
                         Processing the message
                         """
-
-                        # print "Consumer Message: %d " % self.env.now
-                        # print "MODULE DES: ",ides
-                        # print "id ",msg.id
-                        # print "name ",msg.name
-                        # print msg.path
-                        # print msg.dst_int
-                        # print msg.timestamp
-                        # print msg.dst
+                        # if ides == 3:
+                        #     print "Consumer Message: %d " % self.env.now
+                        #     print "MODULE DES: ",ides
+                        #     print "id ",msg.id
+                        #     print "name ",msg.name
+                        #     print msg.path
+                        #     print msg.dst_int
+                        #     print msg.timestamp
+                        #     print msg.dst
                         #
-                        # print "-" * 30
+                        #     print "-" * 30
 
                         #The module only computes this type of message one time.
                         #It records once
                         if not doBefore:
+                            self.logger.debug(
+                                "(App:%s#DES:%i#%s)\tModule - Recording the message:\t%s" % (app_name, ides, module, msg.name))
                             type = self.NODE_METRIC
+
                             service_time = self.__update_node_metrics(app_name, module, msg, ides, type)
+
                             yield self.env.timeout(service_time)
                             doBefore = True
 
@@ -662,10 +704,11 @@ 

Source code for yafs.core

             Processing the message
             """
             self.logger.debug(
-                "(App:%s#DES:%i#%s)\tModule - Sink Message:\t%s" % (app_name, ides, module, msg.name))
+                "(App:%s#DES:%i#%s)\tModule Pure - Sink Message:\t%s" % (app_name, ides, module, msg.name))
             type = self.SINK_METRIC
             service_time = self.__update_node_metrics(app_name, module, msg, ides, type)
             yield self.env.timeout(service_time)  # service time is 0
+
         self.logger.debug("STOP_Process - Module Pure Sink: %s\t#DES:%i" % (module, ides))
 
 
@@ -857,6 +900,7 @@ 

Source code for yafs.core

         Add a DES process for deploy pure SINK modules (actuators)
         This function its used by (:mod:`Placement`): algorithm
         Internatlly, there is not a DES PROCESS for this type of behaviour
+
         Args:
             app_name (str): application name
 
@@ -936,11 +980,17 @@ 

Source code for yafs.core

         # Add Selection control to the App
         self.selector_path[app.name] = selector
- def get_alloc_entities(self): + +
[docs] def get_alloc_entities(self): + """ It returns a dictionary of deployed services + key : id-node + value: a list of deployed services + """ alloc_entities = {} - for key in self.topology.nodeAttributes.keys(): + for key in self.topology.G.nodes: alloc_entities[key] = [] + for id_des_process in self.alloc_source: src_deployed = self.alloc_source[id_des_process] # print "Module (SRC): %s(%s) - deployed at entity.id: %s" %(src_deployed["module"],src_deployed["app"],src_deployed["id"]) @@ -952,7 +1002,7 @@

Source code for yafs.core

                 for idDES in self.alloc_module[app][module]:
                     alloc_entities[self.alloc_DES[idDES]].append(app+"#"+module)
 
-        return alloc_entities
+        return alloc_entities
def deploy_module(self,app_name,module, services,ids): @@ -991,6 +1041,25 @@

Source code for yafs.core

 
         return id_DES
 
+
+
[docs] def undeploy_module(self, app_name,service_name, idtopo): + """ removes all modules deployed in a node + modules with the same name = service_name + from app_name + deployed in id_topo + """ + all_des = [] + for k, v in self.alloc_DES.items(): + if v == idtopo: + all_des.append(k) + + # Clearing related structures + for des in self.alloc_module[app_name][service_name]: + if des in all_des: + self.alloc_module[app_name][service_name].remove(des) + self.stop_process(des) + del self.alloc_DES[des]
+ def remove_node(self, id_node_topology): # Stopping related processes deployed in the module and clearing main structure: alloc_DES des_tmp=[] @@ -1053,8 +1122,150 @@

Source code for yafs.core

         print "-" * 40
# exit() + # + # ### MOBILE ADAPTATION SECTION + # def update_service_coverage(self): + # if self.street_network is not None: + # points = utils.create_points(self.topology.G) + # point_streets = utils.create_points(self.street_network) + # + # tree = scipy.spatial.KDTree(points.values()) + # points_within_tolerance = tree.query_ball_point(point_streets.values(), self.tolerance) + # + # # key = node network + # # value = id - module SW + # + # self.service_coverage = {} + # for idx, pt in enumerate(points_within_tolerance): + # ## MODULE SW + # key2 = point_streets.keys()[idx] + # nG2 = self.street_network.nodes[key2] + # # print "%s is close to " % nG2["model"] + # ## Street coverage + # for p in pt: + # key = points.keys()[p] + # # service_coverage[(G.nodes[key]['x'],G.nodes[key]['y'])]=nG2["model"] + # self.service_coverage[key] = nG2["id"] + + + + # def setMobilityUserBehaviour(self,dataPopulation): + # self.user_behaviour = dataPopulation #TODO CHECK SYNTAX + + def __add_mobile_agent(self,ides, gme): + #The mobile starts + + yield self.env.timeout(gme.start) + self.logger.info("(#DES:%i)\t--- Mobile Entity STARTS :\t%s " % (ides, gme._id)) + while (len(gme.path) - 1 > gme.current_position) and not self.stop and self.des_process_running[ides]: + e = (gme.path[gme.current_position], gme.path[gme.current_position + 1]) + data = self.street_network.get_edge_data(*e) + try: + next_time = int(utils.toMeters(data[0]["geometry"]) / gme.speed) + except KeyError: + next_time = 1 # default time by roundabout or other Spatial THINGS + + # take an action? + gme.next_time = next_time + + self.logger.info("(#DES:%i)\t--- DO ACTION :\t%s " % (ides, gme._id)) + gme.do.action(gme) + + #TODO Can the MA wait more time in that node? + + yield self.env.timeout(next_time) + gme.current_position += 1 + + # Last movement + if self.des_process_running[ides] and not self.stop: + gme.do.action(gme) + + self.logger.info("(#DES:%i)\t--- Mobile Entity ENDS :\t%s " % (ides, gme._id)) + # print "Mobile agent: %s ends " % gme.plate + + + + def add_mobile_agent(self,gme): + ides = self.__get_id_process() + self.des_process_running[ides] = True + self.env.process(self.__add_mobile_agent(ides, gme)) + + ### ATENCION COONTROLAR VAR: INTERNAS + #self.alloc_DES[ides] = id_node + + return ides + + def load_user_tracks(self,tracks): + self.user_tracks = tracks + + # self.user_tracks = AnimationTrack(df_points=tracks, dpi=300, bg_map=False, map_transparency=0.5) + + # for i, (point, nextpoint) in enumerate(fig.compute_points()): + # print i, point, nextpoint + # if i == 2: break + # exit() + + def generate_animation(self,pathFile): + if len(self.endpoints)==0: self.__update_connection_points() + if self.map == None: self.__load_map() + + #map_endpoints = [self.map.to_pixels(i[0], i[1]) for i in self.endpoints] + #map_endpoints = np.array(map_endpoints) + self.map.img.save(pathFile+"_map_background.png") -
[docs] def run(self, until,test_initial_deploy=False,show_progress_monitor=True): + animation = AnimationTrack(self, dpi=100, bg_map=True, aspect='equal') + animation.make_video(output_file=pathFile, framerate=10, linewidth=1.0,G=self.topology.G) + + + # def generate_snapshot(self, pathFile,event): + # if len(self.endpoints) == 0: self.__update_connection_points() + # if self.map == None: self.__load_map() + # + # #map_endpoints = [self.map.to_pixels(i[0], i[1]) for i in self.endpoints] + # #map_endpoints = np.array(map_endpoints) + # + # animation = AnimationTrack(self, dpi=100, bg_map=True, aspect='equal') + # animation.make_video(output_file=pathFile, framerate=10, linewidth=1.0) + + def __load_map(self): + trk_bounds = self.user_tracks.get_bounds() + min_lat = trk_bounds.min_latitude + max_lat = trk_bounds.max_latitude + min_lng = trk_bounds.min_longitude + max_lng = trk_bounds.max_longitude + + self.map = smopy.Map((min_lat, min_lng, max_lat, max_lng), z=12) + + + def __update_connection_points(self): + level = nx.get_node_attributes(self.topology.G, 'level') + lat = nx.get_node_attributes(self.topology.G, 'lat') + lng = nx.get_node_attributes(self.topology.G, 'lng') + + self.endpoints = [] + self.name_endpoints = {} + pos = 0 + for n in level: + if level[n] == 0: + self.endpoints.append([lat[n], lng[n]]) + self.name_endpoints[pos]=n + pos +=1 + self.endpoints = np.array(self.endpoints) + + + def set_coverage_class(self, class_name,**kwargs): + if len(self.endpoints)==0: self.__update_connection_points() + if self.map == None: self.__load_map() + + self.coverage = class_name(self.map,self.endpoints,**kwargs) + + def set_mobile_fog_entities(self,mobile_fog_entities): + self.mobile_fog_entities = mobile_fog_entities + + def set_movement_control(self,evol): + self.control_movement_class = evol + +
[docs] def run(self, until,test_initial_deploy=False,show_progress_monitor=True,mobile_behaviour=False): """ Start the simulation @@ -1074,17 +1285,24 @@

Source code for yafs.core

         Creating initial deploy of services
         """
         for place in self.placement_policy.itervalues():
-            place["placement_policy"].initial_allocation(self, app_name)  # internally consideres the apps in charge
+            for app_name in place["apps"]:
+
+                print "APP_NAME ",app_name
+                place["placement_policy"].initial_allocation(self, app_name)  # internally consideres the apps in charge
 
         """
-        A internal DES process to stop the simulation,
+        A internal DES process will stop the simulation,
         *Simpy.run.until* wait to all pipers are empty. So, hundreds of messages should be service... We force with the stop
         """
         time_shift = 200
-        distribution = deterministicDistribution(name="Deterministic", time=time_shift)
+        distribution = deterministic_distribution(name="SIM_Deterministic", time=time_shift)
         self.env.process(self.__add_stop_monitor("Stop_Control_Monitor",self.__ctrl_progress_monitor,distribution,show_progress_monitor,time_shift=time_shift))
 
-
+        # if mobile_behaviour:
+        #     """
+        #     Updating control variables of mobile environment
+        #     """
+        #     self.update_service_coverage()
 
 
         self.print_debug_assignaments()
diff --git a/docs/build/html/_modules/yafs/placement.html b/docs/build/html/_modules/yafs/placement.html
index 3e913948..af7531b4 100644
--- a/docs/build/html/_modules/yafs/placement.html
+++ b/docs/build/html/_modules/yafs/placement.html
@@ -112,18 +112,14 @@ 

Source code for yafs.placement

         self.data = json
 
     def initial_allocation(self, sim, app_name):
-
         for item in self.data["initialAllocation"]:
-            #print item
-            app_name = item["app"]
-            module = item["module_name"]
-            idtopo = item["id_resource"]
-
-            app = sim.apps[app_name]
-            services = app.services
-            #print services[module]
-            idDES = sim.deploy_module(app_name, module, services[module],[idtopo])
-
+            if app_name == item["app"]:
+                # app_name = item["app"]
+                module = item["module_name"]
+                idtopo = item["id_resource"]
+                app = sim.apps[app_name]
+                services = app.services
+                idDES = sim.deploy_module(app_name, module, services[module],[idtopo])
 
 
 class JSONPlacementOnCloud(Placement):
@@ -135,12 +131,13 @@ 

Source code for yafs.placement

     def initial_allocation(self, sim, app_name):
 
         for item in self.data["initialAllocation"]:
-            app_name = item["app"]
-            module = item["module_name"]
+            if app_name == item["app"]:
+                app_name = item["app"]
+                module = item["module_name"]
 
-            app = sim.apps[app_name]
-            services = app.services
-            idDES = sim.deploy_module(app_name, module, services[module],[self.idCloud])
+                app = sim.apps[app_name]
+                services = app.services
+                idDES = sim.deploy_module(app_name, module, services[module],[self.idCloud])
 
 
 
diff --git a/docs/build/html/_modules/yafs/selection.html b/docs/build/html/_modules/yafs/selection.html
index e0e6f00b..a2131f2e 100644
--- a/docs/build/html/_modules/yafs/selection.html
+++ b/docs/build/html/_modules/yafs/selection.html
@@ -65,19 +65,21 @@ 

Source code for yafs.selection

         self.lat_acc = 0.0
         self.propagation = 0.0
 
-
[docs] def get_path(self, sim, app_name, message, topology_src,alloc_DES, alloc_module, traffic): +
[docs] def get_path(self, sim, app_name, message, topology_src,alloc_DES, alloc_module, traffic, from_des): + """ Args: - sim (yafs.core.Sim) - - src (int): the node source - - dst (dst): the node destiny - - message (yafs.application.Message) - - traffic (dict): the current occupation of the network + :param sim: + :param message: + :param link: + :param alloc_DES: + :param alloc_module: + :param traffic: + :param ctime: + :param from_des + :return: + both empty arrays implies that the message will not send to the destination. Returns: @@ -96,7 +98,7 @@

Source code for yafs.selection

         """ END Selection """
         return path,ids
-
[docs] def get_path_from_failure(self, sim, message, link, alloc_DES, alloc_module, traffic, ctime): +
[docs] def get_path_from_failure(self, sim, message, link, alloc_DES, alloc_module, traffic, ctime, from_des): """ This function is call when some link of a message path is broken or unavailable. A new one from that point should be calculated. @@ -107,6 +109,7 @@

Source code for yafs.selection

         :param alloc_module:
         :param traffic:
         :param ctime:
+        :param from_des
         :return:
            both empty arrays implies that the message will not send to the destination.
 
@@ -124,7 +127,7 @@ 

Source code for yafs.selection

     Among all the possible options, it returns a random path.
     """
 
-    def get_path(self, sim, app_name, message, topology_src,alloc_DES, alloc_module, traffic):
+    def get_path(self, sim, app_name, message, topology_src,alloc_DES, alloc_module, traffic,from_des):
         paths = []
         dst_idDES = []
         src_node = topology_src
@@ -142,7 +145,7 @@ 

Source code for yafs.selection

 
[docs]class First_ShortestPath(Selection): """Among all possible shorter paths, returns the first.""" - def get_path(self, sim, app_name,message, topology_src, alloc_DES, alloc_module, traffic): + def get_path(self, sim, app_name,message, topology_src, alloc_DES, alloc_module, traffic,from_des): paths = [] dst_idDES = [] diff --git a/docs/build/html/_modules/yafs/topology.html b/docs/build/html/_modules/yafs/topology.html index c4dd532c..c003f47e 100644 --- a/docs/build/html/_modules/yafs/topology.html +++ b/docs/build/html/_modules/yafs/topology.html @@ -44,8 +44,8 @@

Source code for yafs.topology

 
 
 import networkx as nx
-
-
+import matplotlib.pyplot as plt
+import warnings
 
 
 
[docs]class Topology: @@ -70,15 +70,26 @@

Source code for yafs.topology

     def __init__(self, logger=None):
 
         self.__idNode = -1
+        # G is a nx.networkx graph
         self.G = None
-        #G is a networkx graph
 
+
+        # TODO VERSION 2. THIS VALUE SHOULD BE REMOVED
+        # INSTEAD USE NX.G. attributes
         self.nodeAttributes = {}
+
+
+        # A simple *cache* to have all cloud  nodes
+        # TODO VERSION 2. THIS VALUE SHOULD BE REMOVED
         self.cloudNodes = []
-        #A simple *cache* to have all cloud  nodes
+
+
 
         self.logger = logger or logging.getLogger(__name__)
 
+
+
+
     def __init_uptimes(self):
         for key in self.nodeAttributes:
             self.nodeAttributes[key]["uptime"] = (0, None)
@@ -167,7 +178,35 @@ 

Source code for yafs.topology

         self.__idNode = len(self.G.nodes)
         self.__init_uptimes()
+ def load_all_node_attr(self,data): + self.G = nx.Graph() + for edge in data["link"]: + self.G.add_edge(edge["s"], edge["d"], BW=edge[self.LINK_BW], PR=edge[self.LINK_PR]) + + dc = {str(x): {} for x in data["entity"][0].keys()} + for ent in data["entity"]: + for key in ent.keys(): + dc[key][ent["id"]] = ent[key] + for x in data["entity"][0].keys(): + nx.set_node_attributes(self.G, values=dc[x], name=str(x)) + + for node in data["entity"]: + self.nodeAttributes[node["id"]] = node + + self.__idNode = len(self.G.nodes) + self.__init_uptimes() + + + + def load_graphml(self,filename): + warnings.warn("The load_graphml function is deprecated and " + "will be removed in version 2.0.0. " + "Use NX.READ_GRAPHML function instead.", + FutureWarning, + stacklevel=8 + ) + self.G = nx.read_graphml(filename) attEdges = {} for k in self.G.edges(): @@ -244,7 +283,16 @@

Source code for yafs.topology

 
 
     def write(self,path):
-        nx.write_gexf(self.G, path)
+ nx.write_gexf(self.G, path) + + + def draw_png(self,path_file): + fig, ax = plt.subplots(nrows=1, ncols=1) + pos = nx.spring_layout(self.G) + nx.draw(self.G, pos) + labels = nx.draw_networkx_labels(self.G, pos) + fig.savefig(path_file) # save the figure to file + plt.close(fig) # close the figure
diff --git a/docs/build/html/api_reference/yafs.core.html b/docs/build/html/api_reference/yafs.core.html index b1f9a5f4..6785d0fc 100644 --- a/docs/build/html/api_reference/yafs.core.html +++ b/docs/build/html/api_reference/yafs.core.html @@ -122,13 +122,14 @@ deploy_sink(app_name, node, module)[source]

Add a DES process for deploy pure SINK modules (actuators) This function its used by (Placement): algorithm -Internatlly, there is not a DES PROCESS for this type of behaviour -Args:

-
-

app_name (str): application name

+Internatlly, there is not a DES PROCESS for this type of behaviour

+
+
Args:
+

app_name (str): application name

node (int): entity.id of the topology who will create the messages

-

module (str): module

-
+

module (str): module

+
+
@@ -161,6 +162,20 @@

the discrete-event simulator (aka DES)

+
+
+get_alloc_entities()[source]
+

It returns a dictionary of deployed services +key : id-node +value: a list of deployed services

+
+ +
+
+last_busy_time = None
+

MOBILE ADAPTATIONS

+
+
print_debug_assignaments()[source]
@@ -175,7 +190,7 @@
-run(until, test_initial_deploy=False, show_progress_monitor=True)[source]
+run(until, test_initial_deploy=False, show_progress_monitor=True, mobile_behaviour=False)[source]

Start the simulation

Args:
@@ -211,6 +226,15 @@
+
+
+undeploy_module(app_name, service_name, idtopo)[source]
+

removes all modules deployed in a node +modules with the same name = service_name +from app_name +deployed in id_topo

+
+
diff --git a/docs/build/html/api_reference/yafs.html b/docs/build/html/api_reference/yafs.html index 6f9794da..ea70dc1c 100644 --- a/docs/build/html/api_reference/yafs.html +++ b/docs/build/html/api_reference/yafs.html @@ -157,6 +157,26 @@

Metrics +

Distribution

+ ++++ + + + + + + + + + + + +
Distribution(name)Abstract class
deterministic_distribution(time, **kwargs)
exponential_distribution(lambd[, seed])
+

@@ -181,6 +201,7 @@

Table Of Contents

  • Placement
  • Selection
  • Metrics
  • +
  • Distribution
  • yafs.core — Simulator engine
  • diff --git a/docs/build/html/api_reference/yafs.selection.html b/docs/build/html/api_reference/yafs.selection.html index 7e40c327..c5d3ee03 100644 --- a/docs/build/html/api_reference/yafs.selection.html +++ b/docs/build/html/api_reference/yafs.selection.html @@ -55,15 +55,29 @@
    -get_path(sim, app_name, message, topology_src, alloc_DES, alloc_module, traffic)[source]
    +get_path(sim, app_name, message, topology_src, alloc_DES, alloc_module, traffic, from_des)[source]

    Args:

    + +++ + + + +
    Parameters:
      +
    • sim
    • +
    • message
    • +
    • link
    • +
    • alloc_DES
    • +
    • alloc_module
    • +
    • traffic
    • +
    • ctime
    • +
    +
    +

    :param from_des +:return:

    -

    sim (yafs.core.Sim)

    -

    src (int): the node source

    -

    dst (dst): the node destiny

    -

    message (yafs.application.Message)

    -

    traffic (dict): the current occupation of the network

    -
    +
    both empty arrays implies that the message will not send to the destination.

    Returns:

    a path among nodes

    @@ -77,13 +91,13 @@
    -get_path_from_failure(sim, message, link, alloc_DES, alloc_module, traffic, ctime)[source]
    +get_path_from_failure(sim, message, link, alloc_DES, alloc_module, traffic, ctime, from_des)[source]

    This function is call when some link of a message path is broken or unavailable. A new one from that point should be calculated.

    - - -
    Parameters:
      +
    Parameters:
    • sim
    • message
    • link
    • @@ -94,11 +108,12 @@
    Returns:

    both empty arrays implies that the message will not send to the destination.

    -
    +

    :param from_des +:return:

    +
    +
    both empty arrays implies that the message will not send to the destination.

    Attention

    this function is optional

    diff --git a/docs/build/html/api_reference/yafs.topology.html b/docs/build/html/api_reference/yafs.topology.html index dddc3893..219393dc 100644 --- a/docs/build/html/api_reference/yafs.topology.html +++ b/docs/build/html/api_reference/yafs.topology.html @@ -23,8 +23,8 @@ - - + + @@ -207,15 +207,15 @@

    Table Of Contents

  • Examples
  • API REFERENCE
  • @@ -226,8 +226,8 @@

    Related Topics

    diff --git a/docs/build/html/api_reference/yafs.utils.html b/docs/build/html/api_reference/yafs.utils.html index 53f12cbb..0adf59af 100644 --- a/docs/build/html/api_reference/yafs.utils.html +++ b/docs/build/html/api_reference/yafs.utils.html @@ -24,7 +24,7 @@ - + @@ -60,15 +60,15 @@

    Table Of Contents

  • Examples
  • API REFERENCE
  • @@ -79,7 +79,7 @@

    Related Topics

  • yafs.core — Simulator engine
  • diff --git a/docs/build/html/genindex.html b/docs/build/html/genindex.html index f6e38979..2dc1a677 100644 --- a/docs/build/html/genindex.html +++ b/docs/build/html/genindex.html @@ -157,6 +157,8 @@

    F

    G

      +
    • get_alloc_entities() (yafs.core.Sim method) +
    • get_df_service_utilization() (yafs.stats.Stats method)
    • get_edge() (yafs.topology.Topology method) @@ -205,6 +207,8 @@

      I

      L

      @@ -331,10 +335,12 @@

      T

      U

      diff --git a/docs/build/html/index.html b/docs/build/html/index.html index 2b0565f1..ae9ea772 100644 --- a/docs/build/html/index.html +++ b/docs/build/html/index.html @@ -43,8 +43,6 @@
      _images/yafs_logo.png

      Yet Another Fog Simulator for Python

      -