From 1791d2ad961c7699486fa3d7d6f517ced9bebf22 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Wed, 31 Aug 2016 15:01:47 +0200 Subject: [PATCH 01/26] create initial version of the elektra web proposal --- doc/webui/README.md | 56 ++++++++++++++++++++++++++++++++ doc/webui/daemon_structure.png | Bin 0 -> 20725 bytes doc/webui/network_structure.png | Bin 0 -> 52161 bytes doc/webui/ui_structure.png | Bin 0 -> 120494 bytes 4 files changed, 56 insertions(+) create mode 100644 doc/webui/README.md create mode 100644 doc/webui/daemon_structure.png create mode 100644 doc/webui/network_structure.png create mode 100644 doc/webui/ui_structure.png diff --git a/doc/webui/README.md b/doc/webui/README.md new file mode 100644 index 00000000000..3aa7a54988c --- /dev/null +++ b/doc/webui/README.md @@ -0,0 +1,56 @@ +# elektra web + +_a web user interface (Web UI) to remotely manage multiple elektra instances_ + + +## Overview + +Elektra web consists of multiple components: + + * (multiple) servers running an elektra daemon (elektrad) + * a single cluster management server to communicate with the elektra daemons (clusterd) + * a client (web browser) that accesses the Web UI on the cluster management server + +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png) + + +## GUI + +The Web UI allows the user to add new instances to the network, as well as +combine multiple instances into a cluster. If the configuration of a cluster is +edited, the changes are pushed to all instances in the cluster. Furthermore, +single instances can be configured independently. + +The configuration view of elektra web is similar to the tree view of the +[qt-gui](https://github.com/ElektraInitiative/libelektra/tree/master/src/tools/qt-gui). + +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png) + + +## API + +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png) + +TODO: change second elektrad to clusterd + +To access single instances, each elektra daemon (elektrad) provides a RESTful +HTTP API: + + * TODO + +The cluster management server (clusterd) also provides a RESTful HTTP API. +Single instances can be configured as follows: + + * TODO + +It is also possible to create and manage groups of multiple elektra instances (clusters): + + * **GET /clusters** - get a list of all clusters + * **POST /clusters** - create a new cluster + * **GET /clusters/:id** - get information about a single cluster + * **POST /clusters/:id** - edit a single cluster + * **GET /clusters/:id/kdb** - get full configuration of a cluster + * **GET /clusters/:id/kdb/:path** - get `path` configuration of a cluster (similar to `kdb get path`) + * **POST /clusters/:id/kdb/:path** - edit `path` configuration of a cluster (similar to `kdb set path`) + +TODO: blueprint diff --git a/doc/webui/daemon_structure.png b/doc/webui/daemon_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..d93f56c8bc47624266ac83c0000b4efb8ea1ca14 GIT binary patch literal 20725 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 literal 0 HcmV?d00001 diff --git a/doc/webui/network_structure.png b/doc/webui/network_structure.png new file mode 100644 index 0000000000000000000000000000000000000000..4fff3dc705ae8445af0aa58957ab9082fe4fdebd GIT binary patch literal 52161 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%0DT$II>l$ShmriqUo7(Pn5@ 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

l@sENlyp_lIW50hN44+u;{ZAIy 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 literal 0 HcmV?d00001 From 4a86b167eee87d1cff0f18e0e028509ecffe7755 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Wed, 31 Aug 2016 15:03:17 +0200 Subject: [PATCH 02/26] temporarily link to images from fork repo --- doc/webui/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 3aa7a54988c..acb5944e587 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -11,7 +11,7 @@ Elektra web consists of multiple components: * a single cluster management server to communicate with the elektra daemons (clusterd) * a client (web browser) that accesses the Web UI on the cluster management server -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png) ## GUI @@ -22,14 +22,14 @@ edited, the changes are pushed to all instances in the cluster. Furthermore, single instances can be configured independently. The configuration view of elektra web is similar to the tree view of the -[qt-gui](https://github.com/ElektraInitiative/libelektra/tree/master/src/tools/qt-gui). +[qt-gui](https://github.com/omnidan/libelektra/tree/master/src/tools/qt-gui). -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png) ## API -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png) TODO: change second elektrad to clusterd From a85a0be917d1a0de7de59fe693cfd7a8f887f2ee Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Thu, 1 Sep 2016 19:20:39 +0200 Subject: [PATCH 03/26] update webui API --- doc/webui/README.md | 28 +++++++++++++++++++--------- doc/webui/daemon_structure.png | Bin 20725 -> 20725 bytes 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index acb5944e587..01dbf75528e 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -7,8 +7,8 @@ _a web user interface (Web UI) to remotely manage multiple elektra instances_ Elektra web consists of multiple components: - * (multiple) servers running an elektra daemon (elektrad) - * a single cluster management server to communicate with the elektra daemons (clusterd) + * (multiple) servers running an elektra daemon (`elektrad`) + * a single cluster management server to communicate with the elektra daemons (`clusterd`) * a client (web browser) that accesses the Web UI on the cluster management server ![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png) @@ -31,20 +31,28 @@ The configuration view of elektra web is similar to the tree view of the ![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png) -TODO: change second elektrad to clusterd - -To access single instances, each elektra daemon (elektrad) provides a RESTful +To access single instances, each elektra daemon (`elektrad`) provides a RESTful HTTP API: - * TODO + * **GET /version** - get `elektrad` version + * **GET /kdb/:path** - get `path` configuration (similar to `kdb get path`) + * **POST /kdb/:path** - edit `path` configuration (similar to `kdb set path`) -The cluster management server (clusterd) also provides a RESTful HTTP API. +The cluster management server (`clusterd`) also provides a RESTful HTTP API. Single instances can be configured as follows: - * TODO + * **GET /instances** - get a list of all instances + * **POST /instances** - create a new instance + * **GET /instances/:id** - get information about a single instance + * **POST /instances/:id** - edit a single instance + * **GET /instances/:id/kdb** - get full configuration of an instance + * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (similar to `kdb get path`) + * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (similar to `kdb set path`) + * **GET /instances/:id/version** - get `elektrad` version of an instance It is also possible to create and manage groups of multiple elektra instances (clusters): + * **GET /version** - get `clusterd` version * **GET /clusters** - get a list of all clusters * **POST /clusters** - create a new cluster * **GET /clusters/:id** - get information about a single cluster @@ -52,5 +60,7 @@ It is also possible to create and manage groups of multiple elektra instances (c * **GET /clusters/:id/kdb** - get full configuration of a cluster * **GET /clusters/:id/kdb/:path** - get `path` configuration of a cluster (similar to `kdb get path`) * **POST /clusters/:id/kdb/:path** - edit `path` configuration of a cluster (similar to `kdb set path`) + * **GET /clusters/:id/version** - get list of `elektrad` versions of all instances in the cluster -TODO: blueprint +Cluster configuration is stored on the cluster management server and persisted +to all instances. diff --git a/doc/webui/daemon_structure.png b/doc/webui/daemon_structure.png index d93f56c8bc47624266ac83c0000b4efb8ea1ca14..9e05daa38a5849d697df9ed4369c1d044ac25e17 100644 GIT binary patch literal 20725 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 literal 20725 zcmdSBXH=70*EXscl_Ej{idZNiKoAh=B2ogOw*U$T1e7Au1*J(71P#(d0O^QS=^!9o z5$T8^y((2YQl)?E#^>4Y_dVYj=kGaVu*cYDtlalpbImo^HLrQC_~Xs*c>By0zXUI>0PYhcehmIU!IiiHc+;lNqh^MNI)E+pz<`RKK(-o=bmlk^m>K@}<05jx(|`V8sZ)RdK~9jy!%*m!+Vohte;yQtJ zToD)Pry&~fFB24TmZ$$^A2~@*+NY4my&V7Fi9v?>Xg&Iueb^)(G6c!&$G5hB*#ka_ zIri^=n*oRLP$k-){g(;AMHm04i==Uwt=Q4sG#-;be(F-V`=i!x-5@#fkC7>=(mn!a z-=D+*U%A4j+7s=9E{I;qqZ{Tu^aL$Q8tJ12_f3-2GDqUNVV>JFoE1yeJM&MEoql)` zh0c0%{lPM@Dhv^t6xhWtpaR2wmx4{TMw?jWmZj~4l#Y51M&j=?S`C*M)A}E}1uFyI zh)`%e1sujsx9s*Vp!!E(}G8SpoqBo1H7<^TBPrTq3h%s ztATeG&(yx}+msIXB)G3MB`v>+qr6W(QI@S$w)!VaKJw@gkZhPy!!$nuhe0 z_`tn&`=0i2_V35pSI5IOBn!YxK2kJmYe?Ku8Es0|U4opB;{&_t3EXVQ2VZm_A8?j; z9{9tl=JDo$72n)&MJZjRWUXTDr{@=JA9!tlON^72RsE76F=*B^;;}ibt}40w;aJJt zk7R?c)A2U#5}WTj-Y5*}=-W&pNmy>zdTP<3@4iD{U&}5O_Zk*)Cb-m6=#CQ9nI3<| zY;>yd^-F9HjTbuQ)$BiEV3!MA+1=Y1%+qm$`|m7P=j#{c z)gfY2=S-C7WAm9iUf!PSH}cvm&Z$@|UyKF;=I9e{<^{9m-!OOMFdf~N!6+Gj0ik(c z>R`8M=UIwLLvTNHlKf#JVdP-JMBke}V{*O51s-tlyFn^jztr|h^0OndKhID$tH)m# z>-g;1Jo7ER!VK$clxJ9Fy;Qa7wB}Yz7C!mnu!>a!N;#f(3pOBtx8`=hmbx4TlIT&iqT<49w1EL(6&j`!kx7n%zmh z#WJi6{M-ebcVTU@qV2imvzHm-=X>)K=}3KL>pl8|AyWGf76wb5og{yMe|AN0CUFbA zaIYK0%g^G$R(y%$cwr!M81R}P#|G4r76NF) zUtDr}bpfXG0l31krQgqoxaW^O1NSxjU6Atro4R-zIc>`iA>=bcX^c;2FF6nD^Pb<% zC930-mz;<0p=RP9eGyxX)O;gfmVs{RDDDrqh9YYs-Wa93C8x-8(c_akjD1{2NW^Yr zNbd69HD=G>_c-t4_4uppto2uk~RS!P?^?*?C<6W{UdAqUyNPzj`= zSWoT&%Vaz37~vf9C+#!B+ZRkv9&`|eYXafMk`B7)T>=h~gDU*#$E-34OmAd9Xjl;p z@`wuOP;+SKX=UM?k0PWng!=gudL8T+4~Tp2x`DPxzbCuK z5RT5?JUk?l)Io|8OT4&SIBZ?ib|;f5nMkgj{0uv{3oIq=X$iHo`_(S(?<|!bJ$B++ zf!{SYVpBpxtptf&XPcwrIf0`?e&YraHW8rttn49;nSqZ3i13_l!@4UfBdAkhPoF)U zh)z%RELTAc+5$8K(6FZ#GTqZ|vTQnG4*S4kW7_>KR;qFU z#;!8@JEH9K$lVg#j6bP8MFaTMV=7ZJ>;Y@^(7Z%S!9>tC6l3bcri%N%h0CK@X81$Y zkNiqP=!F|D%f?|J+?J|(*;~HG2w51L)CU$^F(~H|(eZt|#Gu)dpcMJu!jopwpEKch zR@IHwv{+k*O+hAWOyxFz*jHKNiJjR#S$u2~N>A?r=Z<*)L6blC=f1?Z<7@dw@C-Ga z1KjJX=7|80l3jaj>eKseG5$%1AVK;ih)r!@gC>Qoz588DR*DsCohk-5LmF9wBtq7H z_}#r{bYpzbuBJFb*RY?LE9%>9VbsB$m(qIWrr-LK6< zM@pYRLrA)=3WVur$Ly>>(4rY^cf3fgyYtn1wXi{u>J5~bBTM{m5bvou6~~aLC?!c^ zlu+>ky7N0`Tlzi%YD+)yAT@TY19&iCE)5^|0=wV3nZ&i&Co7PxBKEd`(C`xhzm4=} zr%<*{8S36ysfcxT@-B6M);!5@4>WCuBh$7uZu8IqPD?cqag$d4jY9^>)QHhW4( zJYUX^3@w|Lhl1+uOK`9kz9qNJ2QSS;Nb{T(*}!c-PpSmTaM(g4UfkI!or?>@d293M zJuu>yGB8W|Qr^7)X&nk4C7b|T$cxyibflV1A}Q|&gi9V9*46C?~aN@M=4rT`cd{^PA7_yQR? zg&i70Sp(MHd+_Gn+o;GYu}EOjkJaN;XWwgwy-OF!H|dIpzV|8`mYU`bPG$~rAt9NW zlX5oAVQdQJ=Oa9}*X;eayZAwHCS*Hw%{lPr7xAU+R68}ELkB8?aV)Bi>;R!$^maHt87KB=ek_2` zsX?G{ZMf9Vh#}|ZAJmLa1Tc8(RQEG59ZFd984{1jBcIcgzSo`R-#^&WPZl^nJp%_; zmT`jEaAUA~iVUS8o1|1m|JHuo_&Y(!g2>J0`<|51+HkQ04JLkB0W7t{{JJTy@B}S6 zE4nHp<@=Udl);oh^-1dUrdHVn^2c~OQlW{nkO@-&fU6E%YU(46#x&hcbYD@rAnuec z9$WySt=YF(_kFwr=^=D{8w{O(}xRNkIV;5T``Gpj;LQSoO%KY>vq zanXw)h%%0VQJt{|Lyy|~32?SMz78Lr9#y~j_D`}AiUafh6g_hqJerbLQ3gj`_W;1A zT!PfVJ@owUd2o)sgC>(;bomtBKi=Gr>7I#a@zogQJ30# ze5vK!v=H$Ya37qmF)ry8e1_1+9L?XRKqgD>7y4|&M{5;@>h9d36w@Hmldv3I>~*fA z;*0OclPB$XJ)#!fhPeQSGJpwiqD|HQ*ddXFi>6{kY7lp_&U~PDnS}n89#*3jC1!cznrXzu0qzK{#rNSLo6p%mOCxXZfH5&c=Ml}u>f|fu%I%M zRtrrsmA)kU`LAi(xY}2+OOcggn1(2tmGl|Yrjv!Ypp@0g0$y=q@}eXgc!fXbzhBY$ zhyybnEWViU*n@9)vN1oi@!t^T0h?V*Fd0S0>L;Ug0xiRc&^Pw*i{p$ykN_Mi2H>f0 zpw!NeGyX9V@fZ=yJ9`^sy%u0y(R>x<02A=RMfq$ezl$c3+mtgQ$`s0xRb1cOnUt|+ z0IuhN;|A~W%=!$px9Y&I;RwE#NJGv=FN1j5of~S>s%6Bwr^$txaV<(G`b^KKqcjy% zM)5KJ(1chlz~U&;eX%$IrYT|z2F^GH;%B*2q%QNK{k2YCy51E*fBuF`KKGMcj>AH5 zxdw6?-T%#L8Sj!zXJQ9PacM>Ek~=@+mUz^#&~k=e10cT+KD~MrdWX#ac*l=LjgDwR z^WdFowOA3o?Ju3aq#UsR{-CB+J!MlZei}@J_;(ucXGy*iVa*rpDm&O`*XDZL<+u-X zbkYErx6aNfwEZr4hd)Qx6aBybx(#D*5)&PI_)INY;4?+D?QpqS6Z@alM6iO@B=6aE zJ`a4Ha^`QGoyAZbKnT2w#H(NOF41$lDFWWv5r~h8KJ=Opn9)~kR!U8%3@fVe_5!6? zJfh4SuI$Jv{12YZ{t6xX5M zL$or@f|4f;oc@gT=If8oLbE#icUJNk{7)*Wp0E3?u{W^c9<1oMG$3ZmK~-vLOTvOJ zjc$5+-S)4$Suyy8X?AqWcsg{jM*@mKOEBd>QLKo2UKe@Wh;>>?2WIw@ki5-p^W=G) zTPi-O0-FRqQYWhBS&&E%%^a}#grvzOzqJ=IGuJOPGgLg8CHu{9@+#z54nQ!iE{$X5 z&uvF3q1jA|xx0QB_Gl=20sdrqFSHsk8|@6``mhz~6bvy`yQlivOUzF|3~aj~KC3<7 z!$*#QM^ZGexW5Ju41pf_vzxx2emhDV9sd9K2PWy(>@128It|(^G;t=rOH+&O=@;y^ zsot8}fDS`|1+tB5JQouH({MRSxXI~OD<5b5<9@TKe!y8+XXTb#7M|EMTKe1<@sjmm zGt_vx&cJ!tjM-x?EdF6FML_iC-sb3F)#ixRNhX)O_*Ij&pB*A@8}ml%i9!LP`;hnb zSv{aA;Coz3J`o0zzjWSN%FpZ+&CFiA9Ux~d!6rEq-Hp9=$C(!ZLce-IC77h-?^v8- zq)y%h(!ij<=>Xn5-c0uSDW%rP+F;p(PM+SMz>W;fH*w!D2tD{}91R~x$m9DHvksW;o5*>LcwX^n3!v>V;C2%(RzDRvr3o3>y@3Qi$2ZALwZVv*C6?aME z$y&Ziuo%a#>1~-1R=Gg1cXFxzXP_T@at71?TK42-!2a8;+(JNmb)~6B8>__#6##y! z{>l2R*-2*ie7fKe$?cy=Oxcg;7p{jjIZXR882(I-05go?Eov1wnnN{s>jz)@Io}j! zgP%q*pS5DI-t$>_KOQUs%2=zB$};_A$+fSt@ky&b#4Yc0mEbW$%%^2voOblAAKmr- zwNN@bz`VbF(zy+kN;7rLEyK`3CIKh|+osquhqVp`@n4FhSl+WVQoH#!g-sml(vo{? z-@ZHtlv;ztg)niiefPP6;<;qWfJ@qhIhk!)pTZj};hZBKuz?J8J z_7%Jt99jN79x}+49%tMxbx^ru;=OR%X0W6f#9RZ1M#8)=$Ldq58(+kxFPdY25Jg7? zbzf;<#m!q^-2)87Ynz(AjSa95`vB)PnLI|`EPGn4&S})cd2X;YZ|+4^w$$EQcx2^; z#ew9d(7W8{Z{;x5f61%tn6ZU7N`b8ZRC0sj9M7X~1WB99U-jxJdX5nuF0O_Et;i}k zvOt6n?O)HDU~CydOCmG?4;b^Gg2=c4+-id_1L@?&had8A1u1Qjw$5bWs29r)R56aM2Gud;6U@(&jtRJwv;u`*V+>d>Sy9YV z+G@r!O}N+oYND+MdoSYG)BxZ=-V^vY@@c{q*@Mb{Z%rqv;Lgr{MdVURY<3w@sH5Mr z3)QS-cYxsXf`ZFqo-G6$_W-33=QLn(MJ3AUH-nLT!6iTxs^1Jfz7X!v$Dn{EN;qT7 z`n+b2-wn@QElyA-oG83wNOP;t3KwdHd{i2po%st0cc7*8l~rl*%|3)9=-^i>U(~V7Gkm z#TkU>?Gp!+QAR`i>UHTv2cK%{vvWLaL)u=GTbKW*{dbD6r;v9+z&+Az2H>lef@<{k zX4GE$s|<9(qIU@)sLybiZH|(?Bhc9nty~oe;4Y z5XB}2<&W{!N-=@f`*zdu&Q7)T{E9)!$s~e|Q4z_^A=hmLIYD2TL|to#YM_N%552dKx7`KA@*OPPh(X_t{-d65kJRdO)4T!CUp4@EmX5$9!dB@j?)=IvY9<~L&w*ovquY7ex;&K28$m(7-3l;~6<{Rm= zZOA`BD~tit#7uAGxs_UQUQ<;?KVP%TTOL;RDze1G8vcW(Ycf(l_uQ&h-ftX9vs@A8 z0O5`o>S`v65Oj3|aAM+IQJ1cwR~;JNzuDY#tVASK^_D6dl^57Kjta!>LiNu>Q9Z)e z1y6w*_&bslX)0j@)TKnF?6>5zC`@mFJ)?kU7SHF*10+jp<>WnlnL>Hn! zEh4u37aIZ?+U&uK!arFLQ>x~hdd%IdBC*;k_$6rQ*+bdD`meO1)w@wrTU;k9?go7| z%Q~{)T(c7|enuJe*;tsse)#npsU7JHsGp6&LOGV?#f1`^nN zYhpfBmYR$H?Z^MrJJU+1e2Cv((u$EwR~Oa|hyF|%J*jA;McJwSGoeu3y}eKr{!y8L zVvbKqi4IBFUgAEJ>dV(Mghl_56UzlXo^B7CJmvm~)XhZeGu}c__$rAjv{M4mZtVY0 zENNO`{6G94ac@X%%zSGocV05=N@$Yt(p*l|E<|r=1nJaW82g$3>9juTvj5GrVfV*~ ziu{nNn!KANgg5mC*u?0;zVqgpu$F?{1lAi+88ZfIOU4(>0_JjxuW22Y{}mXtB%Vi) z$aI!Qs&YVwi~1}{@>A@*?KW~Sb_GKafzfxUC;M5*b5Xqs=iwE#8R$~uk0ceG?1*&| zqWyK6Zk|=fKZrzytcc}3K{C)vbB>gxFtri}(UX0GkMn9hs4P-k|Gw=qJ6bID0Z0Vu zH&!HyIpKO;3DytBt7#;Ee;9FFlF;3l@}*OM*r8s>UhAKj&c#tM8gR!8`*yk#bZ}SU z-O2<}EV~cl^@7bsN%!|V2_6~wK2XIieGzQS@nzYmY^eA-E%~=}PKB|{*mY%SE?#Rh zta^fv6|qrvIyy!kHt`uzOMVpJ6li9BZ!134)S8Q)Bd-&a;{6PIf4!IcMqQ#GTWH9u*EA73b+c@)kH|;_lx~pTdh~02wUuy{o;U;~V*)Y*4%} zT4mIGet<|r*sI$JRbx7mXMg;YM6A}~f}+5JrW+-fUWPVk-`@>tL8*+L_(UT$FHkP- zyf}}*%1|mT$r{NM%tKuevH@zi?Ne)g!I^;{bqg^tW6+jn3>OtJRe{2y@9#o&(vv{i zi8lZ^#|bn)^=dr#=KD-S)UdchzWl3M*B5-_2Bx&Yku5KYe{#^I16PD*7W3}WS~gTn zM*hnl3gtQ!yxHPgT3HIshRC)(>Z4={`5o}pP1+Mv|J4H2liMO5NqfAMW`g>d9|O*u zlLZ!a?*8jJImRP^N2=ryR>1 zh=!uYkCgq)5WOMuw_F#3vBQXXY@;~qbY4S)E$sPc}1_9W#?QJ zd3+G8{z)l!=-jvt*9ma+jHO=5#aEz5HU6EC5@mCyc6#|9abckNkzWgbEG^VkuPqVw zi9e8pcxxIUhton5!hJ8>D{HWC&GjQgZ-H!tU%%tG01+3b+5g74mJbmXcft1kN3+LE zpw_waMts5AD%fz%{8l(YtLbb&QlOHlZYT4T5^_^Nut+*L&P2yUk^K5!q?8s;>lo4W z;=EjA3S)d-qNi(VXTw!v6&|0$Df<9?%qHLq-a<8+@Dqs-ufXwgWQu1N`PYO8m>G=^ ztVdsTO7F&|E(-VDeuE_J@du7KggE=L{;d1@ zNsfgLtg+x&MqleG;EiD3f14uavHjR&2^l?%s!h>EK2WM&m86g;~<$|xup@k`4veCXtN`XJ#e z{ziR}n(;0}W3_%%7hd9e0daW~A};+tnC}%p2l?5*dq@V0?&nmBZ-Pj)7pE`XF)ajq za0g4!k8}0PRLY6JM#>(UoA9MV`AY;u{ryiG9e744V(1EDr6v@vICUa9+xs=J~rOVm`#5sFo%= zPW5-*$4=^nFi9kTzCFV}s!Z8@E^_xx{5b(t7?Lwo4AWoZbFJCo~2-@GYBP5>}5Ph^7ct@U7$pAgh<>N5hl_~F`pk9N?uH!*T^eRWSWu_zrzP8rlTGii#`ZZ?q zxNXH3ac3F4`;gu-oc3)rc4`Dyt(Qp??u(#xG_XCFX9u+~i!Hu^GE+Dk`SQA1GksPa ze<0vmtMhk2w{`JlOct~f0f4GEE6H!x0~FX-*m)$HOGllJ@rB-VEIRX-;&bP-F;dUN z_7di~Rf}#Z<8&NaEmpdVuq=7Nf2*_jAQhN{e9~=9Q*{%lPZ(Q<35^>IgM$JsJmZFV z3&MA>k>2kmSTKLO4Vc#u{cP+_5$;tPrVeAyzU5R(hB5s{!*Gv^Qlu!UL?Gz{wuU_m90C8Ch z_0Fiy@;q!A0@9R6aAl)%^u1LdXQRx(X=UV0Gp*F zkzh}@XVMLX3c)dETVvW2Sx&X5l^GKV3d)Gws_4&~&#cdS_kp0VpMnGAio|hyZ^PI% zl?2L_J}?4Kcu+igaw^JOOw1f;NiwNZ5k7_B0I|&!UzptMN}9zWamT@2vpzJPPbQ!6 zhPsfbIM7fXj_()-5*4fdLbItCZ6i$(u3(=EO$wJ+(Z|ic|14Db)|?={0=^nv)4~u`4ul0(8rY|Wp{OY^6xqZ0bl$AUkfl#b$q1F&Yt)u=Zf7|mCJY;mOn9TZuTgtE7+^`&qEo!0Vi zfn5NK{YMoL-i^dL!e$X9dVc6Mah&UEd$RU3j2naZH#zr>p5!-fl87EW^Z)n;`^tJCt*gjq0Cq|_%%1m#A@4ft<%7x~Jd*_sks!tqCkn*ao0^QaCyqHC2 ziV=Pf)XI##J>8&HZ6;{`Mb-2juim@-skYeOerKRJu>M3Xy4&4u70EMr_ZfAd)#|{% z;t_`iYJ-r{*6P|cMU{#ZpD=WzYB+ud)i#u_n3!s{AcwDttt8oX{B>F?)G ztLYb3C4;%;VgPdO>}S1J;dQ4%Un)cQU!R}YmBV{p zPt{Awhz%1hbZ?yxw6lGmGF%rOejJ{YUrT8l9h*`Dr)xxr|$JqkfQZ7u8 z`PN$4)kp&q!t)5xPWPdp4{L+ew0n{RGagQjtS`>7H*~%vSHVr07+TOHal$aD!>I4J zP#okl_0E!jOLIMCqIZ~vS0mZS9DzdY!Vb}6ZltOrz-247+a)`K-4VX552uYHX{{cr zson%%x9li+mO_5w45^q=i6iZ>Z-$afIuB!?@4Wt;pBmF7U>SAAAp2I9&J`|&903?X z(a@oZJ-`>Gl1iY7RQvYQ^49%{Ew9VflOFZV6rOw>)e?XXrCZH`ne9(U$fL>1IB>i^ z0yzkA3-ac7Dy);+)VQ(l1Y^zMml@$#0=j#=I%G9vmcoO@#+ zb29OWn~A?7ornD0=Oa|ynCJts6!=T&T#B0kNvdM6h<8$*G*r-wx2MI zSicHlk{D1d@0h`^cQjA8{}NXc-`m-A&cmts2+%97gN({TMnU%;$W9hOL6tA*v3)Mp zm-s-5s=3-@X8;JjAkk2LHLmzEMSf))QM4uTb<~Y-m;4iSE+5@(zwzOq_1XV?l;Zfg z`jq2PJh~9OzEw$8)hE_#;jPxzl;MiTOrRsv9Qz~}Y7mj6S!PVmh0~J^Y4Zx3FV`C? z7q5YyII5G`FX8qTZ`71G%&g3?V-FaJ3`KgULR*uZtQ6ZI7Q7 z9d&=C+jR%TDCOptg5y6r6qt+0gT=o+a_s_6wV#!*rFZYEVUlo&^ z1YD)FCJ#}hWYlx#GK#dvdayHkAVSO~NZJ*(i7X1G0MeUJ6^l?+bvFFMvd{az!AKa}Pdv6XesEq+W{vO%PFQko~Wi zxB=~EN&o#=e7bsk9N~`hu%ng7ZI9I?da8&?14`lH!$3X55qh)!F~Ub+rge?70;wIc zDUMZT1qQ6STKju`~}D;{r$t z9PcD#Gav+sRC7SvR~=hu?7eJc5+odXt!^&2;)_eiO%Zff5yt6IL&!p=)csgh2FGC_ zE=b$?_Gdj+GtefsgRr3~&CBfrn!g*IrY@}3KoV*IngN^EerI&@4>k|>6N|0;JAne| z(xxS7V&qh93@lDg-z;d)?3rsUKbQ#D7_#cg#%};gV?}Ququ@LUrguP9&~wd#a+Gxf zzFv6^ozz#)>oM-{Y=^Hm82WoXFvJBj z3fAv$_tun;O`%kaA9N&}j#vGR7JHQTD@MYt#LWY&2xtN&ihWe-vM%n{dBit$%q4x#9klv#)Y-k#bdQi)RyZKf3xm^ z%mabmJu9dKU>1q5-_@Op_Tnw>(wZ{beLZ31H~vZTU>k7Ttu-!2TfG`md!|zRzu#=- zwOSm=Tq~qsFe1oQ8v*%t{M9KxMcd94e>c}(^T&mas=mrUei1x{7``a+k~bSLDt^1{tKEOcCzsibO4a!E6mu zZ?A<)50>lYdNh!Hs#;n2ci;ulFHAshTG~#0UF-_Np!)}4Hp z6s0b`pAkPyeDA_4gMXWz@T6HTGgJRP2xNVLv{am*FRI3Uh_$P>;HzBr(bOf~dJfpZ z&Bd?J%J;7-j_tkXS*jb(J_&Ns&12pu$)qfAeJvA`R3r}?;3!Lg4)o)H<9+0lSkxQW z?$3~TsbZ}Q{kfTaKcKecc|FMH@p95ySAK%yOt7Rn|CaYDyM6NSG)E$P=PZHfoK82~?QICM$fS;`b>LG^sIIYA@#azq>7SqO+G+$bkNz+T= z59A_6g=sui8i5|&&?stq3qc;5G9DhEL9HCQ351DDh{403n5=M zFnd)Fl7Uj>6u-e?YT=>_eX7LhA`udPI3el__d&PV-t5`-+Ke`F70tHx@g(y(pBLmD zWCUwt<&n@ILCct*%g7(Fu$iJtk2F!G%cQD%?ZycgcCP)9LlWDUue7dk*i&?Tp?a;J zCYl=6xXghF#3|<6Vw1nE6mf2VWHHyj0{r3RG+;O!PEGdI3}qMnO}qKC}TpiyCn3 zzNIS$clrI}#o(2Sc|@zf>2){niI%a@$soc?^oU>TW5TN~BF0ocoV_go#*jE;@al;6 ztH}kyN)Ix%Hr1uty4Vfk*-H2N>-}># zO7pSA_7(ZtY=!W_%E}`&c%J=&2Bsnq4gLP#Knu8DE+X8;>p_!v-=M-JVChZ4!w`rz zFEfdfnq?sEQ-1NNUi~6&V0zfKKHg3x=+m+;$G_?JYf|L|Ya?Y*CEVK4%+;+xSFk14 zs}~rfQZ(B~4=2s488xwF?1 zN-;n=6fG87$Jg3=O484Dwxy57;WtyqCjo9U!n|o6wcBQ+&W1mSWJ@fHe&d|ZBa@H} zsbFFXd*TPI(~TWw_%G9zPr(Z(369EwtRo)LX%4^He?f|i2Db9U#IYX&neU?y%m<3c zLRLd*H0yI(`AS-4@W?#y-zmH1<6EufkzbouHljz0&0NEOkF~E%WoZOwF7YfGw>NCy zM}!5dsM=RJ1QgRmDP-J@Tq2!q@FS)!tH%BV=Ed5Q1pDwAwaC);WiXWR(2%f_;_Hl9 zqM>MhUa9>!2f}b&7#4q;2OqD*Ki$=21io#cH74irJe>0Tl_cFKOXtXc$R8AWyy8;^yaR&3?`1Z=^8CIn!C8Y4ty}>_X=cD{ zYXDz{XcfnfT^D_L`6}%en=K}Kij;x3DqQYYd8-+n7GxpC?Y{|xLj#6gs~}Vylz=@y z@AxQN;8wt=%G$i)AxhA)M>l1%ya5Q(m<{CH$JQpTL{An zp+NmQ8n1%mqE?1JwRmf`!haasf?{V(-+=+vP&@|P1mX)7z<}0HceTNu!-cnS(`*N< zO(Q$B{T@+VP6e$*1c^(nSXGka&_<4QpFnU6ix32@TtN`O%0?p?fRD+u7>udgk@XR< z;hS{@p;Lx}Y`lU=6+&-;Pg64^n;KA%jjaTqS> zRb@q} zyG})yK-ZukTr`(m6bv*i8cuD(y?p>tE`8`&I-`5%9;C>C@7)0KWd56m)M3H#Me4v^ z-y$_)=#jeQmT3i`x~(B45R~pk`c1=0_g!57xCWn~@u!fw1}!F)%?xZJ#G0}h(mDLO z`Xus4IFki6fO>!s)(T)q=#JQF$=`P&4G;CjYhMZ15z#|{u$X5)`2E5L5bKZ>yXVOz zGB8ci$H}4WYgBxdU*))s+!lnL`D!1727C!9p!-2BWO?$^ z(K_O#_}wrGjMC#m^Y(-iaLY>ks1mr>)^cZUIpa-mVU*#MCg4!<%>$^G00inajQ>~b z(dw$IZT|$iSWkpkk zJ5&Rm-rU#M&-6EJzooS$Pg-dNH=65461_L^-yIr<9QxxYj3hw1Q*bHynj*KZ_)vRw={@LYGZ!gplj(> z@Td&vS{IT7t`tI`mzS+b1Moi@??5Hk4{FW}oGh`Tc8eQQrvU^Vc{0b#c|>&3S}-a_ z78YjqYasU-V={?=aziPVV_2$x)n8Z~jkPV$)GthHzvR^SvCSiL0G^dsx$<&HtalV# zt#Jb6OvO(Qxax*GQb62k{^y3%{{ChSU$;c&a8%t5knY<&o`iyIlK>q82B-O8W+?uCsYSP(?gwT;$N-(eT<1XO)L1LwcZ`-kh5KZFL-S_coJ)JMzdN zsE(6K*ozjsQhURI84v*qUh@{C{go&=sqr#G3#2_@rw-dwGbxMRDZ~-c{;mKiH;ZdQ z-4B8^HIxY$sLCGNF{(J5#%kH7;&3Z1A-*Sx&) zA}Gcfu7$C{#vrC5`Fb^pa%WgR@Z1jp>!_O>seQkE-{%td$?th-d6@dO0Fq=JIS$;R zcj~ym5RZNDuGbahTj=&c#az_m_ygCrm8+a8kg^u#ZC}_aPjM&F=yc;ARnwSr4X>ht9t<~ZZIq{dqPX+_ytI=rq@!PFZAlZ z2}ReEH}_;&j$X0DojuQMFRh9^00%CKP8APGmD)I=^(l<~PVp>zXx(%K%xwJ&XV4w6 z*#P14*KH*-&uzyOS~DBWZiBSjH^&M?>d4ZQr@Wge*ijc) zZZrk6zirZD+ZpQ9tv3`M1(IP6=+5??j+yf2YI?y0T<>pkGtd@Mo+UP#+Q5}vB7h}! z6OCanagk#m;)cTyt@y&>{~Xk5I7Tv>5GJ`JM`%-^-vv0d2m!m;AzPDj!+G&eX-!zl zQEM4op|u)4(Uk1`&PD&bh|ebd=Q|qr2npaiWuw0Wj9sCtfJfc8FyE6oJvu*~Xr=Vv z`=M6v=cSDLBbh@)VqALFOt)x5Vx_@&pyVYb(5F&c!Cr$9V+`*scq-@?-*|0_$Hxby$ zboBe9-faTzl=<`TY+^5ci=PQK*SDf>9sM#zVYe%p#eHAvBVU5EzGLr)W>Y=$4Qy6_ znx+wVY1bKZuT=#mVJ;O5KlYl84>;z7T7*%hU1^_jfZU+=>=Vy|)g;yp6`Y7~WbWbR zjq87=VVw;BuRw3nfl{~#RQ~v)&xMsrh5dk@8WNs=b3yQapm=%iG73?6drQi4pH&sV zk}A)xsf;9o%XcK69fvls&~w{tO(!q7FVqY)SLgQ%w&`$rrHIvQCEPm2aG8w7c$w49 zbnDnLd%QB#1E6LUFzvu^rmkr&N_>v|y3(GRMbhDST4vJoSnnQ|9FM_Id>(2S_S-;? z&5aus)%5~l>-^&D6e7fnIUe$2Sec|(MqNrV&3vAem|mTgI;p5mPAvVFoUV1w4VaZd zi!Vuqb^GRE``qOnBI;RfHTOcuyZZjG(_IaIX7`A1`(i7=jje0Gk;HAx( zo5zxViZ)zX*n(4N<2r1k? zS`CLB%Q*dA1$*ZH4jVd??0c!??*+tuoDG(q!hj$OW9x8$QKz@!))JDpvGt+@57+=? zND!|NRb-|xB3EVxN#>Pay5#FX@^~+f9q;}u75dyW+QRvRo>KYc_agUstBA9U!dO)%r@niOuX!4RFNyc?{z4e6nx)Vxcy9IT zE4-t|DACh&G$L$XC#~EfzYT7%W5wq#`%QYZuM@892MrU3Vtf#>_%S|f&pYJxJ!C=IjZklgh>i9m)Qx<&l=ea(RR#xV8{Wkdk@oeO?vv39A2ci--)-8LF) z;hX7op0GG92xoV*yE8!HOm+y;^Zjpi$M0&!B;C>S?KGF#$%tYw#C{=ML>$FFMYx*! z4>6Q0tmVhG5(UHLd>O)ok;L6t_Fv_`v3#zd9r!!ckT2$Cu`XJgNhMmh=|?xI!)DpC zg#Bq>r_3I0Pu~Nb3@1)jxDrnwt`HW2!~QHB3htY7i>&u()2)AgZ5>G>XYar=FPM!A zP>AqE&_%FQ>fe5ubq>>{wKZUsw~(N+7Mbd3%|_7}^?Swb4SbL1HMb1@7PH&=Yyggc zD(yqvq}1R>?wRB?FAo%rB_-vnHblrDoqw5>TR^`|SsXnxeU<5$c=rcR5` zf8S61$>u{B=6epIQrj54z! zg0M#!6M|4NuE4k(O@i|ja^yw;e+N?+-^T0QkB&?AsJp}$%;|UB(WoE<&5H~-WyXr^ zT;}@a$CArM+HwHifEPCS_%11JFvh%|iucTndw| z8wWD_iN)#Zu6HQp&pg)G)1bU60?Kv(_Pb(yh+Yhll`Cci=vpIPu56im^76u(H>}_G zXWW%`pcx~{BjCobh? z-IRtCKOq!ZvE|zKiHy=FtL#PR>L#bomV*J|o*`=LH^K;e8$Y1XHR5%!cje6;AAy%4 zC`JHoSjaxZL!WX5YwPJYF{e@}FOI=bh6Q-*DZBb@tuCOfEjZ4JPMUUEPd1+fcpKEFlGbQd* zGQ}ki9P7s8Z``B9(X^Qecn)~8ab>y{Ae694Oo!F=6R5iGJkDP0n`*d$E~L+iyhJ8h ztNM<_zF7_}1n9T5(&52vMp}LdII=O>uB8EksgxH}mPK~R`&ZM!7rN?9Eh;5z4okb% zFE_%VyV3B&eKqz&-Y#ZWGa)H(mXi#Wz==NkAl>CNCiA0ROo?-*gav z`21BVJ0TfRf72gwD?a^Y9=>2e^kCDayLS%<9J?lOa9CFWE+|f%qZW zH03q&z!%Jb>yV&3Ui4^(9AcwN!^J;*AVO@^iHCvZhaE`Z5V_*VWDwytQ^a}Td`P&p z9#nRagT$hBSXxuwpWc8&18g~+pL!p9=+yUfj)xHduw;NG@IP>Jr@6-d(jW5R!1WCr zv?5ZZp^Qr3`elI)8Ze~3c;wiB=wtr>MIR$bsqG27qtS;v*1@Vg8>n9u4_RQYSMh@i z5E)k%KXmj&v9|luJpT3w#=+x zz?752$#b_42OJ63WB|TJLJObq|Jj9KX8y``LpkKZ5pO_%34fp6HHz^KZImkB4Y~@I zdeJqm$#AG6@f4^Uk0&wwQlx19%nDr{gMO6<>c0yENfWtGIm+(vC#Ar}l7jl63xnY2 zfEcY^5TuW|w``CP!5<;^1EBh>Ar%&A+4h5T_2==)HSz52&)WNCLLb$4i5MnnFLF0~*xO4<7+)M)rSy z(~}JJnFoGt;k*35fCdY{xi}o;N?WLed!CY6{omIegY9;T z0uHK1R{pKP)!ny(VU0rI;sA#%pQGC=a1%i^N9gWlz}ne#>9UtSk75YDaRNSbKrXGC)(^TuDLMaV>7afXXoRAT zLm@&y-(}yAeE|u-5)}+iihS?1-FL!1(06N_u)-~m&#pfc{Y8ZSnMyMW{oBxPeLsAa zXFyojo_X4!x&VkIl^slY0y|Gs0wsG+D-n=ufO~tLLzfbZj^%9Lk?pWmHX;D)i*5+4sP1C@JPvCu)9FLM9^X` z7X`&BH6?48Ezn|}-QS@1^4^luazAxm?#fxA-E?EZN2M*bEfX`8|GU{7Q?0R>n8+;e|fv%K!)_JjPLZ`x*E3_G$=UnyQ=Qn%oliM(sWih=8E zAE@3079L>#g!(jiERWY($Lrj|kr-R?TDYd;h}XN=p42Gd!pcXSH^C(!)a#&ATLO=t z1kQ>;;scm1K#Re3=1q`=r~r`@0)cDHB}?a=K^*wj7y(+PIcgZRC}}V88Udf`njxgN@xNAd$Wmo From 72e8f4cdaeecc1bdea8d9ab18a619e357dd25fc3 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Thu, 1 Sep 2016 19:26:31 +0200 Subject: [PATCH 04/26] point links to the official repo --- doc/webui/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 01dbf75528e..053dd0e10f4 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -11,7 +11,7 @@ Elektra web consists of multiple components: * a single cluster management server to communicate with the elektra daemons (`clusterd`) * a client (web browser) that accesses the Web UI on the cluster management server -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png) +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png) ## GUI @@ -22,14 +22,14 @@ edited, the changes are pushed to all instances in the cluster. Furthermore, single instances can be configured independently. The configuration view of elektra web is similar to the tree view of the -[qt-gui](https://github.com/omnidan/libelektra/tree/master/src/tools/qt-gui). +[qt-gui](https://github.com/ElektraInitiative/libelektra/tree/master/src/tools/qt-gui). -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png) +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png) ## API -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png) +![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png) To access single instances, each elektra daemon (`elektrad`) provides a RESTful HTTP API: From 1e4e3cab22defda7a2124795767fa6a184fd7bb4 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 5 Sep 2016 13:47:24 +0200 Subject: [PATCH 05/26] use PUT, standardize /instances and /clusters API --- doc/webui/README.md | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 053dd0e10f4..b0530ecbf96 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -44,23 +44,15 @@ Single instances can be configured as follows: * **GET /instances** - get a list of all instances * **POST /instances** - create a new instance * **GET /instances/:id** - get information about a single instance - * **POST /instances/:id** - edit a single instance + * **PUT /instances/:id** - edit a single instance * **GET /instances/:id/kdb** - get full configuration of an instance * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (similar to `kdb get path`) * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (similar to `kdb set path`) * **GET /instances/:id/version** - get `elektrad` version of an instance -It is also possible to create and manage groups of multiple elektra instances (clusters): +It is also possible to create and manage groups of multiple elektra instances (clusters). The API is the same as above, but with `/clusters` instead of `/instances`. Additionally, you can get the `clusterd` version: * **GET /version** - get `clusterd` version - * **GET /clusters** - get a list of all clusters - * **POST /clusters** - create a new cluster - * **GET /clusters/:id** - get information about a single cluster - * **POST /clusters/:id** - edit a single cluster - * **GET /clusters/:id/kdb** - get full configuration of a cluster - * **GET /clusters/:id/kdb/:path** - get `path` configuration of a cluster (similar to `kdb get path`) - * **POST /clusters/:id/kdb/:path** - edit `path` configuration of a cluster (similar to `kdb set path`) - * **GET /clusters/:id/version** - get list of `elektrad` versions of all instances in the cluster Cluster configuration is stored on the cluster management server and persisted to all instances. From 5fc13ee3ac3a9911cde85ded82b05b685fb8f358 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 5 Sep 2016 13:48:02 +0200 Subject: [PATCH 06/26] add DELETE API --- doc/webui/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/webui/README.md b/doc/webui/README.md index b0530ecbf96..ce4e354987a 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -45,6 +45,7 @@ Single instances can be configured as follows: * **POST /instances** - create a new instance * **GET /instances/:id** - get information about a single instance * **PUT /instances/:id** - edit a single instance + * **DELETE /instances/:id** - delete a single instance * **GET /instances/:id/kdb** - get full configuration of an instance * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (similar to `kdb get path`) * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (similar to `kdb set path`) From 4767fdfe5b3f685b0f7862d1ec3e380bdaf00be1 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 5 Sep 2016 13:53:51 +0200 Subject: [PATCH 07/26] similar to -> same as --- doc/webui/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index ce4e354987a..19197092fd2 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -35,8 +35,8 @@ To access single instances, each elektra daemon (`elektrad`) provides a RESTful HTTP API: * **GET /version** - get `elektrad` version - * **GET /kdb/:path** - get `path` configuration (similar to `kdb get path`) - * **POST /kdb/:path** - edit `path` configuration (similar to `kdb set path`) + * **GET /kdb/:path** - get `path` configuration (same as `kdb get path`) + * **POST /kdb/:path** - edit `path` configuration (same as `kdb set path`) The cluster management server (`clusterd`) also provides a RESTful HTTP API. Single instances can be configured as follows: @@ -47,8 +47,8 @@ Single instances can be configured as follows: * **PUT /instances/:id** - edit a single instance * **DELETE /instances/:id** - delete a single instance * **GET /instances/:id/kdb** - get full configuration of an instance - * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (similar to `kdb get path`) - * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (similar to `kdb set path`) + * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (same as `kdb get path`) + * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (same as `kdb set path`) * **GET /instances/:id/version** - get `elektrad` version of an instance It is also possible to create and manage groups of multiple elektra instances (clusters). The API is the same as above, but with `/clusters` instead of `/instances`. Additionally, you can get the `clusterd` version: From d4dce2a156b36c595190f49e41e4fce7ae633d18 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 5 Sep 2016 14:07:11 +0200 Subject: [PATCH 08/26] add info about response codes --- doc/webui/README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/webui/README.md b/doc/webui/README.md index 19197092fd2..9f59e998108 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -57,3 +57,13 @@ It is also possible to create and manage groups of multiple elektra instances (c Cluster configuration is stored on the cluster management server and persisted to all instances. + +### Response codes + + * 200: success + * 404: non-existing key + * 403: authorization failure + +For cluster responses, the results of the operation are grouped together. If +everything is a success, the status code of the combined document will be 200. +Otherwise, it will show an error (400). From a7c837514f930f38accc4762c3045ac4935de175 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Fri, 16 Sep 2016 14:08:25 +0200 Subject: [PATCH 09/26] re-write API in apiblueprint syntax --- doc/webui/README.md | 243 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 216 insertions(+), 27 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 9f59e998108..067f5c5421b 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -1,3 +1,5 @@ +FORMAT: 1A + # elektra web _a web user interface (Web UI) to remotely manage multiple elektra instances_ @@ -11,7 +13,7 @@ Elektra web consists of multiple components: * a single cluster management server to communicate with the elektra daemons (`clusterd`) * a client (web browser) that accesses the Web UI on the cluster management server -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/network_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png) ## GUI @@ -24,46 +26,233 @@ single instances can be configured independently. The configuration view of elektra web is similar to the tree view of the [qt-gui](https://github.com/ElektraInitiative/libelektra/tree/master/src/tools/qt-gui). -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/ui_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png) ## API -![https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/ElektraInitiative/libelektra/http-api-proposal/doc/webui/daemon_structure.png) +![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png) + +### Group elektrad API To access single instances, each elektra daemon (`elektrad`) provides a RESTful HTTP API: - * **GET /version** - get `elektrad` version - * **GET /kdb/:path** - get `path` configuration (same as `kdb get path`) - * **POST /kdb/:path** - edit `path` configuration (same as `kdb set path`) +#### GET /version + +get API and elektra version + ++ Response 200 (application/json) + + { + "api": 1, + "elektra": "0.8.17" + } + +#### /kdb/{path} + +access the elektra key database by specifying a `path` + ++ Parameters + + path: `user/hello` (string) - path to the elektra config + +##### get configuration [GET] + +this is the same as calling `kdb get {path}` + ++ Response 200 (application/json) + + "hello world" + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + +##### set configuration [POST] + +this is the same as calling `kdb set {path}` + ++ Request (application/json) + + "hello world" + ++ Response 204 + +##### delete configuration [DELETE] + +this is the same as calling `kdb rm {path}` + ++ Response 204 + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + + + +### Group clusterd API + +The cluster management server (`clusterd`) also provides a RESTful HTTP API: + +#### GET / + +get the API version + ++ Response 200 (application/json) + + { + "api": 1 + } + + + + +#### POST /register + +API to allow instances to register themselves with `clusterd` + ++ Request (application/json) + + { + "name": "auto-registered instance", + "host": "192.168.0.8" + } + ++ Response 204 + + + + +#### /instances + +##### list all instances [GET] + ++ Response 200 (application/json) + + [ + { + "id": "507f191e810c19729de860ea", + "name": "test instance", + "host": "192.168.0.5" + }, + { + "id": "507f191e810c19729de860eb", + "name": "test instance #2", + "host": "192.168.0.6" + } + ] + +##### create a new instance [POST] + ++ Request (application/json) + + { + "name": "new test instance", + "host": "192.168.0.7" + } + ++ Response 204 + + + + +#### /instances/{instance_id} + ++ Parameters + + instance_id: `507f191e810c19729de860ea` (string) - id of an instance + +##### get information about a single instance [GET] + ++ Response 200 (application/json) + + { + "id": "507f191e810c19729de860ea", + "name": "test instance", + "host": "192.168.0.5" + } + +##### edit a single instance [PUT] + ++ Request update host of instance (application/json) + + { + "host": "192.168.0.6" + } + ++ Response 204 + +##### delete a single instance [DELETE] + ++ Response 204 + +##### get version of a single instance [GET /instances/{instance_id}/version] + ++ Response 200 (application/json) + + { + "api": 1, + "elektra": "0.8.17" + } + + + + +#### /instances/{instance_id}/kdb/{path} + +you can access a single instances' configuration via `clusterd` the same way you would directly access it + ++ Parameters + + instance_id: `507f191e810c19729de860ea` (string) - id of an instance + + path: `user/hello` (string) - path to the elektra config + +##### get configuration [GET] + +this is the same as calling `kdb get {path}` on the instance + ++ Response 200 (application/json) + + "hello world" + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + +##### set configuration [POST] + +this is the same as calling `kdb set {path}` on the instance + ++ Request (application/json) + + "hello world" + ++ Response 204 + +##### delete configuration [DELETE] + +this is the same as calling `kdb rm {path}` on the instance + ++ Response 204 -The cluster management server (`clusterd`) also provides a RESTful HTTP API. -Single instances can be configured as follows: ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` - * **GET /instances** - get a list of all instances - * **POST /instances** - create a new instance - * **GET /instances/:id** - get information about a single instance - * **PUT /instances/:id** - edit a single instance - * **DELETE /instances/:id** - delete a single instance - * **GET /instances/:id/kdb** - get full configuration of an instance - * **GET /instances/:id/kdb/:path** - get `path` configuration of an instance (same as `kdb get path`) - * **POST /instances/:id/kdb/:path** - edit `path` configuration of an instance (same as `kdb set path`) - * **GET /instances/:id/version** - get `elektrad` version of an instance ++ Response 404 -It is also possible to create and manage groups of multiple elektra instances (clusters). The API is the same as above, but with `/clusters` instead of `/instances`. Additionally, you can get the `clusterd` version: - * **GET /version** - get `clusterd` version -Cluster configuration is stored on the cluster management server and persisted -to all instances. -### Response codes +#### /clusters - * 200: success - * 404: non-existing key - * 403: authorization failure +It is also possible to create and manage groups of multiple elektra instances (clusters). +The API is the same as above, but with `/clusters` instead of `/instances`. -For cluster responses, the results of the operation are grouped together. If -everything is a success, the status code of the combined document will be 200. +For cluster responses, the results of the operation are grouped together. +If everything is a success, the status code of the combined document will be 200. Otherwise, it will show an error (400). From a6dc717afa646c4031b9d9b336171489528cf277 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Fri, 16 Sep 2016 15:33:34 +0200 Subject: [PATCH 10/26] small text fixes, PUT /kdb instead of POST --- doc/webui/README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 067f5c5421b..72743999d48 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -2,7 +2,7 @@ FORMAT: 1A # elektra web -_a web user interface (Web UI) to remotely manage multiple elektra instances_ +_an API and web user interface to remotely manage multiple elektra instances_ ## Overview @@ -35,7 +35,7 @@ The configuration view of elektra web is similar to the tree view of the ### Group elektrad API -To access single instances, each elektra daemon (`elektrad`) provides a RESTful +To access single instances, each elektra daemon (`elektrad`) provides a REST HTTP API: #### GET /version @@ -70,7 +70,7 @@ this is the same as calling `kdb get {path}` + Response 404 -##### set configuration [POST] +##### set configuration [PUT] this is the same as calling `kdb set {path}` @@ -96,7 +96,7 @@ this is the same as calling `kdb rm {path}` ### Group clusterd API -The cluster management server (`clusterd`) also provides a RESTful HTTP API: +The cluster management server (`clusterd`) also provides a REST HTTP API: #### GET / @@ -223,7 +223,7 @@ this is the same as calling `kdb get {path}` on the instance + Response 404 -##### set configuration [POST] +##### set configuration [PUT] this is the same as calling `kdb set {path}` on the instance From f975a45b25ee293cda273f40f95e672d6f7fd3b1 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Fri, 16 Sep 2016 16:05:21 +0200 Subject: [PATCH 11/26] use apiblueprint attributes and data structures --- doc/webui/README.md | 77 ++++++++++++++++++--------------------------- 1 file changed, 31 insertions(+), 46 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 72743999d48..5560155e498 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -43,11 +43,8 @@ HTTP API: get API and elektra version + Response 200 (application/json) + + Attributes (Version) - { - "api": 1, - "elektra": "0.8.17" - } #### /kdb/{path} @@ -103,10 +100,7 @@ The cluster management server (`clusterd`) also provides a REST HTTP API: get the API version + Response 200 (application/json) - - { - "api": 1 - } + + Attributes (Base Version) @@ -117,10 +111,9 @@ API to allow instances to register themselves with `clusterd` + Request (application/json) - { - "name": "auto-registered instance", - "host": "192.168.0.8" - } + + Attributes (Base Instance) + + host: 192.168.0.8 + + name: autoregistered instance + Response 204 @@ -132,56 +125,37 @@ API to allow instances to register themselves with `clusterd` ##### list all instances [GET] + Response 200 (application/json) - - [ - { - "id": "507f191e810c19729de860ea", - "name": "test instance", - "host": "192.168.0.5" - }, - { - "id": "507f191e810c19729de860eb", - "name": "test instance #2", - "host": "192.168.0.6" - } - ] + + Attributes (array[Instance]) ##### create a new instance [POST] ++ Attributes (Base Instance) + + Request (application/json) - { - "name": "new test instance", - "host": "192.168.0.7" - } - -+ Response 204 ++ Response 200 + + Attributes (Instance) #### /instances/{instance_id} ++ Attributes (Instance) + + Parameters + instance_id: `507f191e810c19729de860ea` (string) - id of an instance ##### get information about a single instance [GET] + Response 200 (application/json) - - { - "id": "507f191e810c19729de860ea", - "name": "test instance", - "host": "192.168.0.5" - } + + Attributes (Instance) ##### edit a single instance [PUT] + Request update host of instance (application/json) - - { - "host": "192.168.0.6" - } + + Attributes (object) + + host: 192.168.0.6 + Response 204 @@ -192,11 +166,7 @@ API to allow instances to register themselves with `clusterd` ##### get version of a single instance [GET /instances/{instance_id}/version] + Response 200 (application/json) - - { - "api": 1, - "elektra": "0.8.17" - } + + Attributes (Version) @@ -256,3 +226,18 @@ The API is the same as above, but with `/clusters` instead of `/instances`. For cluster responses, the results of the operation are grouped together. If everything is a success, the status code of the combined document will be 200. Otherwise, it will show an error (400). + +# Data Structures + +## Base Version (object) ++ api: 1 (number, required) - version of the api + +## Version (Base Version) ++ elektra: 0.8.17 (string, required) - libelektra version + +## Base Instance (object) ++ host: 192.168.0.5 (string, required) ++ name: test instance (string) + +## Instance (Base Instance) ++ id: 507f191e810c19729de860ea (string, required) From 8c0ef28db39a999c84b73a208dded018833fa401 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Fri, 16 Sep 2016 16:31:08 +0200 Subject: [PATCH 12/26] remove overriding attributes in example --- doc/webui/README.md | 3 --- 1 file changed, 3 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index 5560155e498..f95f830ae99 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -110,10 +110,7 @@ get the API version API to allow instances to register themselves with `clusterd` + Request (application/json) - + Attributes (Base Instance) - + host: 192.168.0.8 - + name: autoregistered instance + Response 204 From 0954388f31e2f916a5640b733b57c20f5f83760e Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Thu, 22 Sep 2016 08:01:17 +0200 Subject: [PATCH 13/26] add `/clusters` endpoint --- doc/webui/README.md | 124 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 119 insertions(+), 5 deletions(-) diff --git a/doc/webui/README.md b/doc/webui/README.md index f95f830ae99..c3f7ef32f0b 100644 --- a/doc/webui/README.md +++ b/doc/webui/README.md @@ -71,6 +71,12 @@ this is the same as calling `kdb get {path}` this is the same as calling `kdb set {path}` ++ Request (text/plain) + + hello world + ++ Response 204 + + Request (application/json) "hello world" @@ -141,7 +147,7 @@ API to allow instances to register themselves with `clusterd` + Attributes (Instance) + Parameters - + instance_id: `507f191e810c19729de860ea` (string) - id of an instance + + instance_id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of an instance ##### get information about a single instance [GET] @@ -173,7 +179,7 @@ API to allow instances to register themselves with `clusterd` you can access a single instances' configuration via `clusterd` the same way you would directly access it + Parameters - + instance_id: `507f191e810c19729de860ea` (string) - id of an instance + + instance_id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of an instance + path: `user/hello` (string) - path to the elektra config ##### get configuration [GET] @@ -183,7 +189,7 @@ this is the same as calling `kdb get {path}` on the instance + Response 200 (application/json) "hello world" - + + Request nonexistant path + Parameters + path: `user/nonexistant` @@ -194,6 +200,12 @@ this is the same as calling `kdb get {path}` on the instance this is the same as calling `kdb set {path}` on the instance ++ Request (text/plain) + + hello world + ++ Response 204 + + Request (application/json) "hello world" @@ -224,6 +236,101 @@ For cluster responses, the results of the operation are grouped together. If everything is a success, the status code of the combined document will be 200. Otherwise, it will show an error (400). + +##### list all clusters [GET] + ++ Response 200 (application/json) + + Attributes (array[Cluster]) + +##### create a new cluster [POST] + ++ Attributes (Base Cluster) + ++ Request (application/json) + ++ Response 200 + + Attributes (Cluster) + + + + +#### /clusters/{cluster_id} + ++ Attributes (Cluster) + ++ Parameters + + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster + +##### get information about a cluster [GET] + ++ Response 200 (application/json) + + Attributes (Cluster) + +##### edit a cluster [PUT] + ++ Request update name of cluster (application/json) + + Attributes (object) + + name: web cluster + ++ Response 204 + +##### delete a cluster [DELETE] + ++ Response 204 + +##### get versions of a cluster [GET /instances/{instance_id}/version] + ++ Response 200 (application/json) + + Attributes (array[Version]) + + + + +#### /clusters/{cluster_id}/kdb/{path} + +clusters' configurations are stored on the `clusterd` server + ++ Parameters + + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster + + path: `user/hello` (string) - path to the elektra config + +##### get configuration [GET] + ++ Response 200 (application/json) + + "hello world" + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + +##### set configuration [PUT] + ++ Request (text/plain) + + hello world + ++ Response 204 + ++ Request (application/json) + + "hello world" + ++ Response 204 + +##### delete configuration [DELETE] + ++ Response 204 + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + + # Data Structures ## Base Version (object) @@ -233,8 +340,15 @@ Otherwise, it will show an error (400). + elektra: 0.8.17 (string, required) - libelektra version ## Base Instance (object) -+ host: 192.168.0.5 (string, required) + name: test instance (string) ++ host: 192.168.0.5 (string, required) ## Instance (Base Instance) -+ id: 507f191e810c19729de860ea (string, required) ++ id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string, required) + +## Base Cluster (object) ++ name: test cluster (string) ++ instances (array[Instance], required) + +## Cluster (Base Cluster) ++ id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string, required) From cc83975a139c60c66473d5cab6264728863c515a Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 16:16:28 +0200 Subject: [PATCH 14/26] split and move api blueprints --- .../README.md => apiblueprints/clusterd.apib} | 173 ++++-------------- doc/apiblueprints/elektrad.apib | 75 ++++++++ doc/webui/daemon_structure.png | Bin 20725 -> 0 bytes doc/webui/network_structure.png | Bin 52161 -> 0 bytes doc/webui/ui_structure.png | Bin 120494 -> 0 bytes 5 files changed, 112 insertions(+), 136 deletions(-) rename doc/{webui/README.md => apiblueprints/clusterd.apib} (52%) create mode 100644 doc/apiblueprints/elektrad.apib delete mode 100644 doc/webui/daemon_structure.png delete mode 100644 doc/webui/network_structure.png delete mode 100644 doc/webui/ui_structure.png diff --git a/doc/webui/README.md b/doc/apiblueprints/clusterd.apib similarity index 52% rename from doc/webui/README.md rename to doc/apiblueprints/clusterd.apib index c3f7ef32f0b..98609be4510 100644 --- a/doc/webui/README.md +++ b/doc/apiblueprints/clusterd.apib @@ -1,117 +1,27 @@ FORMAT: 1A -# elektra web +# clusterd API -_an API and web user interface to remotely manage multiple elektra instances_ +the cluster management server (`clusterd`) provides a REST HTTP API to control +multiple `elektrad` instances -## Overview -Elektra web consists of multiple components: +# API version [GET /version] - * (multiple) servers running an elektra daemon (`elektrad`) - * a single cluster management server to communicate with the elektra daemons (`clusterd`) - * a client (web browser) that accesses the Web UI on the cluster management server +returns the current version of the API -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/network_structure.png) - - -## GUI - -The Web UI allows the user to add new instances to the network, as well as -combine multiple instances into a cluster. If the configuration of a cluster is -edited, the changes are pushed to all instances in the cluster. Furthermore, -single instances can be configured independently. - -The configuration view of elektra web is similar to the tree view of the -[qt-gui](https://github.com/ElektraInitiative/libelektra/tree/master/src/tools/qt-gui). - -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/ui_structure.png) - - -## API - -![https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png](https://cdn.rawgit.com/omnidan/libelektra/http-api-proposal/doc/webui/daemon_structure.png) - -### Group elektrad API - -To access single instances, each elektra daemon (`elektrad`) provides a REST -HTTP API: - -#### GET /version - -get API and elektra version - -+ Response 200 (application/json) - + Attributes (Version) - - -#### /kdb/{path} - -access the elektra key database by specifying a `path` - -+ Parameters - + path: `user/hello` (string) - path to the elektra config - -##### get configuration [GET] - -this is the same as calling `kdb get {path}` - -+ Response 200 (application/json) - - "hello world" - -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` - -+ Response 404 - -##### set configuration [PUT] - -this is the same as calling `kdb set {path}` - -+ Request (text/plain) - - hello world - -+ Response 204 - -+ Request (application/json) - - "hello world" - -+ Response 204 - -##### delete configuration [DELETE] - -this is the same as calling `kdb rm {path}` - -+ Response 204 - -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` - -+ Response 404 - - - -### Group clusterd API - -The cluster management server (`clusterd`) also provides a REST HTTP API: - -#### GET / - -get the API version +The API version is increased whenever breaking changes +(i.e. changes that prevent backward compatibility) are made. + Response 200 (application/json) + Attributes (Base Version) +# Group instances -#### POST /register +## register instance [POST /register] API to allow instances to register themselves with `clusterd` @@ -121,16 +31,14 @@ API to allow instances to register themselves with `clusterd` + Response 204 +## instances endpoint [/instances] - -#### /instances - -##### list all instances [GET] +### list all instances [GET] + Response 200 (application/json) + Attributes (array[Instance]) -##### create a new instance [POST] +### create a new instance [POST] + Attributes (Base Instance) @@ -140,21 +48,19 @@ API to allow instances to register themselves with `clusterd` + Attributes (Instance) - - -#### /instances/{instance_id} +## single instance [/instances/{instance_id}] + Attributes (Instance) + Parameters + instance_id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of an instance -##### get information about a single instance [GET] +### get information about a single instance [GET] + Response 200 (application/json) + Attributes (Instance) -##### edit a single instance [PUT] +### edit a single instance [PUT] + Request update host of instance (application/json) + Attributes (object) @@ -162,19 +68,17 @@ API to allow instances to register themselves with `clusterd` + Response 204 -##### delete a single instance [DELETE] +### delete a single instance [DELETE] + Response 204 -##### get version of a single instance [GET /instances/{instance_id}/version] +### get version of a single instance [GET /instances/{instance_id}/version] + Response 200 (application/json) + Attributes (Version) - - -#### /instances/{instance_id}/kdb/{path} +## single instance key database [/instances/{instance_id}/kdb/{+path}] you can access a single instances' configuration via `clusterd` the same way you would directly access it @@ -182,21 +86,21 @@ you can access a single instances' configuration via `clusterd` the same way you + instance_id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of an instance + path: `user/hello` (string) - path to the elektra config -##### get configuration [GET] +### get configuration [GET] this is the same as calling `kdb get {path}` on the instance + Response 200 (application/json) "hello world" - + + Request nonexistant path + Parameters + path: `user/nonexistant` + Response 404 -##### set configuration [PUT] +### set configuration [PUT] this is the same as calling `kdb set {path}` on the instance @@ -212,7 +116,7 @@ this is the same as calling `kdb set {path}` on the instance + Response 204 -##### delete configuration [DELETE] +### delete configuration [DELETE] this is the same as calling `kdb rm {path}` on the instance @@ -226,8 +130,7 @@ this is the same as calling `kdb rm {path}` on the instance - -#### /clusters +# Group clusters It is also possible to create and manage groups of multiple elektra instances (clusters). The API is the same as above, but with `/clusters` instead of `/instances`. @@ -236,13 +139,14 @@ For cluster responses, the results of the operation are grouped together. If everything is a success, the status code of the combined document will be 200. Otherwise, it will show an error (400). +## clusters endpoint [/clusters] -##### list all clusters [GET] +### list all clusters [GET] + Response 200 (application/json) + Attributes (array[Cluster]) -##### create a new cluster [POST] +### create a new cluster [POST] + Attributes (Base Cluster) @@ -252,21 +156,19 @@ Otherwise, it will show an error (400). + Attributes (Cluster) - - -#### /clusters/{cluster_id} +## cluster [/clusters/{cluster_id}] + Attributes (Cluster) + Parameters + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster -##### get information about a cluster [GET] +### get information about a cluster [GET] + Response 200 (application/json) + Attributes (Cluster) -##### edit a cluster [PUT] +### edit a cluster [PUT] + Request update name of cluster (application/json) + Attributes (object) @@ -274,19 +176,17 @@ Otherwise, it will show an error (400). + Response 204 -##### delete a cluster [DELETE] +### delete a cluster [DELETE] + Response 204 -##### get versions of a cluster [GET /instances/{instance_id}/version] +### get versions of a cluster [GET /version] + Response 200 (application/json) + Attributes (array[Version]) - - -#### /clusters/{cluster_id}/kdb/{path} +## cluster key database [/clusters/{cluster_id}/kdb/{+path}] clusters' configurations are stored on the `clusterd` server @@ -294,19 +194,19 @@ clusters' configurations are stored on the `clusterd` server + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster + path: `user/hello` (string) - path to the elektra config -##### get configuration [GET] +### get configuration [GET] + Response 200 (application/json) "hello world" - + + Request nonexistant path + Parameters + path: `user/nonexistant` + Response 404 -##### set configuration [PUT] +### set configuration [PUT] + Request (text/plain) @@ -320,7 +220,7 @@ clusters' configurations are stored on the `clusterd` server + Response 204 -##### delete configuration [DELETE] +### delete configuration [DELETE] + Response 204 @@ -331,6 +231,7 @@ clusters' configurations are stored on the `clusterd` server + Response 404 + # Data Structures ## Base Version (object) diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib new file mode 100644 index 00000000000..ed000ec62ea --- /dev/null +++ b/doc/apiblueprints/elektrad.apib @@ -0,0 +1,75 @@ +FORMAT: 1A + +# elektrad API + +to access single instances, each elektra daemon (`elektrad`) provides a REST +HTTP API + + +## versions [GET /version] + +returns the current version of the API and elektra + +The API version is increased whenever breaking changes +(i.e. changes that prevent backward compatibility) are made. +The Elektra version is directly taken from the Elektra library, +for further information and explanation see [doc/VERSION.md](https://github.com/ElektraInitiative/libelektra/blob/master/doc/VERSION.md). + ++ Response 200 (application/json) + + Attributes (object) + + elektra (object) - Detailed version information about the used Elektra library + + version (string) - The currently used version in its complete format + + major (number) - The currently used major version + + minor (number) - The currently used minor version + + micro (number) - The currently used micro version + + api (number) - The version of the API itself + + +## elektra key database [/kdb/{+path}] + +access the elektra key database by specifying a `path` + ++ Parameters + + path: `user/hello` (string) - path to the elektra config + +### get configuration [GET] + +this is the same as calling `kdb get {path}` + ++ Response 200 (application/json) + + "hello world" + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 + +### set configuration [PUT] + +this is the same as calling `kdb set {path}` + ++ Request (text/plain) + + hello world + ++ Response 204 + ++ Request (application/json) + + "hello world" + ++ Response 204 + +### delete configuration [DELETE] + +this is the same as calling `kdb rm {path}` + ++ Response 204 + ++ Request nonexistant path + + Parameters + + path: `user/nonexistant` + ++ Response 404 diff --git a/doc/webui/daemon_structure.png b/doc/webui/daemon_structure.png deleted file mode 100644 index 9e05daa38a5849d697df9ed4369c1d044ac25e17..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20725 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 diff --git a/doc/webui/network_structure.png b/doc/webui/network_structure.png deleted file mode 100644 index 4fff3dc705ae8445af0aa58957ab9082fe4fdebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52161 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%0DT$II>l$ShmriqUo7(Pn5@ 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

l@sENlyp_lIW50hN44+u;{ZAIy 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 From a6c183afc3ffcfd770080902b955f993b0ef234c Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 18:32:01 +0200 Subject: [PATCH 15/26] return ls/value/meta when accessing kdb paths via GET --- doc/apiblueprints/clusterd.apib | 13 ++++++++----- doc/apiblueprints/elektrad.apib | 8 +++++--- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 98609be4510..bf2c34f4e00 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -7,7 +7,7 @@ multiple `elektrad` instances -# API version [GET /version] +# get API version [GET /version] returns the current version of the API @@ -91,8 +91,7 @@ you can access a single instances' configuration via `clusterd` the same way you this is the same as calling `kdb get {path}` on the instance + Response 200 (application/json) - - "hello world" + + Attributes (KDBResponse) + Request nonexistant path + Parameters @@ -197,8 +196,7 @@ clusters' configurations are stored on the `clusterd` server ### get configuration [GET] + Response 200 (application/json) - - "hello world" + + Attributes (KDBResponse) + Request nonexistant path + Parameters @@ -253,3 +251,8 @@ clusters' configurations are stored on the `clusterd` server ## Cluster (Base Cluster) + id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string, required) + +## KDBResponse (object) ++ ls: user/hello, user/hello/world (array[string], required) - subkeys of the requested path, similar to `kdb ls` ++ value: hello world (string, required) ++ meta (object, required) - metadata of the requested path diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib index ed000ec62ea..bb252f14de5 100644 --- a/doc/apiblueprints/elektrad.apib +++ b/doc/apiblueprints/elektrad.apib @@ -6,7 +6,7 @@ to access single instances, each elektra daemon (`elektrad`) provides a REST HTTP API -## versions [GET /version] +## get versions [GET /version] returns the current version of the API and elektra @@ -37,8 +37,10 @@ access the elektra key database by specifying a `path` this is the same as calling `kdb get {path}` + Response 200 (application/json) - - "hello world" + + Attributes (object) + + ls: user/hello, user/hello/world (array[string], required) - subkeys of the requested path, similar to `kdb ls` + + value: hello world (string, required) + + meta (object, required) - metadata of the requested path + Request nonexistant path + Parameters From ba4ee87afaa36a712b56a626572d747e44321ed4 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 19:20:24 +0200 Subject: [PATCH 16/26] document all HTTP status codes/responses --- doc/apiblueprints/clusterd.apib | 310 +++++++++++++++++++++++++++++--- doc/apiblueprints/elektrad.apib | 63 ++++++- 2 files changed, 341 insertions(+), 32 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index bf2c34f4e00..5bf72302d96 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -21,15 +21,38 @@ The API version is increased whenever breaking changes # Group instances -## register instance [POST /register] +## register instance [POST /register{?apikey}] API to allow instances to register themselves with `clusterd` ++ Parameters + + apikey: `89c406a2-2fe4-4cc2-8c82-edfc24dc0d12` (string, required) - API key used to authenticate `elektrad` with `clusterd` + + Request (application/json) + Attributes (Base Instance) + Response 204 ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `APIKEY_MISSING` api key not specified + - `NAME_MISSING` name not specified + - `HOST_MISSING` host not specified + ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `APIKEY_INVALID` api key invalid + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + ## instances endpoint [/instances] @@ -38,6 +61,12 @@ API to allow instances to register themselves with `clusterd` + Response 200 (application/json) + Attributes (array[Instance]) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ### create a new instance [POST] + Attributes (Base Instance) @@ -47,6 +76,31 @@ API to allow instances to register themselves with `clusterd` + Response 200 + Attributes (Instance) ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NAME_MISSING` name not specified + - `HOST_MISSING` host not specified + ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + ++ Response 422 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `HOST_DOES_ALREADY_EXIST` if the supplied `host` is already used in another instance + ## single instance [/instances/{instance_id}] @@ -60,6 +114,18 @@ API to allow instances to register themselves with `clusterd` + Response 200 (application/json) + Attributes (Instance) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + ### edit a single instance [PUT] + Request update host of instance (application/json) @@ -68,15 +134,57 @@ API to allow instances to register themselves with `clusterd` + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + ### delete a single instance [DELETE] + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + ### get version of a single instance [GET /instances/{instance_id}/version] + Response 200 (application/json) + Attributes (Version) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + ## single instance key database [/instances/{instance_id}/kdb/{+path}] @@ -93,11 +201,18 @@ this is the same as calling `kdb get {path}` on the instance + Response 200 (application/json) + Attributes (KDBResponse) -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) -+ Response 404 ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database ### set configuration [PUT] @@ -115,17 +230,43 @@ this is the same as calling `kdb set {path}` on the instance + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` + ### delete configuration [DELETE] this is the same as calling `kdb rm {path}` on the instance + Response 204 -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) -+ Response 404 ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database @@ -135,8 +276,10 @@ It is also possible to create and manage groups of multiple elektra instances (c The API is the same as above, but with `/clusters` instead of `/instances`. For cluster responses, the results of the operation are grouped together. +If every instance has the same status code, it will show that status code. If everything is a success, the status code of the combined document will be 200. -Otherwise, it will show an error (400). +Otherwise, it will be 400. + ## clusters endpoint [/clusters] @@ -145,6 +288,12 @@ Otherwise, it will show an error (400). + Response 200 (application/json) + Attributes (array[Cluster]) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ### create a new cluster [POST] + Attributes (Base Cluster) @@ -154,6 +303,24 @@ Otherwise, it will show an error (400). + Response 200 + Attributes (Cluster) ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NAME_MISSING` name not specified + ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + ## cluster [/clusters/{cluster_id}] @@ -167,6 +334,18 @@ Otherwise, it will show an error (400). + Response 200 (application/json) + Attributes (Cluster) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + ### edit a cluster [PUT] + Request update name of cluster (application/json) @@ -175,15 +354,57 @@ Otherwise, it will show an error (400). + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` + ### delete a cluster [DELETE] + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + ### get versions of a cluster [GET /version] + Response 200 (application/json) + Attributes (array[Version]) ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + ## cluster key database [/clusters/{cluster_id}/kdb/{+path}] @@ -198,11 +419,18 @@ clusters' configurations are stored on the `clusterd` server + Response 200 (application/json) + Attributes (KDBResponse) -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) -+ Response 404 ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database ### set configuration [PUT] @@ -218,36 +446,67 @@ clusters' configurations are stored on the `clusterd` server + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` + + ### delete configuration [DELETE] + Response 204 -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) -+ Response 404 ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + - `PATH_NOT_FOUND` if the requested path does not exist in the key database # Data Structures ## Base Version (object) -+ api: 1 (number, required) - version of the api ++ api (number) - The version of the API itself ## Version (Base Version) -+ elektra: 0.8.17 (string, required) - libelektra version ++ elektra (object) - Detailed version information about the used Elektra library + + version (string) - The currently used version in its complete format + + major (number) - The currently used major version + + minor (number) - The currently used minor version + + micro (number) - The currently used micro version ## Base Instance (object) -+ name: test instance (string) ++ name: test instance (string, required) + host: 192.168.0.5 (string, required) ## Instance (Base Instance) + id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string, required) ## Base Cluster (object) -+ name: test cluster (string) -+ instances (array[Instance], required) ++ name: test cluster (string, required) ++ instances (array[Instance]) ## Cluster (Base Cluster) + id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string, required) @@ -256,3 +515,8 @@ clusters' configurations are stored on the `clusterd` server + ls: user/hello, user/hello/world (array[string], required) - subkeys of the requested path, similar to `kdb ls` + value: hello world (string, required) + meta (object, required) - metadata of the requested path + +## Error (object) ++ status (string) - textual description of the HTTP status ++ message (string) - detailed error information, e.g. hint about malformed request ++ i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib index bb252f14de5..5dc85c91f5f 100644 --- a/doc/apiblueprints/elektrad.apib +++ b/doc/apiblueprints/elektrad.apib @@ -25,12 +25,13 @@ for further information and explanation see [doc/VERSION.md](https://github.com/ + api (number) - The version of the API itself -## elektra key database [/kdb/{+path}] +## elektra key database [/kdb/{+path}{?apikey}] access the elektra key database by specifying a `path` + Parameters + path: `user/hello` (string) - path to the elektra config + + apikey: `7b7947e6-adc5-4d23-b53c-783623f894f8` (string, required) - API key used to authenticate with `elektrad` ### get configuration [GET] @@ -42,11 +43,17 @@ this is the same as calling `kdb get {path}` + value: hello world (string, required) + meta (object, required) - metadata of the requested path -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid apikey has been supplied -+ Response 404 ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `PATH_NOT_FOUND` if the requested path does not exist in the key database ### set configuration [PUT] @@ -64,14 +71,52 @@ this is the same as calling `kdb set {path}` + Response 204 ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid apikey has been supplied + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `PATH_NOT_FOUND` if the requested path does not exist in the key database + ++ Response 406 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` + ### delete configuration [DELETE] this is the same as calling `kdb rm {path}` + Response 204 -+ Request nonexistant path - + Parameters - + path: `user/nonexistant` ++ Response 401 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid apikey has been supplied + ++ Response 404 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `PATH_NOT_FOUND` if the requested path does not exist in the key database + + + +# Data Structures + +## KDBResponse (object) ++ ls: user/hello, user/hello/world (array[string], required) - subkeys of the requested path, similar to `kdb ls` ++ value: hello world (string, required) ++ meta (object, required) - metadata of the requested path -+ Response 404 +## Error (object) ++ status (string) - textual description of the HTTP status ++ message (string) - detailed error information, e.g. hint about malformed request ++ i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends From 5f5acaa733c3689e2af288e56843c0cc3e9dbd9d Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 19:25:45 +0200 Subject: [PATCH 17/26] elektrad.apib: add APIKEY_MISSING responses --- doc/apiblueprints/elektrad.apib | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib index 5dc85c91f5f..1939d9aad82 100644 --- a/doc/apiblueprints/elektrad.apib +++ b/doc/apiblueprints/elektrad.apib @@ -43,6 +43,12 @@ this is the same as calling `kdb get {path}` + value: hello world (string, required) + meta (object, required) - metadata of the requested path ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `APIKEY_MISSING` api key not specified + + Response 401 (application/json) + Attributes (Error) + i18n @@ -71,6 +77,12 @@ this is the same as calling `kdb set {path}` + Response 204 ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `APIKEY_MISSING` api key not specified + + Response 401 (application/json) + Attributes (Error) + i18n @@ -95,6 +107,12 @@ this is the same as calling `kdb rm {path}` + Response 204 ++ Response 400 (application/json) + + Attributes (Error) + + i18n + A comprehensive list of possible errors: + - `APIKEY_MISSING` api key not specified + + Response 401 (application/json) + Attributes (Error) + i18n From 7bc8a8261b7db101d3da8ced3d474672ad084582 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 22:48:36 +0200 Subject: [PATCH 18/26] use http status code 201 for POST responses --- doc/apiblueprints/clusterd.apib | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 5bf72302d96..650b3af8f73 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -73,7 +73,7 @@ API to allow instances to register themselves with `clusterd` + Request (application/json) -+ Response 200 ++ Response 201 + Attributes (Instance) + Response 400 (application/json) @@ -300,7 +300,7 @@ Otherwise, it will be 400. + Request (application/json) -+ Response 200 ++ Response 201 + Attributes (Cluster) + Response 400 (application/json) From d4b4b8722472fdb538403727ed0f1c5a710771e5 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sun, 25 Sep 2016 22:55:39 +0200 Subject: [PATCH 19/26] fix i18n value --- doc/apiblueprints/clusterd.apib | 88 ++++++++++++++++----------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 650b3af8f73..129d27ceebb 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -35,7 +35,7 @@ API to allow instances to register themselves with `clusterd` + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `APIKEY_MISSING` api key not specified - `NAME_MISSING` name not specified @@ -43,13 +43,13 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `APIKEY_INVALID` api key invalid + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` @@ -63,7 +63,7 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) @@ -78,26 +78,26 @@ API to allow instances to register themselves with `clusterd` + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NAME_MISSING` name not specified - `HOST_MISSING` host not specified + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + Response 422 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `HOST_DOES_ALREADY_EXIST` if the supplied `host` is already used in another instance @@ -116,13 +116,13 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database @@ -136,19 +136,19 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` @@ -158,13 +158,13 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database @@ -175,13 +175,13 @@ API to allow instances to register themselves with `clusterd` + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database @@ -203,13 +203,13 @@ this is the same as calling `kdb get {path}` on the instance + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database @@ -232,20 +232,20 @@ this is the same as calling `kdb set {path}` on the instance + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` @@ -257,13 +257,13 @@ this is the same as calling `kdb rm {path}` on the instance + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `INSTANCE_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database @@ -290,7 +290,7 @@ Otherwise, it will be 400. + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) @@ -305,19 +305,19 @@ Otherwise, it will be 400. + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NAME_MISSING` name not specified + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` @@ -336,13 +336,13 @@ Otherwise, it will be 400. + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database @@ -356,19 +356,19 @@ Otherwise, it will be 400. + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` @@ -378,13 +378,13 @@ Otherwise, it will be 400. + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database @@ -395,13 +395,13 @@ Otherwise, it will be 400. + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database @@ -421,13 +421,13 @@ clusters' configurations are stored on the `clusterd` server + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database @@ -448,20 +448,20 @@ clusters' configurations are stored on the `clusterd` server + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` @@ -472,13 +472,13 @@ clusters' configurations are stored on the `clusterd` server + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends A comprehensive list of possible errors: - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database - `PATH_NOT_FOUND` if the requested path does not exist in the key database From b05375599fe3d836c74d4fa5412bf13c2de9abde Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 3 Oct 2016 17:21:45 +0200 Subject: [PATCH 20/26] docuemnt de/assigning instances to clusters --- doc/apiblueprints/clusterd.apib | 70 +++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 129d27ceebb..cc3c7ba0468 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -406,6 +406,76 @@ Otherwise, it will be 400. - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database +## cluster instances [/clusters/{cluster_id}/instances] + ++ Parameters + + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster + +### get list of instances assigned to the cluster [GET] + ++ Response 200 (application/json) + + Attributes (array[Instance]) + ++ Response 401 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + +### assign instance to cluster [POST] + ++ Request (application/json) + + Attributes (object) + + instanceId: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of the instance to be assigned + ++ Response 201 + + Attributes (array[Instance]) + ++ Response 400 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `INSTANCE_ID_MISSING` instanceId not specified + ++ Response 401 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 406 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` + +### deassign instance from cluster [DELETE /clusters/{cluster_id}/instances/{instance_id}] + ++ Parameters + + cluster_id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of a cluster + + instance_id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of an instance + ++ Response 204 + ++ Response 401 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `NEED_AUTHENTICATION` if no valid session token has been supplied or the user for whom the token has been created does not exist (anymore) + ++ Response 404 (application/json) + + Attributes (Error) + + i18n (string) - a unique token representing above error description message; can be used for internationalization in frontends + A comprehensive list of possible errors: + - `CLUSTER_NOT_FOUND` if the requested instance does not exist in the database + + ## cluster key database [/clusters/{cluster_id}/kdb/{+path}] clusters' configurations are stored on the `clusterd` server From c72956c7a92cf324d5078602e508b53d03ef39f1 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Wed, 5 Oct 2016 20:45:46 +0200 Subject: [PATCH 21/26] remove obsolete descriptions --- doc/apiblueprints/elektrad.apib | 6 ------ 1 file changed, 6 deletions(-) diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib index 1939d9aad82..3a85bf1541f 100644 --- a/doc/apiblueprints/elektrad.apib +++ b/doc/apiblueprints/elektrad.apib @@ -35,8 +35,6 @@ access the elektra key database by specifying a `path` ### get configuration [GET] -this is the same as calling `kdb get {path}` - + Response 200 (application/json) + Attributes (object) + ls: user/hello, user/hello/world (array[string], required) - subkeys of the requested path, similar to `kdb ls` @@ -63,8 +61,6 @@ this is the same as calling `kdb get {path}` ### set configuration [PUT] -this is the same as calling `kdb set {path}` - + Request (text/plain) hello world @@ -103,8 +99,6 @@ this is the same as calling `kdb set {path}` ### delete configuration [DELETE] -this is the same as calling `kdb rm {path}` - + Response 204 + Response 400 (application/json) From 0203fee6f476e0a9e8fecc30d72602709f8699ce Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Wed, 5 Oct 2016 20:45:57 +0200 Subject: [PATCH 22/26] standardize /version API --- doc/apiblueprints/clusterd.apib | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index cc3c7ba0468..695a64f0319 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -7,15 +7,23 @@ multiple `elektrad` instances -# get API version [GET /version] +# get versions [GET /version] -returns the current version of the API +returns the current version of the API and elektra The API version is increased whenever breaking changes (i.e. changes that prevent backward compatibility) are made. +The Elektra version is directly taken from the Elektra library, +for further information and explanation see [doc/VERSION.md](https://github.com/ElektraInitiative/libelektra/blob/master/doc/VERSION.md). + Response 200 (application/json) - + Attributes (Base Version) + + Attributes (object) + + elektra (object) - Detailed version information about the used Elektra library + + version (string) - The currently used version in its complete format + + major (number) - The currently used major version + + minor (number) - The currently used minor version + + micro (number) - The currently used micro version + + api (number) - The version of the API itself From e1319bed00d8e62e67770a96811ff4f2934c820b Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Sat, 8 Oct 2016 21:03:52 +0200 Subject: [PATCH 23/26] return id of deleted objects --- doc/apiblueprints/clusterd.apib | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 695a64f0319..1190d65760d 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -162,7 +162,9 @@ API to allow instances to register themselves with `clusterd` ### delete a single instance [DELETE] -+ Response 204 ++ Response 204 (application/json) + + Attributes (object) + + id: `46a288ae-7475-4cdd-a04c-3826c9a4b5f5` (string) - id of the deleted instance + Response 401 (application/json) + Attributes (Error) @@ -382,7 +384,9 @@ Otherwise, it will be 400. ### delete a cluster [DELETE] -+ Response 204 ++ Response 204 (application/json) + + Attributes (object) + + id: `54a92a5f-2dd5-4f61-8761-6acfc7c49799` (string) - id of the deleted cluster + Response 401 (application/json) + Attributes (Error) From b12eebb62b901c28f4bd83d3e4770524bf976c62 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Wed, 16 Nov 2016 17:04:01 +0100 Subject: [PATCH 24/26] specify behaviour of key get/set/delete --- doc/apiblueprints/clusterd.apib | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index 1190d65760d..ccba436d1b2 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -206,7 +206,7 @@ you can access a single instances' configuration via `clusterd` the same way you ### get configuration [GET] -this is the same as calling `kdb get {path}` on the instance +get the content and subkeys of the specified `path` in the elektra key database + Response 200 (application/json) + Attributes (KDBResponse) @@ -226,7 +226,7 @@ this is the same as calling `kdb get {path}` on the instance ### set configuration [PUT] -this is the same as calling `kdb set {path}` on the instance +set the content of the specified `path` in the elektra key database + Request (text/plain) @@ -261,7 +261,7 @@ this is the same as calling `kdb set {path}` on the instance ### delete configuration [DELETE] -this is the same as calling `kdb rm {path}` on the instance +delete the key on the specified `path` from the elektra key database + Response 204 From 1dfdd8e812e4a5020f2fa4df860e198bc47e73de Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 26 Dec 2016 12:10:27 +0100 Subject: [PATCH 25/26] add string type to i18n fields --- doc/apiblueprints/elektrad.apib | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/apiblueprints/elektrad.apib b/doc/apiblueprints/elektrad.apib index 3a85bf1541f..39082337829 100644 --- a/doc/apiblueprints/elektrad.apib +++ b/doc/apiblueprints/elektrad.apib @@ -43,19 +43,19 @@ access the elektra key database by specifying a `path` + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `APIKEY_MISSING` api key not specified + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid apikey has been supplied + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `PATH_NOT_FOUND` if the requested path does not exist in the key database @@ -75,25 +75,25 @@ access the elektra key database by specifying a `path` + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `APIKEY_MISSING` api key not specified + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid apikey has been supplied + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `PATH_NOT_FOUND` if the requested path does not exist in the key database + Response 406 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `REQUEST_UNSUPPORTED_CONTENT_TYPE` if the submitted Content-Type is not `application/json` or `text/plain` @@ -103,19 +103,19 @@ access the elektra key database by specifying a `path` + Response 400 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `APIKEY_MISSING` api key not specified + Response 401 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `NEED_AUTHENTICATION` if no valid apikey has been supplied + Response 404 (application/json) + Attributes (Error) - + i18n + + i18n (string) A comprehensive list of possible errors: - `PATH_NOT_FOUND` if the requested path does not exist in the key database From 91b01aa16499a860c9f2e00d8aa9367a71ab0b76 Mon Sep 17 00:00:00 2001 From: Daniel Bugl Date: Mon, 26 Dec 2016 12:15:39 +0100 Subject: [PATCH 26/26] describe `host` attribute --- doc/apiblueprints/clusterd.apib | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/apiblueprints/clusterd.apib b/doc/apiblueprints/clusterd.apib index ccba436d1b2..c5d3e6b726a 100644 --- a/doc/apiblueprints/clusterd.apib +++ b/doc/apiblueprints/clusterd.apib @@ -138,7 +138,7 @@ API to allow instances to register themselves with `clusterd` + Request update host of instance (application/json) + Attributes (object) - + host: 192.168.0.6 + + host: `192.168.0.6` (string) - hostname/IP address of the instance + Response 204