From 3e8dcd86ebef73a7fb5f6f8f40ff975297b2a368 Mon Sep 17 00:00:00 2001 From: gsavvas Date: Tue, 20 Feb 2024 10:51:14 +0200 Subject: [PATCH] Add new SAL endpoints and fix .gitignore Change-Id: I18e6b03031158dd876a619fad5f37abf005fa261 --- .gitignore | 2 + exn-middleware-core/Dockerfile | 3 +- .../sal/ExnMiddlewareApplication.class | Bin 2543 -> 0 bytes .../modules/sal/configuration/AppConfig.class | Bin 2702 -> 0 bytes .../sal/configuration/RestTemplateConf.class | Bin 3143 -> 0 bytes .../sal/configuration/SalConfiguration.class | Bin 3105 -> 0 bytes .../config/ConfigureEXNConnector.class | Bin 6294 -> 0 bytes .../middleware/consumers/StringConsumer.class | Bin 6354 -> 0 bytes .../connection/EXNConnectorHandler.class | Bin 2734 -> 0 bytes .../consumer/AMQPSalMessageHandler.class | Bin 7755 -> 0 bytes .../PropertiesPublisher$_send_closure1.class | Bin 3950 -> 0 bytes .../publishers/PropertiesPublisher.class | Bin 3973 -> 0 bytes .../modules/sal/model/base/Credentials.class | Bin 2364 -> 0 bytes .../exn/modules/sal/model/cloud/Cloud.class | Bin 2863 -> 0 bytes .../NodeAttributeRequirement.class | Bin 2147 -> 0 bytes .../nodecandidate/NodeCandidateRequest.class | Bin 2603 -> 0 bytes .../model/nodecandidate/NodeRequirement.class | Bin 166 -> 0 bytes .../nodecandidate/NodeTypeRequirement.class | Bin 2132 -> 0 bytes .../sal/processors/AbstractProcessor.class | Bin 9056 -> 0 bytes .../modules/sal/processors/Processor.class | Bin 253 -> 0 bytes .../CloudProcessor$_delete_closure3.class | Bin 2358 -> 0 bytes .../impl/CloudProcessor$_get_closure2.class | Bin 2340 -> 0 bytes .../impl/CloudProcessor$_post_closure1.class | Bin 2350 -> 0 bytes .../sal/processors/impl/CloudProcessor.class | Bin 7473 -> 0 bytes .../impl/JobProcessor$_delete_closure3.class | Bin 2350 -> 0 bytes .../impl/JobProcessor$_get_closure2.class | Bin 2332 -> 0 bytes .../impl/JobProcessor$_post_closure1.class | Bin 2342 -> 0 bytes .../impl/JobProcessor$_update_closure4.class | Bin 2350 -> 0 bytes .../sal/processors/impl/JobProcessor.class | Bin 10226 -> 0 bytes .../sal/processors/impl/NoOpProcessor.class | Bin 1857 -> 0 bytes .../impl/NodeCandidateProcessor.class | Bin 6447 -> 0 bytes .../impl/NodeProcessor$_delete_closure3.class | Bin 2354 -> 0 bytes .../impl/NodeProcessor$_get_closure2.class | Bin 2336 -> 0 bytes .../impl/NodeProcessor$_post_closure1.class | Bin 2346 -> 0 bytes .../impl/NodeProcessor$_update_closure4.class | Bin 2354 -> 0 bytes .../sal/processors/impl/NodeProcessor.class | Bin 10404 -> 0 bytes .../repository/AbstractSalRepository.class | Bin 10999 -> 0 bytes .../sal/repository/GatewayRepository.class | Bin 4145 -> 0 bytes .../repository/cloud/CloudRepository.class | Bin 1897 -> 0 bytes .../sal/repository/job/JobRepository.class | Bin 1885 -> 0 bytes .../deleteStrategies/IJobDeleteStrategy.class | Bin 304 -> 0 bytes .../deleteStrategies/JobDeleteStrategy.class | Bin 3573 -> 0 bytes .../deleteStrategies/JobKillStrategy.class | Bin 3574 -> 0 bytes .../deleteStrategies/JobStopStrategy.class | Bin 3536 -> 0 bytes .../node/AbstractNodeRepository.class | Bin 3253 -> 0 bytes .../repository/node/ByonNodeRepository.class | Bin 1908 -> 0 bytes .../repository/node/CloudNodeRepository.class | Bin 2563 -> 0 bytes .../repository/node/EdgeNodeRepository.class | Bin 1908 -> 0 bytes .../sal/repository/node/NodeRegistrar.class | Bin 487 -> 0 bytes .../NodeCandidateRepository.class | Bin 2872 -> 0 bytes .../config/application-production.yml | 27 ++++++ exn-middleware-core/config/application.yml | 3 +- .../config/ConfigureEXNConnector.groovy | 28 ++++-- .../sal/processors/AbstractProcessor.groovy | 28 +++++- .../sal/processors/impl/CloudProcessor.groovy | 6 +- .../processors/impl/ClusterProcessor.groovy | 86 ++++++++++++++++++ .../sal/processors/impl/JobProcessor.groovy | 20 +--- .../impl/NodeCandidateProcessor.groovy | 8 +- .../sal/processors/impl/NodeProcessor.groovy | 6 +- .../sal/processors/impl/ScaleProcessor.groovy | 57 ++++++++++++ .../cluster/ClusterRepository.groovy | 26 ++++++ .../repository/scale/ScaleRepository.groovy | 17 ++++ .../sal/service/ActionResolveService.groovy | 28 ++++++ 63 files changed, 307 insertions(+), 38 deletions(-) delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/ExnMiddlewareApplication.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/configuration/AppConfig.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/configuration/RestTemplateConf.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/configuration/SalConfiguration.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/consumers/StringConsumer.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/handlers/connection/EXNConnectorHandler.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/handlers/consumer/AMQPSalMessageHandler.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher$_send_closure1.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/base/Credentials.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/cloud/Cloud.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeAttributeRequirement.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeCandidateRequest.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeRequirement.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeTypeRequirement.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/Processor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor$_delete_closure3.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor$_get_closure2.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor$_post_closure1.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_delete_closure3.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_get_closure2.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_post_closure1.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_update_closure4.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NoOpProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_delete_closure3.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_get_closure2.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_post_closure1.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_update_closure4.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/AbstractSalRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/GatewayRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/cloud/CloudRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/JobRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/IJobDeleteStrategy.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/JobDeleteStrategy.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/JobKillStrategy.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/JobStopStrategy.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/AbstractNodeRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/ByonNodeRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/CloudNodeRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/EdgeNodeRepository.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/NodeRegistrar.class delete mode 100644 exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/nodecandidate/NodeCandidateRepository.class create mode 100644 exn-middleware-core/config/application-production.yml create mode 100644 exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ClusterProcessor.groovy create mode 100644 exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ScaleProcessor.groovy create mode 100644 exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/cluster/ClusterRepository.groovy create mode 100644 exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/scale/ScaleRepository.groovy create mode 100644 exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/service/ActionResolveService.groovy diff --git a/.gitignore b/.gitignore index 3e19d06..188fd28 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ __pycache__/ .nox/ **/.gradle +**/config/appplication.yml +**/build diff --git a/exn-middleware-core/Dockerfile b/exn-middleware-core/Dockerfile index a4f8558..b462200 100644 --- a/exn-middleware-core/Dockerfile +++ b/exn-middleware-core/Dockerfile @@ -29,7 +29,8 @@ WORKDIR /app COPY --from=builder /app/target/exn-middleware-core-0.0.1-SNAPSHOT.jar ./exn-middleware-core-0.0.1-SNAPSHOT.jar #Copy application configuration -COPY config ./ +RUN mkdir config +COPY config/application-production.yml ./config/application.yml #Run java app on container start CMD ["java", "-jar", "exn-middleware-core-0.0.1-SNAPSHOT.jar"] diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/ExnMiddlewareApplication.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/ExnMiddlewareApplication.class deleted file mode 100644 index 9758804ccc4a0a171d2fdb7a2c62b5727b2ef5b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2543 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 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/configuration/RestTemplateConf.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/configuration/RestTemplateConf.class deleted file mode 100644 index 136f2ae8bb382780ba03af57c8d2f57479b999e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3143 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 P!+aay_dy!wLu~pFHA3nf diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.class deleted file mode 100644 index 6b4c73aaa3db2f6d4aac44ef712a2a5dd57f380d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6294 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 G8u5Py8v+Ud diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/consumers/StringConsumer.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/consumers/StringConsumer.class deleted file mode 100644 index 78c404ea47199ba9c873aa3c5d26f6dbbc829e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6354 zcmcIodvqLC8UNj6li6;!ujz}5z!m~YHcb|`l}A&sX-Z2;`eM_TO@VZ>JK1bInOSCM z+XloZDyRs8f(R;z7!?(0p-rejeSzZJ`ato4h@ygT|Ky0jJ2Si4G@GP32hQ1ZXXf7T zyWjh@&;0MPCjgv>{|c2^>HE#tfR!#7dOnudjMzXnoi_A+nytrD zmYFXM=ypDqaO|v^Y4^Vs2!Ycp-juS4HwsrRuy8DHOUAaWy@LYPhLsUeJ1sjC%NuucOh&g`1?JY}9nHz6+6^tA-(dDx0#O$(Wu^6gt&op-m&9zn&(Kp&)-q!ySmG-^ zJ-lIKyMX8xs9lvcv(7~VoeiD4wY^%*(9Dc4QEP>riRHRPGpQQ8wY$4J=7dm%xfFbqzsEs0(8g`a(;4$C2p=`^w zPiy0bFy4$)LO2t=ka8%3bI3t9ms2ihj?^MBA0!ycK0R;^LA&U~Rd_cJb^3TI8q*=3nZbH0$09qgnW@!NlF(AT>5%Z@&tIR zymqxf$Ln>i&+Zy|FSFz6qlsmMVdxpnC`RCKv&Js8QF5}FR$Yv>-l)2~NT1>0u! z7=zho70h(R;`NdmQTkgVNvjaa_ge)c9kH3AT(S{olqHt|d7-KAi|l2&VjQ#tvHm#E z_kGt>?S>H6;ZlKsyhmVNXGM>mW?f|IsotZr45;HnhWT1cr)@n?YKoiJbX(wz%5>c- zTC6q#HI9|brpWBNt!p<4oITwVqhOoB{0a$L!49S|%Ur7)St^d4Z)tGLmzL8~{d(-` zTs9rc*_LCOyW_Exk)^p}Mc~#+cxS4j|#4$ z+;V&B{9ekayP(ZP4|*kSb}G%ADVxoiZZ0yIi*9DvFSG>LPmf0%dC8+ADb~oPRvrcMtoUh@XK)js00biWfrrfZ0Zy4^s!NQG`DLNSkllqCX7l)6f!8M z09mYvOt4YQyPNDbKY_bKn2);!X30UMge%Zg!4W1R6vn6UY1t><6Gjj-WHS8>+wO|~ zUtuaz@LBeSMOM9;>cVpJ9=D!#$IS^9E~H?e!%ztK z4&s2o`Q`FW7~|z8D+TK=JR-yFQBDZQ^Qz!5OM~0()Ge>8;4Wc&T*@E7V{8P9aHBOg zj3m0{@#6xs>twPnn;%ap^B)ekv4qvA2q1hxB^Wzew1>(oCBCQz493ux$qU`5O~zJLhxe5hkeAo{d_r zOWKsy>dcz@rouq4Zu>j@TZNvrU9+A9 zxmddT-d9XMFYW10R>y~N=26u5Bm`B&gcX>}zaUVMl<1IsC!3m;y z*Ls-AVDWv8eZZ)LNk0JOP3@Eh<>fK+X5DK=VO2Or|ui@MYPgYNO5})wof(cI=COnBvcrpWu zBKaJ{H<`a2|Ds^EbkthR!N2)_5#JylMJG1$OTKNwW}eHpEqtqT-?rj1Dn;%k==cl@ zzIE}fhVM+(p5u#?>Gr%0L(=g#HLE-02XN&GQdRt3ekV?CR?~7v?Q2#u@#qM4S78JL z0m28wj%L-2H@U!S&h^;b%D|EUx37*zmjsrLpb+3S(h*nIEUDrC-gvXR&%Z_;9LC#@ zVz61g&fjTP-|oLHsUi9>t{=hst3kXQd@^O04x{Q-#A(~r3cC=gqD2&~1`Du)e+_nE zF;X}Qci}WwWh;0BR(4-ye7g}JkSgQb2k{}Q>=ImsoA6;OXBS84o2f>rs9W$6Pf@%{ zego@$Mcq11QMb8@`dG7idj&<^QB+jDD|P)tyvlRg@q)-qT7xqvNS(`kMB0&ri_EWg z8I{bh_n4m>khR%obPciT0jQ52!Y9?L`w@%|-YX58}$GYZ>`p z??{P}c|?i4+rQ@_vkI`s!!->&|U>kaCUx!&sH-sa-o?&98|{)GDv zsy|H>iL!k8M3>UYlIex&FCIsI2UYjWBX};UR#AxGdP0QcKifWdyU%080X+W{=5alQ rKOH4P$J0=U@#l^scp*vDmk;9k=p*?17;P_j6|)sqK!N{|B5nSE&rvip diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/handlers/connection/EXNConnectorHandler.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/handlers/connection/EXNConnectorHandler.class deleted file mode 100644 index a263d4fd96e7aea42a68451b29532b86c6bc5e6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2734 zcmbtWTT|Oc7(HtYGLE>3OG3y68aLP`u>#GlB}oGm5{e-$CM1NmRLE;1A|xuw1lsp6_;+zyAL14*=KjJwt(4REw`x zOuORhG!#|7ZK)e}v0`#pbv0AnFp5Q!KhYenu4xwi>A0$HTNc+n!?x7PhjSCb%y#Yu z`w|#KE)uwgaP&+A!^sG+T-mYhtsRC2(=Ib8dD|(gu35UguIBA>nLDEl?J3vOJVT!_ zHP@ZCN;X5*x6|z+U(+hC8i1${FPS0lnk}7|R#pgMc7lODVraTyScZ3tZcJwu8BXQH z!=9sAZpn5w)H~ebj^^& zpt2!)O^}+2>Pdz(liOB*SPiz*AEvk8aQhtroWLoDiy~u3GV!)ZNH{}&ivTfPPv_UQ zElo8wtE}EzU8mHI9$m>CU6Rp{fnzv}_sB`2C+IVr`wu=cbc%!){Cb+@p61sHLvK1$ ztplG;ZA+BjVUiNk3<*&eq96&94)5FeikjXMW~=V#-=yE<8cwgv7)x= zaYsUqp+(ebjR?a~M7Z9@TE-;|C!u0QMgq+uotGKXkwhYzM#5DFx$0riayRR*51hUo#p60YOp+*l6ad%!l5qorV&f*o^oDNw%_$0zMCSNmF__YH&vtesjQP@*J0NX2 zlD1sfG&z#C+`hEss=|~DiSJ-Va;wqV zFN)Ac#vR-hX_;ndb1R$NNsXk!E|qZ{CxkHM8TzVw5ydLwya-qv_ZV7JqLb>R>2zHo zk{YT7yX4LD5_hD`|i2W~UDK#bxOq$&QZN_DcRIfk}s@&z%F8lwooVkWX>SUmQP*w*%s(BhjJn z4@lyeKc`@lMKh@T(L(lHG)vPgM&Bg%=;6=4K-bSSV|YTNOkZK&jUM`L({B^4w9=Pk z0Vik_2-9ewACMIx%wAA>N1mZiIsGfnHQ<2&i(!XGakP;j1#pjlWmgCcbRmWJ!P?`Z ztwPvwvJu1vv(Ir+iT#8`b`KvseTFOfq1R{=t9uw-%J1UJ&~w~+N~R3o(n$5v`Uag6 z$yov)lcNF6AtEW$(n9*u=?Eq$tZ5Av*hqZ$jY|L^PNgT$KKxT!o?4)G0JCX)=ch)nr zAeA^xoVJOZxNVL)N0T(RNpY^$V8@8KPH0-kZJIW{o8D>NBk7%{X`O^R{eN#}S1Ys- z=r2FC@4fln_rC9Y-}|oj_|j{i{TvZ(5fg&aW=SuYlck(pax-YMx;b0W^LDnBGhN*^ za(dp%W^?9A!!h+4qky5~>KVJ>mhz^f_mA8+nl^GHrt2Eh<~{zrLPF4*nuIep$W+kk z1l?4VLSovn?Gtl?dWLOhT6c?%RhXV~jJ$c$c8=?=XF8_s%@s|3(9Rd_f?4pk2?`e- zI|E5<#}(8ze9Smu=q1m}=_5uF(+@0$Z1+ENMqye{d(2?la7~%3m9fAG!x=jdY~J2%KBpfu zGRIvYXARGovI$HJyb!!_?KnI%(Dbm?vcZN5IC#*JLb1l@)cJP@?9 z^AuR+tc;X7aV+m9JiBOR9u`!Wv!|JJv}X@YVUM;lbOMs;kx?^Q+D|j zGj`UTF-orPAFl40Q#ovh)ltC(cjf3&P#75$Bp!frwp#_u+X;?c-QzHq;b5`nK(kY} zlh^l|1=BG+smhMdY111ta=EnSnf;Dqz=V=r-49ARm+&tYJS%VN8Q{CX*UJmHMQ9b> z6s8c}9HEsI3sXI<7F6%eSTL-^KiEpH-(~nT?Ly#2f*$EwdYo5+R4iO>(kL348B>3# zXk~R6t7jLECG||sf`{k<`74;Ybj?A#;F+`Dw(jvdLF9`{1m(ivwm?(4?qCyRROE-Q6U8GnSFpR=A5m`$1S|C?oy@OfrTc7*_yN9@;mqnm=Tc^DzqRj8lQ>*1&=T~}$hpnLzHa$iBFy)4r{X3`)ibsbY9bJ8U4 z<4FafE8&>M+?+~d3{bgg;wCI;6+6a0nd5xp-)DNrCkX4_T!bckH$e0g36)+au$X>? zS2lAKL8z$Y9+f5;))FCwRCZL8KU=wJ6Vy_$4;HI%Erz!Pz9=;+1RuTqY6?wf9INOJ z%y}mJe}C2}B10)uK+5&?$lfPt%heBD2Km~KU!;e^WRt`4bqH!cv}bg9V*i1CQlF(o z-sS5{p_77I5waXJCpF(^WmTHv^-*p#K`QGwZA_UFde~R!n*fwY(&yPKy_xZrL75rH zMEXEhg{gNvxYTO`d#uFS2)&hloW=bKrm&ow72Mn)sQVC~c-*t&GA-{wu;|+vA6yVK zzJGUo2S*Q;eu~$u?07 zoHy0i3*ow2YQ>#Qzi2D>Z|6jq+NdKSk~ zO$3*)1a72>h4MNPRAp`g&LeN6iJJFGmHq)qQ`KrnqHrGO}%4mP7*@em1?s6VS3Q{O&*fC1fnqUN!pw5cSkSd9P`b2L2oIRJR|6PB zjwzEtVo=2@WIP;?Do`^hLB3H1ZpNw?RMM(g1COdo!uzp>TY)Xht}%$Y4qLF?-FR`D zuIzCGM9(rr6-dTy+dJ8rgUX#R_EzyfPV!z;ZW$Y+Ob9O-%^qFyxM9YJiz zGsN{1Q3T#SHY^R#HBARE6=GLd+%5VeA|&eI9s*A&s}>T`68lud9_)INg9X(>1Sh;N zEcS|fB4VpZ@eXijTI5>+X7@Pr9cJ7SDA(X8mxwq>FEv4uQRp~rP2*}*a!?P%4*4n@ zw_FRx-CubPL)5Jw#Kl5BD8a+V4aZ{hAL9o0ghZS-v}=b%Wp(1T=f^j5LN#wbt_&$ zaB&KA%0>Sut)LtDn-vXWjEH9c0-LqqusgC$#o(ptOJx!z(Nkxq*XQ&Mb`^yOPbnqf=O{p=J zmyb#ghhnN+#gKF|rbZ7-Mv_7!(OH1U0Y-NuiRS)ftl84E)o z>=`_w`FV0LQa;rjYvxH$Zt6s=+254%BF#?JMSnCsQIE+}yn{EEwQ+%dEJW#vhUi<; z6MP7dlqb^j^pmMbEW-5ORt8Fid;yTRFFvb2fF6}h-+|FP%jg(CRvurVpKYid+PheW zcbBIyeouKEXhR-RORR;tzc(3uJl2B2`^rf5^YmfKMzXnLBrTD*y(U~$EslBqDJ9P8C9fei?y)~pGwBss-!wYt5WR%e_C?=(UX|Z~*TGpC&OO6r|7u-}gx862%x0+l5~URS;x2_|FHslTAvxNl(AG;d zhw(xDUZaa>70Tm}F~3J|-pKv;X^a#^7$D0(%>RZ$UjjW63Z1=SK%pHKY zHN;(m-aFMo{I(-X9TP9s*F#-ry~sE=Nu1bv$}ie|c9Y@$tKlYHzRS;>wSDGypj`Zf@v#o_;?X`WUG_^Yq8hoTIM}_r6SR44tRHnizhTzS{dd z{mnB#74j^R>RK<6rr@rj(%&Ku%P2~{*bPV9)d-@|SCY}ckN%@HzoDM!H>6v9<5}=J z!oiut??2H$*>9%FIFFGI8U$16~Ov_Sj~McO*lGcR_$Anu-shI-D6fk5y4e^>$j zVBiW}=fv(WQU}`S#r}&}F!VA-=f%*_3u5mCmL7Ok?CyC^+{Y9uzP0QUwJPFn*v$O^ Nhw%DdHa*zG{{cg{0=EDF diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher$_send_closure1.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher$_send_closure1.class deleted file mode 100644 index 6bebbaf2d9cd667e20e8cf3e4c41d6fa79f2628f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3950 zcmb_e`&Sg#9sk^Aan^MN9KeXLBrT1wuuhy>f8cPIYTqH%?Zin3qj1Du~nOT&+ z(s!Fa(}zv9&$LZ#f3v0~*qk=~sX3>Alc)4^XJ=uA#S_oTIdJ#Rz4v>+-|y%1ecb>4 z?;rmH@HGA+FePiIE2nFYR}0DZn)6H7%H8-^9rFlxa(zilcS(RuN*xf|s!MdP8+r7F4Ui|R<(y&z^t$Y(0?i;&gEm&qP zv>kKYsvcSQ*XJuHh9H(f9^0@C?iwcSUi_L9|Ni6ex!1HE9kVx#rLs_J-OW?o3w7)oU;Rgi(?-i%j=?-XttHSS}6Tdm!yy%0b?U*0^3T;mO9tOyy7W$ z1r8vf(+ zC8IwMUxC&I%c+s<#~-v7XgJI65Y^HsAtvU0?}|0;NDb#$2-i01sx(Xp>}`~&uo3KQ zor1;1K&L7XuLvBxAODS@9d#M9Gget1(l8~^Q?Uc3zfxqjS1i9WE<-CSt_-_Al_(eS zsVpww(~8106JJqSsF7)xF?p`9VO-=+lGYvlmfgOr1R`I^3Y&Gd{8fvU+4O8p=@n}+g-P-=ZsE7ftrpR&E^;GJ4E`wMfb@^tEoR<7-Kk2G>Fq5i0o)&Lz@l@a`XP1UjJo6wM%49|6;o8z1OnnVkwfZbR| z&*5}#VDKI6%^z;9^&qYj`4591O3s@bFX2=~bZB__d68bh zey#`&#TDAzsv)J}eDwD+M_}uY73_&m;E$XPL#G4Xgl(sKaq@o`T~jr39eS@yaMbIDpzhd0P``9GZA1uUg9jp`BB1@im13om=wSVBbaXElQ*C*<1;s~ zK+H!1)C diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/middleware/publishers/PropertiesPublisher.class deleted file mode 100644 index 9bd1da58fc219235610f03253de0964e4778c6c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3973 zcmb_f`EwK39sfL8^2$Q^SdPS@1ZZ5aW$Xn*;uHe`M4(`sK;!^6X`PkyEU&%Z6}v0I zrL;}kv`O#7J(8Yjo1-^{)R;2u3HU8-|@XZ-_!s8&)@$E zpdSkYXJyH7WVU3xB|pa{Z^#>tG2`Y-w)73(w2c`npSR_8)00NAl(j8?QhL5|-gAr6 z3oPlMUp&+x1fHnNFXxiF=3#@tV|6(67ChIzHY?Czy9EJ#$n^?_Z%-VYGKSnjL3#rM ztsQ<~239U@o4$X>nQ#SC;k%rhmy>46H_A*5Pfpk}7g(-iRNsFy#w@-L)>SXkJHR5>KFG13r#V2%K0; zSTI{;06KY_v16Q+6K2T{MtC;jnT|i=8V;`lRG^zhGdC%Xt3@ks6g@X^ zovA(}XIpfr!Jy7fOHadjf&FV`MJDH2#o)wjAXSnc&zr?Skv%Vv$eDgH;;Ix8=wI8+ zu!7gC2T6?Jg#Xf|iA7MGe13*QW@o>`#qN0!BAHK0_t z2+DS{L4?(P9gvV}-$!i)8eU>&TWUb%G|-S0*rb|GCTw}bGB86R1lsAq+UTiXQF>f; zC)FKEyv)yK5R;fdA%PqwSy5E?tI`T|*YUz?f|8iRv_jraB910ijvax{y0K8F6>BK6 z4lb%%ZsbR5#V@*iy$sn;J@^S+1p{0$uG*EvHAr=Fo!}g10GC^SLuXeQG;s!i5>h*8 zoHBEP>&RpPp>f{s0=jrDU3)ApL7IDAC zfvV#`M;(7Bkyi#p@nwc_hpMYJlgIX&g3X!7$hZ?hZ3u7e$a&HXWV)7Ye80ff&MP&f zl{T#An`X;D$&s+|tYc29N%W*Nmh$Ez8l9j zZV2*p96w+pn%7M$$jBhD(K`*Y}%vqcrLuqFD&5F`?zo@)*j=d z%YE&!P=njls{!wEO(OCT2Q-++G*)AU!d6-yLmQrij$v%#>2AD=JvFGzRZ*G4D8@om z=5U2y5uD}Ui}*CLc!j8Z2IJ)QH*$?&duvox5WZH3pWunYa8GI;mL7Qv@zerlZr_1B z)cpZk)ae3BqeFM$cF*I6QdoovGlZKTVw1*78pkX?TjAGDdz5!}5N!QspMFdKLWsa% zN`E=T;N`p6nYyGzqgCKbRYlrJrU+xHd-#eHqvDAPTH%|n@a<3OkLzF0r1T#Bn_Tzl z-{RV@e~0UF{d-)`>fh%&sLye|tpAAXP5mdCvb==Kr3%AcVVD40^q>9%KOdykzkGl< zNA(Eh|8`M6|0ny9{LVXg`(J3|I*;GIPlCY@pfBJLgAefTC`tc#7jLKD!(WyGwfP~M YHRfsr^Rz2LmTCUprgQJ{H-gxI0YA%M6aWAK diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/base/Credentials.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/base/Credentials.class deleted file mode 100644 index af0300bd2838891a15e54318ea2e8935d0a2cd21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2364 zcmbVNZF3V<6n<{{vTfLwHhtr*f?92w78X!IEFdL9txc^qB{fv7o8%^4-0pUEH;n!2 zH-CuVD`@TL;P?q<{7sDGb9Xl{mGA*4lf9dJ&wb8$&U4Pm-~asnCxC0P1g^=t;mA_m zcI$qbkBT9`cZ?mkQn#gV_@=GirEQc?J(T4@ zLzlpbn&-NY_M-j8@V#-`BamtXxe!?j^woXoIp&V!d9DST4?N4M%?tGUvh2x#9;f`k z46Jh2Hhq7|sk#E0oa@z$GNar!>%I{?_hi*(K$hzmOfe{6s4>Qn=P~c>GrV&%9 zMe~R#r*K-KoY8R{L;ZYvL!dj@wtRu>x&Ns>S@tQCN(073?=8u~P5ONcZ>yN61TJ-y zCnlaRd)97nXD^USz=evr8%R&Xy8;6$=}jgAv*|W3Q9aGSnsyp9NlYW7;}~>BdrlzT zF^~>*qTzyo-e4G2+0AzM5y_d(l6C-OJ}%-?5(X|uz)fB{-d6${xFT@6A!4hrmK>(T zF>PjiJfdHcEIMOdm7c{`_FAJ;;ugEgfII5@styb9&3ADQ;>aM2qSugP+rB=ahR+11+p`hX%4Qp@ zW`0y>f1boDzRpp{7((qvz*dQ4( zF#eMRAMh(Mj~g+d;;jPg&CC)*(Tm8anrPe+xQSb_{V;E<0D9=|wsLobJC7DZ&WigH z=-VymI8U_Ac7(m#3HDxR*t;*mQg4+0Q>xJy7}Qwa0^5X0K>HW- C$W`nB diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/cloud/Cloud.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/cloud/Cloud.class deleted file mode 100644 index 9444160f39a9e12ce4844d179be66737c684d3a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2863 zcmbVOT~icC6g|BHBkQoj^5tg|4T;M_93*ODP!rrlB`kg|fgmPi*ll2Nn8BG@D!k?` zKP2x)jiHiCDo=QV&>bdUL zcC>#jd{0i>1@zGUbYvr-g_u({fqc1%RtY@IS)CB*36F1i?v_=P-VJj@3Ur2hv)h|| zKT!2#O*(;P+P=Vr@@o=VHhpQ7ny!r0J>&;wU{y=D>HAa8iYrhoyWXl%CG|D4?i(>J zPp;UcYPpWlu%*AYv_yoNl7P6&95-ZOhQ|Vf<<^4CBnR~AxM(?6a9LnqVR%m9SYjA> zrsJ=;-iC2aI?^)(SyQzbT9rY`wC#!&$VtyLx7oSE@M3zFbrxkq8dci+v^NsR2_1tt zltl)Ib@ZV>i#8k;=vCmAumX(?1r8U6lbpgXH;#yM9PcQUcXi~^+sU^R0&T&X#Xg*U z-9Ch!WEnY7B)DJkQ{`tm4BQ-taFZcFz=tZ`QvzpFI}>xRR6T1mxUwBc)w{`>xfw`L z!>~Y?s&|8gz(}DbN;ISsuVy@g(JYGiNJkC_6=Or7keW!!h-f&&;ZGPw19qu3d_;0M zy_+e3tjEVVo5eWJMZgVSI&U?5GmcLMjwbzU&eW8{ayX{ViVsBemnG-Tm{n6}@iOtC zKXqg^Tx2L;wwCZnA&IbOLexZOL%!^;y5N1gdKzDG9sAL#YI%j$L=I;`S@*ZrCN@@( zeFVbn-batgnx3<48O`)y@KhmJ1A?v_AK z<<$y&vGCTost~y$b+=oz;CRa{Q>2WFyAs@yE7FrrRkEjjLljGDNumU?gq$b8)FFPA zf`on(`}py|u1`SJBn=Ccr8fuEuqbe$!vaMqiO z@e+Rx%amF6cJCaXiBdx@_s3=~?EoEoaq(5_~7>!<^+?+?aG6SE;n?P$j!4*wy^|&hw10Y@4%vSb%Cz-W0>sJrb1{8 RR^JQcG+s`DI=3^>{s&^!&&L1& diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeAttributeRequirement.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeAttributeRequirement.class deleted file mode 100644 index aee18b7471933c98394231b38c77067c0f942b2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2147 zcmbVNTUQ%Z6#h=248(zwKud45UZUiJOj~WMrmb?Z7)go}45p~8VRE2ThZ&ribjho4 z{t(}>Rb=VXphd$S(O75QD=_T`RrLk&V; z^nv-%G#u02HkLOZNQ<|90t+wg=!pFj0%x{;&wIERd01?mTYfZwOUGfGiPVTM6@+GJ zTl0}V#zhf*)SNhCtjnawKwhZS@$0^&Pob`Qk zPvB}gv)&tJ-3{#>X;_pGC~veB^E$>b9!CtPbc`YqM?WS6#+31LBLi)O0%y~i7N$n! z+E27{7Uz_e^EyUwa)_r%f&TEm9SAHJU%ITl_`}!-Rp_cRL`qB@E;TNR<~6*oB6&mL zO3$J-(^0m3dpDfh3#BUSY|Y#arLW;lfnimOc62j#pGN zasug|Kzgu8!`lLSE5e9-x4PX&L1uavx`#pL!@%V@W^g4k+>T4fJF09mcvs+jtF#@u z63eTlm9{xujMfQ=DqGlJBC%f{^ z9y7|`R=6U!q%U1d((ic6@+DiLMdW4&TqhlRCi=JrXz1npIO=d@DwR37+-(iB?5Yt1u8=fVU1ls&t4Kp7Cn}Bv>JaDuEvb*R{Z&5K#r_0*8@Tz2v>=Z*Dk$=q$q#>-yax8xn$k?iLf+c|~-45EKD zuG$J1{Si8bx&NSM4)?f99}794N{IyJtNeA1yQ=R54oTzeZ#a`Zz=hIucH>uEoL>96 zQTcmZb*cfUaS5+-U+1R`C26={jW?c^xjCAPai5}+b1E-Ysk-_Y1%m&w1D?T; QKf{PdiU@p76EO_^2g2A(g#Z8m diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeCandidateRequest.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeCandidateRequest.class deleted file mode 100644 index 4926825ff87393a5dfe890c502787f8c1eed26d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2603 zcmb_eTUQ%Z6#h=Q48%YoQ0NWo1tkfz(^gwAp;d?$k)xM%3L z;neion|Gzj-420MHP3bL?S}hvjdgU|C2+Q#wTqz&Eh^8-h2_a@=>$HviVZLIz_RtC zcm2%L)q1J7{$s_Sj* zbJCF>si;tTaJ(jif??YwE08muXY2}G$z<2tqpUlDwJmj%@;>GDNHL$nFis|sz(@*% zNGH*WQvyTEc&U+rLxcjSGua4JgY3g2S~-KW%F4MEPGF#yt5*d&gDs29Exb4_N6U?I z_o%QHD?~{=tmT>;riO3+E!~}9Fyn>WU#FRj$Es!>qqv4`JDvB_yyX$fHVUXGOB)2ihd|bli zBy?N}4Ijpp!n=wx9ani7BU)RfHt#SUj$t$7BVqWPl4Ynbt75cxC3$eNZ6#~?fUbNQ zPvMzNtiA!`s0X(nnbh!DfH_{ zcV8MJWxan~UD?4hbBqzh;rYG4Vq6^;a4A+>rwng}?#?a8q zckso)Qw_cpc$QPs@HxB9^BdGq6qq<((Ce|NLJ#@uifTx=l32v;6h6gG#m$$j)z*za z7QcoPyC=(ud59_{_AK!-e1(-Hma&?`96nPGtIRTvQ2>a`$=kKoH zVxyNKe8)$iWYruasC$x~vA}v~jTc?gyJC2jv1!X?HL%Mrg`BKdzQv6h$8l97b{$@d zKK5ku`$c1?DVr?0be~k867r6{vC~ zXeRojcn&Bsi$YW7DHk)L zi;$d8;yNURbxBR-W~@Oc-KFRM!otFzSS+U#WaEp5ON#R4Zi*^53Q^`hmL6e{<38^E mLxqLMNFQL0%FAV{e)9lJ1Z}i(#2gPlLBGZt6{yif0^0waVadS& diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeRequirement.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeRequirement.class deleted file mode 100644 index 6cb0a7c4af278e348ab09d4296cee0dd65544115..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166 zcmZ9GF%H5o6hr+Bv=S2&$Ka1#05O6DCrFd8Dpi`ONmIeq7&rijLZmAmo@~p5Ki}6I zz!44MB$>Um*@c{Rfnj-g9)ihE5+~&rFOGeoR^C{nCgDp-HyN{yGKilV5MkG=S+P^T n<7?ZCF71l2|C=7V7{dG{Z0{jQEobYbCRA9LM~et`VTH{Pm25GO diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeTypeRequirement.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/model/nodecandidate/NodeTypeRequirement.class deleted file mode 100644 index de442981f3a094d10e8f5c1e65e8fd4bc5a00e30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2132 zcmbVN-%}e^7(F*o7UDulprxgy{)&29Sb@}Fq%XHCv*%Wl|(Pb1V&WwO0xrp2n9}Ob1|kSX@{Q} zAJv$J%ReohgpHU6V?pIYSQV5c8+6rnO63Cl)OBM09z=f`S zwK`F;e0wLH+YO~+bhc*hgwogWj=-Q|;jlD;scc7N@ zy8`JV91ZUY=y8RS?5=gDkBZE7=eSEi_QSyWBxZ0S3Vc|Xj`tN~Gx$K@Ow4LqX(gBK za7~9DKN*$3DXBtZMQPFI0Q19%u0q!EAyWmivxVc?IKwl#Q92*WC{=c-c%q}<9518d z)x%|3m%el@$-JW(%a@#jSi>#xU#1+oHu^={Z~7H_c(>umT~rBu+uhPI%Yl0NfEqaT zlh2d3-cePQp^#fuGxu2%^SGhoDy}KL+$0}uRXckUkxS4%f*;WLOnb8$;{^c)_FR?nn64p5IMb45yy6lnCRnxc4O-HV% zg_p;2#KWo`*gTkZT~FOFp36xdC?MTjZg5#V(ANtWdoK#~4 z4F3cjgWP{q*A4fiY9ER0Q&b{F`zn83;;#4|!vSTS{~f3D`#8Hao!|Hk=cdoRk%5ZOK_iLluSDDGy3xf$nQPGbb0Ctj;qrHT&$KK zVR~vGm-c8X@HJQRI`kAH8plnjxog2QxU0Nl`CoCa`WU@?Yxybx5}Z0|`x8t_!$(bE zL#&9vaGB2)J^~-3&9zAsMM;d{BLNP7MWI=W*?&T7%8s%xbqJk7M~z}fG_C0Sf%UABa{gKt2THRKl&6y N8YLp|4MQX_@IT~-ML+-m diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.class deleted file mode 100644 index 01ad6f3ee1cbc96e64605038516708c378d5603c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9056 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 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/Processor.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/Processor.class deleted file mode 100644 index 2749c0e99026fff4912d3a0a2e8ce57b1b774bf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmYL^Jx)V05QN7`$O}{)0~%IBLKLrzM3o4n6x5F2%J|9gI{t~^Y7`uRLm?b~o6)D$ z?#%4_$Lkw_TbwG~aHYW8>ZNAWWFUSHw3DHF&Xl#Mn8a|-k}^H~Vh5#gKI(%euY;xg z?Z~Edn6~NP(v?jjhZlwJ$3o%pV)cKtDai%fuOwO0QJW{GeRRVyut*rM$#}=1klRI1 u%P(HHBHD6)`E65+^R(8nS2){9O@{BB=efcJv-TjMW(sq3N5Z1%1Sg+>yG-%` diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor$_delete_closure3.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor$_delete_closure3.class deleted file mode 100644 index d3e933a4e5810fa3d88ed40506712916cd1014e1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2358 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 A#Q*>R diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_delete_closure3.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_delete_closure3.class deleted file mode 100644 index 6ed616aa75d4f4742829eb319dd98bfc71f71256..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2350 zcmbtVYgZdp6x}z04umO>K&#lIRbwFmJAG)erl1hpN(m1Mq7*ewk{g&h%&=xARepj$ z#P8U4QI;+rpX^%xrY?2gnF$0MKXmoWo%=fbp0m$BXa4@@m)`+QLJBO(hT+Ic!*&~f zl|#*tKRCv=TWi?TH+<7Jc09K#ec$zb!`j}ljk|7Txw(}o*Q6~2S*EGq@Z>cOLSS&y zbKM8KhHW~VMj<-UkQA73y-lO)*5sDi@QwJE*Kh)BTN-zyBRw;awL^Yp#78s2k3O!h=+^1!$ zPw`H6O<*9iDT9J(+a)WIGoEMes&KL!?VX63ukyan`$p3+uVV;jQb^#ejx+{S=)kK2 z9l@663oI93itFbz!?=6PZX=N1oJ0DYDrK2&p*#*xpr@=Hh?Xi{uJTvlVjFhi{In7# zkgx(ODoky7u)5{B-qr}oYxqDw zZ$=nZ$W-g|QIOg8dTj$pK0ZV~g&VjT0UyStV;Wg?@DcTuQ5tWliIEn4d9rSl+(Y~yA5$}wsd|#ls96zlDP3nm+J^dnl@!|LlkB!QmhY&IXt>Std~rYxpPpz65p5eS zQ8gRYnyTQtDa>JB#|&mw#ufz59ck~m_%$pEB$*@~pCOaNGFEgH@QD)os=%4nd>!^4 z^~{>O`-MQK8Fik^FWz_7aj%=cZm`=FC|lJDT;^`g^ek1Wt7@QvS!dPn*qY;YU(s^p zVq?1^y?AGMB}&Pf^w$jsb;Tpmf)OCCB|CfSKaScSPNnge{hjRnWGNzFEmbshPUx8 zC(4aZRG^+YOCa#L`HY4)!)FwDhG)vrEWhejj{+~|#6Cv%xD+7(;lrZ{z~o%Pzr(0I zFhIGK<+p=7r%~f90qsB37k)AT diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_get_closure2.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_get_closure2.class deleted file mode 100644 index 659face38c096b3e0472345496cecf089ea4f203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2332 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 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_update_closure4.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor$_update_closure4.class deleted file mode 100644 index b6deaf850c2ca05f74b6aad785b932059558f9da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2350 zcmbtVZBrXn6n<_3T?kuV0w zaLaSu2fIeibheCqbfO_CFyVSzhUHe|w%PEF_?Fjj0((aqccdddVpR?;ItkVK+NH=s zp#S8v0@E)PhlXx}Q&B7eSH}wX%?GB@2<)1%Xx68qWf)E|@N8#mDtqFFjvnZAEaL}e zU|ac`>HG6e)fLDU+6FDFHE9L5>yV)M?v#L5DiL8ZFCgyGp_{g22Qvbru|uH;%jNsD zZ1pML$*v0wWVU3GH*2+`9mrYFGj~-u+0FJ&#LQc~@AJOVG@Q~ggfl55a8^eegDG_2 zWr2=h+x7)k3NOUn@*{Qh7UxABl*opJg zN|->x4ydRwwc)|qw pmTOYO8v;XPZH>+sVx0z_>G)OG+c{Dyd3p^O6i*iktf()B z>0gwA8KzZWn5eDgaCpS1`;T0Sg3^!^=u#O}njqvcm%>dxIf1uR7{?`nD{Z9}XSHZ~ zc0HKe4Wz2L*@{^w!x}CNoK~_rbVOjhErIR5)^Qc@q;Lh-bo8RHo3URP7;EcD8;xst zPe5-*7*)u0>+?~N+4g#E14usJ$5aY8a5Dlvj7!H1vg+Ui>MNr(-cl1IE&B3g)hN2v zU{zM7Cn-OsW+-EMlFg`D5pgM9XF}SB`hS%a+D#?dZE-B$Q5(^4o8|fZfEqqN(G()u zHd~@d50GCG<6cGp+eL z>^^G?{fASCyvgu&nfXhrgPTGRbA%El2&n*w(3?ZMPzjD!L8N zlDF-eq|y`Yerz{L_NSEOf&TB&j{$yDicqHZ6wlcvIey9243e|}bR6KNrQG<$V+{Wk z3g9b_7kCQ(EndMne%0(eMrf&KuX2{)oJ}RhTIN^X?^algVh?|Ckwl534)HHEPK1Ux z@iiyPjZXXk^~_lUfyd2fG`t=@qrfvfQ;uf&RkwN+cp)eDF}la42muHm9z_5q=L-HU zM%{rinntnC#So*peHiJ)kLb!B;N884m@JGxL7&<^!1PAp5hlm?@nHn7yr&F%pJGtM z4YEjW#dsqj*T6vf)^E78@GIsw(uv$-6qKbRod2cxYMwkO7snoA=`Rd$+(+?G8Z10P x`T(EOcx8j8pFhG-#vGd$;^a+ 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 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NoOpProcessor.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NoOpProcessor.class deleted file mode 100644 index 1fe93f4391d3e1b63b2dda7073884bb05e8995f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1857 zcmb7EZ*vnx9DX)Qd+m8GNm^7aRncIRR9UDBN+^&Ynd{0yuvV~Z?+V^UK8^?FT zmSiX=)}CyNM{YOfJ*QlWRv%a9MTWN$ruNFFw74D5S`$!mV->+1~ZVriSMO<4gYogZq4qn1dxVb(&j*GT2eUY3 zBZaJkH{jUFAkUD|kNlY7X8j~xKF$=SIcL&rBwgAN+D)owI8!VQsteq(&4*W}sgK<~ zmnX-YyN{`B7T#uCr4B1$%vQ0_S%*5%-1yk#yvVOWT}kx+$|!WfPmylHS5Tx6In7~PEM zY;mMBByHZ1ExjdLG$CO!7xM*A3DW66Wqo;GCgR4n?&z`H*iE34Q+y`+kWiRK{X7enOhms%+1gUdrvmpsE@T9va39C%MS$3Q3V;ID4n&9 z_<`(Cn1)TeZCXY*6GR_9E`-~puOfY=Xt!~QT)q4o=6<0shI_O+w1ceYahmq;=r>6x zGvq5{1WEsmhc&V{9+t`nSj?w>##H$bA3lAC^Y!HyIAu-`vAk1%j`Pb0xbT#q3|q7k zeX}nyXJIMJz=!^FbZz2JP%@Vc+N4h0^usMudFDEozx*e@SpNf8ck(HMt`4B|g!Z8| zq!VcI8E*W89IXfV`foB=e}ViVZj*6!hfKeHjvM7)ara1S^Di-L5l<;JC|ZizHfX>k F@IQVH0SEv9 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.class deleted file mode 100644 index 686d79fd91ca3367fa060dd5249037ab8f772f36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6447 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 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_get_closure2.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_get_closure2.class deleted file mode 100644 index a0abcd39fd4c922f32c522ae5bc2156d8bf87d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2336 zcmb_dT~`}b6x}z04umNmfmX3atHweCc3RY8O^edlRwM)@h$3nnCO0rO%&=xARepj$ z#CL4FC`*?gPj)STQ@HDtd8}`m_)2O(0x!m5%)wX0%qoLpOVxZcjOM#<7kxS&|NNMJ>LHBA1Z49qa8 z0;5FjEQF&YMm>1!N)(iafpcM{((xMP41eOMT^(!aFKrtV3U(Y#3Fy5v<6D^d#lS z)QsdTPqGcQ>me?rt4v5@sQ*?+pJ2*>+^5wX-R`cxQAa zO2(S)+ccST99I>k>#(5od56E3kSxjNz%57pve?e4nr)ZA!A#X{d6v9wHzhTmV%KA% zL3%Kw#10I8hd~VSn^9CUsi%0(_Q>&bu4a*@1)$>)&s7SOQ;#tELzwz6I9}i>$m_yH}oU@(8SWEn>`@ITlQS9SaF4FjtqYm*GG){zuS5f0cxzSCB)H7!Z z1Rl4a(eQHki~`T`OgWn8SKaDU;N^li!1z9wA_O3OcoYGA#kqoijZt@Df~HZdH)DwL z!U2qI>U;DQ4)NCheaw_6A7eo69^%G&`2l7o5Aa?Due_%K`=4M~!!@!JO0qw+h3I38f-HySKFM)nY^G+th(=_e0R lDLll+iML0dpkJfT(l7~;A&?@Xhgsd^w~ITcVR4p%_BWQ6c|ZUF diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_post_closure1.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor$_post_closure1.class deleted file mode 100644 index 9f2c061f18be0fbdba29b9ce466faa48d25457b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2346 zcmbtVT~`}b6x}z04umNmfmX3atHweCc1qP^O^ZToE0O>bL@8<s{90h zi0|0CC`*?gPj)STQ1{2PE7NP&`U8jjp**4?IW zai|*dJIB~{tIfLf4d1LA4bQct@4KFF*t?CovE)|eN^37uX}Eq+p{3vSZb26I5k%wSL_(FtktCz*seo*;=6ePtx_REsURTk37olUJ9aQDFdjP;da%58pO)=D z#XH$`fuYQ{3<_qwUbX`{=XvIy3MaeS*@>8Ui}!urH(G{y9V0lGLIUS?q%oXA7hWVi z!H(?QjPY*!>l^8AxxzA$yKRNv7KvkE0XltEl&*CCRC}%3XoW9mt8()6SPb z!e(xV!_0;UYdfC%t+`c~8eXH$COR5jEXE=YJk#-OuD5$EQ_}PbE-9KW6Id}{4zpj9 zff;61V3erswQzLAs0WW-iGtFQ6X;P1RFWX%375i6J~@RqQ<%gRf$5IQij!KlJi8Ih z?*&qo+g#ObkYNp11;R{Qf&klD_1?EpwV-a|fx8@L$(AH}6(7Fl)hKJ}GR5^pPsu{M2qvSyUsTCgf> z(vy@QQ!|pWJjqVfDu}p}t}`JWL;b%(3hnYqc3Paschp5R++lS-JD`S-PW6O{w#~Mv zT77C=74XL?EMQT`9OhNVN&**-wfCR+H7pAxnIs*bAd|uhR&^Bcp%VI#(f!1&9BckTS{Tz->qUyV%vKogKF-kSe=P&ysiS zx}?$*Y<_GvNDiiy<0CXJUg{9o&)MJeP7z*Gk zj+b}}{w!X?1%B1+BF1Q`W-oJ=;G9h*##-iA-S1UcC9#j+xk#eIQHS^k8Ye=->-d@z z7ZEG#ov?#>3BH^V3QHmOu%?)f_b~C%1DnG#) z|Ayad>rh6=mrr)a-_%i`ySsrvVZY4!0?ghF2p7R z{m0)Gn0~QHG;|A`h@%m>JYKqI-Zza#XgkJ&Sue!PD4=ra+wN8&ckG6a9_aKe8-!+P zTSdnVf;qS53FJ#{!Z)ItDS6K?hzI z=m@v%K;Ta4#mIg}HVnMC;x$6)&$;B!wJ6QO7S5CS1bQmUgLp}Ls-ALK;Cvf;k_5Ff zCXlj2>NCo1bg;VZd*7Oyj@0l5)i&PN=xiyGYUrD8Q1kqqL$Q*m*Kke|b)LYA`*M{3 z1sR%AUIj*o+FB6@M~u4v(3LnS4S9hsl|m&7LLPA`+T@dycsqj$ToAa_R$ED0%a(7~ z!`a>NPt*H|JB!fB3>zKi;%GiRynM3V86TgNffi#n(;|{VJEMrAS5g#d`uL_)M&DTNm zQO~TYyPpYknsMv7`23A$9e2Cw>jv9Rk+M~tz+>*#Oy5?Ox~c{$n001-!`_^%`%1Pe z7aKd9(oc3qR^pVb*?~=y8Q1kxX?iZpN}qH2w}~i|T=v~`)gO#~o!Z&+(Mg`Jj*lXXpUcXt4D#C@?sBT54aQ&0O6yf7{KIQ!N0|* zJ1|buIM&$&Vl2N0V=(n2y7K#Y_rXI5z`)?m-*9{WSIn&srt*(bQkIHv{+N=hMe?9r9Dj(#zc9dY59L2;F#iOD w`}mZ`%j-1#{1F!OKjVudZx263uST7vu}O#wffNy4%&Nt22X{`Q%2^89e^0-FPXGV_ diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.class deleted file mode 100644 index f7093de934e9f4f2975f28db6fc0738e699a40ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10404 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 M6;N^Rtd|h|FUwJZA^-pY diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/AbstractSalRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/AbstractSalRepository.class deleted file mode 100644 index 88754d802b3abdcb586e6d8bc9d9f10bb35303c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10999 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 BA=Ur@ diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/GatewayRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/GatewayRepository.class deleted file mode 100644 index 9aedffc751f04185e84859b30d2f173a34b665cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4145 zcmbVP`*Rc575=U)d1YCESs+A70F$agmLCgh3W;qrcHuDZLz zIBA+REp3v%Uul~@(>7_Ez6hjXho(bkGR;i?rc9^bT|JO(na2I)YWMCv=brPO?>zMH z|Gf7P0Eh6tz+t1TS;lm^XqVj_m%L_NwzPRWUoIN1=ITYwF-o>;dbYEuozOjFL0=rJ z?sH0^qhp7XMLu~AKnz`bj<_Z1x5zO*RNow1#Q=9V1OD$F?gys=`uB>i(aJ8#VD zWml_QNvCIuM$R*BORJxyyfQUK4WnrR@q|F@plO-j5#E^Snh@9;FBo20FBY?=XAC)x zPRmn?t_#gCC|jO6Z)iE5C%T4K6C8+Q3pyeQV5>k|NiS3|4`Z9ajznfozoctL-708V zPr@xlykH;Oyc8*`p86}B${G6qiy;<8apE2?Z9%vy~A<)xIUD-2>TE?_48u`(3 z(K9FXV%ZqgOA7V~^h${}kzEgX1$zay$ath}izF@Q$a#T>8UZ*nJx5jybTznJ-HPH9 zh_~ZGe3ByTTDr={eF6vWW@9$zm?iJ%qGw1ihVpuelvmIt5XtGTH*SxU`~ruXnAl*U zPvGV@ccUkQBzh&p%;a#{H5`li6~=yYNn#=J_}#Tv{cpJMZXl)bDGAcU^1=WwEHMw6 z%=s`5$t{+Fcr);3Nfn0gW9jUX6`EFbnpWq6>CJZ5h}hrx>~ozosIx{CzK8KS zfhYe@R(?zbQ+PrmctKhkmP?z!{eBzC*KKqS*JZgnmG^C$k}YSouPmhPImgH|_@-WD zVNO)K(yC78SFshfLH3&23fGBxQ=!#4L6Nq)NdntsH_H0mZq)E}zX%A#5?w18SpP)n zhDcQ?sla54%BCjUB~?=Rj)#@962(OnBbdXyz$V!a>l)d%o5X0n>!YwylC|gyQM4f< zc_HCyO5Y~ESwWd(t(jWs?1vk#uNA?MtB`GY0hc4V1a@($xb9aJ&tg`7_#(j>WG|C5 zfTT!7V5eV*8fK1Rjyjy26ujV%T74@!iTGaRd|oIyt16DN5&f2145 zrVj8!;zEOHeG*}X9gMU3)w*Z=NEqMZc%22dm6#QCX-&*E1#Y;|Zzlq>={5Fc0@roq<8w}^299t6< z1-~br1cAP<$i`|DiQ*4%AL*&RKAKVoDpCW! z)IfhI7UHqNR4ml19!{x`E#qha%Q)U5rH4~V^<*p<3oRoP;>BaPG2Y)AYvreNscSf| zPIgoElOcKbsTF4@Ylr#eY5(ZwW33e{Vy#!{N5%If(FOJb)|Q zeHFWL6?^bcVlVMILbN0X6@28=e&{}CAMhWhPObOhZA>G_7@dWOJPhi85l1n@udQ@U zMo(Z@M^Kh3KFRnTrJRhAv%v^`peFM))^9A1H z${gDK5wX+58_=t`q)hj;iSFYoH^1P$~It0E}H)Jct zBmqLnn|MiHBN@gD!A)uBnX2A&Qr)e7JDXHB^}AdT`s<_q&Y=2z?i^Ns$aPqKmFqe6 zCtRQMpP%-hpI2YYR_>0-w5=-N>jMMqP=E10#z%<2uWsS>Ni{%Qepj=Fe-^99(^Xp% z*YM`Qu$Ai#{OL9YMm~hPgujg3!dsIRedjvfOumc1tpIKNN7$?|jRUwvw*m~&-}x&O Hf#LlxuL-2@ diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/cloud/CloudRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/cloud/CloudRepository.class deleted file mode 100644 index 71889a7d4470e5c0fee3efa339d8dbf03dca5696..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1897 zcmbtUU31$+6g_JvQKBe`?WBcJLisSncAzQ&Qow1!5fn<47UE(i^r5p>)~;Gb@<^*f zegZ#)_fnWN0|UcTJHv14Fx-`7$7$S$3@@wE?!9O4J?Gs0=ilG|0&of6F*HPM`l20s zK^!@>?3&_7-`op!V^2h8#62?Fx>Bp?D%unEk}Mff>x|$YG9dNQjLlQDit%vG4Nx-1NBL zHJeg3T(7naOk-Zh7#0}Dmw^jdR0k%*xhU?5u)JCxp^8D`7MUPE?V8seWU zZZ?CC+!h@g7T*yh;X>I71(%|4#>~ZQB-}_!o@e4Dub!v31jl@l+E&9yG#RG{)IcRJ zpQQKJP*=wWlx;3*B960y|xH%^0r4iB|9LI zTRe2tf3`V8gX`Se;=Sx&Zw7Jbh^wy3Slmu!Yq^n2DGlEb)R+f;M01cM=K%SFuEqf< z{Ddj!^wkxKbTUqYPQ#$}8~R(L_#Ax=9HL;?N~K3Q^9%jwuuba(MU7K-Gl^idPU9?I zAha=M(hOrG!&t5z;Cw0fGbU??c=N$SEZZwjFsF78@y?F@E0$LdaPa}bFx;e-B%OVV zc@5P9y&VI*A|0!{#%qu8o{Cn*lU~_%OVpq`E|xz06CZE>f%TnIjzT}_htlhtg<8lb zp_PYdJVue$1AOr}C2T%H=@8c_+1jC0Dy>ob4PPHCZQ&_qHPSAJZ|Sxi5z(TrqGSU2 E52ktz-2eap diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/JobRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/JobRepository.class deleted file mode 100644 index c896829b5c028b6f386517542c2bb9259bf990fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1885 zcmb7EU31$+6g_JvQKBe`?W8~`p?nx(J5ZGXDd42VF%;S;EyTr4=tF0%tX-vw)+4P7 z`3d|G-b-Q93>_Gr+8KURhvBX*J2r72^0FH3-h1}mbI#p={{7=G0GIJS!-k0MKr~`s z#*s_Qo-KX~>;t(M`y#R*+~2ZszRjtpCN)DFF%)eQN8_)&)U?MR7GNOjm2_6baxA(M|3SDst-c@$j_ znv$W^0dVD>xX0tj?&4BcO<%amlY!ljrF`S=T|(HdGO!;QCf2>cQ&$+$g<_o{n{NqK z<-T9@l&FLur}9<{#XF-fhy&#v2-~H2qEFbp#Il7M%$i7Hj$w=_jV6(0I9G7?`2%kI zJZRZ9rQ0nR>lUUlZ(TaA6<&A_V+lbQ}qG(l4GNla&x`g{#bCeGt^h7Yuer!+_?s=1-pR-1=P=!nW5 zZ-sx7>Qw@ti>yafZ3Q$+Z?426+}j4*?N0)y4-uxq7_ z!RxzC7DtOe0+9G9VZ}rd?{$IueOb7OMSWm1oR8wR2=lA?5gJ)|MaPX{m0>oojWuAz zr2+oQ+;&Yi)sAS=m;|mM2^aEiD7X?m8z%l;BjH9;@*?|o^2%v?KQQEru4N5;N;7eG zKm%0b@@abS40JU#6dNYiamB(%_*g6ZIWc$Qzf=7i*rXvQF^PvErzRe<@CCj!QN=Y2 zYq+e3^XvbOWY2A#k-VW}w;0BG_Z7Hw_BUV~H>aqDTQt{Iay`SG;|1boe9#c#ZQk%{ zC+A2Kxz0mR|0kO>G`Q~lZQf4)&6WkMU%CQUFl6O8535iaCXzhJU-jCUSB!m_jS40C$-81L^ozhQah2$vob48v_& zNz&Qpm^V<&(A&|+%hIvFYrOOrAL?jbJn5BOw?qx<<81DeKk?bt6Rhv%QWSc%7fSDL z5?V#N6IytL%2Q-%J;GOiQ^M9WIvN~KjwzvG*s(iWa$)*$Ut_>OK%5fOFz JYDy-6{{U)}2&n)7 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/IJobDeleteStrategy.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/IJobDeleteStrategy.class deleted file mode 100644 index 5e44111d28fab6f59f6045d139aec765ffd9c8a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmZvYJx&8b429o>kOf3R%MGBxCB?P~1%yPgJ<{xsnd~wdujVJPSEJwn911Z}3L=r_ zllA=kZ29}=^9#T&P8Ax?^O0gf=+Dv z;(2(K_HJLCDkz1EL2ooU?JYgG19z#yk;3JF_l*rAn@Qn(rM+>y%Tjo`diskf`+9Hd z1BwJoaol!agI@Eygg08HG}5wQ$=Yy;_4VH1?wVTRtdSf#zV96`6lR#0p8#sEut2q~ Ja8fwK@h?-&V7CAO diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/JobDeleteStrategy.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/job/deleteStrategies/JobDeleteStrategy.class deleted file mode 100644 index 64b614d8b384fdc599c0143f9508ea99d8602635..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3573 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 Z3LoL$_y{c;Tdo1$(PIPFREjYI{0l4(+}HpB diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/AbstractNodeRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/AbstractNodeRepository.class deleted file mode 100644 index e394722984b3fdf9ac334ac55e448b5af9146961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3253 zcmbtWTXz#x6#h<{bkcO_WoWBVDxeW^p$tR?q+D!+Ky6yEDQH2cljJ0wGMR}plR~}U zZ~wp_;5&i~iY#3|$y)vS%^)^P1)8u4S*Nrd8tVc)@XPt?16sVzzZAfiaA4MOjl% zUNhR&bTFLSiW<+ShA$OecxFq8FpMF6^6dJ<7%#6%o>{GOqykjA(gZ2 zidv+w7PY#gHf~b*WrG)8-7?kI-7yAfVSzMEXBpTPhRzeZsk^5b1{1j@ZCO(d&8(<- z*VfI-Sn@JMf4suotY#Q_-R0x9t&t0vMDl8|$-3$4RjwB4J|WN5rr?;29`wc#LZ1v7 z+hPbqVF$wBE^-ECV?^G$K%3hP*8@V{DB=a`)C3@9TdVS$ zmVHBAblsYIo`&;WD{FU|&1OJJ7-r}e_+{(1%}tk~l*suR z^>TC0s{`N0MypS=6X2|j5xmfiUD(YKS+WX~CCX00Dp9tj#YT(_`<@O9swyf?y69(IN_}LR z5|RvZ!LkglnU~Chb?ZOf;A5Sos>` z#pQw&$4gp`8eYOVhHZlGT8=QJ1Cq3v*D@yYRt)DcB_oQiE@HE3hD4wv0o*I$0@YbF z!Ul7nY&YKsG8xRQ0SXC^w=o;TMdTZbTXD&_gg3+i5%{oEuW>t`i3j9J#%XacjCqEh zxG38;mLF-upWYHRZbc|*F+HqpCD-st!jg<@xGtV0 z>etNHRZB1#_HWE#VEp3YtHog90~uHGo+uxx^Wn83-vF|NIzdGhLx`+v2cJ!3+{CRI zma!tEf<+O>N1JfhWnujjaraXqculEbqOzXLW;z_mUG~diFZe(H9eK0`&cW7`o{{CgLW} z>7sM`2%zyRTAd~d!9?9yMgMdveIMI@p=AhP)7VLuA|(C|&4*|YG#|hq{fpTUo}+Vy z=dr_Ac8zXF=xk6ZJ09Kww=uqT4sbg-tj6TP0=6!|Lznra8J*HbI@UZj~Y zI*6ALCodUZeuAleo0}SV22=Zy@T2;XViHbfL{u~BRUG^Y!=s9tNsTIpGD;@>07p7- z-~nC_Jd;vR_$!j?z_&C;!5$+n;gpA~Li!@uNog3Sz;@B^1<%7hUMeyzFfuJL zG9Cn>zOdj7->(S*N5Hc`bq{Bi(9ejbR*}1X2Q#_!BlL>hRm{!j?qVi=5AO*4ndb}@ zf6rrVmvFI<;oX+LemZ7!DU!O6E8@1O8R}5qT-wV3usfyfRNl|0lzmEpMpY@%ct|PJ zc%0^E>)UWt*U0ef?(IZh;F?>gEgdqJ3)+B79 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/ByonNodeRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/ByonNodeRepository.class deleted file mode 100644 index 90a6a1279e0b2bb8523cccbb8e4499f52af1f6c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1908 zcmb7EU31$+6g_JvQKBe`?W8~`;nNV?fo^Fb1)LTf)0Pq?g}9gredw%}wX0TpJlA#P#w=MZ`VP%F)K2k!tPSq1p zbi;2345c`MLoM7Dorw4HQkzXrI?4@vKEP7Eapw+Y*se0L9~h=KT;Ek!7}AAeogtfV zNmUh|S96uDgrT7FE)`iP5-hVgpw!e1wm+vR@E$$Nn4X-@qn~GKon%oN#L5Aq!vPs);JD zSy;ylC3TDZUmX z7_GB-2`^K&32o9O$7YgawRDI#a;aZ1T{^2K8|^_sO65Z0iX&_HrqLe%^=D z>zhEUNXO8^BUJuDmexaD|C<7~o+5XI8x&mKqfjcXQu-a=oG5MS8RiYrE`{&twiFRj Kr(aFU6!1T?XA$H8 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/CloudNodeRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/CloudNodeRepository.class deleted file mode 100644 index 413e9409f73323861bcb2a1060fb8387d22f37e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2563 zcmb7GZBrXn6n<_9Y*?1J1*%Z1qOl~QbPKgqo3;w6yhxx*Di*NC&E^so!fs~wrpiz7 zhxom=4xk+!KiL_7Q^)b#%@RUcobu)F?mh44Jm*RN`Sl||dkmv_*DD)-)w7-Qrf2T*A6#$8@CEm{EB30~IL<7~(3A9qDQqiOF@1mD z*>o8)fdh+b*fMLrQTI!QZdSM@Y}cV0LtV00Ha5t^Vvd2WF|^&b9b4RGXi2447;=4#Ko5FGtA`A-Ta6KQ?YGSw_PS&JdOx`I+@5pYza{{ z=IEH?W{G=#Hr-@+zqn03&bAQ#z%V8Ud1?-4wMoH6h7Q@iT+Q>iBN$4ld^o+JN3#J! z!WgHczR68QvKlVo-448i_h>rXZgIZEpf~vnCqvUHx+MaDvQ;mf;qsd`h@ns7s1V?E zkqa}xAH!fOeWJXENW%IU8TEPy*)mKL9wIw^*182TgH0uNZ-QGrsDdR8vzU{t^%arc`CThm zW*9j=zsLe5={-I{>w=|k#fS>B3f>mN^LJM`|#43a!)v%85RIK5Vh6Uth z9UHGv?h%{=$~C2Kkr=?N)BLsblY9xhol4lGY2|3G7`pSe!3(r2AAstT(NzdOr{*il|14)K8C5LI1z12k1F>K z==lllQ0b}4CXysUB-{aw&Mo?yB>fmYH5{TRpV9RL4E#dhG1zprkyb1HP;CbqjLr^R zz+3cW66&FkN2JqAcLUPLt@vPEADYOFUK#rh@3-P9367n$K@Xf|f+Pn*XVP>SACNow z_94B=lm?K*M^s2$E?gLDnj}&-lG(?Y9{U-I%ptBneTEzP(U<6!w};5C=AYxn=sxbs z;0!x-5_-B`p-;ih9)`~v{(4C)qqb%aFeSA?;^{_Z{gkHcW5((o+tx4fqdV*}rZ8 diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/EdgeNodeRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/EdgeNodeRepository.class deleted file mode 100644 index 51038f65ab1814ef538d39d6b56e00ba16a09870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1908 zcmb7E(Q?~F6g_JvQKBe`?W8~`0a{FBJ5ZGtQow1!F=;7L(l&0*gg$iE^4e9aNFHfb z$S3e2yqChH89FdL(HXv}!*ExY9jA65^0Kye&%Jx^Ip^-b|NZe7fXn!vp(-NN6OG9A zqtK?MX^NjbbI)%^t_aPLyJjFde&|R)*f%}DDa?&#TWr&xo<C#&G?_i7Jgy2Hcjf zCQCCc4qtM<9r*s^eTEgw587tf2^_E83izJ*(GMP(p%j7e<$gz)M}?IcGWk$)>DX15 zhv5yc(&osUN17TAf$j)MB=_gyb;`Bt@ZUB^1S# z^p6y|M+M$&JS6rsyv;DFNKtfCN(w&0#GBOZJ6O_j8t*cEqNE&BA|a|~2Tn(>?@OT& zl_u|y#v0ydm{BV93n5DkQq`@b{JN?QoW%z^&LD3@H_M zdVLdU73mmSc#6tD$kKX%>wiLRZ73(*0ItSUSd`w?NYc)x21@P LI{hk2CV>9|JxUQ+ diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/NodeRegistrar.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/node/NodeRegistrar.class deleted file mode 100644 index 2807a4180119f5c45cfdc89845feffecaeda4a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 487 zcmbVJ%Sr=55UhzwHm=Wu9}zFkQE)-fgG5*q%w3r5wByFf&eAg*-Cy(I2l!FqWFx4M zQ!Z8gs-m0z{CfWYaE>E^OKN0Av&Oo{7ZJ3iw@NOYZY+7}m6c4j^JQ?{%F1bycM%@Q zls>TH1VZ3=u9iw#RT+6dn^O@I>OQer(5vGY`5ZzmClMy3G_lW4{|MJhWCBCweQBx~7z$U`3S5ly?d_82a^2o)fqc{E z+Z(5vECpJ7r&HH(K{utPp+FD)_$pw~k5?c8B9DG}7ipL8VZY;p6+_@KVh@9FS4)$> diff --git a/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/nodecandidate/NodeCandidateRepository.class b/exn-middleware-core/build/classes/groovy/main/eu/nebulouscloud/exn/modules/sal/repository/nodecandidate/NodeCandidateRepository.class deleted file mode 100644 index 576f1a1b84b3a17728266ebf7d708cb6fd9c0a31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2872 zcmbtWZFdtz6n-X6yJ@<8+qP&ysA!}~3M@ngrGU0UC^jw9)M~9*H=9Yibh{gOCx!k5 ze~8}^IHk(b!zVe%-^B5FXLp+yo1#5_na$4LdG5W>bMKw}`PZ+%1GtQb40m~5cX+98 zyLI2BrL6OZj=trV>o)gw->`L$*IeHcuD7E*Zkd~gQ?|;6;QAuH<@eu~8deGz!^}}& zXG*^C3{w;hyA`I3;nX2M&R0Fx-QHoCD!5)%_iLWzR4bmb#UHrdrtS;waaZirxZVVu zW*AEO!Vs33w+-LF?NnTbYyecRlO)=;?tQG6@3^$!!593IK+l$IGfFilA6;1 z>32OUl2CYFPT+lp5!qnHpn(^-FoN?8A>(|?p0jFb;;@{DikDosikKa(j9f~Fm4pkm{Ipb4TsgW zR`+4Fna<;-10YS7&u}w|8@Lq$H}X<(8<*sV&lyhm^&0n5xl{+TReUJz;#eTnQnIUB zM%~F4B58c;MYkfBc!dVBV{)SMSjzM`T^sv@E|`$(7wJQKt>tKAqERW*y(1DRGK_XQ z%W#R*>qzHe;~?-EOqEz$afD74e68XxmgMlI@t!+6w1RILCJ&0#F+n-9zf0mC)>YiW z7qUJK;=fsr2Ut{K(q%&>L5#E&Zezx9RFWv8s^Uwm$ULlnTo{pMcwuZxTbrTV2yd$k zN588axV@A@jnvB1Xkr*FSPoyTZaB zdb>pSF?y=l!%!isY0ohBGrh;))7nE;-DE8S3r1@nj^Pb@GQ5fL2%}1N-Ly9$F|NeN zj_PzME}J^abe6)AY)xi&aaD``ghX}^pFVnw*}~LI49eX-%&iul zV0LO3^D<+GI;~W^1FtZm;KmR`p@BC{pJl4u*=Jak)>0}8PmS{4Xg7M(%N&}Th(HO`u#pC{b`EK^AT$LF-m`6nATlvyr2W~ sFQM(>{`_;4SLx{16O^(~@k3h{qpvWaP(jDAO&(*U`vZE)I_Uxa2GFMzJpcdz diff --git a/exn-middleware-core/config/application-production.yml b/exn-middleware-core/config/application-production.yml new file mode 100644 index 0000000..5fd1af6 --- /dev/null +++ b/exn-middleware-core/config/application-production.yml @@ -0,0 +1,27 @@ +logging: + level: + eu.nebulouscloud.exn: TRACE + +spring: + profiles: default + main: + web-application-type: none + jms: + pub-sub-domain: true + +application: + exn: + config: + url: 'nebulous-activemq' + port: '5672' + username: 'admin' + password: 'admin' + sal: + protocol: 'http' + host: 'sal' + port: '8080' + api: 'sal' + username: 'admin' + password: 'admin' + jms: + topic: 'eu.nebulouscloud' \ No newline at end of file diff --git a/exn-middleware-core/config/application.yml b/exn-middleware-core/config/application.yml index 5fd1af6..b31f5b3 100644 --- a/exn-middleware-core/config/application.yml +++ b/exn-middleware-core/config/application.yml @@ -12,7 +12,8 @@ spring: application: exn: config: - url: 'nebulous-activemq' +# url: 'nebulous-activemq' + url: 'localhost' port: '5672' username: 'admin' password: 'admin' diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.groovy index e5eb87b..e7f67ce 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/middleware/config/ConfigureEXNConnector.groovy @@ -29,25 +29,37 @@ class ConfigureEXNConnector { "exn.sal", new EXNConnectorHandler(), [ - new Publisher("cloud.post","cloud.post.reply",true,false), + new Publisher("cloud.create","cloud.create.reply",true,false), new Publisher("cloud.get","cloud.get.reply",true,false), new Publisher("cloud.delete","cloud.delete.reply",true,false), - new Publisher("nodecandidate.post","nodecandidate.post.reply",true,false), + new Publisher("nodecandidate.rank","nodecandidate.rank.reply",true,false), new Publisher("nodecandidate.get","nodecandidate.get.reply",true,false), - new Publisher("node.post","node.post.reply",true,false), - new Publisher("node.update","node.update.reply",true,false), + new Publisher("node.create","node.create.reply",true,false), + new Publisher("node.assign","node.assign.reply",true,false), new Publisher("node.get","node.get.reply",true,false), new Publisher("node.delete","node.delete.reply",true,false), new Publisher("job.get","job.get.reply",true,false), - new Publisher("job.update","job.update.reply",true,false), - new Publisher("job.post","job.post.reply",true,false), - new Publisher("job.delete","job.delete.reply",true,false) + new Publisher("job.submit","job.submit.reply",true,false), + new Publisher("job.create","job.create.reply",true,false), + new Publisher("job.delete","job.delete.reply",true,false), + new Publisher("job.kill","job.kill.reply",true,false), + new Publisher("job.stop","job.stop.reply",true,false), + new Publisher("scale.in","scale.in.reply",true,false), + new Publisher("scale.out","scale.out.reply",true,false), + new Publisher("cluster.get","cluster.get.reply",true,false), + new Publisher("cluster.define","cluster.define.reply",true,false), + new Publisher("cluster.deploy","cluster.deploy.reply",true,false), + new Publisher("cluster.deployApplication","cluster.deployApplication.reply",true,false), + new Publisher("cluster.scaleout","cluster.scaleout.reply",true,false), + new Publisher("cluster.scalein","cluster.scalein.reply",true,false) ], [ new Consumer("cloud","cloud.>", amqpSalMessageHandler,true,false), new Consumer("nodecandidate","nodecandidate.>", amqpSalMessageHandler,true,false), new Consumer("node","node.>", amqpSalMessageHandler,true,false), - new Consumer("job","job.>", amqpSalMessageHandler,true,false) + new Consumer("job","job.>", amqpSalMessageHandler,true,false), + new Consumer("scale","scale.>", amqpSalMessageHandler,true,false), + new Consumer("cluster","cluster.>", amqpSalMessageHandler,true,false) ], false, false, diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.groovy index 7786cda..167623f 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/AbstractProcessor.groovy @@ -1,6 +1,7 @@ package eu.nebulouscloud.exn.modules.sal.processors import com.fasterxml.jackson.databind.ObjectMapper +import eu.nebulouscloud.exn.modules.sal.service.ActionResolveService import org.apache.commons.lang3.StringUtils import org.apache.qpid.protonj2.client.impl.ClientMessage import org.slf4j.Logger @@ -23,6 +24,9 @@ abstract class AbstractProcessor implements Processor { @Autowired ObjectMapper mapper + @Autowired + ActionResolveService resolveService + @Override Map process(String destination, ClientMessage message) { @@ -37,6 +41,8 @@ abstract class AbstractProcessor implements Processor { logger.debug("[{}] Processing {}", metaData, o) String method = destination.substring(destination.lastIndexOf(".") + 1) + + method = resolveService.resolve(method,metaData) try { switch (method) { @@ -52,8 +58,12 @@ abstract class AbstractProcessor implements Processor { case 'delete': ret = delete(metaData, o) break; + case 'create': + ret = create(metaData,o) + break default: - ret = post(metaData,o) + ret.status = HttpStatus.NOT_ACCEPTABLE + ret.body = ["key": "gateway-server-exception-error", "message": 'Action '+method+' not supported'] } } catch (HttpClientErrorException e) { @@ -84,7 +94,7 @@ abstract class AbstractProcessor implements Processor { } - Map post(Map metaData, String body) { return noop(metaData, body) } + Map create(Map metaData, String body) { return noop(metaData, body) } Map search(Map metaData, String body) { return noop(metaData, body) } @@ -98,4 +108,18 @@ abstract class AbstractProcessor implements Processor { return ["status": HttpStatus.ACCEPTED.value(), "body": metaData?.user + " { " + body + "}"] } + protected def normalizeResponse(def response){ + + if(response instanceof Boolean){ + return ["success":response] + } + + if(response instanceof Number){ + return ["success":response ==0] + } + + return response + + } + } diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor.groovy index 59fad02..7016293 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/CloudProcessor.groovy @@ -24,7 +24,7 @@ class CloudProcessor extends AbstractProcessor{ SalConfiguration salConfiguration @Override - Map post(Map metaData, String o){ + Map create(Map metaData, String o){ def ret =[ "status": HttpStatus.OK.value(), @@ -48,7 +48,7 @@ class CloudProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": ["success": response == 0] + "body": normalizeResponse(response) ] } @@ -103,7 +103,7 @@ class CloudProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": ["success":response] + "body": normalizeResponse(response) ] } diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ClusterProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ClusterProcessor.groovy new file mode 100644 index 0000000..0869b04 --- /dev/null +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ClusterProcessor.groovy @@ -0,0 +1,86 @@ +package eu.nebulouscloud.exn.modules.sal.processors.impl + +import eu.nebulouscloud.exn.modules.sal.configuration.SalConfiguration +import eu.nebulouscloud.exn.modules.sal.processors.AbstractProcessor +import eu.nebulouscloud.exn.modules.sal.repository.GatewayRepository +import eu.nebulouscloud.exn.modules.sal.repository.cloud.CloudRepository +import eu.nebulouscloud.exn.modules.sal.repository.cluster.ClusterRepository +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpHeaders +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.stereotype.Service + +@Service +class ClusterProcessor extends AbstractProcessor{ + + @Autowired + ClusterRepository clusterRepository + + @Autowired + GatewayRepository gatewayRepository + + @Autowired + SalConfiguration salConfiguration + + @Override + Map get(Map metaData, String o) { + + logger.info('{} - Getting cluster {}',metaData.user, metaData.cluster) + + String sessionId = gatewayRepository.login(salConfiguration.username,salConfiguration.password) + + HttpHeaders headers = new HttpHeaders() + headers.add('sessionid',sessionId) + + def response = clusterRepository.getById(metaData.clusterName as String,headers) + + return [ + "status": HttpStatus.OK.value(), + "body": normalizeResponse(response) + ] + + } + + @Override + Map create(Map metaData, String o){ + + logger.info('{} - Posting cluster action {} with body {}',metaData?.user, metaData.action ,o) + + String sessionId = gatewayRepository.login(salConfiguration.username,salConfiguration.password) + + HttpHeaders headers = new HttpHeaders() + headers.add('sessionid',sessionId) + headers.setContentType(MediaType.APPLICATION_JSON) + + def response = clusterRepository.postAction(o,metaData.action as String,headers,Object.class) + + logger.info('Got response {}',response) + return [ + "status": HttpStatus.OK.value(), + "body": normalizeResponse(response) + ] + + } + + @Override + Map update(Map metaData, String o) { + + logger.info('{} - Scaling cluster with body {}',metaData?.user, o) + + String sessionId = gatewayRepository.login(salConfiguration.username,salConfiguration.password) + + HttpHeaders headers = new HttpHeaders() + headers.add('sessionid',sessionId) + + def response = clusterRepository.scale(o,metaData.action as String,headers, Object.class) + + logger.info('Got response {}',response) + return [ + "status": HttpStatus.OK.value(), + "body": normalizeResponse(response) + ] + + } + +} diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor.groovy index 38b816d..8b745bf 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/JobProcessor.groovy @@ -28,7 +28,7 @@ class JobProcessor extends AbstractProcessor{ Map deleteStrategies @Override - Map post(Map metaData, String o){ + Map create(Map metaData, String o){ def ret =[ "status": HttpStatus.OK.value(), @@ -52,7 +52,7 @@ class JobProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": ["success":response] + "body": normalizeResponse(response) ] } @@ -60,12 +60,7 @@ class JobProcessor extends AbstractProcessor{ @Override Map get(Map metaData, String o) { - def ret =[ - "status": HttpStatus.OK.value(), - "body": {} - ] - - logger.info('{} - Getting clouds {}',metaData?.user, o) + logger.info('{} - Getting jobs {}',metaData?.user, o) //User Credentials for connecting to ProActive Server. //SAL is a REST interface to PWS. Get it from UI or store behind the scenes ? @@ -85,7 +80,7 @@ class JobProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": response + "body": normalizeResponse(response) ] } @@ -93,11 +88,6 @@ class JobProcessor extends AbstractProcessor{ @Override Map delete(Map metaData, String o) { - def ret =[ - "status": HttpStatus.OK.value(), - "body": {} - ] - String jobId = metaData.jobId String action = metaData.action @@ -155,7 +145,7 @@ class JobProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": response + "body": normalizeResponse(response) ] } diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.groovy index 7617f6b..47a3ae2 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeCandidateProcessor.groovy @@ -40,7 +40,6 @@ class NodeCandidateProcessor extends AbstractProcessor{ headers.add('sessionid',sessionId) headers.setContentType(MediaType.APPLICATION_JSON) - //Check jobId mentioned above List response = nodeCandidateRepository.findCandidates(o,headers,List.class) return [ @@ -51,7 +50,7 @@ class NodeCandidateProcessor extends AbstractProcessor{ } @Override - Map post(Map metaData, String o) { + Map update(Map metaData, String o) { logger.info('{} - Ranking node candidates {}',metaData?.user, o) @@ -61,12 +60,11 @@ class NodeCandidateProcessor extends AbstractProcessor{ headers.add('sessionid',sessionId) headers.setContentType(MediaType.APPLICATION_JSON) - //Check jobId mentioned above - List response = nodeCandidateRepository.rankCandidates(o,headers,Object.class) + def response = nodeCandidateRepository.rankCandidates(o,headers,Object.class) return [ "status": HttpStatus.OK.value(), - "body": response + "body": normalizeResponse(response) ] } diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.groovy index 61b9336..f6203bf 100644 --- a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.groovy +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/NodeProcessor.groovy @@ -23,7 +23,7 @@ class NodeProcessor extends AbstractProcessor{ Map nodeRegistrarMap @Override - Map post(Map metaData, String o){ + Map create(Map metaData, String o){ def ret =[ "status": HttpStatus.OK.value(), @@ -53,7 +53,7 @@ class NodeProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": ["success": response == 0] + "body": normalizeResponse(response) ] } @@ -127,7 +127,7 @@ class NodeProcessor extends AbstractProcessor{ return [ "status": HttpStatus.OK.value(), - "body": response + "body": normalizeResponse(response) ] } diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ScaleProcessor.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ScaleProcessor.groovy new file mode 100644 index 0000000..7c9360e --- /dev/null +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/processors/impl/ScaleProcessor.groovy @@ -0,0 +1,57 @@ +package eu.nebulouscloud.exn.modules.sal.processors.impl + +import eu.nebulouscloud.exn.modules.sal.configuration.SalConfiguration +import eu.nebulouscloud.exn.modules.sal.processors.AbstractProcessor +import eu.nebulouscloud.exn.modules.sal.repository.GatewayRepository +import eu.nebulouscloud.exn.modules.sal.repository.cloud.CloudRepository +import eu.nebulouscloud.exn.modules.sal.repository.scale.ScaleRepository +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.http.HttpHeaders +import org.springframework.http.HttpStatus +import org.springframework.http.MediaType +import org.springframework.stereotype.Service + +@Service +class ScaleProcessor extends AbstractProcessor{ + + @Autowired + ScaleRepository scaleRepository + + @Autowired + GatewayRepository gatewayRepository + + @Autowired + SalConfiguration salConfiguration + + @Override + Map update(Map metaData, String o) { + + logger.info('{} - Scaling job {} with task {} and action {} with body {}',metaData?.user, metaData.jobId, metaData.taskName, o) + + String sessionId = gatewayRepository.login(salConfiguration.username,salConfiguration.password) + + HttpHeaders headers = new HttpHeaders() + headers.add('sessionid',sessionId) + headers.setContentType(MediaType.APPLICATION_JSON) + + String jobId = metaData.jobId + String taskName = metaData.taskName + + if(!jobId || !taskName){ + return [ + "status": HttpStatus.BAD_REQUEST.value(), + "body": ["key":"not-job-or-task-definition","message":"JobId and TaskName cannot be null"] + ] + } + + //Check jobId mentioned above + Object response = scaleRepository.scale(o,jobId,taskName,metaData.action as String,headers, Object.class) + + return [ + "status": HttpStatus.OK.value(), + "body": normalizeResponse(response) + ] + + } + +} diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/cluster/ClusterRepository.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/cluster/ClusterRepository.groovy new file mode 100644 index 0000000..5f02aa7 --- /dev/null +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/cluster/ClusterRepository.groovy @@ -0,0 +1,26 @@ +package eu.nebulouscloud.exn.modules.sal.repository.cluster + +import eu.nebulouscloud.exn.modules.sal.repository.AbstractSalRepository +import org.springframework.http.HttpHeaders +import org.springframework.stereotype.Repository + +@Repository +class ClusterRepository extends AbstractSalRepository{ + + ClusterRepository() { + super('cluster') + } + + private final Map SCALE_ACTION_MAPPING = [ + 'scaleout' : 'out', + 'scalein' : 'in' + ] + + def postAction(String body, String action, HttpHeaders headers, Class responseType){ + post(action,body,headers,responseType) + } + + def scale(String body, String action, HttpHeaders headers, Class responseType){ + post("scale/${SCALE_ACTION_MAPPING[action]}",body,headers,responseType) + } +} diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/scale/ScaleRepository.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/scale/ScaleRepository.groovy new file mode 100644 index 0000000..356d46c --- /dev/null +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/repository/scale/ScaleRepository.groovy @@ -0,0 +1,17 @@ +package eu.nebulouscloud.exn.modules.sal.repository.scale + +import eu.nebulouscloud.exn.modules.sal.repository.AbstractSalRepository +import org.springframework.http.HttpHeaders +import org.springframework.stereotype.Repository + +@Repository +class ScaleRepository extends AbstractSalRepository{ + + ScaleRepository() { + super("scale") + } + + def scale(String body, String jobId, String taskName, String action, HttpHeaders headers, Class responseType){ + post("${jobId}/${taskName}/${action}",body,headers,responseType) + } +} diff --git a/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/service/ActionResolveService.groovy b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/service/ActionResolveService.groovy new file mode 100644 index 0000000..af8e06c --- /dev/null +++ b/exn-middleware-core/src/main/groovy/eu/nebulouscloud/exn/modules/sal/service/ActionResolveService.groovy @@ -0,0 +1,28 @@ +package eu.nebulouscloud.exn.modules.sal.service + +import org.springframework.stereotype.Service + +@Service +class ActionResolveService { + + private final Map,String> ACTION_MAPPING =[ + ['assign','submit','in','out','scaleout','scalein']:'update', + ['define','deploy','deployApplication']:'create', + ['delete','stop','kill'] : 'delete', + ['rank'] : 'update' + ] + + String resolve(String method, Map metaData){ + + String match = ACTION_MAPPING.findResult {k,v -> k.contains(method) ? v : null } + + //If matched then used method is treated as a metadata for the action + //stop: delete -> stop + //create: create -> create + if(match){ + metaData.put('action',method) + } + return match ?: method + + } +}