From 356aae1dbbabf8b37eeb346c17cdd1f732d0905f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Mon, 7 Aug 2023 15:33:28 +0000 Subject: [PATCH] Deployed 2b58b4d with MkDocs version: 1.5.2 --- .nojekyll | 0 404.html | 446 ++ assets/images/favicon.png | Bin 0 -> 1870 bytes assets/javascripts/bundle.220ee61c.min.js | 29 + assets/javascripts/bundle.220ee61c.min.js.map | 8 + assets/javascripts/lunr/min/lunr.ar.min.js | 1 + assets/javascripts/lunr/min/lunr.da.min.js | 18 + assets/javascripts/lunr/min/lunr.de.min.js | 18 + assets/javascripts/lunr/min/lunr.du.min.js | 18 + assets/javascripts/lunr/min/lunr.es.min.js | 18 + assets/javascripts/lunr/min/lunr.fi.min.js | 18 + assets/javascripts/lunr/min/lunr.fr.min.js | 18 + assets/javascripts/lunr/min/lunr.hi.min.js | 1 + assets/javascripts/lunr/min/lunr.hu.min.js | 18 + assets/javascripts/lunr/min/lunr.hy.min.js | 1 + assets/javascripts/lunr/min/lunr.it.min.js | 18 + assets/javascripts/lunr/min/lunr.ja.min.js | 1 + assets/javascripts/lunr/min/lunr.jp.min.js | 1 + assets/javascripts/lunr/min/lunr.kn.min.js | 1 + assets/javascripts/lunr/min/lunr.ko.min.js | 1 + assets/javascripts/lunr/min/lunr.multi.min.js | 1 + assets/javascripts/lunr/min/lunr.nl.min.js | 18 + assets/javascripts/lunr/min/lunr.no.min.js | 18 + assets/javascripts/lunr/min/lunr.pt.min.js | 18 + assets/javascripts/lunr/min/lunr.ro.min.js | 18 + assets/javascripts/lunr/min/lunr.ru.min.js | 18 + assets/javascripts/lunr/min/lunr.sa.min.js | 1 + .../lunr/min/lunr.stemmer.support.min.js | 1 + assets/javascripts/lunr/min/lunr.sv.min.js | 18 + assets/javascripts/lunr/min/lunr.ta.min.js | 1 + assets/javascripts/lunr/min/lunr.te.min.js | 1 + assets/javascripts/lunr/min/lunr.th.min.js | 1 + assets/javascripts/lunr/min/lunr.tr.min.js | 18 + assets/javascripts/lunr/min/lunr.vi.min.js | 1 + assets/javascripts/lunr/min/lunr.zh.min.js | 1 + assets/javascripts/lunr/tinyseg.js | 206 + assets/javascripts/lunr/wordcut.js | 6708 +++++++++++++++++ .../workers/search.74e28a9f.min.js | 42 + .../workers/search.74e28a9f.min.js.map | 8 + assets/stylesheets/main.eebd395e.min.css | 1 + assets/stylesheets/main.eebd395e.min.css.map | 1 + assets/stylesheets/palette.ecc896b0.min.css | 1 + .../stylesheets/palette.ecc896b0.min.css.map | 1 + how-to-guides/Guidelines/index.html | 545 ++ how-to-guides/User Guides/index.html | 564 ++ images/Architecture-Management-API.jpg | Bin 0 -> 51423 bytes .../Architecture-Metrics-Reporter-Worker.jpg | Bin 0 -> 77530 bytes ...rchitecture-Operation-Execution-Worker.jpg | Bin 0 -> 75910 bytes images/Architecture-Rooms-API.jpg | Bin 0 -> 89371 bytes .../Architecture-Runtime-Watcher-Worker.jpg | Bin 0 -> 74112 bytes images/Architecture.jpg | Bin 0 -> 90056 bytes images/Example.png | Bin 0 -> 39757 bytes images/gopher-maestro.png | Bin 0 -> 11004 bytes index.html | 546 ++ reference/Architecture/index.html | 652 ++ reference/Kubernetes/index.html | 390 + reference/OpenAPI/index.html | 490 ++ reference/Operations/index.html | 718 ++ reference/Scheduler/index.html | 772 ++ reference/apidocs.json | 1875 +++++ reference/index.html | 489 ++ search/search_index.json | 1 + sitemap.xml | 3 + sitemap.xml.gz | Bin 0 -> 127 bytes tutorials/Autoscaling/index.html | 612 ++ tutorials/Development/index.html | 850 +++ tutorials/EventsForwarding/index.html | 722 ++ tutorials/GettingStarted/index.html | 705 ++ tutorials/index.html | 489 ++ 69 files changed, 18159 insertions(+) create mode 100644 .nojekyll create mode 100644 404.html create mode 100644 assets/images/favicon.png create mode 100644 assets/javascripts/bundle.220ee61c.min.js create mode 100644 assets/javascripts/bundle.220ee61c.min.js.map create mode 100644 assets/javascripts/lunr/min/lunr.ar.min.js create mode 100644 assets/javascripts/lunr/min/lunr.da.min.js create mode 100644 assets/javascripts/lunr/min/lunr.de.min.js create mode 100644 assets/javascripts/lunr/min/lunr.du.min.js create mode 100644 assets/javascripts/lunr/min/lunr.es.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.fr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hu.min.js create mode 100644 assets/javascripts/lunr/min/lunr.hy.min.js create mode 100644 assets/javascripts/lunr/min/lunr.it.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ja.min.js create mode 100644 assets/javascripts/lunr/min/lunr.jp.min.js create mode 100644 assets/javascripts/lunr/min/lunr.kn.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ko.min.js create mode 100644 assets/javascripts/lunr/min/lunr.multi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.nl.min.js create mode 100644 assets/javascripts/lunr/min/lunr.no.min.js create mode 100644 assets/javascripts/lunr/min/lunr.pt.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ro.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ru.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sa.min.js create mode 100644 assets/javascripts/lunr/min/lunr.stemmer.support.min.js create mode 100644 assets/javascripts/lunr/min/lunr.sv.min.js create mode 100644 assets/javascripts/lunr/min/lunr.ta.min.js create mode 100644 assets/javascripts/lunr/min/lunr.te.min.js create mode 100644 assets/javascripts/lunr/min/lunr.th.min.js create mode 100644 assets/javascripts/lunr/min/lunr.tr.min.js create mode 100644 assets/javascripts/lunr/min/lunr.vi.min.js create mode 100644 assets/javascripts/lunr/min/lunr.zh.min.js create mode 100644 assets/javascripts/lunr/tinyseg.js create mode 100644 assets/javascripts/lunr/wordcut.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js create mode 100644 assets/javascripts/workers/search.74e28a9f.min.js.map create mode 100644 assets/stylesheets/main.eebd395e.min.css create mode 100644 assets/stylesheets/main.eebd395e.min.css.map create mode 100644 assets/stylesheets/palette.ecc896b0.min.css create mode 100644 assets/stylesheets/palette.ecc896b0.min.css.map create mode 100644 how-to-guides/Guidelines/index.html create mode 100644 how-to-guides/User Guides/index.html create mode 100644 images/Architecture-Management-API.jpg create mode 100644 images/Architecture-Metrics-Reporter-Worker.jpg create mode 100644 images/Architecture-Operation-Execution-Worker.jpg create mode 100644 images/Architecture-Rooms-API.jpg create mode 100644 images/Architecture-Runtime-Watcher-Worker.jpg create mode 100644 images/Architecture.jpg create mode 100644 images/Example.png create mode 100644 images/gopher-maestro.png create mode 100644 index.html create mode 100644 reference/Architecture/index.html create mode 100644 reference/Kubernetes/index.html create mode 100644 reference/OpenAPI/index.html create mode 100644 reference/Operations/index.html create mode 100644 reference/Scheduler/index.html create mode 100644 reference/apidocs.json create mode 100644 reference/index.html create mode 100644 search/search_index.json create mode 100644 sitemap.xml create mode 100644 sitemap.xml.gz create mode 100644 tutorials/Autoscaling/index.html create mode 100644 tutorials/Development/index.html create mode 100644 tutorials/EventsForwarding/index.html create mode 100644 tutorials/GettingStarted/index.html create mode 100644 tutorials/index.html diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 000000000..e69de29bb diff --git a/404.html b/404.html new file mode 100644 index 000000000..da3aed65f --- /dev/null +++ b/404.html @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..1cf13b9f9d978896599290a74f77d5dbe7d1655c GIT binary patch literal 1870 zcmV-U2eJ5xP)Gc)JR9QMau)O=X#!i9;T z37kk-upj^(fsR36MHs_+1RCI)NNu9}lD0S{B^g8PN?Ww(5|~L#Ng*g{WsqleV}|#l zz8@ri&cTzw_h33bHI+12+kK6WN$h#n5cD8OQt`5kw6p~9H3()bUQ8OS4Q4HTQ=1Ol z_JAocz`fLbT2^{`8n~UAo=#AUOf=SOq4pYkt;XbC&f#7lb$*7=$na!mWCQ`dBQsO0 zLFBSPj*N?#u5&pf2t4XjEGH|=pPQ8xh7tpx;US5Cx_Ju;!O`ya-yF`)b%TEt5>eP1ZX~}sjjA%FJF?h7cX8=b!DZl<6%Cv z*G0uvvU+vmnpLZ2paivG-(cd*y3$hCIcsZcYOGh{$&)A6*XX&kXZd3G8m)G$Zz-LV z^GF3VAW^Mdv!)4OM8EgqRiz~*Cji;uzl2uC9^=8I84vNp;ltJ|q-*uQwGp2ma6cY7 z;`%`!9UXO@fr&Ebapfs34OmS9^u6$)bJxrucutf>`dKPKT%%*d3XlFVKunp9 zasduxjrjs>f8V=D|J=XNZp;_Zy^WgQ$9WDjgY=z@stwiEBm9u5*|34&1Na8BMjjgf3+SHcr`5~>oz1Y?SW^=K z^bTyO6>Gar#P_W2gEMwq)ot3; zREHn~U&Dp0l6YT0&k-wLwYjb?5zGK`W6S2v+K>AM(95m2C20L|3m~rN8dprPr@t)5lsk9Hu*W z?pS990s;Ez=+Rj{x7p``4>+c0G5^pYnB1^!TL=(?HLHZ+HicG{~4F1d^5Awl_2!1jICM-!9eoLhbbT^;yHcefyTAaqRcY zmuctDopPT!%k+}x%lZRKnzykr2}}XfG_ne?nRQO~?%hkzo;@RN{P6o`&mMUWBYMTe z6i8ChtjX&gXl`nvrU>jah)2iNM%JdjqoaeaU%yVn!^70x-flljp6Q5tK}5}&X8&&G zX3fpb3E(!rH=zVI_9Gjl45w@{(ITqngWFe7@9{mX;tO25Z_8 zQHEpI+FkTU#4xu>RkN>b3Tnc3UpWzPXWm#o55GKF09j^Mh~)K7{QqbO_~(@CVq! zS<8954|P8mXN2MRs86xZ&Q4EfM@JB94b=(YGuk)s&^jiSF=t3*oNK3`rD{H`yQ?d; ztE=laAUoZx5?RC8*WKOj`%LXEkgDd>&^Q4M^z`%u0rg-It=hLCVsq!Z%^6eB-OvOT zFZ28TN&cRmgU}Elrnk43)!>Z1FCPL2K$7}gwzIc48NX}#!A1BpJP?#v5wkNprhV** z?Cpalt1oH&{r!o3eSKc&ap)iz2BTn_VV`4>9M^b3;(YY}4>#ML6{~(4mH+?%07*qo IM6N<$f(jP3KmY&$ literal 0 HcmV?d00001 diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 000000000..116072a11 --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Guidelines

+ +

Assumptions, Dos & Don'ts

+

Describe common assumptions, or actions that you want your users to avoid. If there are multiple ways to solve problems using your application, you can document here the best options you have identified.

+

Lessons Learned & Best Practices

+

You can fill this section with best practices and enrich it as you learn better practices for the use of your application.

+ +
+
+ + + Last update: + 2023-08-07 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/how-to-guides/User Guides/index.html b/how-to-guides/User Guides/index.html new file mode 100644 index 000000000..233a7b799 --- /dev/null +++ b/how-to-guides/User Guides/index.html @@ -0,0 +1,564 @@ + + + + + + + + + + + + + + + + + + + + + + UserGuides - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + + + +
+ + +
+ +
+ + + + + + +
+
+ + + +
+
+
+ + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

UserGuides

+ +

Features & Components

+

Short list of the components, features or elements that the user needs to know to make the best of your application. On this section, you can include any guides and how tos that involve interaction with the UI in RING.

+ +

Describe any menus and buttons in the user interface not covered in the previous section +Include how users can interact with the features on your interface to get the desired results.

+

Troubleshooting

+

Document here any known errors, workarounds for bugs, troubleshooting details, and tips and tricks to avoid common mistakes.

+ +
+
+ + + Last update: + 2023-08-07 + + +
+ + + + + + +
+
+ + +
+ +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/images/Architecture-Management-API.jpg b/images/Architecture-Management-API.jpg new file mode 100644 index 0000000000000000000000000000000000000000..291fbb770bd87bac91595514aba93b2ff128d23c GIT binary patch literal 51423 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 DR`JT# literal 0 HcmV?d00001 diff --git a/images/Architecture-Operation-Execution-Worker.jpg b/images/Architecture-Operation-Execution-Worker.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a83309a527659c219b799e18f039695a48f6fce1 GIT binary patch literal 75910 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 SEYBzZ*G%^R#g1=(9rz!-9&PUc literal 0 HcmV?d00001 diff --git a/images/Architecture-Rooms-API.jpg b/images/Architecture-Rooms-API.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e6afcc2d760988315bef3eadb40dae61ccfefd89 GIT binary patch literal 89371 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

&PYtSMpV|`v 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

  • 7)6v8(t4wf5UMseeb?`ILjI@K zccyCpjYEvy^$=DN6-wDJVR`MC6WiZ&%)y4=AAd-DFzWW6<|Zb1o4*)jq-HEDXC%FUPpQ7+pyT{KUUpj^W3?U&c zfFa`fefL@$qBDQ|RG>t5>^@a~CP^FY4@{cz?|Zn6H_gvuUY#%>(>eg%G#S-{Uv zoS%Px@?YTeKX(xxmS@%o;Gw^}BmCCs zFRXI%FURvgwW5FF72&V2(9vtjuN=3wI)8r-5C1>4Ro`33XQ}@!_I4xx0UOV8KUMWS zMKl=|9+@JEB8<|EwL27W&bf%PSub-hk{T})4;8}tpyOlz7jy3&*HpImjq2ED9LqsO zlwt`@LUAaeqvJ^E#gIY=rISDq0z?Sts7HiAf}sfkf`UK_1PLS<5FC|Wg^*A}Kzav} zrXZf1ne&`8bDsNo-}^rIpL_Qod#~_eCu^;}*V=3Ue&0e*%HQL#{?0``hU68~q{4RB z>Zq2K_`8uJJxr#@k4?u~22E!y4GbV5{vm1j4-}QrDg-zP` zFwHON+7DUgjd1l4+&BLQ`~RzZ|L4d5gWOg1k>gJ5qgPrncJfK`EsNYdTYXuke%#A$ zbfnUo#~kUtUa|Y%T)TQ$LrUUmL`2|pojxM->HY`Z)hF{icMggL=hwt@!R2AcyZVc= zyAz$?PCET|;y*r{?1Wi;9eokHm7@O{;stOILiPsc|G52t@&=K<^?jN4b+@xgm8l$> zBju2O6TQDJWyco&5kNg%XWH+9}KpiP#L z1oPB{>jEd2=7NT*s(Rj5T6CW1n7KkK4=SKJ$K1SA3unStXn+Hxdzp zE;aM`y!UL1);RN&B3$P9uQ1EL!QOY&NQsJtMK+U7FTh!sEd2Lc|8K90-0s>&e>p|E zi>+(1f31C5KW72F)|8)p5qIYud$gncP*Cli)r#oN@w6|mZ;Y;-4gFX+b2L9mvGfa5 zOx_5`RM2a4s)kG_S5DGj09co)S`PrC-kVc|{-TL5v#;4BI5xP7{LiR=z80xs+WDKDwsa!DPPj zTu^-$pQIC<~zLe25=)w9ka{k@L4hOdgv6X3@hiavFc9iO4 z5mLOieC1J6C2(B;x~I^5q0ReOJNKulrvVI;aqvgAl5>j_o0}TVF zvyi<(`rn^PPv_gkPi5+vxIUB;stL*?@+8r!tO~cFUdISmE*yC|MxfcIfZxZ6*r&4#>lhXi5~_qYBUtOZ!@Q_AHP#| z%X-kwGW9Y!FMZW;(YtQ0YXhkUeG=*TugAv!eCide3>qa&k}1wNsj(+ai6}pBkcSLC zB3yw4ft#2@phG6V{;-_VS(;vjHSux@3RGhRvznz2LPDL#9-J@1z#Rh|3p4sED}94Y zg_TY~BXNM9ovt9@UcVYy4R@XQGQLoHZ~c=I1^Y(Lb&~;iQII+-hDpltEdYyDDm6&P zA!%j^=lyab`&;xWXfV5zOS=z*vr~mUQ_pfLCKW1fq|L5bb93h&ksPXbW6fRB`P#>x!mM>1Bzm}utdRoQA zF}}WO+PT=4;M0wVMcQst^*pl_OF?l>(PJ~B*S_cxYEF3tH{&EcoLZdK(cYR>tYa#} zAq9aRS-z;XS3=`Z(^YRkI%p`gBI5*DaV6WCX)h*ZebyHisJHy{`2rsl?JS&o)27So_UTkq9v&QBNxG3T-eBJU7a zbhAX_w>!M?a}3yeK88D$TH)=RR7G4)7!UuX+$sx!W6i8x^4j4;6xs9+2hLAT7DP8~RB)g4;XwDTce>ZRKD%!5YAlBvaZ=DatlE<|o5>G7JTwld z^Z9%&C=c2+=TCMjJR>WU!|f9LFqnbi@Y#e%#`CXbjNnO}f_KF0wIJ$UT`BdF48XHV zkD<-d`F_kY<(N5_o;3HkLdeNOFJU?Z%Q`WOb7#L$Agk#i_N*o%#drg(^>t3(??&&g ze#IPGB4tca3^vI$mf|!jHTEqM3phYv)H}%{LIiw#!LKSAw9Tj6iTG*3-4?p)!rMRei{Mc1H-QhB8E-q1r-H zjF=Vm@Cf#3xeMEU&9xn4wiDw}6XWpKmxo+LsZLbD;ODw31eY%j?D;kIUmf=+MCd=5 z>i=te@;^^pU(rL^g9FQ6c$HQ4%lfrZtgYLusX2Jt+oe%s&w zW24rxT*UTfdod34fEon;k2U>a%8EFbQtD6MZjetNV&biEgp76_q5UyLf z-ZqL|@Vf>!M;Qi%L#+qB$tnOf&t^9K56x=uAjH9h)U1ofI}dG|ib)r(HHOk}@f2N^ zzSART-qq*(N@e-0;mGYa5NK>9u{VVgtESvVHj)Xr5;!4}2V6bXIgR-uTg$or?7^Xj z{sWXkZ^5GQ;Okz`Qf#0&vN+_lW}$|Kd4({+U=*23M3Ep6DXAkL{?%>&Z;t=DRCI#n8efEHaaKT{t&Mr)9U$NsY4b?(n64UnFpS z^LTLLYEq`M#xvEefy?c zU}@ni_?i>Mw<;tx;u%qIYZd-;xuxLHx_L`(N-)zK$dzx)lhQb)Um#QcAjtk`f!=^% z=2i(Q{MCIuejgtsapwBGi%e}JKuczc)M?ILSkEl%>DqzW_fIy$1EUtsEd$8(j!wg| zgl_4R-S)2$3MM7G4c-BN|HmF|tr-&JbcNSpu3*s7ZEG=Ox*I+f@9V;RI4{51|6m%F zo^cA70p@P}4WMn*aNnYdm@2K7HR(wwV6_3|_I37Iykn+RpvQr7gciRLmvOq<%?-Y) zylgg|dH{}rNJheaD2!_J+bJ4MIhzCmq-(wVryjh4WB2XyP|CuQkmuBr#iEGoTTsz! zltNGWM+T{#wdtnS9eQO!a40!Qs`uz6&Jc1zbKP=i=qs^8@lmatf`p5d?)Mvn7i=j= zwkZ$++Ml?8iqoogzlauWqsmxxBf8Omi+H5iPy1GwQm5+}6Jou0@MiaogpZ+_ z%8+NL@X0G;kx|w;ZM0~w#K6! znha~}ls@yF3)bUi6Zh;t`RgAeVgEI^+vRVnqUwW@z{8A9tHWBo*MC`ldr_iQHjSO# zQma-N!=*OW;Y4}uHL8t6c@2~@WTj%kYp>q;eqeY_KMF;g%gq4*uh8qw;GufGhAnso z>q2se&Vrs*=~nLcR-ik%)9p4TqM(%G8UTY})NT^IP83dHyeG}Yd89J*?4*d%3kke@ zpuh;{!dMF`o4F2r?xT4!v$jF~o_bZd1)u#GJxN;SSVR#QM-pa-s4XPsBIs=U9zwlgKoyCK}Q#kySA7x zJ&oEt3VC!ROSuT*tF2-0xbydlYbR|aXT2=04-8GWrNG0vPT5itujrI3KfrsJ_1G#$ zd=am@PWf>LdQSKESq&nZ#Ei}Lb?}l2vaZm53cfyjoh7uk4Ybic=af%x5&bQJ@x*HvB@k z;E&>@(u>c)cmIw9glo++(=v=b#jkdrQ-#B`C02EFpXpq9OSP76N0%nt;fSrBj%|at zL5T!H2js`h(^%4g;;v#OY@wjYWdE$(E{r4vL&V5;<@bj8zuBO4nvNc2Iu%D^p)G{US&}8C`P`9S0T1TRjaHezLkwYd?aj_Q+Sr8p-z!Ib;~tpVsc*^HN=x ze@km?r|RU|+ue*$(1w27DdcTvkk5li2bS4tX6@N{eT}xJOlAiB%vONTr?#_W)O8Py z_8tKsY-RBacc0^iu`?)~Fo^JT!sMUx3&s4_ay}M8kIAEKHuRY-3J@#{fEvG-A*CPw ztZFvkSWSMW-|2c6_&w7BhGtcU6vjQ(pnyVR5}oMRfQ8e9Rc1?>Pu6ls_3Tm|^F-lY zib=u59o+m+4AA}J1(KUmL5K&a@o|Z+)@4I!k|K&*1Smsr_)D$y5dA3}2dOX{fu}_dM(-?fV5ycPBVLuE#tn;KaZzNlhFfv= z_E*rYhE7Ag*69RhbcZdUnCE|Mtjg$|-5B2^n@OW&CwHmjPGdHFM3lPRVIgz)@;u^9 zn(rX;M*BfEjS)K1aB1P>=Ea`MK?D7YooP=ZMJ6haJoKHX2i9VgE0Sv=tRMxSjLvx96+eO$ zL@HVlC9D@kWA!k(1}EASUj^Z1$OxrUBL8k^#~vxGe@>zQE3{Y|M9J@R{^VLq zt+p`;HC*5O^9IywY~+mU=es;$v|Hu)yVBBd+~ITx;NI_Gz<+LgOC~?|2Th-eshLCM zxGitl&&G8MTwTUFWlhma7O>asNkr)~vaY3Em^a&pAt!ZE1i8qw#`N29$56>in2QUi zEJX+6KA>=G-qhJcaRl(^Aqd-hk?{6qg1Sg2*!Fl zWfmLGQAShCaPCcpOuGzu=^9^GLdx`u;ed|dzXe1em?w97p&9rB`h#WjRG;IsW7A0aM8^CEg`|^mSm@fpcD&3I}OK(?9`>*J$j%b2}R%ZE}D~NtD6lF zXjEV@6>llopxAy;@11W@Ywe@U(uD-G)p=0 z+Z_eaB1^|!PQ%R;el z<}$OpSAm+#1b8&0EBq4B)N|xX>ru}q*Io_2F3p8Vn(P4ll>q^RlBPJLO<*-cpDiP^ zG?3ge@y;+;;g$aEosg6d+oag`V9mz)P-i}vHRyFahkM3BR(J{hCFga}kFKQ;hr7HZ zkn{*O*ULL2s>P8n@2D_7-zoOp%n6McSgPQQ$zlkdjQ5*_Y%j%&GwftcswoLVp9Zxg zk81$?gx^wT`m*DW>d<|QW{Q|kDHcsbbgYWnSWF2_=!;m!6L6>L{o#vs0SPyv77&kp zu}o=nYBYm7n}HZYJw!SRgtIqdz>t%`CH_jhi(f!chp5)MzY0Tcwi^8cecI<%>*3l? z(iPDYi*I{h>yN+*`d=5EXx4>Z*nx+Wwk3~gP;M!l*9szql=T^FsDU1>(G zcb{m#omvxx6&V)zZjsf3JLxoTua%0Q-O1%}2LDsLqznu5NiDN5KtG3a*^*!9_!@N# z=aMbDupD4d5R;zp7N%8IouV_6@EH0AM(k@q#Enn|1)mCA?T!^p2_pj+h(E&J$0^@` z==g*W%F3d@B!?mV1L6&Q@-ONWz%>`?m!Kx_MuVAdiEbUqtYimuGxGpV(wBTg3}g^} z2ztwdf4;WIF$(p;Zk(2uEg32g3}$Sm6%t#|4+C#~UOL-c+!7AM+ZOK}iF@DReJOkW zTed2Bx7rD~$O2vhit!(!(A!59b#OXmV~6%Vn^iC!qDudn|{@{ zjK=7cR{jsUO?N53?ZK#B|9#-`HXdl&O4_iJD>4=fs82ceRT#tE*`aFv)I7aG?1+oiau5^vd;hP?(o{_Ht|f|?piF|XYQ%WR_qw}?=MF#5ZuN~9-XeQM;PgqlDJ8VOR477uSh)rEk|9r zSm-4!Kq5H65IH5et>i_uGg*vR6WbN3a%$xr_H`Rd{?0NjgI& zAqVtGlD|_Ap{~2mK|_n*Xb<4-r;(Qj-ORUI2Y7mfv$@IP&lB+FiNsi%B*zJz)M?a7 z_W7)={7q(k#Fe%rU?feqqBo8@Kd%uR`Sdpp^h5<~aS8Ud%N06)uz;XTY86ZUp(2J& z0oOsUla^hO_4_C%7vHXIY?Lxr&Y~L>V-kp&+q-tBW|R8oD5ob9@WtM=><%A!EiIE` zpLBD>ZjUPt{;j%R&S5rPUTE%wX5q`LAjkge?Q)4fe>tT(l8lMY<)?7aOW;vIA^jZm zIK^G%;}<=K@6pb1-+(;SQK-bnmIe|Ubi^zi`iU!LtO!Q7Fvh^<0BqZI+)>@TlLSx7 zw;DbjI9?0ZkrKbRGQEuhw7N}Z&aAWtq;8^xynYV|9+=A;73qA5+Ouy)GgmwUrt9|i z69J$fJwUR1`|>33fD(PsG#jPCK>Cg4Cl=R9jWV5TnT7&qzMn+{0jUrhICTPuC$i}%x+3HTQzoc5N=HLR6bBH-dlKo`ib~wFbG9paH1P9nm?9sQ|T0Xvk zaoNbRWoQ#_@f-}Fh`A{c90`kPkdr#K*M zBYXJey>RcuhVIX~uI7a99qxCiwEgjVMLXwlZ%~w~Kc}dE*W-Xswkr!@N+7hPcgChxoUljt zbjNTzkrlgzk0;&N4s}$aj56Qc4za7B3C?Eg!XKOVY?fNk8{zv29-DCS98=3~q1GDG z6M2S$mp7nuyHD&l-VSoL7vXHiU_8m2|fuNu?N)Y^V4&10fVJ2g=3C9sTsmKV#Tz9jf<5|&mHNuf)Nb$4@6lM+L{t8j7Erb-NO zbxgH~IfOX*I)vCguwUf)knbi>@Q)yDP?bFpQ^t72EiHWh!{rJ>ZfV&)AefCVLkPn9wjqP zLO?MtEz0zjSczDFP+u?2u7mx+F5=sqgI_yq$XaGQ3sIy>O3AdO^+dT$1&4&cJFGd& zYHe#6#4Y0wo+?=LD2~FNdNNm^f3a~jNd;>8`UW^!;EZM$la>z&YRESwvJS0 zm)Z@**WhQs4&fZZRVOPa$$Kb)|fBDCQ9D>_C0aw^2ANJK3zoNftUifq@3IfDA3 zF|5f=orb2Hdmu-R2j<3t*Fb=$u5`-OJwGt+%LVU>_dxEvyxB3_*o0D9gO>W0qc4AH zM`#R>1VBc$W4;6}yO_@Vxjc`P*Z8Hhbzd&~SSWfjqqSN+HX#N3%U}EUe^6GDGaK7- zA2koh=^39h{Y1%rf-(x>qjeow^bEt?dJO^sbVa%aDoy<&?ngm(<*V zEwl;1<1me%|Eyq`7+OB8)8|f?gjT(iq0*T2Y{xI?r-`0lC>wKdIXgRk+tiS~$Cl_E zXSYzWFMC|>=YUAPnxyIUDN7-!IJF&o^7In)jFg74q4TJv81%^$BR@A{mMS4K`40C) zOP-$dn@gs((i+h4kZDyqEw{lT;PX~EW~f^wc%I1*Cl_ZiN-b>vvFCE^=ua<_ZM;6p zY;P}|O`E!8Q^cb8xE!!IhATpO_FYcw)|Mo(a!X#Ej$|A!!fo_>6J59vB@Ja?IYZ85 zX2NXbYsOBnET1FG#coMleQ_B6#AP&<4>?i>Kh75C_X#A5*bz==(jl(0~809@=Xn*gex6S#pfr7;*pNa(ZbjCn;Wd zIrSNI&DS z5 zhFd+~TX)E2Sl8TN;bfOi|Cz-6M__bGU=K<&TG;2${MvB`dQ5*??9{tk{*OIh#3%PX zi97J#=HNqTLwM8_3V9xV8IIm5 zOXML}!XO46-dSD7pS?|tWJ2=6h1{9o9(?VZ&Xb*zW_$UzXN9j{bMaYWF;Hh*xVN~Flwp5WdW?K`Tcc3$)K9=OH=)i zQEty}D#YqHLem}njAm}#TWzK3n=#pX=AY_~rA&ejaHUM#SJ@lJw=-!r=l>kGzZ-L` zu*syN=yS5R_Gk9;}+!KemXX!Ym?ol~^1 zJS$UUjofyjqR#vFZAjFp`oy67D_Sebv_&BBsf5O%{t%_MQM>rLdL3-#pqk1{D_=@c zg&w6kqm%lC^-wuty#t4I)3qgEB)zX=5)7rNuF54yES@*zBvk?z~|e)_}A8O?nVIB0tpeqgA;bub8Ed5Y3%7fM1<^y{Ol zE9prroCMRZXT{|lH)w?6@lm+MlkFFQIW~7|`rd?%l|mA|EIbm$D{ix1 zCPz|FV=$HxZ-V*xCbE4XLR=Fe$9Xc9Yyd>|| zmA7Sl(&ia?{$s31)7LqbHK)1v%`$NFekCLIE-)-3AW^O?QKl{P0`;@fr?(cQJm2wT_>SNFg$Z7!z3~yLqcb>vTR!kH@AwPbB470RV48;!Q9vPAa z>)JEK0t$smakYM_K>i_Xc9Ljbn6(KEE(;f@ro}nrpU2DO$FC&d&Zg)%ZfFXjB#3Wt zBQ=cPaUZB=tWx9td~x1$rl(@IJr<>SDVSx}Peu;OpCTUwYqOjhDPcj|5)Y$i1F?AE0UyiHl8^pLfkRmWQg5zr|d&Ee>Mc{HXbW^M*|t9 z*|)eo?75j$)HFymnjgCD&v@N7>z&Dg7saqE>e@S~>nOJ$r6jsYopvjy$15RgM{*?I zsK*4P)Ne)CPG%;RT`Om4)Z}y^@&0yDJK)uBh+J~sa2WywnI*u*%;8I@;+lvmID-FM zSmX1u>Z<{?2OU&n!`bs-%OKAYkGvy+GYSfx8?V|~$}^d~UvFd{*N%Prwp4HBr}N}Y z-f-ru_wx6CQ%gP%GH8RKugTM>D2wpwIB^SpLF|2t(O4~sc>vObT0TQx$RiDWJtZD zo$Q9kmaUg#odC4mH0yN^bL${fFV~yr@uAT5w5DbiwB}hlGtt}G?UIVNc?GaCLmCZ7 zEU^|3%3j3`x5KL5c2c>STEQ=j6^rlB1s6VhdAY*z{%wU+727TIhG0g=6apkAVThaZ z*nCDQWA+DE2vyZNZjl=GqoMbWT*U$?ZYOm=R!{{NvN8z*tuiw+BtX1fSo(cz?rk&T z(oDb>jp{Lx&&Bsqd!#(&O&D1q4B5BTD!28+L>ZY??CF|7QXPkT|1txtt5uMWgvv%v z2&Vk+@8D=Wn@Dhhk=hcRRMp>aR88&=Bi{QK*zf`X(RS+SXAgHzAvJeC+gIS<`NVHr zwmM3VH?D)5L}21G{ED{I?vyY_G#<@J~` z7n<6LE?#2($Woi2!_c4B#UX~RS=vjvGMmQu@(-WC;nIDxmNK`6o=?R9A2MYLWLJK! zx;glHMz5Zwss~hEzKSSn{jM~wfU&FDZac2vsa>bqdTXKn3dq!h9IO9RtJ+da^5XId zH)_zlDmhKI4rKn`QrQA7l&3>SOc z%q$#uUXDP0WxGJJD%lziZ@p1D79C=`a;$iHNbMcnO}_pMKs`1kH3L#vjcx-w^UEv@ z7pDC^H81lez&(Z= z5hX@|i1iw5$y%#A@5amZ6l&bbRIZ>!$~RJG#c~E%P5-UV8@`>t8f5~PxmnD{+SDzV zJ7{Gu8y--jqBp`_gG8XW*`1RSpyLRPjZAeNq7E))6!JoDCN~UIYG7J}XH{FQX4B;# z!sm~^C270l40EW!3jw}^Co&wZGlEx_a}*?oMQbFi6)o}sla}J>;iM;mF0T{D`+Dpn(WYMV2Gc@#&KDaYy!ix& z;WOg^YoI%ir+lQm*YRay#NBc8iQ;XC^fy?J#|sntC8@Us(xRtS4%B`qaXhg!F#ySq zrnHa<$XbRo!E8|PyO5%qo&0%XN$uZ?c}B)!=bMzlmFmG|Y5k%Q*=1ecWuWtiV0V@w z>+Ljmep5vO4v~WYt@d=%*>j0LI#v+ExFE^4(y{k_tJ2XU*A3VEIx#_Ga32W5fII^t zcqUr_L6VW$AO3jqiFZd;+_jCnXC*OLqb$ra zwVVhrYS$f)FLzk2G4U*5zDx0y+F)bTL)_(sG1g#wywW{4MCa2Cc>p(ufxDN&(%xZyeHw{~@r)l{%0$@EjZf9+XMQGYXE`GX1G{n6M6#CYUs$ ziR`Pxx|e8GysoMj?3TJ@>*-4hkdDw85lM>1i}(_)P?F9g!LE(A8rYSp~*TPDY6 zAZN&Q)`RL;2m(;5ac|YCwMIR>&UI;E5^N{9;60({v?PNH1|4gH8#9b$bPt zbf#0=>`;-v zVQK@6StyT@mXMc+P7Q88pNzsCcwig+z9MXUVPlzv6AEOaAj9;F%GU5;hrO1Oe6J;yR90_2%92a;z8F+QqW{}^+f z=OQpHi|BlKaqJ0&^29Inl5eX=N6W67XDwR-w(DM%W*w?e{)%5IzFib4Sg_naygi=- z(yiq4O!XqPTc*|WWeNal?sR-2f6r#b_R5k7E(}yeg7U&!@Q_~$?!(D zP3vUuk}LE5KNWIGQetws&lRm^IW5k`Le%M|LRUd?OP|AcfZLCE{}`fxuRjmd#VE`x z#|(yhIj;?Tid%pe;7DP`%iKg40M}G)Mx^SqiEtA8Aek2(a%3Nu@9oeVBTx3W4)@ui z03{FcUlxF#)PbO<-jT5^%Q7EVid6XRYAEde;*W}zSFwF%*1nhTVzMtVYQaB}R$b=` zkwqFT>Dz<*qh-h{T^!JU}qyK)?^+c_=d564`oJ}iMMMV z|C&$!>-e2CWBb|@b!VaOFQdWFUkYYWBwu~w=gZmN77%y^a5x1XckNk5UtYRwA*8}W zCMv8tO0-9Av>+xCLU4P5l(E&!JaWYm%@>>UVmw5UxR-5JY^i#rJHVODcg=)aZiSnA zoVa`vHt0T3^Ygv=nPUST=@8G4?#j_6nG=$s=}`+0#^_X5Jv@_zzvq`x;rRTMqJ1_= zT~$X`!F_2MZ*j|gJ= zK6CAGz2$^;2`INauT9>Hc3OT1*g$(Bcj-L(0$L1q^NfT>zO201 zrlDSc9UNLOT-&(S@>q1Le6P!C*3X|QrQ*dmq-^T&0rE;ni^fU)9grKa zYzr93P*w5&%6g{&S&Rwo_d^!!t_>UD2kAx+!9<}?#XO-4zu7L!bWOUdK``m!EnuE) zyX#ibzO&9C873VtIp$OAd7-%#Ku^&ntiM1f4W7{Kl>Uo$$uH?Nc=S#E{VQ zsHf2Xnj=j`qn^f7R6UuuyiTLN05V*sJd=3Op1ZwVcuy8Z*3L!@Dv5d0;$RBUtt4~^I;^Q(ce?7PrP=~tf|Pq5!|%C1Bl#zVlb8F&*|OlH4`{(5`>&-lxrPj zt}FGfbb7brYSP;czvbANqhXDwIOMzyM+F9iq!{8|C$yfl6zlE45rrA8tmR*w-(2R& z-|flsE9Ua&GM^2FRt!e1U8}%l&HI<@b>n=^xu;(-2Y15Dfs1uV?9ViM9V0)=Qal7@Cz{o+J1vlcQR)pz+T_&b^5Y?U!DfUz<<)r9n`d+2prJq|$tN*blxA=vV*ixkoLuni{BG!v`tM8r+*C1&Ig;X7LANoD8<|`J1mxMoDH+czQGzsyHmPqU zA?|aAKGh0b2wbLgNAsn7?`lJonwJYaUWjp4$bo)3kR!^L4WA{- zBq{W)6}sp^cG_PBKDuRPVW9y7v3h^m#z)n?=$P&Ck}*d6qF!B0Y7=dKT%^32-beY2 zuAV>2+A7scF5bv)$F2?DBJ-6kLUCn5V1Vy%Tf zf1y#w20@<|R1a%9{aD~kU+U8agXF^P^!>DrtZBl*Pc+E?-j_v83=0 zBqeY55$<4hB+ZfA^*bIr!X5*sm%-=x2ztTNIQ(am-~PDR3b`KLCNg_TA?hTzX&U=Y zbgI4@JX0(ev-lE7zkOzyn4gWc%kHRG$OkmBy=3}^>93`mLNi?rSzqVJEU=GG#>F_Y z2bMTSGSoAJz&eI*IEX-iC`X_PhMXy5d@-5A`Xf+8`C(vo3jd#hB8R@P=93|KWl*v> zO!)67{V`eI_Q?55(o1JrHcl~|f@T9lw-|mSfgxQul*eH2mOSi*(h=wzuuknWI$MI> z!=}vYwS$b6n)hu=eGIy9zl>a*8skD`9m?yfM#U+@Ql_eB`flYj)Q;|? zIY-wMs+QsmV#o-7>~iyq3Yftu@_!6DAmDp=6M|5sJZJ9^@Y`pIV-ZuC7qeKPr9>iX zh*q0%tmlfhg#gA*0b z&X~&Oy&i_e4NgA_zb5i{;v?J)8j8ZLw04e7jWS1$cK;-|^p@}%I$Pzs=3PJXDXS81 z(y!wK7)62ByV}%NplV2Wc&uhD> zO|sx_bM9&Hu8&}UYxPpxIGWuR1Jbu6ofdO2=;-RlhmPNrdDP_BuVTZrNtpg=NKJh! zd4tpBCTpXp;RBqbuC8Y~XOvQ%l$0#g#A?p%J+Aop3agm$B-M8`#@d;UJMp}L?ozm@ zOg_`X)1;LgZ@(~@c=cq4>QPsao^@PWHr#buLF)3~_ZWma(Kafts~cq}jW|Jl>x%6{ z*S;HcAn4i1>D>+$%s2|J>I7AjivU)NI1e?Bd1qHca3HO+$BqW$qK~6HnAim(*jr$e zk@_Z#+ry%;rjm{N6*Ep;VG;H04tWU7D^8ckpZl&rKIXP>L189cW-jPL9N5@%z&|3e zoKP;zmRUIr_*5PD%2?&aA+a+1o;{6|UoM+IoY?q+aJpT@cGb95Q^5S)2<282MGEfq zDnYzAv*TZXH?Kz>BRd7)m!7!i$u1~ayG0(*wWn~VV6+il?{A%>y3AD&jrUfJ6rvUS zI3K%7cbb*&t0b;D%X7pcCOC849`uOAHYNP87$B#)Sk8Gr9 zRHG1uLv#%R3Yr|cMc_kY{+riNr6 zPJdB~n*ltiEvsILMF@BC%9WaF>UD+ImDRZa;iejnR9&T zot%xGozQQ0_Wfv+>kZ-(?&Ld8o(yf(NWVUeEX&<-kXL77TrL4WJ2SnD=jz)zI~e7$ z-_c9|x$P}QrqC!J%Tjk+M`G{2(Jii&8e6b>NojpvKO=+nZv&dFjcrJ=G^F-hAwCz< zOA_S>cB0qXmn=*dEzr%cL#v)1r?_&o!L=VG`r}iQ2N(K>m99h5l_>2t+`WA7KL+0HoTzM0tW#g6;$uoU*@guOElARk zTJ>Es3y_emDcn7L1=yrUns0E@kIR74L&x?_xqmBqh1>b;)w^*h-*G*~F5CZuBVJCk z`-qE88KGV=BCNVoxhu2P&zg`nN1d_J{3_gqjI`xLe>a`DU27l_o8w63>1LUmyAJ>U7R0X?SWE}<)pRZQ{_cp^-w99q8kqRy&bmbO`g3o{6FMs)T+N8lFc}daz zBKK}dUxJY=`at1+wL7|GSGF+ma|hRxtJp+rgVQ}Nn3W&Mo(g#`i}m@ z+l5srC0(yji~E$SAN6?4_O4w?TBD+Nbgf8vV3ds-0ZFaplEA zVdgvXFAEzdKqg0s&%ES=t*Y%SEfZPTlBGzs1b3@w%$;-NEwsV8g^#$eAWhgNE|sfF zNm>GZierD*@qNvz+plgh{#ocEZ{u|f(Z{6J2F9Xd->S`tZ-z5TN%iv2*SAxou80sr zZFiF&K6SndSa-WMHRZ|soOb8wUy4%iE$dDV8%8@-eN!Bzn*Lcl5OLxXxcZnUeCbM} z{`~Pji+erxC-sE9dy;{37`NMg@MrN?r~mJNGLElvhi@(}$JS7|z)A5s_) z1aWb@-g5roYv2EJ-Ab`y8r~5r==bCrj9+@`XgBg&?=`R8#^>Ja06Upa-M6rhdCPubuxIXaO!1WB zUnY|OEFPp~2HlY$Pa2GP+^Jj})dI3hD~F$wErCH9tyQE=65X)Ja%9soul6h@o57NG z-e>L496!QWjkq&CFGTz@uh%bhtk3f*uM&{6j^Ug_qU$6{yUPboal}(jRAGp`!Ci4$-XsQP>z#JQ8w{{ThRT@ zkzmBv<}I+4Xz@`MC1YMtz=Kt0Iw^*VSQavMb1 zboTyvW^{B^)Ip6X%^9kMHi)4L&WscR140@tp!5U?5_)KsvCsz)kN`ni2nhk{kPxuY zs}KSN2uSat_u^*0yXQCa-E;Pw{q1kRzq7k%`QvlQIXCy*drv;kbMJGX=k=x;OhoaZ zjz9@8OCym>fRjO5(`(D^TjY}i_rjF2t4lZ-1}&m1zVCh$Qv0dVPA-LLAU)60FA8a; zXH}D^96=}OylFthxDY#AQ|b-6R&fXpLA+`+G&RFSeCgG113BL0Iu^RzXq?_EL?)_n zc#|M$W;~wT?zrAqe)2}EtAa(t1Q=h22%OT*Ni5OyS8kDc<{|;$5%;L3LL&Rde^}ob zxu9O(T2Q*xx8E7)QDtt}N}YM()^6%hVVh64i7a`tDGc^C7V4D`ZGn9^|G90dvBSWx zp!9>CNcp9Z8u>V@Y4PbplX%S9~ z@mpYKU6Xwm5puD@P4N3on;U&ist+xP=hC+&*A0P`_zW67vk<0#I}UTJ11*jf4+C5w zrh3(5a0w**fPDzwaT1@UAU=MazX)pQx@7qHr%C8y^E^bt-Rvk`fxW zl)yZaL*9*nZ_U;W$p<%6XEx|r#Qh9SUtyy$mZB7I*AZgUa+!DV_hY`$3n;39oAe>G zo}MO0_rUax3KAdKQxb)y41gPu2ds{7dg!AaCwtCbC}^~v5qoALKrO8xI>y|6OPG;2 zV;mf28Py}1{`IDEZYU(zS(&dYNQ9_cC`^_fUXY}NV{|i*Kxs9}D|lnynL2-Ypzn4b zzAoNPYFnX)YL*`&N@FLEX`KDgjYP@Zm7NHh6^d~rM^p(4@25cIg8j?h#iS1Az# z-9lkcw0BNK)CL5OKe4VjXg$nY*>m(a*}PXNa0~hC+Z3*H-X$C?-nqY~Fdj`4vKB9A zYL)Vgn*`fticRK*f6>$NkXEQC7=8-*$_KB-dL|{UCe=aG2~7dS7-ITozbJnN@w#%0 z!5Nbc&h4leU8t`4Hg&h+VUf_`$1UINYNa>%U zJAA*5#;CPrU~_L7O}EZ~iW?*7{!AmDlrQh@imFdMl>K;;>Sn~48>;>3E#mz@d#HcW zCliI;6IAvlw&+TW7cQt45adR7Pu{mSSF^HhP9Vh8$}nuWPHyR3O|_V=_K`v6z_3&kda?#mm`UD2JrXl6p`7{7+*) z4}d9vd~f!`%2uI}Uj13(3%CSZLL`-k5ZUBu-iM}KFC6vLe99^7wc~*x?#D%eWcbKnF*`-nh0?NDY0t@HjEk&Yv5~P?J4FoSL1SF@G zhfZt*N?ff2o`KbByP^<1?s(M4~*`&^nAcub_h-D5U=!R%s|SUt@!S7mVdvf)PC#duB}SX6I3 zZp+H)>4ZGSK!5LroQAWvO&?jV8wMcdf4O<|<4$4SnPft+^d;CFh$S-!^20Y%7$C>61 zbQ+qaIN&`a2a7h{EoNwDR7DNK_ekAZpAv`Z!ZQv7_9BAyj6={T8X+7oDS`dQitlOoVBvgd@i~si8 z4(9ELR?_rYuFE2RUb@HhQ+=}BD}tiZv>h^G^k2fE8~(rw9yGcRiUqoJ_K5ETGaf&{ zjxJf+ya7MirUNv)2e~E{AIqUX$l0(WP6Y;z+w;o7 zat$ryl$~4C^6N#)+dSKlai`xZ%iMHQWNS?<|O2@70dhOBrG;&{>E&{}ST)Yo9rQ`n7A?RTXg$ zlXx}FSQ}S&=sRdRvhGGsl)VOEsBm8ixtAdNXhQ3U9^@~%J^T(QTFNi#D-N!XBB23m;#`m*N5f_|`56BiNG7e9UFI~cjNikRIZd*Nj3kuHv= zSkq-Mkx&OO2Ox<1iXTd#DBCxzX=Su1Jl#RX>1PkN?PS^e`Dyo5@d{s0S01YH6{+^S zfu_+iIo-8_C)oCkyN~GQOE&$q38Z~4A-5AVOfJ!mn1ZrZVYaD0DqHgXXIouJxsBK% z&MP$87F{_ z8Q0F5gil=+n!c*|$5^uUe08jEYefSXWSrI!7h@^bfTj3>6A?aa)fHhLOGc!rgaR_r zcx~a)9|?B2pou@d2Zuu1d!amqh7EYNfSI6^>FJ+t^bvkq?a=BLDMh@)?TbCAsuyT2 z>-E1oDm*;LzEIwy*VR_3S@f*lUb*up75@6mTO?7ibUM?+J8nyz+wQ;sJa2{#&}GxJ|0y5+ne zmZ%e29sPmrRBTpGFh`?Ccw_iHXzi0j%Mt+2pVV>3ue{%Y4KqVPN^pVfEv4vLD%Qs& zA|iBg%S~S!ol|U~0QGD0I1bLs&CY)E?!$2~7~ec$FJaMZ@{0H8w%q|^E}Y9i`Wgk3 zhhS0c*=Z`N$_(0McA-R?TwUM|Fk41e=x1>Yp}O-q{R-pjri-*|=W6ZCKpODd*B*8G z5G#B2I2El%$=DnwFRg>+R-tFVSPK|+CJ8>k`2{gbe=O^^D=6=VTXUhStRCn`t}~B8 zWuUxdCnN_02o7og=eQ|88TA(lhzC}&!7as6o#k%|jd;SW699LsS14{#oY*`~1Gdks z08d#yWVd?{_p6oKVmt<${usD{6SP^SbH3|~F6}Uyj{v?f6#`$1iLuyyLr!ZCvgwz3 z4j@Oe_@CrV;P1TR$^HiS+E~-6z8W{LCr5gK3>0V;`GA`8!n`5p-nG&=M|&O>z}5$s z4a=k-L%av6oa){8^=&)Nkn&dWUAN-?(8B+E^AgNU3-uG>suf!t=Yve^<&gWOXGxT@ ze{+H-DphmmI&Kx^k-Ao^a-&=^z?XA;;YwU2`^H1bsKN5;==lmnU7QZ zr5|;WW6GpAb-cMl9%K6c@@ey_0lOL%TU+W0;ljd&b~l;~DaANhpz9*Vp{k!ET;~{h zeD&Vu(EIf68@wZakIv)%`O67NSF}g6{KBRDoPzKb=&uTW>Fr5sS>^3mxvf9_uBrQ* zS!uZ(+SR{6spJbtVn3a(1aG{k9uz51&)r@vv+AB)u64N8@7+$@y zpQ@nIZdQRTiLNcgZ+HPFXM;)_xMTdB{4}KxU`^~luD?|2V8J9A!o+;` zD>AesUnEy$*A#3R+q8zTf-Yr*c1z4NmQ^{3%;=n)F~4U5Wagfbhdi-iA!mtP5O-s^ z^%Re1)Vb%gXPr*JLZ`s|9YTIT_GEK!-}G1fqZWemR$7owUiF+ie}-tAqSw$8=kvU- z_rf*U{m9eW+!ThOKk$9mw-kV8!n8L^D%NP@RKDRK$^`D-|E=WV$)K5h8*MnO<@wQ%Po z$4sl&-eZKDd6v{l^0AI)1Xj*ya8wDl<)@pDzX^4~<~a8DHdCV^%Z?%>seirb*)#bhVjDv#Lv!gE z|0C4xb3$>3XU}EAP>osqo3JS!BT(6_qD_iXT^xjYXb8p<2JY+ zn!WxIn<;(9RZge3nSiPT!qLsb=Vgaw0RytK|B(0sH|sUuPJ1B|zTrydPApDiC2DLK z*%tYACO*-(T`NfkOeph`e`WlO&-F^K%UB}z)&e#bLQ?WrtkG+!KSq12nt;A6URw@p#MlS~n z76N^FWdMnHgQyo$Bzn_-ct(X z<1XTQMql~(`KOixEvR6c$GdA%sGk>zxx>DpOwukP!a>8mTJH{5@Yd0kok1uu7`uG% zP5X#ctY38+FEqkYothlV_V$n~pHCJZ{4S5yV0Hpwa`@BR_)STGij?+X*6}LCLAm`F zQDLHkBfFX9*V3L2JJ;6geoJ~rjX0T-OEFyTch0s-?7vQBsgTurvRb6MP}2**4VCk> zN88e1J-p6D9;Vr&Ed7I?pCt)iflsd8)Ae5NY(9E(v`UWtb5HqXJsZF*2+c4K7-AZS zq|)TowU;oLg-%xYs6JV#t3C=r|Dog_11^|dWX(ID2qf<{T3LEP-s4N`gfp@mI z>NIw#y=DkxGXgWXF06LElXm;}Lq%(v$L;hTfsFm*u)ARgioXq`R7IEu%0Z%aLQU&7 zCNKI?xe*Z&Ny1dk8{doD-%tf<h`(W}Jp6RX$NhA;9Em)UE&*GSs0R3rI<4%V zxchG&?O*s0|5@piFRj`g)!t5O*(y#GqMj}YOiu;hb zANqarc<}DbX=?fw<%LG#M1mA(Uzk>W)!H+taxzR0-f{d@#OzEoQkeOko{fKfjD?Sj z3IT_lB>ochT#F3n}lZe3YKHjE5X8q<>8H4;2l(9N!d z6Te;BP_uHz55V<(E7Q_EC) zF)E?nHCZ>U{a5Q7B`4pM?>Kxsr%CVe{LS-ht-e=AOISPZVt~h*O4O0@k(1+jWw({4 z-$i`=b4Gq25e|-;xE;?^L)?&F8JcvtdXRk3+AL<@KNkDF`uy_$a2&T9iav?`;KdqA z_^W4!zosYmV_>A+i(5ZVP#DsGb=>sVh~dBdVeCt6Z>txqe27L<<9l%2y0yQPSN zj?y81y}4>PYLlSgR7n#~%`8PYjRmfp=wVo)iu%y|qK+)HU%hgZ;w@#-cBWcaB>;sM zQ_*It3;~2oxmgF#i30exf6YW8U*7*&#F^HV&)!ru1EbPg(6zmdf56*3+&$pb4`vtC zOd4j;tsQYo4z`m9a?$^&EIubYW_)OtA9ji@(|W(^hoeh%ETQC;^!VW1GfxI)>+-UP zDfESAJ}J=SKbKL+IfSxvF10>Ceq_R^)5PyS&m4$CGI zE{i7ZeU!r8MgT9NybzcB>Q7B431HaP3Z0 zlF3CCdH&_QCvjVf7{DWgu^8`FLfpDHt?N3qd()@8L3^F~sc3Rp-tJYpbn8N@dv=Sp z0Ze>JSZ>@`^DaG0T!J%#;iV{Ww(TxldJTng1brY=yT3A*e0sqei*r;p--1dN$8{Zg z-~-*Qt1QuLgXk>JF+C}a?JrH|#YVj|eC@{VZ>#T=%?0PAO+ZW=ZySU?1?3%>&yCnb zW!H7gIDc6_Tf$Ny;muYO$FKYZGhXen1*kkoDHQ*QGmM8OGQqmU%@$~ILa z)*+6Uh=WYL)V->8S?g0ws?B)w=D7)-pB}~=k&P%Db8-cJBX9{6JfwOuLdpPJtLNPv zqfbe^5@CM6{&R!b#V-VD!%NX{?N~G~js;Ex@R-Ao17_Vwg+9=2IS)sGPomci9PX8* zp#)y-Ph7F|EKl(i2=swMI!%5o{c-?8B@R+9H5A1=R8&t@)4Eaai9O~`@~=vzWoBS)D6S)$Z6^c__)~CnZ?An!-pe*Wx>#cRI`fg1sNlv%P@;cGAm4G~J3hXi@@p19M=L%j z1S+2Qbzd!bcORlsMoOeFbyUnoWA+ydp*-TeG|xcH2e0+nJjX_xwRnn_N=38QARo7I z2)*+?+0cCt2gJ~*ckY^;=aG=iUKSu{IOf=*a!Gij@TuVV)~TS8ZD4gLj058# z%gCF<+e_*rcfw){-9%$*$3%~#6d?Ji4B&4Kqb}N3k*(>1pB9zg5pV9FdwC~&Xf9RL z$Ue=t$u4Sh)k`Q^@9^I0NJ_?xi_7DnK6O{L5_~Txt7X`nrQ1sA@bh;p(hVIM8CrDo z;y$-c1?*P`coGahcF$}-C>PHRgs?C#RVt(5i?zE8~Bi{JC zGj=x%F|&m(Dsfc%C7QR)4e_1V-Brt)XKB*W-~nQR&w`FXN2zgUFWMPcuJ154-oHcq z_;c{JAB#VaUoNX`Gt=D#W;&!5Qv{j^2x+a1wIy+_B4iwbOfL9ki4pKwh-y)kS!cPt zdVlzOep1}S{AeV9!3+Wvm^!KqN!j1Ym zFw%2vRv@)^=h&>k9G>KLc!?5h=zZ-6Cc0pt*D94KHiROy%&qSN-G{3&wQ>+;ou-F# zGk_``=#EGAJ(DKP4WRNhx#~HwDX8usveNlT>`)+o%gDMbdB*QiOMIO~kDRp&DVTLR zU#ik*hMp4Cy}T4qlzd$E;|y+fyLRWO0wB4AAh5 zcI$Sv&5YtanNBV$@jnSbY?RCaoP-_W#sQS4&m#z;)pSJ2l)H)Eekl7>Q{Sz}J-ZCi z4&6<1L9lFWpHpL?VNk@OYIe!(+k4ON=z?gacPZqzyn5s4tSLzoa&+M&UJ5hUCA0$w zv|-F|Amh|LVeCu=+Zs!kxl(_DwtQ*_x&sX^fSc-k&TE%Of;h8NpY^JH?|n*7Kw}z7O86m8qcu-1B(o@6Ordlpd6d&9T+VC^FToMC#*d4Sf!c$R$w9Q_4X@ApZiPg100bkggZH1 zgV51mpIYsw3j>Gg?^u^RL=kyu`PVUO$oRWUoNHjC<++_)T&TF>zPEb}2qoc|9s}&F z4;;W}sfPs4yxH;IA1+>T31S}o@rK#eJC(Lq*X1phFCu4OUA~*Vf3~Z0F@cV+y^e~v zAlj8W1mfcu!9f_-%2Mt8l9G1cJrzSQa>uovNQ8&kG3jh-QASULW|3qek{Osg%Vk_) zO%0{wHz)0j6^&Vn1zP6yxkbPbW=wf59;Ek#>lSzIqG(<4R#sMFbAF|o?WW%(M&jM~ zj}#2aPPBCK3fn8mLi)uKQL!m7$!JXph)Z^&5aC4i?_DxkTNC-&cjzo=!=(l&tiR)JhDbp2II8cdnZU5v$CV3O1onlA273PIMp z4z8hu|(zmcs~3|Fm<$?Cpf?4AULaZ2x#%NePI{xMkn5jWE!oU9yJ|j0iK5U(kq|93~Hfu)>Ge^5LG@Zq*gLqm~dpanAuTtu#N!#tZ_r_&J>LizH zSwe0w)S_*~e0{sW!AF%gZL7vux6N2M7trVGzCKuZ>Cv|F!+2X($*1;c@3`h(Hji)# z0NjpB_3ZZuijbSmV_MD?T!F=Z*+&MOS||GQD<$db+L4OHfsG9&^5B$jO|Im>tU)f?K8^i2XYtjeL^n(86n zH<%(To!EOrN2fc2isOl^BnmX=*C|EjnGh*DE^~&x9zub1Oq3~qeV2;J&a< z2%j#mw2vS!MH#FQPDWp<>2hQRo6}O-YAV%Hq9r?)T6CGPk9tZ6D66ZgD$%2T2#MK+ z>1_Rgv;_TFn4O2#@dKbawV&}r??QtD@;kVee+{!%V~$YZ=JuvoTM}Jt6AqNHNhQme zo;w7X+S!&Z(NeM0v!C{Cey!$p`HHcd_y4lr^H#ivy6ZHDN?@R)@q^;?WsU2hu}2O#*KlsEgiOl))d zD0ZC1c&az>S@mUdYS@OqyvS%+$@Kp8UT6r*B3)r`5!RRTW+hE0(RtFg65PD>D&q$} zS9d->R}nx6&TYGHJ2+k<-^A(*Wr1nO_{vA0j1x8TQakD^3O;f}Yg_Q0ApY|2wTu6O z_WzDJje1@<2T1wkEfn=}^h}0xGuiHbkuG)%;K}JJZY9^I4|jP!bp(a)J^i@*_j3b`OI+{GSW5!QCF)hXiU9_}*MCb;!FxcVkAB z&_1rCEc(hCL%Uh&(z%{h2n#K0V1lu2s)1tZh|dy=>nsECxuF7x1gBKWtztoFC$M7n z6`dCmkikr;El9sY*_&PfeP)xgv)(>mDCzBto{FYSz+fgWKwq{cg880-C&nM~KiZyVb7 zOp8FcD()dYq}}DL&;+iFtf*e-fpvn7NOEbi`_j6lce=$oc{m$RWNZEeG^hqVoVe=r ztWb@_-!kW*-|gt-*H+>logXbwk~ga7u)Ru2U%Wc3^nB?-{Tjs<{A)-P%DEDD0~0!z zK2#b)7=bsYHBVFU)M*Sa0gt$!ZtU~U(i7Va_Ah6`bvXAEeJD3wxvh?Rx;W1XaKGn6 zKfBZ7L|l5;onr1Pb%+S8M5+KFrt+qxB`V4n$JhE2%&J^#8p+Z?VjvH1sZ}cWeG$Kq zmgTd-nT|Dl=nReXKp(t~b@zPih}y0n<=mP0x$2x7Zh)u@PQ#fP1}JwX@6&7_gl6kvD-NM=tbDz9L> zYkh0B(=g51+kz9-k%-JGs}`W>?zM=XYo=#mflC#Kek&NMfS;$m^^169|IG;3pTetdLCGsf&t@v3zx>4Dw&(s&#PFtn-5 zW@s%fZd3bB-=WY90TGx_ObVqoByQ;T%=h@Sq8*JJW(2dopzPglgPwLpu=acTf!|pQ z1l$#y(&h#Zo(__^bWPfrjVnyzkDNGz{hu!YT2`|O159KbQ^4Tdpn&p zYTY&p0auQ}wHyu98dH^?3+2(jm# zuwWAta>ELS%$nsougb@@T#AW+YsA`9Z2F~JS*E9f0k8K7pBPpn8^wMESQ9Xt7G}7( zvKYMW^%?P&{z0c;BV)#0lX`t20QK2WF3aLeTglaNw-Ks)`tMz6va%*n$w}Cj;qU1> z;|qoUW*ob!TyXjO6q9NR#ruu*4wjGd91FoUZsOv1r?z075aU*r_D?q>o{CU@Bv;>H zpMPkSz>~jWsKMA;Gm0&A4n5hCgK*$Oe_m9r;rL>1GO<&>V2FAbP2$$LxG+dKIvCoR zAEz!h_02xSG_2{k2J5}YRJZxn@K$lhjs9r$e?yh-N-Rc_7 zd|GY-o}%R#9sR;b&j(`pz)4j1o$0Y5N%Q(mhlwDB zkGD-aF9Hhy+&a;AWU|zMb91258ShMb(oj|C`OFa`rB&U`QldIEA?^Sj@Vj7@A zea&2n%T(WJZksoqyLD0nQVK(EdjkNq0GJ6vad=2_r^6{F37p0;-%jM@RKY7Qzh{f} zRVJx&Nxg1nf6_;1c_pkXi%@w9mumEK$2>j8RA>X?PA})- z<-Psmgzy#AT176XzC&P>sO7?Ds@&#pgAPVJ6J2|lt@%@;qZ^|E$ZnZobpEE6Z0=xu z%E4AdpztQjs&4L_-jN)lCxF$`(Jhq5u?dx(`;x=MzFA1TxMC64B;ui8&SPHj=u83v zn&Ln0>&Vn#`YWTM^NMRRaiZOvy?x}?O9TBE?N-?n+G~8L%ii-|n*Sq@hJ1YEgumZ0 zo&WpwlW0uj9!|TJUR(3{TZqM<@4Y_g&hrD~`-%yZs+6?8GgRyDO{JJic!EpV)rHGT zP}~N`YElo$GK0a4)umni&zcPRccI+y=p*0osoR&M_3?e=m@~c8BJ^3w2{Qq>j5&vm_nK1axu#}v*wbf?{a^N z>sZaUog+lsd05rC&bnI*mW)*h-SfPbV}uiu#_Dsn5lYW(rdF$YS6U&7H{Mc*)fk}* z_aKz&27w-B0WpCe5{aKtW!@^zY4`SL*7?4(dhq9J{NG`I`)MTq7jcyG2fJ?&37=h^+kM(9hK6QKrzJpS>1i?@T{y6RlzhqRzD zN2`rt7}(O|eed5IH1CO|UELM2>y#^6mL4U31I;;*@K+ILQP`f2F*d>2R?qW$N%^p O|NqBdD{%WO`@aC+#x}qJ literal 0 HcmV?d00001 diff --git a/images/Architecture.jpg b/images/Architecture.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3481be08bc62ecddab420b142e12941939793867 GIT binary patch literal 90056 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 Upz8a(2mjLp=>Lo5EB=`LKZhDwQvd(} literal 0 HcmV?d00001 diff --git a/images/Example.png b/images/Example.png new file mode 100644 index 0000000000000000000000000000000000000000..9cdccc0f7fc5aa4f967ecc6b6d108468a01ad791 GIT binary patch literal 39757 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 literal 0 HcmV?d00001 diff --git a/images/gopher-maestro.png b/images/gopher-maestro.png new file mode 100644 index 0000000000000000000000000000000000000000..2379b66fc155b291b7fc31e73bf0c28a55f68c25 GIT binary patch literal 11004 zcmd72gQbVJ3cS<(`5)v=J z?|bk6aQAa|t@y0{?6uC>@ti1iRXIFt3TyxXfTtjj&;$U0K~Gr{g7!qokV_zbs=zi< zDpCMIbppguZ6*J?I4wkJS%LfZDu4!wz)XhbZrIQ-`JR;#8N!p7O#*GD3&s8m=+p`tD( zE)JrkuB)$aYisN2=>`IU#l^+4IfZ}z{CUa8H!?a3rekPqY~b_uuc)ZN;}f|2`1KqQwHJSg_cIJ})$p>Cf1-PNc{;7_S=rcR zWoL_ui`RehG&VLaOLkNcXL+(-Q&aOa&ikb=dC}HS^Xcp3V{dPtw7HLtj;tjCF6SMj#u2Hqvtj@H}1dt z=WlMT&KI2y_P2k`ISW$M^Amb2Pxc2sbIHCT?uZm267AT1bh&!;2)tDr$rkLTIb$RA z&Y$RQ84L|X{gS^x#7mDa-#W7(0?797j#-G#@dGCEnp)X)gHVnQkK^A753b7hRKkJ{ zDpIF(@)jADsQQ8#+;WgnU{yjPg>;i>wdoW_PGa0*v9^vZ+ZCOKIDW#a0`GsvcRj21 zriUza>%lcIIqG=SnhXm;MWS zm^ZT;+Q!c4<9#&w87#M+t)3BshosXOqOGvaTh1-JkG`zpIQo0uNfH7&UsVue`AQ=8 zQn5a>gRLavIjV!?b^e?P?*~bp*)Fd5&$n{C_dJ-n?l+*$jyQe!I<{#maH2kf#NL>E zJK@OwE1kyZ&O@rL;YO-!e(p;FKOM;GTg&oX52e7KtNy;=!W~@5&Btp= z0E&h|y<%x1ewBFYx$}#elOh<4ZfZRPh&( zn;zMd$Yn9aX$ayj>lk2|pmM!jSe{4G=5-htQz6MAJuZ8$?^AJhzkbblc?nT@=kHgV z2!6)iM6&kKrH}D03Kxrc_Uf--u4MhkR|14A5v>+-ss%l-9VL_Gs_G z3+LfzSDAL6oj0Jz6YO)vaI%}3!!g5vg*?W+0(l#>cS5gkOAuC407v2`Cdz@EQ~#i1 z_rw-LzAJU7WKhm#6^b*dDnA_Ik$ZfrHq*aMBR_7T$EfsYd)OQ>$LPvQrxr!|i^r1q znChlv=7gWM^L^M`l7CmNpD93TOlksd*7D~tZeARNxGna=53y2tBNx?Inym6A|Y$i^tkS~k&-|LP6y7>jv>n0 z33rVrH%4?^f&$(q=Xpz@Zt8Z|*d+^sjZn3VZ^vWZ8m>S|WWPd-*CotO8$V>W?G_jtR?xq+D88f$z@#3~!Ho?OxXptiM0J5U!vG z`e1-Fl_o-V;$rSAy5HC2SnRkuJZ656fP`S-U~9&MUBR<5;T;ZMGet>#Ppl8j6Q?CiikYm!dI{ndxA?OPY^%}9#J1FHwoqk0jzjL%_iN*{g)*_H=GdH&wuf%ldOvZ zu)j}sRc(};^}D=4i~B{?kB`>Q5D(k+C3y>v+Rp*%GbgIThCSTBNPu8leM4s2ML^fq zdA^LIRa@?M3X4#2z~@W<2S@+0hi%`8yct^+^DhD%j}$()$QwJGKTzx-6~GME6e86l zTL3TqP|D&mC^)qM%OcQ!%9uLEDG;$c;DiQLi|Ckjp(;nu3n(s&GfAsDrU|%BT=Ma? znTug_$1wc_Z_$gaW`ETh265>ABzxIS(*0)2^5cmDxgG~SN;4iXXI;57*ShPGQ=Xsd z6>*+8OEpoo;j?>|E`hoRTArQ1&B-w8OO1%SWs)PEB1LHiAX- zZ0XD!5UmoLSRP*#V1H580}@CB$m#wmM!a!(Z90*(gNql_e2l)MUqbG+!H|??iJ=d# zl~n%&#vY!KwRw3FErxYK@wmUB4d5^2)VhJ{FYOF}?0arQzr9Sy%IWFLFAlo{hA+Ba zvVt%tNf>%fx7yp|xrkoiZ#akf!Ga6``poJGmZ2+*jG(~P=V|1aB@&uE__|-_V_-ru zrKWqak<3z;XVX*9spD-<67{wWdRYY#`9|yVBtNqF00&?Sx`~!FZ`;ywpS~r;-KB?( z2p~BkHy@Avp3sxJz>B-Qd{+p5*wobyq><(oT>a*nCX8043Okkq^67?2k$z36ER?0Z z*cuCNj%-_@yP&}V@1AX){U~PiidT5uQ+g7dNIfStRlXob?y`})Z{s_|V*40n zUiyqL_>*3nt;Jw;y@=H5(yQk{aRGfl3%8#tFG*9&(WQPa1!=uDe?Ri{N;Vzhan)t* zI)wIltpqDG&1TG$%LF5}gY&cqm~FA{n=Ia|Xs#LvDuQM^Lex*XU_uAY>b}+h0f;fJ znxM{a*F2oGewSnd{jXUj?rr)OE6Bf4n2*!ypX6_OKebU!Z65ab@5@^_HP@`!djiQ1 zv>$nb8X^^!&((5TPjlP~Q*h2d<2!Q)Qs5P~9rriDpF3|-RL$CZKd$ZIn#J_y!z{h9q&IRrb~yY3ji z)*=EM%q&ueV;+T{;Gp9zlKYMaQd;c2J%_=66a@HLu-a1{n#=aRA;$}Pz^UL3gYh>L zj*&Q8e8v^h&2mVF%~5){n8NVTQ=04e9>zAU}X+%&P%BmPMd z&c;*Sf<*-jVgN(HAaD~Ah>62Y4lV`PNR`nAK0n*<{Vn9a6WgD4lil&*phES>H&K%| ztWePzQt<_C2l0F7(H3ou5e(>o^fG2hU=iuNzX7iZNh3qec0N&cXaJU!klkN<^*AC} z`>n#)$>M~6-_}yZRmx&-S31%YPi&E0k@I!yP*GCoLn(~q(XlVIyD=D~>$yL@-3U8; z*^+iq1KcDg1;|T6kbK}{wRN-Jw(~mP`C{{1rh+Ycb(uSPr81_M*(c zWWBdUhViFOYLt})a~Pu}gZA>(MCMMS&H?+Xpof8FGLX8!7ww!V(Z6z;a=R+zl(uH(Rh%y&3*6=z@CviSNyC1=rLx>6PC z@ETwU`;&&QZdO7#gHi3!v5n>;-sR1jG*LXGi8~y1s~r%Yk<;m&auZab5Sy@V!F#P^ z(!apN(;8YNmK1F6GJg@-&dbrpfdzLSxULe75>Q!8{@BL$F8twC5eygdryYY zh8)sX7p1 z&q;j?#T^C!Z9ZuX*rt}o6p>NQ+$EC)rzUqd%EB$Jkim-JxbG@)meqD2^6$JcUYL`p ze+X_&FU^mVD+Z!u1lf~Qnj}sq^%Y90G#tDAKpLRQMLe z=W#)I)R_9Eu_!0fH*b@hrV~DaU}}e118IPuC9Dgnp=lx$Nyo!oDYm3yp7riZ+`)+Y zuY !#ryPq|sXaU)5GT3~k=t8aP1Lrq8j=3Hk`^Q^f1A#@7wo*#JwIQ{4ymn`pjk zuO9M>t9w|kMSS;baHlE`pz>jfN8b63gar8-K6zkmuEK(s%eg5bvCX!yk~yK7cG!al zQlC$3ONc0C2cf#97z*dQGTV5eWo@x$mr?dZsPZ4N8Jd3qHn68B;9Q#*L7q}GA??Ok znn`15JC?!CD~-e;zEceLy`lQF11|ZF54ft;SrPobVjq;D#PMO?#~OJnj&t_lXvGUU zxKLmJwk^b2eoj>IuQ1wioaN21COPz(Q9ty}gBAn+WoXP)>)nW7^8{U@LmvT`jG2iZF=9{izO#6W_X0`#49c*5c01^48}QyD*5xZB#~>2B-tQGWtZ~ow>$y zHerC>j7zDdh3jf?WQP+JQ}bNc(t13M(9spz-aNIz7`XvcydxR!+cos8IjWoj?IecozG{@C7?m zny?=I@S;wdoJhl!#nZCg20~cv4YsiK&>gV^6D2AoMQRF#2Sf z=uZhB_(jOG4)5bXTKklAIHJ|e1X!Yjnv!n_C@NJLdWe|E%MOh!-!PCW!F zZDu?wPXnzwg)E^YRGB=L6hBx_HQsAs<~ z{p_!qBrXB=MLfbL+dh*QF;>t@!6!e+5@Y8nV@q@XJN?7Ob@hJ`p{ugojTJizJJRl~ zqkhJvMK<%_O6{e}_u~KVZ#Q_SV zGoqt7L29Y?d|bl)o@YP#w4?DIkay_M#Glsh3c62OcAqO;>)LsYzKF%0VYppubOgOq zy5xHwXBu%IS7HX4Ts5A+Z((f zj(IO*XY8kK#M$-c$>}`YV@kketlFASuC0pgSMgh;RnsM(oe>^Y%Nbc%1cGetM{n_us(g0lYXuNR4*G13k*2CoCy&DwDpRAOc-X#g3JB|TZH%u`JIo>|u8qNJ91 z%l!bPH=kX7%6C!IPH)+7X-a7AP}aF2QUdb7JhZ7vu9aJN{AwxlrnQs+6eEb|&rozf z^y6Jk!*=~R!SU;(N;RiZWuxkc=$}lQ06x&HAvDm>-0U=G3q`^*kju#k;DTP$WyxkM zFJ3*cxV%^*j6wrBDRUgg7}64|Puh0%dYOk1yS<^ba?DTOn--|-@YYuZ7}K3D;b*Wm z`n!+~Wfr+}MPcn8TDNOdrjh6KJ)3UCUR8*M4ur?~vP9*5eNvJ_N{($?16-p}9F?vn zn7}%JL5@)Vh|eRw{<_>R9o6solmJyzy+gBCx|ND#asu7*9gn6==xqz0$I^h3lh>?3 z*C?d$t6!QPrzXrKUGJ5d&vx$u##=3_#e`#zI08RrXA=*0pe5qXU&CtsO%4F3CG;u{ z;hs_Tf#fMgg6K#k@XE&$asDLoV)9=CBpd651{LT2lPPI8S*t^H?lic)AKIK~fqoG@ zgJJ03Zz&Nznsgt@>HZOfcfCe)IAwm|{dmsTo85uS*DHwe1QyWWCJ<2dk z6r~-aOz%-bIp5h6OfVPO$nG)(om(*!tC&)8f9}vxKX{s2Jn&#um)j$`qT%fBNguoB z-6@7B3$z6FN#2b3iF=#mxM|hze+jWbYPc5!cT880(MVdX z!?Q?Z)a3WD-XKUsK9M4ezm|rvEKGm zPkPg&e7Cwa^W<(B-yfa5TJ549u0C?9pq_;^~M;z1E@E^l!st1HDGK~guiQh2wpc4Bc};;IcQSjF6olO*RUOttrpPH*CI*=wU))f0v#6HOc?m3LxPGchjwC zQhQug;Jw+!>)k(KZLsb?8ic#^Nlb|X0`K@CaPeD47~$PC2{(9j1uyrEiBeb&IYO|q z$d(03eS`axFp)wM#6+e0!U&hxZ4e#=yLF&+hR>x~9nb6$<61IGtv4h{*`^1^>K zz=XV|VEXgcivH*)1b15Y)(m$yxEZQo#bD&z_|bEI2-u6DYM8N&iLeR+F`sDD3CFHJ z8kD(L%6;sHo;IwJROSzvbsD{GbVP&C>?~Ktk`VpGpAkoj(T`0rX~0k-uyiK9?T(flsVga_dvFN}UUTZYuD9I0by>#32#K+gmFmL3 zc}*t+ALu;X63B=zQ=i=Kk7)5a-falXX%UCqCA9E8DjLnB34M~{rv+g?duG4^c}BW) z6=!c!742ECU7%Z`Q`gpbxqDEtvz+U->T|WU`iHwCiy<_W11#^*bvFjWeEsKsvt?vc zG*519D|b2f>GW8zJbFuLI>X=P{drJhq-UXy|7gPk9#Xj4&U*3Vn zblsVRuYHdb)^BKoc$MHG*4V|`#jH!dI8uS=^bq!^@3U*AVhC2Li^GCz^gA#nX`o9G>2j{1zd;) zG!2DzzqoQqH`m@K**nKR5>c60daVuFLW~6Sip$(EdY%YJLJg@k5gK261`x|L5jm#J zv$(CvAroFwZY-cfUZIn_Q{?Qox7ICA%?I=xk3m;aKVhM@QG#|%qAfq?f6Tw-s`QN# zTHNnDSux#!@d7<665dioq5g6W(R^S&j$b$U{-F@@7azT3rRrOOX{3?o9Q2qpw5VTB zj#=3^r_WD#EqsL)u&t#`nQ(VBo|GTCI^VHv?~o7wloQ;DE{#A|(JEa93lITsSIY?ByPX%=yO4 zI=xfP7joB`q=}95V4g+O*K4L8v}--9&Q1;vjuqgMa5eqsg!;6L{!Kw_I#DhyxS(;n zbk1?}h&SxI`p-PSEFSGsgeu)R7Z`tGDv^mBJo;|;D#xCS2d(T}nK6jt9ojz(dK7G6 zb)F3iHrxxm?T*L%fe$WtE~szw0)Zjku35yg#OYdIQ8TQF)-ibo*`h`;0uM17;$)F8 zWWynEyp#wD1xSEp+-MEG{#hu;Ecmwo$qjhGHOn9|%T3Th_gG%tI%KSyg->FzUI|J_ z3h68~vH^SVtUXt!gQsDIUed!w=-&v_d-%}E%6C)E|CLK6uxGSgO>Gu=cEhAn0i)=1M3P8Ly#)X^}*yV|Dru|kAX~U^S1Y+Uv-5opeGS^7m zs@>o|fUkp(RVh;e_Y4f>N>#d%Qpk*jeftRcclA?H@YNPe=PA3(XN^%vPjg`o3SxC^ zDBUqB%ZNOf@**c^w3QSJ)#7c#Qhq1+fUu(hu07_n2W`SyH>r4OaHyBMmd(0}=3cBw zoz=$TuNkJdE1D*x{)P1kwm0Jbt`E>1;GMyW5pWYpYzd~%v-`adxOc(ctI)=T6uRR6 zHt{7|yISu9EAAu3&cgGr7v@fq;;Tqsc9zD;B{mOgT~9Fp)t6l$<&VB;9J68d%v~Y*$eTECyyby3Gi1sN$gT5p z&5C^L59tCfc-KW#3?xA!P3nd&iuOY>lEEbCbU*te!_mm5J;VGN>N__;^i2i2TC|to zj-Cx+_)7cdVJYNFAcvt?Ps@g($6CMG>D}6@uqeo4Ju71TS~upfY9Kah7H8cuL&+Nf zxDA-Hj_5l3Q~oHLEr0{`4J7ZXJ$UE#ETRbg5R<>*#|>r_Hu8O|T$=pYO*+XD81Z{v z=r{`tMS1Zk*)d)7#+LUuY;5tSgYeFr4s>zBj4gTj8sf1=)fKj1P*{7=(I)>FEnS>} zGsX&QxlxI8I^xH5-l)Y{Q4or5IkQ~q`2gm3{g+g4V(wpou7(lFl0cfyZ$3%H7W)TB z-tne9`Q@N^eTHa;sH-A1eSNbamA}WA^dv?)5XZ8}z#L*pzcGTL7}_Jk%s9q@)dy@1 zCVIG})X3WPAG!<~AT)XtKTO3atcab6JBn9_r~~~=i)kvUId_0o0>0P@drTf9K(TT> zq2lq2(s>H5LiDZmOVGuj8ZG3!pII+MZwR}w_m`*6u6H*80FnORzW_!ieA2YJ8`Cay z265PksK#T}8+-c1W3(CCapvc8GX2Ii`T}+3o3@l8Q%bc^xP6roK0}Evdgl*59z8P| zrl89WmNV!9)ZP zD*CF=Pw@$v7?D?NuH~#gV?mljtQ6P<^lv zu&YsXVF)oza4K^GSTUO32kjyqwwX^O42fPvv4g+9%dXoMSCrHJ!{d+Qen8E)g4J8e zwQIQG!}`0@fYJ}YweLDtIf8WEiRN^`JeBW4&X4x|0$v1ZS&W(}$GpoA&HP4u&kwdzSeNKH0xV=$Yv?e?TVhb zcfGn7NWYjSJ01y!Pa6@;rrnsOk#;nUH$5(h(#v(mT z+WhgP(iCK|nq#E03ViXoAHz#~<2w+fQ0;G>)p$D-Z9X1SAAx#_eL=k4;0W@F$ylk$GJDFg)-mQ%5XCZ$L@RrEmX& z@Ekdzh8I>I_pxB@hq6Jv0wg~P-nAo?Iz(G`&0>)InBWgOj`{u8{2t?3pySOrSuPO2eE$>$8Fu{1cig zuRw4nW1+;en}mNs?;H3@?;rn;?0j(|i~gNP{WgRzP79p6nN;OzYTpTwd=j0(z}a`T^l zZ#EE6F%Aj@n6V95uX6c^Imsg)ep`y`FwzwhGI!C{!n2rKcedJ0UDFiQ&#-oRy-J z$@M5>NL!$J;$5$yA^Lp&%c7GI*?g~iS4FByJbaw%=sNfI6fNSf1Wl6&^|S-;zL8wB zK}Y)Ug6GEz!HTA)ux_?91D#-k(-$i~CNhplFdIv~zPO>VdS=C+j@;fED_5{Lj&$Mv zR&@2(0URzdAbB<61bCa-bQzN)8%YJ){(%1(Ye>cPEpg&K>DTJjG1M6NLb047D4PkE z1;=sXeg>qZ3L>8RC5uu|LJ>}{f0}a7sCa!EgwNJI2Du26-DOb)6rg#7L(?}J_Q79O zY{9;wm~_jxU+szK5cFjx4K;+e{80mh4)(;Rql!m?G-|MR$204!@30uZNXlQt@;@+p zb&^oedlC62t1Njgj$-&hIszH4f)8kEThPde)#B91;hO$gTd`~c?}Uxl`e5G(GGe}x zh&DP((DD7RYQ1)u4mJgtghW$MDq(@0?xyqgh^LHkeyB?jG;_@+G>3V2Yx5sGW)Z#B zm+zLGD(DNM2aAD_EV2pCx~D7Q1NOB8<9AUzPSaKmQ$m)-Gd+Z>lOKWd_A zM{saU+9G+xKrS*rM6Hf@Ha*_q%f{`wd*H^vPjEZ3-*`@pxG7l=(}!;PR(f46C!Ioh zK&02j>LJYT_`EC50pRioEJULz)RhL3h`mZ6SWCw3V4n7Eda1*SQa1&j6$0Q@59l1r zwzED|vzasZ-)7+fiPHevr{^?WMaRypygF}CWF3EhW(s+tdya#>L&YV|o*$vny9Tdj zN1Tq93=cK@Op`;AW;mK0@1JMX_B~v}Zwm(1(kq)m;v1sZK6+g-hhT zgiVt{xQr=IhyEY-=!ml9v|y~yyAECgr#bP*daq|! + + + + + + + + + + + + + + + + + + Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    +

    Overview

    +

    Maestro is a game room orchestration system, which can be used by multiplayer games to manage the scalability of its game rooms (Aka game servers). Ideally, Maestro should be used by games that implement dedicated game server (dgs) architecture. Each game room is a dedicated game server that runs in a match execution context, a group of game rooms is organized in a Scheduler. Each time that a user requires some change in the Scheduler or game room, Maestro creates an Operation that is a change unit that will be enqueued and handled sequentially by a proper worker related exclusively to its respective Scheduler, in other words, each Scheduler has a worker that sequentially handles Operations that is created to it.

    +

    A Scheduler defines the requirements of a game room as to how much memory and CPU it will need to execute and other information.

    +

    Each Operation has its own properties to be executed.

    +

    Maestro has five components: Management API, Game Rooms API, Execution Worker, Runtime Watcher and Metrics Reporter. They all deliver together the Maestro features that will be described in the next sections.

    +

    Features & Components

    +

    Maestro is composed by:

    +
      +
    • Management API: this is the component that the users will use to create your requests to interact with Maestro. For example: create a Scheduler, get Scheduler information, etc.
    • +
    • Execution Worker: have an execution component to handle Operations to each Scheduler. For example: three Schedulers will have each one an execution component.
    • +
    • Game Rooms API: game rooms API exposes an HTTP API or a GRPc service to receive game rooms messages that symbolize their respective status. For example: when a game room is ready to receive matches it will send a message informing that.
    • +
    • Runtime Watcher: is a component in Maestro that listen to Runtime events and reflect them in Maestro. For example: when a game room was created it is notified that this event happened.
    • +
    • Metrics Reporter: time spaced this component query the Runtime for metrics related to rooms and expose them in an open metrics route. For example: how many occupied rooms and ready rooms are up.
    • +
    + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/reference/Architecture/index.html b/reference/Architecture/index.html new file mode 100644 index 000000000..4f6b953e5 --- /dev/null +++ b/reference/Architecture/index.html @@ -0,0 +1,652 @@ + + + + + + + + + + + + + + + + + + + + + + Architecture - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Architecture

    + +

    Maestro Next is a composition of different modules. Internally they are all part of the same code base but could be executed by giving the right arguments to the command line (or to your docker container entry point). E.g. go run main.go start [MODULE_NAME]

    +

    Maestro is composed of Management API, Rooms API, Operation Execution Worker, Runtime Watcher Worker, and Metrics Reporter Worker.

    +

    Each module has its responsibilities and is divided apart in a way to avoid mixing the execution process. Each module was thought to avoid parallel problems and to give the client more visibility about which Operations are being executed and their respective status.

    +

    architecture IMAGE

    +

    Maestro modules

    +
    +

    Note: Maestro currently only supports Kubernetes as Game Rooms runtime system. So Workers interact with them.

    +
    +

    Management API

    +

    Management API is the module responsible for receiving user requests. It accepts gRPC and HTTP requests and provides several kinds of routes that are aggregated in two services: schedulers service and operations service.

    +

    The schedulers service exposes features for managing schedulers, like creating a new scheduler, fetching its information, or updating them.
    +The operations service exposes features for tracking operations and changing their status, like listing operations by status or canceling them.

    +

    Management API relies on Redis for retrieving operations and game rooms, and on Postgres for retrieving and persisting schedulers.

    +

    Management API IMAGE

    +

    Rooms API

    +

    Rooms API is the module that provides an API that must be used by game rooms to sync their status with Maestro. To maestro work properly, it needs to be constantly informed about the status of each game room it manages. Also, if there are forwarders configured for the scheduler, those events are forwarded from Maestro at this module.

    +
    +

    Note: The requests that Maestro forwards in the Rooms API are documented in this proto file. +Note: Maestro client could be used to ease the integration of the Game Room with Maestro.

    +
    +

    Rooms API IMAGE

    +

    Operation Execution Worker

    +
    +

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    +
    +

    Operation Execution Worker is a process that constantly keeps ensuring each active Scheduler will have a thread (execution worker) that executes operations enqueued in the related Scheduler operation queue. So in this way became possible to track the events that happened and change a certain Scheduler in a healthier way.

    +

    You could find all operations at Operations section

    +

    Operation Execution Worker IMAGE

    +

    Runtime Watcher Worker

    +
    +

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    +
    +

    Runtime Watcher Worker listens to runtime events related to the Scheduler and reflects the changes in Maestro. Currently, it listens for Game Rooms creation, deletion, and update.

    +

    Runtime Watcher Worker IMAGE

    +

    Metrics Reporter Worker

    +
    +

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    +
    +

    From time to time Metrics Reporter Worker watch runtime to report metrics from them, such as the number of game rooms instances that are ready, pending, error, unknown, or terminating status. As well it watches from Game Rooms storage its status that could be ready, pending, error, occupied, terminating, or unready.

    +

    This module is optional since you don't need it for any specific functionalities of the application.

    +

    Metrics Reporter Worker IMAGE

    + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/reference/Kubernetes/index.html b/reference/Kubernetes/index.html new file mode 100644 index 000000000..57abfd748 --- /dev/null +++ b/reference/Kubernetes/index.html @@ -0,0 +1,390 @@ + + + + + + + + + + + +Kubernetes Usage - Maestro + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +

    Kubernetes Usage

    +

    Kubernetes usage

    +

    Maestro uses kubernetes for orchestrating game room instances. It uses a unique namespace for each scheduler, and a unique pod for each game room instance.

    +

    We use client-go for communicating with kubernetes. The Runtime port +is the interface used for managing resources, you can find all of the features we are using for managing k8s resources in it.

    +

    The diagram below shows how maestro components interact with kubernetes for managing resources.

    +
    flowchart BT + classDef borderless stroke-width:0px + classDef darkBlue fill:#00008B, color:#fff + classDef brightBlue fill:#6082B6, color:#fff + classDef gray fill:#62524F, color:#fff + classDef gray2 fill:#4F625B, color:#fff + subgraph maestroSystem[ ] + subgraph k8s[ ] + A3[Kubernetes] + end + class k8s,A3 brightBlue + class A3, borderless + subgraph WORKER[ ] + A7[Operation Execution Worker<br/><br/>manage kubernetes resources by creating/deleting/updating pods abnd namespaces] + end + class WORKER,A7 brightBlue + class WORKER,A7 borderless + WORKER--Create namespace<br/>HTTPS-->k8s + WORKER--Delete namespace<br/>HTTPS-->k8s + WORKER--Create pod<br/>HTTPS-->k8s + WORKER--Delete pod<br/>HTTPS-->k8s + subgraph RUNTIME_WATCHER[ ] + A8[Runtime Watcher <br/><br/> watch for change events in managed pods] + end + class RUNTIME_WATCHER,A8 brightBlue + class RUNTIME_WATCHER,A8 borderless + RUNTIME_WATCHER--List/Watch pods<br/>HTTPS-->k8s + end + click A3 "/csymapp/mermaid-c4-model/blob/master/AWAComponent.md" "AWA" +
    +

    Runtime watcher

    +

    The runtime watcher component maintains a worker process for each scheduler that keeps watching and processing change +events in pods resources. For doing that, it uses a pods informer, +binding handlers for add, update and delete events for all pods managed by it.

    +

    This component is not responsible for updating/creating/deleting +kubernetes resources, all it does is to watch for changes and update its game room instances internal representation using redis.

    +

    Operation execution worker

    +

    The worker uses kubernetes for managing pods and namespaces. It executes several operations that, alongside other side effects, will need to create, update, and delete namespaces and pods.

    +
    +

    Currently, maestro does not check for HostPort conflict while creating new rooms

    +

    One important note regarding how maestro creates pods: each new requested game room instance will be assigned to a pseudo-random port to be used as HostPort.

    +

    Maestro uses the scheduler PortRange to generate the pseudo-random port. Currently, maestro does not check for HostPort conflict while creating new rooms. The final address +of the game room will be composed of the Node address and the game room container assigned HostPort. That's the reason why +maestro needs access for reading the Node addresses.

    +
    +

    Configuring cluster access

    +

    Maestro needs the following permissions for managing resources in a kubernetes cluster: +- nodes: read (we need to use the node address to compose the game room address); +- pods: read, create, update, delete; +- namespace: read, create, update, delete.

    +

    Maestro provides two ways for configuring kubernetes cluster access.

    +

    Using inCluster mode

    +

    Set adapters.runtime.kubernetes.inCluster config value to true or use its env var equivalent, the kubernetes client will be configured +automatically using the same service account of the maestro component running pod.

    +

    This mode is recommended to be used when running maestro components in the same cluster +in which the schedulers and rooms will be managed.

    +

    Using kubeconfig mode

    +

    Populate adapters.runtime.kubernetes.kubeconfig and adapters.runtime.kubernetes.masterUrl configs or use its env var equivalent, the kubernetes client +will be configured using the provided kubeconfig file and master url.

    +
    +
    + + + Last update: + 2023-08-07 + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/reference/OpenAPI/index.html b/reference/OpenAPI/index.html new file mode 100644 index 000000000..195631625 --- /dev/null +++ b/reference/OpenAPI/index.html @@ -0,0 +1,490 @@ + + + + + + + + + + + + + + + + + + + + + + OpenAPI - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    OpenAPI

    + +

    +
    +
    + + + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/reference/Operations/index.html b/reference/Operations/index.html new file mode 100644 index 000000000..92fbbfa39 --- /dev/null +++ b/reference/Operations/index.html @@ -0,0 +1,718 @@ + + + + + + + + + + + +Operations - Maestro + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +

    Operations

    +

    What is

    +

    Operation is a core concept at Maestro, and it represents executions done in multiple layers of Maestro, a state update, or a configuration change. +Operations can be created by user actions while managing schedulers (e.g. consuming management API), or internally by Maestro to fulfill internal states requirements

    +

    Operations are heavily inspired by the Command Design Pattern

    +

    Definition and executors

    +

    Maestro will have multiple operations, and those will be set using pairs of definitions and executors. +An operation definition consists of the operation parameters. +An operation executor is where the actual operation execution and rollback logic is implemented, and it will receive as input its correlated definition. +So, for example, the CreateSchedulerExecutor will always receive a CreateSchedulerDefinition.

    +
    flowchart TD + subgraph operations [Operations] + subgraph operation_implementation [Operation Impl.] + definition(Definition) + executor(Executor) + end + subgraph operation_implementation2 [Operation Impl.] + definition2(Definition) + executor2(Executor) + end + subgraph operation_implementation3 [Operation Impl.] + definition3(Definition) + executor3(Executor) + end + ... + end +
    +

    Operation Structure

    +
      +
    • id: Unique operation identification. Auto-Generated;
    • +
    • status: Operations status. For reference, see here.
    • +
    • definitionName: Name of the operation. For reference, see here.
    • +
    • schedulerName: Name of the scheduler which this operation affects.
    • +
    • createdAt: Timestamp representing when the operation was enqueued.
    • +
    • input: Contains the input value for this operation. Each operation has its own input format. + For details, see below.
    • +
    • executionHistory: Contains logs with detailed info about the operation execution. See below.
    • +
    +
    id: String
    +status: String
    +definitionName: String
    +schedulerName: String
    +createdAt: Timestamp
    +input: Any
    +executionHistory: ExecutionHistory
    +
    +

    Input

    +
      +
    • Create Scheduler
    • +
    +
    scheduler: Scheduler
    +
    +
      +
    • Create New Scheduler Version
    • +
    +
    scheduler: Scheduler
    +
    +
      +
    • Switch Scheduler Version
    • +
    +
    newActiveVersion: Scheduler
    +
    +
      +
    • Add Rooms
    • +
    +
    amount: Integer
    +
    +
      +
    • Remove Rooms
    • +
    +
    amount: Integer
    +
    +

    Execution History

    +
    createdAt: timestamp
    +event: String
    +
    +
      +
    • createdAt: When did the event happened.
    • +
    • event: What happened. E.g. "Operation failed because...".
    • +
    +

    How does Maestro handle operations

    +
      +
    • Each scheduler has 1 operation execution (no operations running in parallel for a scheduler).
    • +
    • Every operation execution has 1 queue for pending operations.
    • +
    • When the worker is ready to work on a new operation, it'll pop from the queue.
    • +
    • The operation is executed by the worker following the lifecycle described here.
    • +
    +

    State

    +

    An operation can have one of the Status below:

    +
      +
    • +

      Pending: When an operation is enqueued to be executed;

      +
    • +
    • +

      Evicted: When an operation is unknown or should not be executed By Maestro;

      +
    • +
    • +

      In Progress: Operation is currently being executed;

      +
    • +
    • +

      Finished: Operation finished; Execution succeeded;

      +
    • +
    • +

      Error: Operation finished. Execution failed;

      +
    • +
    • +

      Canceled: Operation was canceled by the user.

      +
    • +
    +

    State Machine

    +
    flowchart TD + pending(Pending) + in_progress(In Progress) + evicted(Evicted) + finished(Finished) + canceled(Canceled) + error(Error) + + pending --> in_progress; + pending --> evicted; + in_progress --> finished; + in_progress --> error; + in_progress --> canceled; +
    +

    Lifecycle

    +
    flowchart TD + finish((End)) + created("Created (Pending)") + evicted(Evicted) + error(Error) + finished(Finished) + canceled(Canceled) + should_execute{Should Execute?} + execution_succeeded{Success?} + err_kind{Error Kind} + execute[[Execute]] + rollback[[Rollback]] + canceled_by_user>Canceled By User] + created --> should_execute; + should_execute -- No --> evicted --> finish; + should_execute -- Yes --> execute; + execute --> execution_succeeded; + execute --> canceled_by_user --> rollback; + execution_succeeded -- Yes --> finished --> finish; + execution_succeeded -- No --> rollback; + rollback --> err_kind; + err_kind -- Canceled --> canceled --> finish; + err_kind -- Error --> error --> finish +
    +

    Lease

    +

    What is the operation lease

    +

    Lease is a mechanism to track the operations' execution process and check if we can rely on the current/future operation state.

    +

    Why Operations have it

    +

    Sometimes, an operation might get stuck. It could happen, for example, if the worker crashes during the execution of an operation. +To keep track of operations, we assign each operation a Lease. +This Lease has a TTL (time to live).

    +

    When the operation is being executed, this TTL is renewed each time the lease is about to expire while the operation is still in progress. +It'll be revoked once the operation is finished.

    +

    Troubleshooting

    +

    If an operation is fetched and the TTL expired (the TTL is in the past), the operation probably got stuck, +and we can't rely upon its current state, nor guarantee the required side effects of the execution or rollback have succeeded.

    +

    If an operation does not have a Lease, it either did not start at all (should be on the queue) or is already finished. +An Active Operation without a Lease is at an invalid state.

    +
    +

    Maestro do not have a self-healing routine yet for expired operations.

    +
    +

    Operation Lease Lifecycle

    +
    flowchart TD + finish_routine((End)) + start_routine((Start)) + finish((End)) + + operation_finished{Op. Finished?} + + to_execute[Operation to Execute] + + grant_lease[[Grant Lease]] + renew_lease[[Renew Lease]] + revoke_lease[[Revoke Lease]] + + wait_for_ttl(Wait for TTL) + execute(Execute Operation) + + to_execute --> grant_lease; + grant_lease --> renew_lease_routine; + grant_lease --> execute; + subgraph renew_lease_routine [ASYNC Renew Lease Routine] + start_routine --> wait_for_ttl; + wait_for_ttl --> operation_finished; + operation_finished -- Yes --> revoke_lease; + operation_finished -- No --> renew_lease --> wait_for_ttl; + revoke_lease --> finish_routine; + end + renew_lease_routine --> finish; +
    +

    Available Operations

    +

    For more details on how to use Maestro API, see this section.

    +

    Create Scheduler

    +
      +
    • Accessed through the POST /schedulers endpoint.
    • +
    • Creates the scheduler structure for receiving rooms;
    • +
    • The scheduler structure is validated, but the game room is not;
    • +
    • If operation fails, rollback feature will delete anything created related to scheduler.
    • +
    +

    Create New Scheduler Version

    +
      +
    • Accessed through the POST /schedulers/:schedulerName endpoint.
    • +
    • Creates a validation room (deleted right after). + If Maestro cannot receive pings (not forwarded) from validation game room, operation fails;
    • +
    • When this operation finishes successfully, it enqueues the "Switch Active Version".
    • +
    • If operation fails rollback routine deletes anything (except for the operation) created related to new version.
    • +
    +

    Switch Active Version

    +
      +
    • Accessed through PUT /schedulers/:schedulerName endpoint.
    • +
    • If it's a major change (anything under Scheduler.Spec changed), GRUs are replaced using scheduler maxSurge property;
    • +
    • If it's a minor change (Scheduler.Spec haven't changed), GRUs are not replaced;
    • +
    +

    Add Rooms

    +
      +
    • Accessed through POST /schedulers/:schedulerName/add-rooms endpoint.
    • +
    • If any room fail on creating, the operation fails and created rooms are deleted on rollback feature;
    • +
    +

    Remove Rooms

    +
      +
    • Accessed through POST /schedulers/:schedulerName/remove-rooms endpoint.
    • +
    • Remove rooms based on amount;
    • +
    • Rollback routine does nothing.
    • +
    +
    +
    + + + Last update: + 2023-08-07 + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/reference/Scheduler/index.html b/reference/Scheduler/index.html new file mode 100644 index 000000000..48a67a57e --- /dev/null +++ b/reference/Scheduler/index.html @@ -0,0 +1,772 @@ + + + + + + + + + + + +Scheduler - Maestro + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + +
    +
    +
    + +
    +
    +
    +
    +
    +

    Scheduler

    +

    What is

    +

    Objectively, a Scheduler is a recipe, and contains all the information for creating +game rooms and forwarding rooms information to other services.

    +

    Also, it's the core entity for operating game rooms in +Maestro, since all game rooms are related to a specific scheduler.

    +

    A game can have multiple schedulers, and each scheduler can have multiple game rooms up and running.

    +
    flowchart TD + etc1("...") + etc2("...") + etc3("...") + + subgraph game [Game] + subgraph scheduler_1 [Scheduler 1] + gameRoom1("Game Room (host:port)") + gameRoom2("Game Room (host:port)") + etc1 + end + subgraph scheduler_2 [Scheduler 2] + gameRoom3("Game Room (host:port)") + gameRoom4("Game Room (host:port)") + etc2 + end + etc3 + end +
    +

    How to Operate

    +

    To directly interact with a Scheduler, the user enqueues operations using the management API.

    +

    These operations are responsible for creating a scheduler or newer versions, switching an active version, adding/removing rooms, etc.

    +

    Because of that, everything that happens for a Scheduler can be tracked based on history of the operations executed for +that scheduler and the order they were executed.

    +

    Versions

    +

    A Scheduler have versions, and each time we want to change scheduler properties, we end-up creating a new version to it.

    +
    +

    Versions are directly calculated by Maestro, not sent by the client.

    +

    The client can only switch the active version based on the versions created by Maestro. To switch to an specific version, see this.

    +
    +

    This version can either be a Minor or a Major change.

    +
      +
    • Major version: Replace the game rooms in a switch active version event.
    • +
    • Basically, any change under spec, that are related to the game room directly.
    • +
    • Minor version: Don't replace game rooms in a switch active version event.
    • +
    • Info such as MaxSurge or forwarders, that do not impact the game rooms.
    • +
    +

    Example

    +

    A complete Scheduler looks like this:

    +
    +YAML +
    +
    +name: scheduler-test
    +game: game-test
    +state: creating
    +portRange:
    +  start: 40000
    +  end: 60000
    +maxSurge: 30%
    +spec:
    +  terminationGracePeriod: '100'
    +  containers:
    +    - name: alpine
    +      image: alpine
    +      imagePullPolicy: IfNotPresent
    +      command:
    +        - /bin/sh
    +        - '-c'
    +        - >-
    +          apk add curl && while true; do curl --request POST
    +          {{maestro-rooms-api}}/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping
    +          --data-raw '{"status": "ready","timestamp": "12312312313"}' && sleep
    +          1; done
    +      environment:
    +        - name: env-var-name
    +          value: env-var-value
    +        - name: env-var-field-ref
    +          valueFrom:
    +            fieldRef:
    +              fieldPath: path
    +        - name: secret-var-name
    +          valueFrom:
    +            secretKeyRef:
    +              name: secret-name
    +              key: secret-key
    +      requests:
    +        memory: 20Mi
    +        cpu: 100m
    +      limits:
    +        memory: 200Mi
    +        cpu: 200m
    +      ports:
    +        - name: port-name
    +          protocol: tcp
    +          port: 12345
    +  toleration: maestro
    +  affinity: maestro-dedicated
    +forwarders:
    +  - name: test
    +    enable: true
    +    type: gRPC
    +    address: {{host}}
    +    options:
    +      timeout: '1000'
    +      metadata: {}
    +autoscaling:
    +  enabled: true
    +  min: 1
    +  max: 10
    +  policy:
    +    type: roomOccupancy
    +    parameters:
    +      ...
    +      // Will vary according to the policy type.
    +        
    +
    +
    +
    +JSON +
    +{
    +    "name": "scheduler-test",
    +    "game": "game-test",
    +    "portRange": {
    +        "start": 40000,
    +        "end": 60000
    +    },
    +    "annotations":{
    +      "imageregistry":"https://dockerhub.com/"    
    +    },
    +    "maxSurge": "30%",
    +    "spec": {
    +        "terminationGracePeriod": '100',
    +        "containers": [
    +            {
    +                "name": "alpine",
    +                "image": "alpine",
    +                "imagePullPolicy": "IfNotPresent",
    +                "command": [
    +                    "/bin/sh",
    +                    "-c",
    +                    "apk add curl && while true; do curl --request POST {{maestro-rooms-api}}/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping --data-raw '{"status": "ready","timestamp": "12312312313"}' && sleep 1; done"
    +                ],
    +                "environment": [
    +                    {
    +                        "name": "env-var-name",
    +                        "value": env-var-value
    +                    },
    +                    {
    +                        "name": "env-var-field-ref",
    +                        "valueFrom": {
    +                            "fieldRef": {
    +                                "fieldPath": "path"
    +                            }
    +                        }
    +                    },
    +                    {
    +                        "name": "secret-var-name",
    +                        "valueFrom": {
    +                            "secretKeyRef": {
    +                                "name": "secret-name",
    +                                "key": "secret-key"
    +                            }
    +                        }
    +                    }
    +                ],
    +                "requests": {
    +                    "memory": "20Mi",
    +                    "cpu": "100m"
    +                },
    +                "limits": {
    +                    "memory": "200Mi",
    +                    "cpu": "200m"
    +                },
    +                "ports": [
    +                    {
    +                        "name": "port-name",
    +                        "protocol": "tcp",
    +                        "port": 12345,
    +                    }
    +                ]
    +            }
    +        ],
    +        "toleration": "maestro",
    +        "affinity": "maestro-dedicated"
    +    },
    +    "forwarders": [
    +        {
    +            "name": "test",
    +            "enable": true,
    +            "type": "gRPC",
    +            "address": "{{host}}",
    +            "options": {
    +                "timeout": '1000',
    +                "metadata": {}
    +            }
    +        }
    +    ]
    +    "autoscaling": {
    +      "enabled": true,
    +      "min": 10,
    +      "max": 300,
    +      "policy": {
    +        "type": "roomOccupancy",
    +        "parameters": {
    +          ...
    +          // Will vary according to the policy type.
    +        }
    +      }
    +    }
    +}
    +    
    +
    +
    +

    Structure

    +

    The scheduler is represented as:

    +
    name: String
    +game: String
    +createdAt: Timestamp
    +maxSurge: String | Integer
    +portRange: PortRange
    +forwarders: Forwarders
    +autoscaling: Autoscaling
    +spec: Spec
    +annotation: Map
    +
    +
      +
    • Name: Scheduler name. This name is unique and will be the same name used for the kubernetes namespace. It's + offered by the user in the creation and cannot be changed in the future. It's used as an ID for the scheduler;
    • +
    • game: Name of the game which will use the scheduler. The game is important since it's common to use multiple + schedulers for a specific game. So you probably will want to fetch all the schedulers from a game;
    • +
    • createdAt: Info about the scheduler creation time. Cannot be altered by the user;
    • +
    • maxSurge: Value represented in percentage (%) or Integer. Offered by the user on the scheduler creation. Can be + altered anytime. Used by Maestro to replace pods. Ex: If maxSurge = 3, + the Switch Active Version (Major change) operation will replace pods from 3 to + 3;
    • +
    • portRange: Range of ports that can be used by Maestro to create GRUs for the specified scheduler. Can be altered + by the user anytime. More info here;
    • +
    • forwarders: Maestro can pass ahead info sent by the game rooms, such as Ping (Ready, Occupied, Terminating...), + player and rooms events. The receivers can be configured here. More info here;
    • +
    • autoscaling: Optional autoscaling policy configuration. More info here;
    • +
    • spec: Specifications about the game rooms managed by the scheduler, such as containers and environment variables + used by them, limits and images. More info here.
    • +
    • annotations: Allows annotations for the scheduler's game room. Know more about annotations on + Kubernetes here
    • +
    +

    PortRange

    +

    The PortRange is used to select a random port for a GRU between start and end.

    +
      +
    • PortRange cannot be null or empty
    • +
    +
    +

    Check if the ports offered are available and can be used. +A firewall rule, for example, can affect the connection to the Game Room in the specific port.

    +
    +

    It is represented as:

    +
    start: Integer
    +end: Integer
    +
    +

    Forwarders

    +

    Forwarders are configured to pass ahead info offered by the game rooms to Maestro. +More than one forwarder can be configured for a scheduler.

    +
      +
    • Can be an empty list.
    • +
    +

    It is represented as:

    +
    - name: String
    +  enable: Bool
    +  type: String
    +  address: String
    +  options:
    +    timeout: Integer
    +    metadata: Object
    +
    +
      +
    • name: Name of the forwarder. Used only for reference (visibility and recognition);
    • +
    • enable: Toggle to easily enable/disable the forwarder;
    • +
    • type: Type of the forwarder. Right now, only accepts gRPC;
    • +
    • address: Address used by the scheduler to forward events. E.g. 'api.example.com:8080';
    • +
    • options: Optional parameters.
        +
      • timeout: Timeout value for an event to successfully be forwarded;
      • +
      • metadata: Object that can contain any useful information for the game team. Will be forwarded with the events from Maestro.
      • +
      +
    • +
    +

    Spec

    +

    Contains vital information about the game rooms. Be aware that the spec is the most related aspect of the scheduler interacting with the runtime. +It might be important to understand the basics of kubernetes before deep diving into the Maestro scheduler itself.

    +
      +
    • Cannot be empty or null.
    • +
    +

    It is represented as:

    +
    terminationGracePeriod: Integer
    +containers: Containers
    +toleration: String
    +affinity: String
    +
    +
      +
    • terminationGracePeriod: Required integer value. Must be greater than 0. When a game room receives the signal to be deleted, it will take this value (in milliseconds) to be completely deleted;
    • +
    • containers: Contain the information about the game room, such as the image and environment variables. This is a list since the game room can be compounded by +more than two containers;
    • +
    • toleration: Kubernetes specific. Represents the toleration value for all GRUs on the scheduler. See more;
    • +
    • affinity: Kubernetes specific. Represents the affinity value for all GRUs on the scheduler. See more.
    • +
    +

    Containers

    +

    Contain the information about the game room, such as the image and environment variables.

    +
      +
    • Cannot be an empty list.
    • +
    +

    It is represented as:

    +
    - name: String
    +  image: String
    +  imagePullPolicy: String
    +  command: Array<String>
    +  environment: EnvironemntVariables
    +  requests:
    +    memory: String
    +    cpu: String
    +  limits:
    +    memory: String
    +    cpu: String
    +  ports: Ports
    +
    +
      +
    • name: Name of the container, used only for reference and can be changed by the user anytime.
    • +
    • image: Docker image to be used for the container. Represented as a link.
    • +
    • imagePullPolicy: Kubernetes specific. See here for reference.
    • +
    • command: List of commands that should be executed by the image on execution. E.g. here.
    • +
    • environment: List of environment variables. See here.
    • +
    • requests and limits: Kubernetes specific. See here.
    • +
    • ports: The list of ports your game server exposes. See here.
    • +
    +

    Environment Variables

    +

    List of environment variables used by the GRU.

    +
      +
    • Can be an empty list.
    • +
    +

    There are, now, 3 supported formats by Maestro:

    +
      +
    • Simple name-value format.
    • +
    +
    +With Name/Value +
    +
    +- name: String
    +  value: String
    +
    +
    +
      +
    • Exposing pod fields (kubernetes specific). See here.
    • +
    +
    +With FieldRef/FieldPath +
    +
    +- name: String
    +  valueFrom:
    +    fieldRef:
    +      fieldPath: String
    +
    +
    +
      +
    • Secrets as environment variables (kubernetes specific). See here.
    • +
    +
    +With Secret +
    +
    +- name: String
    +  valueFrom:
    +    secretKeyRef:
    +      name: String
    +      key: String
    +
    +
    +

    Ports

    +

    The list of ports your game server exposes.

    +
      +
    • Can be an empty list.
    • +
    +

    It is represented as:

    +
    - name: String
    +  protocol: String
    +  port: Integer
    +
    +
      +
    • name: Name of the port. Facilitates on recognition;
    • +
    • protocol: Port protocol. Can be UDP, TCP or SCTP.;
    • +
    • port: The port exposed.
    • +
    +
    +
    + + + Last update: + 2023-08-07 + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/reference/apidocs.json b/reference/apidocs.json new file mode 100644 index 000000000..1e3f5854c --- /dev/null +++ b/reference/apidocs.json @@ -0,0 +1,1875 @@ +{ + "swagger": "2.0", + "info": { + "title": "Maestro", + "version": "version not set" + }, + "tags": [ + { + "name": "OperationsService" + }, + { + "name": "RoomsService" + }, + { + "name": "SchedulersService" + } + ], + "schemes": [ + "http", + "https" + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/scheduler/{schedulerName}/rooms/{roomName}/address": { + "get": { + "summary": "Gets room public addresses.", + "operationId": "RoomsService_GetRoomAddress", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetRoomAddressResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Target scheduler name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "roomName", + "description": "Target room name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "RoomsService" + ] + } + }, + "/scheduler/{schedulerName}/rooms/{roomName}/ping": { + "put": { + "summary": "Updates a game room with ping data.", + "operationId": "RoomsService_UpdateRoomWithPing", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateRoomWithPingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Target scheduler name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "roomName", + "description": "Target room name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "description": "Target room metadata." + }, + "status": { + "type": "string", + "description": "Indicates the room status." + }, + "timestamp": { + "type": "string", + "format": "int64", + "description": "Timestamp of the ping event." + } + }, + "description": "The ping request." + } + } + ], + "tags": [ + "RoomsService" + ] + } + }, + "/scheduler/{schedulerName}/rooms/{roomName}/playerevent": { + "post": { + "summary": "Forward the incoming player event.", + "operationId": "RoomsService_ForwardPlayerEvent", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ForwardPlayerEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Target scheduler name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "roomName", + "description": "Target room name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "description": "Player event metadata." + }, + "event": { + "type": "string", + "description": "The player event name." + }, + "timestamp": { + "type": "string", + "format": "int64", + "description": "Timestamp of the player event." + } + }, + "description": "The player event request." + } + } + ], + "tags": [ + "RoomsService" + ] + } + }, + "/scheduler/{schedulerName}/rooms/{roomName}/roomevent": { + "post": { + "summary": "Forward the incoming room event.", + "operationId": "RoomsService_ForwardRoomEvent", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ForwardRoomEventResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Target scheduler name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "roomName", + "description": "Target room name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "description": "Room event metadata." + }, + "event": { + "type": "string", + "description": "The room event name." + }, + "timestamp": { + "type": "string", + "format": "int64", + "description": "Timestamp of the room event." + } + }, + "description": "The room event request." + } + } + ], + "tags": [ + "RoomsService" + ] + } + }, + "/scheduler/{schedulerName}/rooms/{roomName}/status": { + "put": { + "summary": "Endpoint created for maintaining compatibility with previous maestro version (v9). It is currently deprecated.", + "operationId": "RoomsService_UpdateRoomStatus", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1UpdateRoomStatusResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Target scheduler name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "roomName", + "description": "Target room name.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "metadata": { + "type": "object", + "description": "Status update metadata." + }, + "status": { + "type": "string", + "description": "The room status." + }, + "timestamp": { + "type": "string", + "format": "int64", + "description": "Timestamp of the status update." + } + }, + "description": "The player event request." + } + } + ], + "tags": [ + "RoomsService" + ] + } + }, + "/schedulers": { + "get": { + "summary": "Lists all schedulers.", + "operationId": "SchedulersService_ListSchedulers", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ListSchedulersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "Unique identifier for the scheduler.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "game", + "description": "Game the new scheduler will be part of.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "version", + "description": "Version to for the scheduler.", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "SchedulersService" + ] + }, + "post": { + "summary": "Create a scheduler.", + "operationId": "SchedulersService_CreateScheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1CreateSchedulerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "Scheduler is the struct that defines a maestro scheduler.", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1CreateSchedulerRequest" + } + } + ], + "tags": [ + "SchedulersService" + ] + } + }, + "/schedulers/info": { + "get": { + "summary": "List Scheduler and Game Rooms info by Game", + "operationId": "SchedulersService_GetSchedulersInfo", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetSchedulersInfoResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "game", + "description": "Game name to filter schedulers", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "SchedulersService" + ] + } + }, + "/schedulers/{name}": { + "post": { + "summary": "Creates new scheduler version and switch it to active version.", + "operationId": "SchedulersService_NewSchedulerVersion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1NewSchedulerVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "Unique identifier for the scheduler.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "game": { + "type": "string", + "description": "Game the new scheduler will be part of." + }, + "spec": { + "$ref": "#/definitions/v1Spec", + "description": "The spec object defines all the game room container configurations and spec." + }, + "portRange": { + "$ref": "#/definitions/v1PortRange", + "description": "The port range object describes what is the port range used to allocate game rooms." + }, + "maxSurge": { + "type": "string", + "title": "The max surge of new rooms, used to scale and update" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "description": "The rooms replicas is the desired number of rooms that maestro should keep available." + }, + "autoscaling": { + "$ref": "#/definitions/v1Autoscaling", + "title": "The autoscaling defines the autoscaling and its policy to be followed" + }, + "forwarders": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Forwarder" + }, + "title": "List of Scheduler forwarders" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "New annotations for scheduler" + } + }, + "description": "Scheduler is the struct that defines a maestro scheduler." + } + } + ], + "tags": [ + "SchedulersService" + ] + }, + "patch": { + "summary": "Patch a scheduler and switch it to active version.", + "operationId": "SchedulersService_PatchScheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1PatchSchedulerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "description": "Unique identifier for the scheduler.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "spec": { + "$ref": "#/definitions/v1OptionalSpec", + "description": "The spec object defines all the game room container configurations and spec." + }, + "portRange": { + "$ref": "#/definitions/v1PortRange", + "description": "The port range object describes what is the port range used to allocate game rooms." + }, + "maxSurge": { + "type": "string", + "title": "The max surge of new rooms, used to scale and update" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "title": "Rooms Replicas is the desired number of rooms" + }, + "autoscaling": { + "$ref": "#/definitions/v1OptionalAutoscaling", + "title": "Autoscaling rules to the scheduler" + }, + "forwarders": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Forwarder" + }, + "title": "List of Scheduler forwarders" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Annotations declaration for the scheduler" + } + }, + "description": "PatchSchedulerRequest is the struct that defines a partial update of a maestro scheduler." + } + } + ], + "tags": [ + "SchedulersService" + ] + } + }, + "/schedulers/{schedulerName}": { + "get": { + "summary": "Get Specific Scheduler by name", + "operationId": "SchedulersService_GetScheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetSchedulerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name where the rooms will be added.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "version", + "description": "Scheduler version to be queried (query param)", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "SchedulersService" + ] + }, + "delete": { + "summary": "List Scheduler and Game Rooms info by Game", + "operationId": "SchedulersService_DeleteScheduler", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1DeleteSchedulerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name to be deleted\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "SchedulersService" + ] + }, + "put": { + "summary": "Switch Active Version to Scheduler", + "operationId": "SchedulersService_SwitchActiveVersion", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1SwitchActiveVersionResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler Name", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "version": { + "type": "string", + "title": "Version that will be activate in Scheduler" + } + }, + "title": "Switch Active Version Request" + } + } + ], + "tags": [ + "SchedulersService" + ] + } + }, + "/schedulers/{schedulerName}/operations": { + "get": { + "summary": "List operations based on a scheduler.", + "operationId": "OperationsService_ListOperations", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1ListOperationsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name that the operations are part of.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "orderBy", + "description": "Optional parameter for enabling operations sorting.\nGeneral `order_by` string syntax: \u003cfield\u003e (\u003casc|desc\u003e)\nDefault value is `created_at desc`\nNOTE: On http protocol, this operates as a query parameter.", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "stage", + "description": "Required parameter for enabling filter by operation execution stage, can be one of [pending, active, final].", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "page", + "description": "Parameter for pagination, indicates the page number.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "perPage", + "description": "Optional parameter for pagination, indicates the number of items per page.", + "in": "query", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "tags": [ + "OperationsService" + ] + } + }, + "/schedulers/{schedulerName}/operations/{operationId}": { + "get": { + "summary": "Get operation based on scheduler name and operation ID", + "operationId": "OperationsService_GetOperation", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetOperationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name that the operations are part of.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "operationId", + "description": "ID of the requested operation.\nNOTE: On http protocol, this operates as a path param.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "OperationsService" + ] + } + }, + "/schedulers/{schedulerName}/operations/{operationId}/cancel": { + "post": { + "summary": "Cancel operation based on scheduler name and operation ID", + "operationId": "OperationsService_CancelOperation", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1CancelOperationResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name where the operation relies on.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + }, + { + "name": "operationId", + "description": "Operation identifier to be canceled.", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "OperationsService" + ] + } + }, + "/schedulers/{schedulerName}/versions": { + "get": { + "summary": "Given a Scheduler, returns it's versions", + "operationId": "SchedulersService_GetSchedulerVersions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetSchedulerVersionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "schedulerName", + "description": "Scheduler name whose versions the client wants to fetch", + "in": "path", + "required": true, + "type": "string", + "pattern": "[^/]+" + } + ], + "tags": [ + "SchedulersService" + ] + } + } + }, + "definitions": { + "apiv1Operation": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the operation." + }, + "status": { + "type": "string", + "description": "Current status of the operation.\nTODO(gabrielcorado): change to enum." + }, + "definitionName": { + "type": "string", + "description": "Name of the operation being executed." + }, + "lease": { + "$ref": "#/definitions/v1Lease", + "description": "Operation lease. This is an optional field since not all operations have a lease." + }, + "schedulerName": { + "type": "string", + "description": "Scheduler identifier that the operation is from." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Time the operation was created." + }, + "input": { + "type": "object", + "description": "Input the data that was sent by client." + }, + "executionHistory": { + "type": "array", + "items": { + "$ref": "#/definitions/v1OperationEvent" + }, + "description": "ExecutionHistory is the execution details filled by Maestro." + } + }, + "title": "The operation object representation" + }, + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string" + } + }, + "additionalProperties": {} + }, + "protobufNullValue": { + "type": "string", + "enum": [ + "NULL_VALUE" + ], + "default": "NULL_VALUE", + "description": "`NullValue` is a singleton enumeration to represent the null value for the\n`Value` type union.\n\n The JSON representation for `NullValue` is JSON `null`.\n\n - NULL_VALUE: Null value." + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "$ref": "#/definitions/protobufAny" + } + } + } + }, + "v1Autoscaling": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable flag to autoscaling feature" + }, + "min": { + "type": "integer", + "format": "int32", + "title": "Min is the minimum number of game rooms that a scheduler should have" + }, + "max": { + "type": "integer", + "format": "int32", + "title": "Max is the maximum number of game rooms that a scheduler should have" + }, + "policy": { + "$ref": "#/definitions/v1AutoscalingPolicy", + "title": "Policy is the autoscaling policy that scheduler should follow" + } + }, + "title": "Autoscaling struct representation" + }, + "v1AutoscalingInfo": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable flag to autoscaling feature" + }, + "min": { + "type": "integer", + "format": "int32", + "title": "Min is the minimum number of game rooms that a scheduler should have" + }, + "max": { + "type": "integer", + "format": "int32", + "title": "Max is the maximum number of game rooms that a scheduler should have" + } + }, + "title": "Autoscaling Info for schedulerInfo message" + }, + "v1AutoscalingPolicy": { + "type": "object", + "properties": { + "type": { + "type": "string", + "title": "Type is the policy type to the scheduler" + }, + "parameters": { + "$ref": "#/definitions/v1PolicyParameters", + "title": "Parameters is the autoscaling arguments to guide the policy execution" + } + }, + "title": "AutoscalingPolicy object representation" + }, + "v1CancelOperationResponse": { + "type": "object", + "description": "Empty response of the cancel operation request." + }, + "v1Container": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the container." + }, + "image": { + "type": "string", + "description": "Image address ." + }, + "imagePullPolicy": { + "type": "string", + "description": "Image pull policy: Always, Never and IfNotExists." + }, + "command": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Container command to be called when container is instantiated." + }, + "environment": { + "type": "array", + "items": { + "$ref": "#/definitions/v1ContainerEnvironment" + }, + "description": "Container environment variables." + }, + "requests": { + "$ref": "#/definitions/v1ContainerResources", + "description": "Container resources request (cpu/memory)." + }, + "limits": { + "$ref": "#/definitions/v1ContainerResources", + "description": "Container resources limits (cpu/memory)." + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1ContainerPort" + }, + "description": "Container exposed ports definitions." + } + }, + "description": "Container is the struct that defines a game room container configuration." + }, + "v1ContainerEnvironment": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Container environment variable name." + }, + "value": { + "type": "string", + "description": "Container environment variable value." + }, + "valueFrom": { + "$ref": "#/definitions/v1ContainerEnvironmentValueFrom", + "description": "Source for the environment variable's value. Cannot be used if value is not empty." + } + }, + "description": "Container environment variables." + }, + "v1ContainerEnvironmentValueFrom": { + "type": "object", + "properties": { + "fieldRef": { + "$ref": "#/definitions/v1ContainerEnvironmentValueFromFieldRef", + "description": "Container environment variable name using field reference, supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + }, + "secretKeyRef": { + "$ref": "#/definitions/v1ContainerEnvironmentValueFromSecretKeyRef", + "description": "Container environment variable value using a secret key reference contained in the namespace." + } + }, + "title": "Container environment ValueFrom possible values" + }, + "v1ContainerEnvironmentValueFromFieldRef": { + "type": "object", + "properties": { + "fieldPath": { + "type": "string", + "description": "The field path of the pod: supports metadata.name, metadata.namespace, `metadata.labels['\u003cKEY\u003e']`, `metadata.annotations['\u003cKEY\u003e']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + } + }, + "description": "Container environment valueFrom using field reference." + }, + "v1ContainerEnvironmentValueFromSecretKeyRef": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the secret contained in the scheduler namespace." + }, + "key": { + "type": "string", + "description": "Secret key." + } + }, + "description": "Container environment valueFrom using secret key reference." + }, + "v1ContainerPort": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the exposed port." + }, + "protocol": { + "type": "string", + "description": "Protocol used to expose the port (TCP, UDP, SCTP)." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port number used." + }, + "hostPort": { + "type": "integer", + "format": "int32", + "description": "Optional container host port." + } + }, + "description": "Container exposed port definition." + }, + "v1ContainerResources": { + "type": "object", + "properties": { + "memory": { + "type": "string", + "description": "Container memory amount." + }, + "cpu": { + "type": "string", + "description": "Container cpu amount." + } + }, + "description": "Container resources (cpu/memory) (request and limits)." + }, + "v1CreateSchedulerRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Unique identifier for the scheduler." + }, + "game": { + "type": "string", + "description": "Game the new scheduler will be part of." + }, + "spec": { + "$ref": "#/definitions/v1Spec", + "description": "The spec object defines all the game room container configurations and spec of the scheduler." + }, + "portRange": { + "$ref": "#/definitions/v1PortRange", + "description": "The port range object describes what is the port range used to allocate game rooms." + }, + "maxSurge": { + "type": "string", + "title": "The max surge of new rooms, used to scale and update" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "description": "The rooms replicas defines the desired number of Game Rooms in a scheduler." + }, + "autoscaling": { + "$ref": "#/definitions/v1Autoscaling", + "title": "The autoscaling defines the autoscaling and its policy to be followed" + }, + "forwarders": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Forwarder" + }, + "title": "List of Scheduler forwarders" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "Add annotations for scheduler" + } + }, + "description": "Scheduler is the struct that defines a maestro scheduler." + }, + "v1CreateSchedulerResponse": { + "type": "object", + "properties": { + "scheduler": { + "$ref": "#/definitions/v1Scheduler", + "description": "Scheduler that was created." + } + }, + "description": "Response for the create scheduler." + }, + "v1DeleteSchedulerResponse": { + "type": "object", + "properties": { + "operationId": { + "type": "string", + "description": "Delete scheduler operation ID." + } + }, + "title": "Delete scheduler payload" + }, + "v1ForwardPlayerEventResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "title": "Flag indicating if the forward process was successful or not" + }, + "message": { + "type": "string", + "title": "Message from forwarding response (currently always blank)" + } + }, + "description": "The player event response." + }, + "v1ForwardRoomEventResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "title": "Flag indicating if the forward process was successful or not" + }, + "message": { + "type": "string", + "title": "Message from forwarding response (currently always blank)" + } + }, + "description": "The room event response." + }, + "v1Forwarder": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Forwarder name used to identify it. Must be unique within the scheduler" + }, + "enable": { + "type": "boolean", + "title": "Defines if the forwarder is going to receive events or not" + }, + "type": { + "type": "string", + "title": "Forwarder type" + }, + "address": { + "type": "string", + "description": "Forwarder gRPC service address." + }, + "options": { + "$ref": "#/definitions/v1ForwarderOptions", + "title": "Forwarder Options" + } + }, + "description": "Forwarder definitions." + }, + "v1ForwarderOptions": { + "type": "object", + "properties": { + "timeout": { + "type": "string", + "format": "int64", + "description": "Timeout of a request in milliseconds." + }, + "metadata": { + "type": "object", + "title": "Additional information" + } + }, + "description": "Forwarder Options definitions." + }, + "v1GetOperationResponse": { + "type": "object", + "properties": { + "operation": { + "$ref": "#/definitions/apiv1Operation", + "description": "Operation requested." + } + }, + "title": "The get operation route response/reply" + }, + "v1GetRoomAddressResponse": { + "type": "object", + "properties": { + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Port" + }, + "description": "List of game room ports." + }, + "host": { + "type": "string", + "description": "Game room host." + }, + "ipv6Label": { + "type": "string", + "description": "Game room ipv6_label, this field is deprecated and only exists for maestro v9 contract compatibility reasons." + } + }, + "description": "The get room address response." + }, + "v1GetSchedulerResponse": { + "type": "object", + "properties": { + "scheduler": { + "$ref": "#/definitions/v1Scheduler", + "description": "List of schedulers fetched." + } + }, + "description": "The list schedulers response message." + }, + "v1GetSchedulerVersionsResponse": { + "type": "object", + "properties": { + "versions": { + "type": "array", + "items": { + "$ref": "#/definitions/v1SchedulerVersion" + }, + "title": "List of versions for an scheduler" + } + }, + "title": "Get Scheduler Versions payload" + }, + "v1GetSchedulersInfoResponse": { + "type": "object", + "properties": { + "schedulers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1SchedulerInfo" + }, + "description": "List of schedulers fetched." + } + }, + "title": "List Scheduler and Game Rooms Info Response" + }, + "v1Lease": { + "type": "object", + "properties": { + "ttl": { + "type": "string", + "description": "Lease time to live in RFC3999 format UTC. if the current time is greater than this value,\nthe lease is probably expired." + } + }, + "title": "The operation lease object representation" + }, + "v1ListOperationItem": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the operation." + }, + "status": { + "type": "string", + "description": "Current status of the operation.\nTODO(gabrielcorado): change to enum." + }, + "definitionName": { + "type": "string", + "description": "Name of the operation being executed." + }, + "lease": { + "$ref": "#/definitions/v1Lease", + "description": "Operation lease. This is an optional field since not all operations have a lease." + }, + "schedulerName": { + "type": "string", + "description": "Scheduler identifier that the operation is from." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Time the operation was created." + } + }, + "description": "The List Operation Item object representation." + }, + "v1ListOperationsResponse": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int64", + "description": "Parameter for pagination." + }, + "pageSize": { + "type": "integer", + "format": "int64", + "description": "Optional parameter for pagination." + }, + "total": { + "type": "integer", + "format": "int64", + "description": "Optional parameter for total." + }, + "operations": { + "type": "array", + "items": { + "$ref": "#/definitions/v1ListOperationItem" + }, + "description": "List of the scheduler finished (with error or not) operations." + } + }, + "title": "The list operation route response/reply\nThere's a list for each operation major status" + }, + "v1ListSchedulersResponse": { + "type": "object", + "properties": { + "schedulers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1SchedulerWithoutSpec" + }, + "description": "List of schedulers fetched." + } + }, + "description": "The list schedulers response message." + }, + "v1NewSchedulerVersionResponse": { + "type": "object", + "properties": { + "operationId": { + "type": "string", + "description": "Operation ID, further this id can be used to consult its state." + } + }, + "description": "Update schedule operation response payload." + }, + "v1OperationEvent": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "DateTime is the time when the event occurred." + }, + "event": { + "type": "string", + "description": "Event describe what happened in this event." + } + }, + "description": "OperationEvent object represent an execution event." + }, + "v1OptionalAutoscaling": { + "type": "object", + "properties": { + "enabled": { + "type": "boolean", + "title": "Enable flag to autoscaling feature" + }, + "min": { + "type": "integer", + "format": "int32", + "title": "Min is the minimum number of game rooms that a scheduler should have" + }, + "max": { + "type": "integer", + "format": "int32", + "title": "Max is the maximum number of game rooms that a scheduler should have" + }, + "policy": { + "$ref": "#/definitions/v1AutoscalingPolicy", + "title": "Policy is the autoscaling policy that scheduler should follow" + } + }, + "title": "Autoscaling struct representation" + }, + "v1OptionalContainer": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name of the container." + }, + "image": { + "type": "string", + "description": "Image address." + }, + "imagePullPolicy": { + "type": "string", + "description": "Image pull policy: Always, Never and IfNotExists." + }, + "command": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Container command to be called when container is instantiated." + }, + "environment": { + "type": "array", + "items": { + "$ref": "#/definitions/v1ContainerEnvironment" + }, + "description": "Container environment variables." + }, + "requests": { + "$ref": "#/definitions/v1ContainerResources", + "description": "Container resources request (cpu/memory)." + }, + "limits": { + "$ref": "#/definitions/v1ContainerResources", + "description": "Container resources limits (cpu/memory)." + }, + "ports": { + "type": "array", + "items": { + "$ref": "#/definitions/v1ContainerPort" + }, + "description": "Container exposed ports definitions." + } + }, + "description": "OptionalContainer is the struct that defines a game room container configuration.\nThis message is used to patch container configuration." + }, + "v1OptionalSpec": { + "type": "object", + "properties": { + "terminationGracePeriod": { + "type": "string", + "description": "The game room termination grace period." + }, + "containers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1OptionalContainer" + }, + "description": "The container object array defines all the game room container configurations." + }, + "toleration": { + "type": "string", + "description": "Runtime game room toleration configuration." + }, + "affinity": { + "type": "string", + "description": "Runtime game room affinity configuration." + } + }, + "description": "OptionalSpec is the specifications of the scheduler, with relevant info about what is being used.\nThis message is used to patch spec configuration." + }, + "v1PatchSchedulerResponse": { + "type": "object", + "properties": { + "operationId": { + "type": "string", + "description": "Operation ID, further this id can be used to consult its state." + } + }, + "description": "PatchSchedulerResponse have the operation response id that represents the operation creted to this change." + }, + "v1PolicyParameters": { + "type": "object", + "properties": { + "roomOccupancy": { + "$ref": "#/definitions/v1RoomOccupancy", + "title": "RoomOccupancy is the policy parameters to execute rooms occupancy policy" + } + }, + "title": "PolicyParameters object representation" + }, + "v1Port": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Port name." + }, + "protocol": { + "type": "string", + "description": "Port protocol (tcp, udp)." + }, + "port": { + "type": "integer", + "format": "int32", + "description": "Port number." + } + }, + "description": "Port represents a game room port." + }, + "v1PortRange": { + "type": "object", + "properties": { + "start": { + "type": "integer", + "format": "int32", + "description": "Range start, it is inclusive." + }, + "end": { + "type": "integer", + "format": "int32", + "description": "Range end, it is exclusive." + } + }, + "description": "Port range is the range definition that the rooms will use. If a scheduler\ndefines its range as 0-1000 (start-end), it is guarantee that all rooms be\nwithin this range." + }, + "v1RoomOccupancy": { + "type": "object", + "properties": { + "readyTarget": { + "type": "number", + "format": "float", + "title": "ReadyTarget represents the number of rooms ready rate that the scheduler should keep" + } + }, + "title": "RoomOccupancy optional policy parameter" + }, + "v1Scheduler": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is an unique identifier for the scheduler." + }, + "game": { + "type": "string", + "description": "Game is the \"scope\" where the scheduler will be placed. It is required, and\ngames name are unique." + }, + "state": { + "type": "string", + "description": "Current state of the scheduler." + }, + "portRange": { + "$ref": "#/definitions/v1PortRange", + "description": "Port range for the scheduler rooms." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Time the scheduler was created." + }, + "maxSurge": { + "type": "string", + "title": "Max surge of rooms" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "title": "Rooms Replicas is the desired number of rooms" + }, + "spec": { + "$ref": "#/definitions/v1Spec", + "title": "GameRoom spec" + }, + "autoscaling": { + "$ref": "#/definitions/v1Autoscaling", + "title": "Autoscaling rules to the scheduler" + }, + "forwarders": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Forwarder" + }, + "title": "List of Scheduler forwarders" + }, + "annotations": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "List with annotations" + } + }, + "description": "Scheduler definition." + }, + "v1SchedulerInfo": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Scheduler name." + }, + "game": { + "type": "string", + "description": "Scheduler game." + }, + "state": { + "type": "string", + "title": "Scheduler state" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "description": "Scheduler room replicas." + }, + "roomsReady": { + "type": "integer", + "format": "int32", + "description": "Number of game rooms in Ready state." + }, + "roomsOccupied": { + "type": "integer", + "format": "int32", + "description": "Number of game rooms in Occupied state." + }, + "roomsPending": { + "type": "integer", + "format": "int32", + "description": "Number of game rooms in Pending state." + }, + "roomsTerminating": { + "type": "integer", + "format": "int32", + "description": "Number of game rooms in Terminating state." + }, + "autoscaling": { + "$ref": "#/definitions/v1AutoscalingInfo", + "title": "Autoscaling info (min, max, enabled)" + } + }, + "title": "Scheduler Info" + }, + "v1SchedulerVersion": { + "type": "object", + "properties": { + "version": { + "type": "string", + "title": "Specific version" + }, + "isActive": { + "type": "boolean", + "title": "Flag indicating if the version is active or not" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "title": "Specifies when the version has been created" + } + }, + "title": "Represents the version of a Scheduler" + }, + "v1SchedulerWithoutSpec": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Name is an unique identifier for the scheduler." + }, + "game": { + "type": "string", + "description": "Game is the \"scope\" where the scheduler will be placed. It is required, and\ngames name are unique." + }, + "state": { + "type": "string", + "description": "Current state of the scheduler." + }, + "version": { + "type": "string", + "description": "Scheduler current version." + }, + "portRange": { + "$ref": "#/definitions/v1PortRange", + "description": "Port range for the scheduler rooms." + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "Time the scheduler was created." + }, + "maxSurge": { + "type": "string", + "title": "Max surge of rooms" + }, + "roomsReplicas": { + "type": "integer", + "format": "int32", + "description": "Rooms Replicas is the desired number that a Scheduler maintains." + } + }, + "title": "Scheduler message used in the \"ListScheduler version\" definition. The \"spec\" is not implemented\non this message since it's unnecessary for the list function" + }, + "v1Spec": { + "type": "object", + "properties": { + "version": { + "type": "string", + "title": "GameRoom.spec version" + }, + "terminationGracePeriod": { + "type": "string", + "description": "The game room termination grace period." + }, + "containers": { + "type": "array", + "items": { + "$ref": "#/definitions/v1Container" + }, + "description": "The container object array defines all the game room container configurations." + }, + "toleration": { + "type": "string", + "description": "Runtime game room toleration configuration." + }, + "affinity": { + "type": "string", + "description": "Runtime game room affinity configuration." + } + }, + "description": "Spec is the specifications of the scheduler, with relevant info about what is being used." + }, + "v1SwitchActiveVersionResponse": { + "type": "object", + "properties": { + "operationId": { + "type": "string", + "title": "Operation Id generated" + } + }, + "title": "Switch Active Version Response" + }, + "v1UpdateRoomStatusResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "title": "Flag indicating if the status update process was successful or not" + } + }, + "description": "The player event response." + }, + "v1UpdateRoomWithPingResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "Indicates if the ping update succeeded or not." + } + }, + "description": "The ping response." + } + } +} diff --git a/reference/index.html b/reference/index.html new file mode 100644 index 000000000..5829d5da6 --- /dev/null +++ b/reference/index.html @@ -0,0 +1,489 @@ + + + + + + + + + + + + + + + + + + Reference - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 000000000..feb8ca7e9 --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Home","text":""},{"location":"#overview","title":"Overview","text":"

    Maestro is a game room orchestration system, which can be used by multiplayer games to manage the scalability of its game rooms (Aka game servers). Ideally, Maestro should be used by games that implement dedicated game server (dgs) architecture. Each game room is a dedicated game server that runs in a match execution context, a group of game rooms is organized in a Scheduler. Each time that a user requires some change in the Scheduler or game room, Maestro creates an Operation that is a change unit that will be enqueued and handled sequentially by a proper worker related exclusively to its respective Scheduler, in other words, each Scheduler has a worker that sequentially handles Operations that is created to it.

    A Scheduler defines the requirements of a game room as to how much memory and CPU it will need to execute and other information.

    Each Operation has its own properties to be executed.

    Maestro has five components: Management API, Game Rooms API, Execution Worker, Runtime Watcher and Metrics Reporter. They all deliver together the Maestro features that will be described in the next sections.

    "},{"location":"#features-components","title":"Features & Components","text":"

    Maestro is composed by:

    • Management API: this is the component that the users will use to create your requests to interact with Maestro. For example: create a Scheduler, get Scheduler information, etc.
    • Execution Worker: have an execution component to handle Operations to each Scheduler. For example: three Schedulers will have each one an execution component.
    • Game Rooms API: game rooms API exposes an HTTP API or a GRPc service to receive game rooms messages that symbolize their respective status. For example: when a game room is ready to receive matches it will send a message informing that.
    • Runtime Watcher: is a component in Maestro that listen to Runtime events and reflect them in Maestro. For example: when a game room was created it is notified that this event happened.
    • Metrics Reporter: time spaced this component query the Runtime for metrics related to rooms and expose them in an open metrics route. For example: how many occupied rooms and ready rooms are up.
    "},{"location":"reference/","title":"Reference","text":"

    The reference documentation are available for this module:

    • Maestro Architecture

    • Open API

    • Schedulers

    • Operations

    "},{"location":"tutorials/","title":"Tutorials","text":"

    The following tutorials are available for this module:

    • Getting Started Guide

    • Configuring Scheduler Autoscaling

    • Configuring Events Forwarding

    • Development

    "},{"location":"how-to-guides/Guidelines/","title":"Guidelines","text":""},{"location":"how-to-guides/Guidelines/#assumptions-dos-donts","title":"Assumptions, Dos & Don'ts","text":"

    Describe common assumptions, or actions that you want your users to avoid. If there are multiple ways to solve problems using your application, you can document here the best options you have identified.

    "},{"location":"how-to-guides/Guidelines/#lessons-learned-best-practices","title":"Lessons Learned & Best Practices","text":"

    You can fill this section with best practices and enrich it as you learn better practices for the use of your application.

    "},{"location":"how-to-guides/User%20Guides/","title":"UserGuides","text":""},{"location":"how-to-guides/User%20Guides/#features-components","title":"Features & Components","text":"

    Short list of the components, features or elements that the user needs to know to make the best of your application. On this section, you can include any guides and how tos that involve interaction with the UI in RING.

    "},{"location":"how-to-guides/User%20Guides/#navigation-how-to-guides","title":"Navigation & How To Guides","text":"

    Describe any menus and buttons in the user interface not covered in the previous section Include how users can interact with the features on your interface to get the desired results.

    "},{"location":"how-to-guides/User%20Guides/#troubleshooting","title":"Troubleshooting","text":"

    Document here any known errors, workarounds for bugs, troubleshooting details, and tips and tricks to avoid common mistakes.

    "},{"location":"reference/Architecture/","title":"Architecture","text":"

    Maestro Next is a composition of different modules. Internally they are all part of the same code base but could be executed by giving the right arguments to the command line (or to your docker container entry point). E.g. go run main.go start [MODULE_NAME]

    Maestro is composed of Management API, Rooms API, Operation Execution Worker, Runtime Watcher Worker, and Metrics Reporter Worker.

    Each module has its responsibilities and is divided apart in a way to avoid mixing the execution process. Each module was thought to avoid parallel problems and to give the client more visibility about which Operations are being executed and their respective status.

    "},{"location":"reference/Architecture/#maestro-modules","title":"Maestro modules","text":"

    Note: Maestro currently only supports Kubernetes as Game Rooms runtime system. So Workers interact with them.

    "},{"location":"reference/Architecture/#management-api","title":"Management API","text":"

    Management API is the module responsible for receiving user requests. It accepts gRPC and HTTP requests and provides several kinds of routes that are aggregated in two services: schedulers service and operations service.

    The schedulers service exposes features for managing schedulers, like creating a new scheduler, fetching its information, or updating them. The operations service exposes features for tracking operations and changing their status, like listing operations by status or canceling them.

    Management API relies on Redis for retrieving operations and game rooms, and on Postgres for retrieving and persisting schedulers.

    "},{"location":"reference/Architecture/#rooms-api","title":"Rooms API","text":"

    Rooms API is the module that provides an API that must be used by game rooms to sync their status with Maestro. To maestro work properly, it needs to be constantly informed about the status of each game room it manages. Also, if there are forwarders configured for the scheduler, those events are forwarded from Maestro at this module.

    Note: The requests that Maestro forwards in the Rooms API are documented in this proto file. Note: Maestro client could be used to ease the integration of the Game Room with Maestro.

    "},{"location":"reference/Architecture/#operation-execution-worker","title":"Operation Execution Worker","text":"

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    Operation Execution Worker is a process that constantly keeps ensuring each active Scheduler will have a thread (execution worker) that executes operations enqueued in the related Scheduler operation queue. So in this way became possible to track the events that happened and change a certain Scheduler in a healthier way.

    You could find all operations at Operations section

    "},{"location":"reference/Architecture/#runtime-watcher-worker","title":"Runtime Watcher Worker","text":"

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    Runtime Watcher Worker listens to runtime events related to the Scheduler and reflects the changes in Maestro. Currently, it listens for Game Rooms creation, deletion, and update.

    "},{"location":"reference/Architecture/#metrics-reporter-worker","title":"Metrics Reporter Worker","text":"

    Note: In Maestro a worker is a collection of routines that executes a flow related to one and only one Scheduler each.

    From time to time Metrics Reporter Worker watch runtime to report metrics from them, such as the number of game rooms instances that are ready, pending, error, unknown, or terminating status. As well it watches from Game Rooms storage its status that could be ready, pending, error, occupied, terminating, or unready.

    This module is optional since you don't need it for any specific functionalities of the application.

    "},{"location":"reference/Kubernetes/","title":"Kubernetes Usage","text":""},{"location":"reference/Kubernetes/#kubernetes-usage","title":"Kubernetes usage","text":"

    Maestro uses kubernetes for orchestrating game room instances. It uses a unique namespace for each scheduler, and a unique pod for each game room instance.

    We use client-go for communicating with kubernetes. The Runtime port is the interface used for managing resources, you can find all of the features we are using for managing k8s resources in it.

    The diagram below shows how maestro components interact with kubernetes for managing resources.

    flowchart BT\n  classDef borderless stroke-width:0px\n  classDef darkBlue fill:#00008B, color:#fff\n  classDef brightBlue fill:#6082B6, color:#fff\n  classDef gray fill:#62524F, color:#fff\n  classDef gray2 fill:#4F625B, color:#fff\n  subgraph maestroSystem[ ]\n      subgraph k8s[ ]\n          A3[Kubernetes]\n      end\n      class k8s,A3 brightBlue\n      class A3, borderless\n      subgraph WORKER[ ]\n          A7[Operation Execution Worker<br/><br/>manage kubernetes resources by creating/deleting/updating pods abnd namespaces]\n      end\n      class WORKER,A7 brightBlue\n      class WORKER,A7 borderless\n      WORKER--Create namespace<br/>HTTPS-->k8s\n      WORKER--Delete namespace<br/>HTTPS-->k8s\n      WORKER--Create pod<br/>HTTPS-->k8s\n      WORKER--Delete pod<br/>HTTPS-->k8s\n      subgraph RUNTIME_WATCHER[ ]\n          A8[Runtime Watcher <br/><br/> watch for change events in managed pods]\n      end\n      class RUNTIME_WATCHER,A8 brightBlue\n      class RUNTIME_WATCHER,A8 borderless\n      RUNTIME_WATCHER--List/Watch pods<br/>HTTPS-->k8s\n  end\n  click A3 \"/csymapp/mermaid-c4-model/blob/master/AWAComponent.md\" \"AWA\"\n
    "},{"location":"reference/Kubernetes/#runtime-watcher","title":"Runtime watcher","text":"

    The runtime watcher component maintains a worker process for each scheduler that keeps watching and processing change events in pods resources. For doing that, it uses a pods informer, binding handlers for add, update and delete events for all pods managed by it.

    This component is not responsible for updating/creating/deleting kubernetes resources, all it does is to watch for changes and update its game room instances internal representation using redis.

    "},{"location":"reference/Kubernetes/#operation-execution-worker","title":"Operation execution worker","text":"

    The worker uses kubernetes for managing pods and namespaces. It executes several operations that, alongside other side effects, will need to create, update, and delete namespaces and pods.

    Currently, maestro does not check for HostPort conflict while creating new rooms

    One important note regarding how maestro creates pods: each new requested game room instance will be assigned to a pseudo-random port to be used as HostPort.

    Maestro uses the scheduler PortRange to generate the pseudo-random port. Currently, maestro does not check for HostPort conflict while creating new rooms. The final address of the game room will be composed of the Node address and the game room container assigned HostPort. That's the reason why maestro needs access for reading the Node addresses.

    "},{"location":"reference/Kubernetes/#configuring-cluster-access","title":"Configuring cluster access","text":"

    Maestro needs the following permissions for managing resources in a kubernetes cluster: - nodes: read (we need to use the node address to compose the game room address); - pods: read, create, update, delete; - namespace: read, create, update, delete.

    Maestro provides two ways for configuring kubernetes cluster access.

    "},{"location":"reference/Kubernetes/#using-incluster-mode","title":"Using inCluster mode","text":"

    Set adapters.runtime.kubernetes.inCluster config value to true or use its env var equivalent, the kubernetes client will be configured automatically using the same service account of the maestro component running pod.

    This mode is recommended to be used when running maestro components in the same cluster in which the schedulers and rooms will be managed.

    "},{"location":"reference/Kubernetes/#using-kubeconfig-mode","title":"Using kubeconfig mode","text":"

    Populate adapters.runtime.kubernetes.kubeconfig and adapters.runtime.kubernetes.masterUrl configs or use its env var equivalent, the kubernetes client will be configured using the provided kubeconfig file and master url.

    "},{"location":"reference/OpenAPI/","title":"OpenAPI","text":""},{"location":"reference/Operations/","title":"Operations","text":""},{"location":"reference/Operations/#what-is","title":"What is","text":"

    Operation is a core concept at Maestro, and it represents executions done in multiple layers of Maestro, a state update, or a configuration change. Operations can be created by user actions while managing schedulers (e.g. consuming management API), or internally by Maestro to fulfill internal states requirements

    Operations are heavily inspired by the Command Design Pattern

    "},{"location":"reference/Operations/#definition-and-executors","title":"Definition and executors","text":"

    Maestro will have multiple operations, and those will be set using pairs of definitions and executors. An operation definition consists of the operation parameters. An operation executor is where the actual operation execution and rollback logic is implemented, and it will receive as input its correlated definition. So, for example, the CreateSchedulerExecutor will always receive a CreateSchedulerDefinition.

    flowchart TD\n  subgraph operations [Operations]\n    subgraph operation_implementation [Operation Impl.]\n      definition(Definition)\n      executor(Executor)\n    end\n    subgraph operation_implementation2 [Operation Impl.]\n      definition2(Definition)\n      executor2(Executor)\n    end\n    subgraph operation_implementation3 [Operation Impl.]\n      definition3(Definition)\n      executor3(Executor)\n    end\n    ...\n  end\n
    "},{"location":"reference/Operations/#operation-structure","title":"Operation Structure","text":"
    • id: Unique operation identification. Auto-Generated;
    • status: Operations status. For reference, see here.
    • definitionName: Name of the operation. For reference, see here.
    • schedulerName: Name of the scheduler which this operation affects.
    • createdAt: Timestamp representing when the operation was enqueued.
    • input: Contains the input value for this operation. Each operation has its own input format. For details, see below.
    • executionHistory: Contains logs with detailed info about the operation execution. See below.
    id: String\nstatus: String\ndefinitionName: String\nschedulerName: String\ncreatedAt: Timestamp\ninput: Any\nexecutionHistory: ExecutionHistory\n
    "},{"location":"reference/Operations/#input","title":"Input","text":"
    • Create Scheduler
    scheduler: Scheduler\n
    • Create New Scheduler Version
    scheduler: Scheduler\n
    • Switch Scheduler Version
    newActiveVersion: Scheduler\n
    • Add Rooms
    amount: Integer\n
    • Remove Rooms
    amount: Integer\n
    "},{"location":"reference/Operations/#execution-history","title":"Execution History","text":"
    createdAt: timestamp\nevent: String\n
    • createdAt: When did the event happened.
    • event: What happened. E.g. \"Operation failed because...\".
    "},{"location":"reference/Operations/#how-does-maestro-handle-operations","title":"How does Maestro handle operations","text":"
    • Each scheduler has 1 operation execution (no operations running in parallel for a scheduler).
    • Every operation execution has 1 queue for pending operations.
    • When the worker is ready to work on a new operation, it'll pop from the queue.
    • The operation is executed by the worker following the lifecycle described here.
    "},{"location":"reference/Operations/#state","title":"State","text":"

    An operation can have one of the Status below:

    • Pending: When an operation is enqueued to be executed;

    • Evicted: When an operation is unknown or should not be executed By Maestro;

    • In Progress: Operation is currently being executed;

    • Finished: Operation finished; Execution succeeded;

    • Error: Operation finished. Execution failed;

    • Canceled: Operation was canceled by the user.

    "},{"location":"reference/Operations/#state-machine","title":"State Machine","text":"
    flowchart TD\n  pending(Pending)\n  in_progress(In Progress)\n  evicted(Evicted)\n  finished(Finished)\n  canceled(Canceled)\n  error(Error)\n\n  pending --> in_progress;\n  pending --> evicted;\n  in_progress --> finished;\n  in_progress --> error;\n  in_progress --> canceled;\n
    "},{"location":"reference/Operations/#lifecycle","title":"Lifecycle","text":"
    flowchart TD\n  finish((End))\n  created(\"Created (Pending)\")\n  evicted(Evicted)\n  error(Error)\n  finished(Finished)\n  canceled(Canceled)\n  should_execute{Should Execute?}\n  execution_succeeded{Success?}\n  err_kind{Error Kind}\n  execute[[Execute]]\n  rollback[[Rollback]]\n  canceled_by_user>Canceled By User]\n  created --> should_execute;\n  should_execute -- No --> evicted --> finish;\n  should_execute -- Yes --> execute;\n  execute --> execution_succeeded;\n  execute --> canceled_by_user --> rollback;\n  execution_succeeded -- Yes --> finished --> finish;\n  execution_succeeded -- No --> rollback;\n  rollback --> err_kind;\n  err_kind -- Canceled --> canceled --> finish;\n  err_kind -- Error --> error --> finish\n
    "},{"location":"reference/Operations/#lease","title":"Lease","text":""},{"location":"reference/Operations/#what-is-the-operation-lease","title":"What is the operation lease","text":"

    Lease is a mechanism to track the operations' execution process and check if we can rely on the current/future operation state.

    "},{"location":"reference/Operations/#why-operations-have-it","title":"Why Operations have it","text":"

    Sometimes, an operation might get stuck. It could happen, for example, if the worker crashes during the execution of an operation. To keep track of operations, we assign each operation a Lease. This Lease has a TTL (time to live).

    When the operation is being executed, this TTL is renewed each time the lease is about to expire while the operation is still in progress. It'll be revoked once the operation is finished.

    "},{"location":"reference/Operations/#troubleshooting","title":"Troubleshooting","text":"

    If an operation is fetched and the TTL expired (the TTL is in the past), the operation probably got stuck, and we can't rely upon its current state, nor guarantee the required side effects of the execution or rollback have succeeded.

    If an operation does not have a Lease, it either did not start at all (should be on the queue) or is already finished. An Active Operation without a Lease is at an invalid state.

    Maestro do not have a self-healing routine yet for expired operations.

    "},{"location":"reference/Operations/#operation-lease-lifecycle","title":"Operation Lease Lifecycle","text":"
    flowchart TD\n  finish_routine((End))\n  start_routine((Start))\n  finish((End))\n\n  operation_finished{Op. Finished?}\n\n  to_execute[Operation to Execute]\n\n  grant_lease[[Grant Lease]]\n  renew_lease[[Renew Lease]]\n  revoke_lease[[Revoke Lease]]\n\n  wait_for_ttl(Wait for TTL)\n  execute(Execute Operation)\n\n  to_execute --> grant_lease;\n  grant_lease --> renew_lease_routine;\n  grant_lease --> execute;\n  subgraph renew_lease_routine [ASYNC Renew Lease Routine]\n      start_routine --> wait_for_ttl;\n      wait_for_ttl --> operation_finished;\n      operation_finished -- Yes --> revoke_lease;\n      operation_finished -- No --> renew_lease --> wait_for_ttl;\n      revoke_lease --> finish_routine;\n  end\n  renew_lease_routine --> finish;\n
    "},{"location":"reference/Operations/#available-operations","title":"Available Operations","text":"

    For more details on how to use Maestro API, see this section.

    "},{"location":"reference/Operations/#create-scheduler","title":"Create Scheduler","text":"
    • Accessed through the POST /schedulers endpoint.
    • Creates the scheduler structure for receiving rooms;
    • The scheduler structure is validated, but the game room is not;
    • If operation fails, rollback feature will delete anything created related to scheduler.
    "},{"location":"reference/Operations/#create-new-scheduler-version","title":"Create New Scheduler Version","text":"
    • Accessed through the POST /schedulers/:schedulerName endpoint.
    • Creates a validation room (deleted right after). If Maestro cannot receive pings (not forwarded) from validation game room, operation fails;
    • When this operation finishes successfully, it enqueues the \"Switch Active Version\".
    • If operation fails rollback routine deletes anything (except for the operation) created related to new version.
    "},{"location":"reference/Operations/#switch-active-version","title":"Switch Active Version","text":"
    • Accessed through PUT /schedulers/:schedulerName endpoint.
    • If it's a major change (anything under Scheduler.Spec changed), GRUs are replaced using scheduler maxSurge property;
    • If it's a minor change (Scheduler.Spec haven't changed), GRUs are not replaced;
    "},{"location":"reference/Operations/#add-rooms","title":"Add Rooms","text":"
    • Accessed through POST /schedulers/:schedulerName/add-rooms endpoint.
    • If any room fail on creating, the operation fails and created rooms are deleted on rollback feature;
    "},{"location":"reference/Operations/#remove-rooms","title":"Remove Rooms","text":"
    • Accessed through POST /schedulers/:schedulerName/remove-rooms endpoint.
    • Remove rooms based on amount;
    • Rollback routine does nothing.
    "},{"location":"reference/Scheduler/","title":"Scheduler","text":""},{"location":"reference/Scheduler/#what-is","title":"What is","text":"

    Objectively, a Scheduler is a recipe, and contains all the information for creating game rooms and forwarding rooms information to other services.

    Also, it's the core entity for operating game rooms in Maestro, since all game rooms are related to a specific scheduler.

    A game can have multiple schedulers, and each scheduler can have multiple game rooms up and running.

    flowchart TD\n  etc1(\"...\")\n  etc2(\"...\")\n  etc3(\"...\")\n\n  subgraph game [Game]\n    subgraph scheduler_1 [Scheduler 1]\n      gameRoom1(\"Game Room (host:port)\")\n      gameRoom2(\"Game Room (host:port)\")\n      etc1\n    end\n    subgraph scheduler_2 [Scheduler 2]\n      gameRoom3(\"Game Room (host:port)\")\n      gameRoom4(\"Game Room (host:port)\")\n      etc2\n    end\n    etc3\n  end\n
    "},{"location":"reference/Scheduler/#how-to-operate","title":"How to Operate","text":"

    To directly interact with a Scheduler, the user enqueues operations using the management API.

    These operations are responsible for creating a scheduler or newer versions, switching an active version, adding/removing rooms, etc.

    Because of that, everything that happens for a Scheduler can be tracked based on history of the operations executed for that scheduler and the order they were executed.

    "},{"location":"reference/Scheduler/#versions","title":"Versions","text":"

    A Scheduler have versions, and each time we want to change scheduler properties, we end-up creating a new version to it.

    Versions are directly calculated by Maestro, not sent by the client.

    The client can only switch the active version based on the versions created by Maestro. To switch to an specific version, see this.

    This version can either be a Minor or a Major change.

    • Major version: Replace the game rooms in a switch active version event.
    • Basically, any change under spec, that are related to the game room directly.
    • Minor version: Don't replace game rooms in a switch active version event.
    • Info such as MaxSurge or forwarders, that do not impact the game rooms.
    "},{"location":"reference/Scheduler/#example","title":"Example","text":"

    A complete Scheduler looks like this:

    YAML
    \nname: scheduler-test\ngame: game-test\nstate: creating\nportRange:\n  start: 40000\n  end: 60000\nmaxSurge: 30%\nspec:\n  terminationGracePeriod: '100'\n  containers:\n    - name: alpine\n      image: alpine\n      imagePullPolicy: IfNotPresent\n      command:\n        - /bin/sh\n        - '-c'\n        - >-\n          apk add curl && while true; do curl --request POST\n          {{maestro-rooms-api}}/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping\n          --data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && sleep\n          1; done\n      environment:\n        - name: env-var-name\n          value: env-var-value\n        - name: env-var-field-ref\n          valueFrom:\n            fieldRef:\n              fieldPath: path\n        - name: secret-var-name\n          valueFrom:\n            secretKeyRef:\n              name: secret-name\n              key: secret-key\n      requests:\n        memory: 20Mi\n        cpu: 100m\n      limits:\n        memory: 200Mi\n        cpu: 200m\n      ports:\n        - name: port-name\n          protocol: tcp\n          port: 12345\n  toleration: maestro\n  affinity: maestro-dedicated\nforwarders:\n  - name: test\n    enable: true\n    type: gRPC\n    address: {{host}}\n    options:\n      timeout: '1000'\n      metadata: {}\nautoscaling:\n  enabled: true\n  min: 1\n  max: 10\n  policy:\n    type: roomOccupancy\n    parameters:\n      ...\n      // Will vary according to the policy type.\n        
    JSON
    \n{\n    \"name\": \"scheduler-test\",\n    \"game\": \"game-test\",\n    \"portRange\": {\n        \"start\": 40000,\n        \"end\": 60000\n    },\n    \"annotations\":{\n      \"imageregistry\":\"https://dockerhub.com/\"    \n    },\n    \"maxSurge\": \"30%\",\n    \"spec\": {\n        \"terminationGracePeriod\": '100',\n        \"containers\": [\n            {\n                \"name\": \"alpine\",\n                \"image\": \"alpine\",\n                \"imagePullPolicy\": \"IfNotPresent\",\n                \"command\": [\n                    \"/bin/sh\",\n                    \"-c\",\n                    \"apk add curl && while true; do curl --request POST {{maestro-rooms-api}}/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping --data-raw '{\"status\": \"ready\",\"timestamp\": \"12312312313\"}' && sleep 1; done\"\n                ],\n                \"environment\": [\n                    {\n                        \"name\": \"env-var-name\",\n                        \"value\": env-var-value\n                    },\n                    {\n                        \"name\": \"env-var-field-ref\",\n                        \"valueFrom\": {\n                            \"fieldRef\": {\n                                \"fieldPath\": \"path\"\n                            }\n                        }\n                    },\n                    {\n                        \"name\": \"secret-var-name\",\n                        \"valueFrom\": {\n                            \"secretKeyRef\": {\n                                \"name\": \"secret-name\",\n                                \"key\": \"secret-key\"\n                            }\n                        }\n                    }\n                ],\n                \"requests\": {\n                    \"memory\": \"20Mi\",\n                    \"cpu\": \"100m\"\n                },\n                \"limits\": {\n                    \"memory\": \"200Mi\",\n                    \"cpu\": \"200m\"\n                },\n                \"ports\": [\n                    {\n                        \"name\": \"port-name\",\n                        \"protocol\": \"tcp\",\n                        \"port\": 12345,\n                    }\n                ]\n            }\n        ],\n        \"toleration\": \"maestro\",\n        \"affinity\": \"maestro-dedicated\"\n    },\n    \"forwarders\": [\n        {\n            \"name\": \"test\",\n            \"enable\": true,\n            \"type\": \"gRPC\",\n            \"address\": \"{{host}}\",\n            \"options\": {\n                \"timeout\": '1000',\n                \"metadata\": {}\n            }\n        }\n    ]\n    \"autoscaling\": {\n      \"enabled\": true,\n      \"min\": 10,\n      \"max\": 300,\n      \"policy\": {\n        \"type\": \"roomOccupancy\",\n        \"parameters\": {\n          ...\n          // Will vary according to the policy type.\n        }\n      }\n    }\n}\n    
    "},{"location":"reference/Scheduler/#structure","title":"Structure","text":"

    The scheduler is represented as:

    name: String\ngame: String\ncreatedAt: Timestamp\nmaxSurge: String | Integer\nportRange: PortRange\nforwarders: Forwarders\nautoscaling: Autoscaling\nspec: Spec\nannotation: Map\n
    • Name: Scheduler name. This name is unique and will be the same name used for the kubernetes namespace. It's offered by the user in the creation and cannot be changed in the future. It's used as an ID for the scheduler;
    • game: Name of the game which will use the scheduler. The game is important since it's common to use multiple schedulers for a specific game. So you probably will want to fetch all the schedulers from a game;
    • createdAt: Info about the scheduler creation time. Cannot be altered by the user;
    • maxSurge: Value represented in percentage (%) or Integer. Offered by the user on the scheduler creation. Can be altered anytime. Used by Maestro to replace pods. Ex: If maxSurge = 3, the Switch Active Version (Major change) operation will replace pods from 3 to 3;
    • portRange: Range of ports that can be used by Maestro to create GRUs for the specified scheduler. Can be altered by the user anytime. More info here;
    • forwarders: Maestro can pass ahead info sent by the game rooms, such as Ping (Ready, Occupied, Terminating...), player and rooms events. The receivers can be configured here. More info here;
    • autoscaling: Optional autoscaling policy configuration. More info here;
    • spec: Specifications about the game rooms managed by the scheduler, such as containers and environment variables used by them, limits and images. More info here.
    • annotations: Allows annotations for the scheduler's game room. Know more about annotations on Kubernetes here
    "},{"location":"reference/Scheduler/#portrange","title":"PortRange","text":"

    The PortRange is used to select a random port for a GRU between start and end.

    • PortRange cannot be null or empty

    Check if the ports offered are available and can be used. A firewall rule, for example, can affect the connection to the Game Room in the specific port.

    It is represented as:

    start: Integer\nend: Integer\n
    "},{"location":"reference/Scheduler/#forwarders","title":"Forwarders","text":"

    Forwarders are configured to pass ahead info offered by the game rooms to Maestro. More than one forwarder can be configured for a scheduler.

    • Can be an empty list.

    It is represented as:

    - name: String\n  enable: Bool\n  type: String\n  address: String\n  options:\n    timeout: Integer\n    metadata: Object\n
    • name: Name of the forwarder. Used only for reference (visibility and recognition);
    • enable: Toggle to easily enable/disable the forwarder;
    • type: Type of the forwarder. Right now, only accepts gRPC;
    • address: Address used by the scheduler to forward events. E.g. 'api.example.com:8080';
    • options: Optional parameters.
      • timeout: Timeout value for an event to successfully be forwarded;
      • metadata: Object that can contain any useful information for the game team. Will be forwarded with the events from Maestro.
    "},{"location":"reference/Scheduler/#spec","title":"Spec","text":"

    Contains vital information about the game rooms. Be aware that the spec is the most related aspect of the scheduler interacting with the runtime. It might be important to understand the basics of kubernetes before deep diving into the Maestro scheduler itself.

    • Cannot be empty or null.

    It is represented as:

    terminationGracePeriod: Integer\ncontainers: Containers\ntoleration: String\naffinity: String\n
    • terminationGracePeriod: Required integer value. Must be greater than 0. When a game room receives the signal to be deleted, it will take this value (in milliseconds) to be completely deleted;
    • containers: Contain the information about the game room, such as the image and environment variables. This is a list since the game room can be compounded by more than two containers;
    • toleration: Kubernetes specific. Represents the toleration value for all GRUs on the scheduler. See more;
    • affinity: Kubernetes specific. Represents the affinity value for all GRUs on the scheduler. See more.
    "},{"location":"reference/Scheduler/#containers","title":"Containers","text":"

    Contain the information about the game room, such as the image and environment variables.

    • Cannot be an empty list.

    It is represented as:

    - name: String\n  image: String\n  imagePullPolicy: String\n  command: Array<String>\n  environment: EnvironemntVariables\n  requests:\n    memory: String\n    cpu: String\n  limits:\n    memory: String\n    cpu: String\n  ports: Ports\n
    • name: Name of the container, used only for reference and can be changed by the user anytime.
    • image: Docker image to be used for the container. Represented as a link.
    • imagePullPolicy: Kubernetes specific. See here for reference.
    • command: List of commands that should be executed by the image on execution. E.g. here.
    • environment: List of environment variables. See here.
    • requests and limits: Kubernetes specific. See here.
    • ports: The list of ports your game server exposes. See here.
    "},{"location":"reference/Scheduler/#environment-variables","title":"Environment Variables","text":"

    List of environment variables used by the GRU.

    • Can be an empty list.

    There are, now, 3 supported formats by Maestro:

    • Simple name-value format.
    With Name/Value
    \n- name: String\n  value: String
    • Exposing pod fields (kubernetes specific). See here.
    With FieldRef/FieldPath
    \n- name: String\n  valueFrom:\n    fieldRef:\n      fieldPath: String
    • Secrets as environment variables (kubernetes specific). See here.
    With Secret
    \n- name: String\n  valueFrom:\n    secretKeyRef:\n      name: String\n      key: String
    "},{"location":"reference/Scheduler/#ports","title":"Ports","text":"

    The list of ports your game server exposes.

    • Can be an empty list.

    It is represented as:

    - name: String\n  protocol: String\n  port: Integer\n
    • name: Name of the port. Facilitates on recognition;
    • protocol: Port protocol. Can be UDP, TCP or SCTP.;
    • port: The port exposed.
    "},{"location":"tutorials/Autoscaling/","title":"Autoscaling","text":""},{"location":"tutorials/Autoscaling/#configuring-scheduler-autoscaling","title":"Configuring Scheduler Autoscaling","text":""},{"location":"tutorials/Autoscaling/#prerequisites","title":"Prerequisites","text":"
    • Have a game room container image that communicates with maestro through Maestro's rooms API
    "},{"location":"tutorials/Autoscaling/#learning-outcomes","title":"Learning Outcomes","text":"

    After finishing this tutorial you will understand how:

    • to configure autoscaling policies for your scheduler
    "},{"location":"tutorials/Autoscaling/#what-is","title":"What is","text":"

    Autoscaling is an optional feature in which the user can choose and parametrize different autoscaling policies that maestro will use to automatically scale the number of rooms in the scheduler.

    Maestro has an internal process that periodically keeps checking if it needs to create or delete game rooms for the given scheduler, if autoscaling is not configured or enabled, it will always try to maintain the current number of rooms equal to roomsReplicas scheduler property. If autoscaling is configured and enabled, it will use the configured autoscaling policy to decide if it needs to scale up (create more rooms), scale down (delete rooms) or do nothing.

      flowchart TD\n    finish((End))\n    add_rooms_operation(Enqueue add rooms operation)\n    remove_rooms_operation(Enqueue remove rooms)\n    use_rooms_replicas(Use rooms replicas to calculate the desired number of rooms)\n    autoscaling_enabled{Autoscaling configured and enabled?}\n    decide_operation{Compare current number of rooms with the desired amount.}\n    use_autoscaling[Use Autoscaling policy to calculate the desired number of rooms coerced in min-max range]\n    autoscaling_enabled -- No --> use_rooms_replicas;\n    autoscaling_enabled -- Yes --> use_autoscaling;\n    use_autoscaling --> decide_operation;\n    use_rooms_replicas --> decide_operation;\n    decide_operation --  desired > actual --> add_rooms_operation --> finish;\n    decide_operation --  desired == actual --> finish;\n    decide_operation --  desired < actual --> remove_rooms_operation --> finish;\n

    Currently, the sync interval is configured by environment variable MAESTRO_WORKERS_OPERATIONEXECUTION_HEALTHCONTROLLERINTERVAL.

    By default, the scheduler does not have autoscaling configured.

    "},{"location":"tutorials/Autoscaling/#how-to-configure-and-enable-autoscaling","title":"How to configure and enable autoscaling","text":"

    To get autoscaling working in your scheduler, firstly you need to configure an autoscaling policy and enable it, this autoscaling configuration resides in the root of the scheduler structure itself.

    YAML version
    \nname: String\ngame: String\n...\nautoscaling:\n  enabled: true\n  min: 1\n  max: 10\n  policy:\n    type: roomOccupancy\n    parameters:\n      ...\n      // Will vary according to the policy type.\n        
    JSON version
    \n{\n  \"name\": \"test\",\n  \"game\": \"multiplayer\",\n  ...\n  \"autoscaling\": {\n    \"enabled\": true,\n    \"min\": 10,\n    \"max\": 300,\n    \"policy\": {\n      \"type\": \"roomOccupancy\",\n      \"parameters\": {\n        ...\n        // Will vary according to the policy type.\n      }\n    }\n  }\n}\n        
    • enabled [boolean]: A value that can be true or false, indicating if the autoscaling feature is enabled/disabled for the given scheduler. Default: false.
    • min [integer]: Minimum number of rooms the scheduler should have, it must be greater than zero. For zero value, disable autoscaling and set \"roomsReplicas\" to 0.
    • max [integer]: Maximum number of rooms the scheduler can have. It must be greater than min, or can be -1 (to have no limit).
    • policy [struct] : This field holds information regarding the autoscaling policy that will be used if the autoscaling feature is enabled:
    • type [string]: Define the policy type that will be used, must be one of the policy types maestro provides.
    • parameters [struct]: This field will contain arbitrary fields that will vary according to the chosen policy type.
    "},{"location":"tutorials/Autoscaling/#policy-types","title":"Policy Types","text":"

    Maestro has a set of predefined policy types that can be used to configure the autoscaling, each policy will implement a specific strategy for calculating the desired number of rooms and will have its configurable parameters.

    "},{"location":"tutorials/Autoscaling/#room-occupancy-policy","title":"Room Occupancy Policy","text":"

    The basic concept of this policy is to scale the scheduler up or down based on the actual room occupancy rate, by defining a \"buffer\" percentage of ready rooms that Maestro must keep. The desired number of rooms will be given by the following formula:

    desiredNumberOfRooms = \u2308(numberOfOccupiedRooms/ (1- readyTarget) )\u2309

    So basically Maestro will constantly try to maintain a certain percentage of rooms in ready state, by looking at the actual room occupancy rate (number of rooms in occupied state).

    "},{"location":"tutorials/Autoscaling/#room-occupancy-policy-parameters","title":"Room Occupancy Policy Parameters","text":"
    • readyTarget [float]: The percentage (in decimal value) of rooms that Maestro should try to keep in ready state, must be a value between 0.1 and 0.9.
    "},{"location":"tutorials/Autoscaling/#example","title":"Example","text":"YAML version
    \nname: String\ngame: String\n...\nautoscaling:\n  enabled: true\n  min: 1\n  max: 10\n  policy:\n    type: roomOccupancy\n    parameters:\n      roomOccupancy:\n        readyTarget: 0.5\n        
    JSON version
    \n{\n  \"autoscaling\": {\n    \"enabled\": true,\n    \"min\": 10,\n    \"max\": 300,\n    \"policy\": {\n      \"type\": \"roomOccupancy\",\n      \"parameters\": {\n        \"roomOccupancy\": {\n          \"readyTarget\": 0.5\n        }\n      }\n    }\n  }\n}\n        

    Below are some simulated examples of how the room occupancy policy will behave:

    Note that the autoscaling decision will always be limited by the min-max values! .

    totalRooms occupiedRooms readyTarget desiredNumberOfRooms autoscalingDecision 100 80 0.5 160 Scale Up: +60 100 50 0.5 100 Do Nothing: 0 100 30 0.5 60 Scale Down: -40 50 40 0.3 58 Scale Up: +8 50 35 0.3 50 Do Nothing: 0 50 10 0.3 15 Scale Down: -35 10 5 0.9 50 Scale Up: +40 10 1 0.9 10 Do Nothing: 0 10 1 0.8 5 Scale Down: -5 5 5 0.1 6 Scale Up: +1 1 1 0.3 2 Scale Up: +1 2 2 0.9 20 Scale Up: +18"},{"location":"tutorials/Development/","title":"Developers","text":""},{"location":"tutorials/Development/#development","title":"Development","text":""},{"location":"tutorials/Development/#setting-up-the-environment","title":"Setting up the environment","text":""},{"location":"tutorials/Development/#grpc-gateway","title":"Grpc gateway","text":"

    In order to run make generate with success, you need to have grpc-gateway dependencies installed with the following command:

    go install \\\n    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \\\n    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \\\n    google.golang.org/protobuf/cmd/protoc-gen-go \\\n    google.golang.org/grpc/cmd/protoc-gen-go-grpc\n
    "},{"location":"tutorials/Development/#golang-version","title":"Golang version","text":"

    The project requires golang version 1.18 or higher.

    "},{"location":"tutorials/Development/#building-and-running","title":"Building and running","text":"
    1. Run make setup to get all required modules
    2. Run make generate to generate mocks, protos and wire (dependency injection)
    3. Run make deps/up to startup service dependencies
    4. Run make migrate to migrate database with the most updated schema
    "},{"location":"tutorials/Development/#running-tests","title":"Running tests","text":"
    1. Run make run/unit-tests to run all unit tests
    2. Run make run/integration-tests to run all integration tests
    3. Run make run/e2e-tests to run all E2E tests. NOTE: Currently it is not possible to run it with the development environment set. This command will stop the dev dependencies before running.
    4. Run make lint to run all registered linters
    "},{"location":"tutorials/Development/#running-locally","title":"Running locally","text":"

    To help you get along with Maestro, by the end of this section you should have a scheduler up and running.

    "},{"location":"tutorials/Development/#prerequisites","title":"Prerequisites","text":"
    • Golang v1.18+
    • Linux/MacOS environment
    • Docker
    "},{"location":"tutorials/Development/#clone-repository","title":"Clone Repository","text":"

    Clone the repository to your favorite folder.

    "},{"location":"tutorials/Development/#getting-maestro-up-and-running","title":"Getting Maestro up and running","text":"

    For this step, you need docker running on your machine.

    WARNING: Ensure using cgroupv1

    K3s needs to use the deprecated cgroupv1, to successfully run the project in your machine ensure that your current docker use this version.

    In the folder where the project was cloned, simply run:

    make maestro/start\n

    This will build and start all containers needed by Maestro, such as databases and maestro-modules. This will also start all maestro components, including rooms api, management api, runtime watcher, and execution worker.

    Because of that, be aware that it might take some time to finish.

    "},{"location":"tutorials/Development/#find-rooms-api-address","title":"Find rooms-api address","text":"

    To simulate a game room, it's important to find the address of running rooms-api on the local network.

    To do that, with Maestro containers running, simply use:

    docker inspect -f '{{range.NetworkSettings.Networks}}{{.Gateway}}{{end}}' {{ROOMS_API_CONTAINER_NAME}}\n

    This command should give you an IP address. This IP is important because the game rooms will use it to communicate their status.

    "},{"location":"tutorials/Development/#create-a-scheduler","title":"Create a scheduler","text":"

    If everything is working as expected now, each Maestro-module is up and running. Use the command below to create a new scheduler:

    Be aware to change the {{ROOMS_API_ADDRESS}} for the one found above.

    curl --request POST \\\n  --url http://localhost:8080/schedulers \\\n  --header 'Content-Type: application/json' \\\n  --data '{\n    \"name\": \"scheduler-run-local\",\n    \"game\": \"game-test\",\n    \"state\": \"creating\",\n    \"portRange\": {\n        \"start\": 1,\n        \"end\": 1000\n    },\n    \"maxSurge\": \"10%\",\n    \"spec\": {\n        \"terminationGracePeriod\": \"100\",\n        \"containers\": [\n            {\n                \"name\": \"alpine\",\n                \"image\": \"alpine\",\n                \"imagePullPolicy\": \"IfNotPresent\",\n                \"command\": [\n                    \"sh\",\n                    \"-c\",\n                    \"apk add curl && while true; do curl --request PUT {{ROOMS_API_ADDRESS}}:8070/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping --data-raw '\\''{\\\"status\\\": \\\"ready\\\",\\\"timestamp\\\": \\\"12312312313\\\"}'\\'' && sleep 5; done\"\n                ],\n                \"environment\": [],\n                \"requests\": {\n                    \"memory\": \"100Mi\",\n                    \"cpu\": \"100m\"\n                },\n                \"limits\": {\n                    \"memory\": \"200Mi\",\n                    \"cpu\": \"200m\"\n                },\n                \"ports\": [\n                    {\n                        \"name\": \"port-name\",\n                        \"protocol\": \"tcp\",\n                        \"port\": 12345\n                    }\n                ]\n            }\n        ],\n        \"toleration\": \"\",\n        \"affinity\": \"\"\n    },\n    \"forwarders\": []\n}'\n
    "},{"location":"tutorials/Development/#congratulations","title":"Congratulations","text":"

    If you followed the steps above you have Maestro running in your local machine, and with a scheduler to try different operations on it. Feel free to explore the available endpoints in the API hitting directly the management-API.

    If you have any doubts or feedbacks regarding this process, feel free to reach out in Maestro's GitHub repository and open an issue/question.

    "},{"location":"tutorials/EventsForwarding/","title":"Events Forwarding","text":""},{"location":"tutorials/EventsForwarding/#configuring-events-forwarding","title":"Configuring Events Forwarding","text":""},{"location":"tutorials/EventsForwarding/#prerequisites","title":"Prerequisites","text":"
    • Have a game room container image that communicates with maestro through Maestro's rooms API
    "},{"location":"tutorials/EventsForwarding/#learning-outcomes","title":"Learning Outcomes","text":"

    After finishing this tutorial you will understand how:

    • to configure your room (ping) and player events to be forwarded to an external service (e.g. a matchmaking service)
    "},{"location":"tutorials/EventsForwarding/#what-is","title":"What is","text":"

    Events forwarding is an optional feature in which every room event or player event is forwarded to an external service.

    Through rooms API, Maestro provides several endpoints for receiving events from the game rooms. These events can be either room events (like room changing state from ready to occupied) or player events (like player joining or leaving the room). Maestro rely only on room events for managing the game rooms, player events endpoint is designed to be used exclusively with the events forwarding feature, since maestro does not depend on this information.

    Usually Maestro is used with a Matchmaking service, and a matchmaking service generally will need to keep up-to-date with the pool of game rooms that are available or not. Events forwarding feature exists for facilitating this integration, even being possible to make game rooms communicate with matchmaker directly.

    "},{"location":"tutorials/EventsForwarding/#how-to-configure-and-enable-events-forwarder","title":"How to configure and enable events forwarder","text":"

    To get events forwarding working in your scheduler, firstly you need to configure the events forwarder and enable it, this forwarder configuration resides in the root of the scheduler structure itself.

    YAML version
    \nname: String\ngame: String\n...\nforwarders:\n  - name: matchmaking\n    enable: true\n    type: gRPC\n    address: 'external-matchmaker.svc.cluster.local:80'\n    options:\n      timeout: '1000'\n      metadata:\n        ...\n        // Will vary according to the policy type.\n        
    JSON version
    \n{\n  \"name\": \"String\",\n  \"game\": \"String\",\n  ...\n  \"forwarders\": [\n    {\n      \"name\": \"matchmaking\",\n      \"enable\": true,\n      \"type\": \"gRPC\",\n      \"address\": \"external-matchmaker.svc.cluster.local:80\",\n      \"options\": {\n        \"timeout\": \"1000\",\n        \"metadata\": {\n            ...\n            // Will vary according to the user needs.\n        } \n      }\n    }\n  ]\n}\n        
    • name: Name of the forwarder. Used only for reference (visibility and recognition);
    • enable: Toggle to easily enable/disable the forwarder;
    • type: Type of the forwarder. Right now, only accepts gRPC;
    • address: Address used by the scheduler to forward events. E.g. 'api.example.com:8080';
    • options: Optional parameters.
    • timeout: Timeout value for an event to successfully be forwarded;
    • metadata: Arbitrary metadata object that can contain any data that will be embedded in all event that is forwarded.
    "},{"location":"tutorials/EventsForwarding/#events-forwarding-types","title":"Events Forwarding Types","text":"

    Currently, Maestro only supports gRPC forwarder type.

    "},{"location":"tutorials/EventsForwarding/#grpc","title":"GRPC","text":"

    This event forwarding type uses the GRPCForwarder service proto definition to forward events, this means that the external service should use gRPC protocol and implement this service to receive events.

    "},{"location":"tutorials/GettingStarted/","title":"Getting Started","text":""},{"location":"tutorials/GettingStarted/#getting-started-guide","title":"Getting Started Guide","text":""},{"location":"tutorials/GettingStarted/#prerequisites","title":"Prerequisites","text":"
    • Have a game room container image
    "},{"location":"tutorials/GettingStarted/#learning-outcomes","title":"Learning Outcomes","text":"

    After finishing this tutorial you will understand how:

    • to set up your game room to communicate its health status with maestro
    • to configure a new scheduler in maestro with a fixed number of replicas
    "},{"location":"tutorials/GettingStarted/#configuring-your-game-room","title":"Configuring your game room","text":"

    For Maestro to be able to manage your game rooms, you need to ensure that your game room sends a periodic heartbeat to maestro. This heartbeat is what we call ping, in which the room is able to inform its status (such as ready or occupied) to maestro.

    For this, you can use maestro-client sdk, if you are using unity, or you can call Maestro rooms API directly using two env vars that are configured in every game room managed by maestro by default.

    PUT scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping

    {\n    \"status\": \"ready\",\n    \"timestamp\": \"12312312313\"\n}\n

    The status field can be: - ready: the room is ready to accept players. - occupied: the room is occupied by one or more matches, and is not ready to accept more players. - terminating: the room is terminating, and will not accept any new players.

    "},{"location":"tutorials/GettingStarted/#create-a-scheduler","title":"Create a scheduler","text":"

    Use the command below to create a new scheduler, this will make a POST request for /schedulers endpoint.

    You need to change some parameters according to your game room image needs, for further details on all scheduler fields check the reference:

    • image: your game room image.
    • game: your game name (a same game can have multiple schedulers).
    • name: your scheduler name (usually, the stack name).
    • spec.command: any command that is required to run your game room.
    • spec.environment: any environment variable required to run your game room.
    • spec.ports: any port that must be exposed for clients to connect to the game room
    curl --request POST \\\n  --url https://<maestro-url>/schedulers \\\n  --header 'Content-Type: application/json' \\\n  --header \"Authorization: Basic <user:pass in base64>\" \\\n  --data '{\n    \"name\": \"<your-scheduler-name-here>\",\n    \"game\": \"<your-game-name-here>\",\n    \"roomsReplicas\": 1,\n    \"portRange\": {\n            \"start\": 20000,\n            \"end\": 21000\n    },\n    \"maxSurge\": \"10%\",\n    \"spec\": {\n            \"terminationGracePeriod\": \"100\",\n            \"containers\": [\n                {\n                    \"name\": \"game-container\",\n                    \"image\": \"<your-game-image-here>\",\n                    \"imagePullPolicy\": \"IfNotPresent\",\n                    \"command\": [\n                        <required-commands-for-game-image>\n                        \"sh example.sh\"\n                    ],\n                    \"environment\": [\n                        <required-commands-for-game-image>\n                        {\n                            \"name\": \"EXAMPLE_NAME\",\n                            \"value\": \"EXAMPLE_VALUE\"\n                        }\n                    ],\n                    \"requests\": {\n                        \"memory\": \"100Mi\",\n                        \"cpu\": \"100m\"\n                    },\n                    \"limits\": {\n                        \"memory\": \"200Mi\",\n                        \"cpu\": \"200m\"\n                    },\n                    \"ports\": [\n                        {\n                            \"name\": \"port-name\",\n                            \"protocol\": \"tcp\",\n                            \"port\": 12345\n                        }\n                    ]\n                }\n            ]\n    },\n    \"forwarders\": []\n}'\n

    After running this command, a scheduler will be created with 1 game room replica.

    Then you can use the following command to get the scheduler details such as how many rooms are ready or occupied:

    curl --location --request GET \"<maestro-url>/schedulers/info?game=<your-game-name-here>\" \\\n --header \"Accept: application/json\" \\\n --header \"Authorization: Basic <user:pass in base64>\"\n
    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 000000000..0f8724efd --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..cb35ead2b26d27fd272a28d47d46815b4af45af3 GIT binary patch literal 127 zcmV-_0D%7=iwFqF4$))+|8r?{Wo=<_E_iKh04<9_3V)_WXo8&M?ytk3HC}0~zlG)Vu + + + + + + + + + +Autoscaling - Maestro + + + + + + + + + + + + +
    +
    +
    + +
    +
    +
    +
    + + +
    +
    +

    Autoscaling

    +

    Configuring Scheduler Autoscaling

    +

    Prerequisites

    +
      +
    • Have a game room container image that communicates with maestro through Maestro's rooms API
    • +
    +

    Learning Outcomes

    +

    After finishing this tutorial you will understand how:

    +
      +
    • to configure autoscaling policies for your scheduler
    • +
    +

    What is

    +

    Autoscaling is an optional feature in which the user can choose and parametrize different autoscaling policies that maestro +will use to automatically scale the number of rooms in the scheduler.

    +

    Maestro has an internal process that periodically keeps checking if it needs to create or delete game rooms for the given scheduler, +if autoscaling is not configured or enabled, it will always try to maintain the current number of rooms equal to roomsReplicas scheduler property. +If autoscaling is configured and enabled, it will use the configured autoscaling policy to decide if it needs to scale up (create more rooms), +scale down (delete rooms) or do nothing.

    +
    flowchart TD + finish((End)) + add_rooms_operation(Enqueue add rooms operation) + remove_rooms_operation(Enqueue remove rooms) + use_rooms_replicas(Use rooms replicas to calculate the desired number of rooms) + autoscaling_enabled{Autoscaling configured and enabled?} + decide_operation{Compare current number of rooms with the desired amount.} + use_autoscaling[Use Autoscaling policy to calculate the desired number of rooms coerced in min-max range] + autoscaling_enabled -- No --> use_rooms_replicas; + autoscaling_enabled -- Yes --> use_autoscaling; + use_autoscaling --> decide_operation; + use_rooms_replicas --> decide_operation; + decide_operation -- desired > actual --> add_rooms_operation --> finish; + decide_operation -- desired == actual --> finish; + decide_operation -- desired < actual --> remove_rooms_operation --> finish; +
    +

    Currently, the sync interval is configured by environment variable MAESTRO_WORKERS_OPERATIONEXECUTION_HEALTHCONTROLLERINTERVAL.

    +
    +

    By default, the scheduler does not have autoscaling configured.

    +
    +

    How to configure and enable autoscaling

    +

    To get autoscaling working in your scheduler, firstly you need to configure an autoscaling policy and enable it, this autoscaling +configuration resides in the root of the scheduler structure itself.

    +
    +YAML version +
    +
    +name: String
    +game: String
    +...
    +autoscaling:
    +  enabled: true
    +  min: 1
    +  max: 10
    +  policy:
    +    type: roomOccupancy
    +    parameters:
    +      ...
    +      // Will vary according to the policy type.
    +        
    +
    +
    +
    +JSON version +
    +
    +{
    +  "name": "test",
    +  "game": "multiplayer",
    +  ...
    +  "autoscaling": {
    +    "enabled": true,
    +    "min": 10,
    +    "max": 300,
    +    "policy": {
    +      "type": "roomOccupancy",
    +      "parameters": {
    +        ...
    +        // Will vary according to the policy type.
    +      }
    +    }
    +  }
    +}
    +        
    +
    +
    +
      +
    • enabled [boolean]: A value that can be true or false, indicating if the autoscaling feature is enabled/disabled for the given scheduler. Default: false.
    • +
    • min [integer]: Minimum number of rooms the scheduler should have, it must be greater than zero. For zero value, disable autoscaling and set "roomsReplicas" to 0.
    • +
    • max [integer]: Maximum number of rooms the scheduler can have. It must be greater than min, or can be -1 (to have no limit).
    • +
    • policy [struct] : This field holds information regarding the autoscaling policy that will be used if the autoscaling feature is enabled:
    • +
    • type [string]: Define the policy type that will be used, must be one of the policy types maestro provides.
    • +
    • parameters [struct]: This field will contain arbitrary fields that will vary according to the chosen policy type.
    • +
    +
    +

    Policy Types

    +

    Maestro has a set of predefined policy types that can be used to configure the autoscaling, each policy will implement +a specific strategy for calculating the desired number of rooms and will have its configurable parameters.

    +

    Room Occupancy Policy

    +

    The basic concept of this policy is to scale the scheduler up or down based on the actual room occupancy rate, by defining a "buffer" percentage +of ready rooms that Maestro must keep. The desired number of rooms will be given by the following formula:

    +

    desiredNumberOfRooms = ⌈(numberOfOccupiedRooms/ (1- readyTarget) )⌉

    +

    So basically Maestro will constantly try to maintain a certain percentage of rooms in ready state, by looking at the +actual room occupancy rate (number of rooms in occupied state).

    +

    Room Occupancy Policy Parameters

    +
      +
    • readyTarget [float]: The percentage (in decimal value) of rooms that Maestro should try to keep in ready state, must be a value between 0.1 and 0.9.
    • +
    +

    Example

    +
    +YAML version +
    +
    +name: String
    +game: String
    +...
    +autoscaling:
    +  enabled: true
    +  min: 1
    +  max: 10
    +  policy:
    +    type: roomOccupancy
    +    parameters:
    +      roomOccupancy:
    +        readyTarget: 0.5
    +        
    +
    +
    +
    +JSON version +
    +
    +{
    +  "autoscaling": {
    +    "enabled": true,
    +    "min": 10,
    +    "max": 300,
    +    "policy": {
    +      "type": "roomOccupancy",
    +      "parameters": {
    +        "roomOccupancy": {
    +          "readyTarget": 0.5
    +        }
    +      }
    +    }
    +  }
    +}
    +        
    +
    +
    +

    Below are some simulated examples of how the room occupancy policy will behave:

    +
    +

    Note that the autoscaling decision will always be limited by the min-max values! .

    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    totalRoomsoccupiedRoomsreadyTargetdesiredNumberOfRoomsautoscalingDecision
    100800.5160Scale Up: +60
    100500.5100Do Nothing: 0
    100300.560Scale Down: -40
    50400.358Scale Up: +8
    50350.350Do Nothing: 0
    50100.315Scale Down: -35
    1050.950Scale Up: +40
    1010.910Do Nothing: 0
    1010.85Scale Down: -5
    550.16Scale Up: +1
    110.32Scale Up: +1
    220.920Scale Up: +18
    +
    +
    + + + Last update: + 2023-08-07 + + +
    +
    +
    +
    +
    + +
    +
    +
    +
    + + + + \ No newline at end of file diff --git a/tutorials/Development/index.html b/tutorials/Development/index.html new file mode 100644 index 000000000..3e73a1f67 --- /dev/null +++ b/tutorials/Development/index.html @@ -0,0 +1,850 @@ + + + + + + + + + + + + + + + + + + + + + + Developers - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Developers

    + +

    Development

    +
    +

    Setting up the environment

    +

    Grpc gateway

    +

    In order to run make generate with success, you need to have grpc-gateway dependencies installed with the following command:

    +
    go install \
    +    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway \
    +    github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2 \
    +    google.golang.org/protobuf/cmd/protoc-gen-go \
    +    google.golang.org/grpc/cmd/protoc-gen-go-grpc
    +
    +

    Golang version

    +

    The project requires golang version 1.18 or higher.

    +

    Building and running

    +
      +
    1. Run make setup to get all required modules
    2. +
    3. Run make generate to generate mocks, protos and wire (dependency injection)
    4. +
    5. Run make deps/up to startup service dependencies
    6. +
    7. Run make migrate to migrate database with the most updated schema
    8. +
    +

    Running tests

    +
      +
    1. Run make run/unit-tests to run all unit tests
    2. +
    3. Run make run/integration-tests to run all integration tests
    4. +
    5. Run make run/e2e-tests to run all E2E tests. NOTE: Currently it is not + possible to run it with the development environment set. This command will + stop the dev dependencies before running.
    6. +
    7. Run make lint to run all registered linters
    8. +
    +
    +

    Running locally

    +

    To help you get along with Maestro, by the end of this section you should have a scheduler up and running.

    +

    Prerequisites

    +
      +
    • Golang v1.18+
    • +
    • Linux/MacOS environment
    • +
    • Docker
    • +
    +

    Clone Repository

    +

    Clone the repository to your favorite folder.

    +

    Getting Maestro up and running

    +
    +

    For this step, you need docker running on your machine.

    +

    WARNING: Ensure using cgroupv1

    +

    K3s needs to use the deprecated cgroupv1, to successfully run the project in your machine ensure that your current docker use this version.

    +
    +

    In the folder where the project was cloned, simply run:

    +
    make maestro/start
    +
    +

    This will build and start all containers needed by Maestro, such as databases and maestro-modules. This will also start +all maestro components, including rooms api, management api, runtime watcher, and execution worker.

    +

    Because of that, be aware that it might take some time to finish.

    +

    Find rooms-api address

    +

    To simulate a game room, it's important to find the address of running rooms-api on the local network.

    +

    To do that, with Maestro containers running, simply use:

    +
    docker inspect -f '{{range.NetworkSettings.Networks}}{{.Gateway}}{{end}}' {{ROOMS_API_CONTAINER_NAME}}
    +
    +

    This command should give you an IP address. +This IP is important because the game rooms will use it to communicate their status.

    +

    Create a scheduler

    +

    If everything is working as expected now, each Maestro-module is up and running. +Use the command below to create a new scheduler:

    +
    +

    Be aware to change the {{ROOMS_API_ADDRESS}} for the one found above.

    +
    +
    curl --request POST \
    +  --url http://localhost:8080/schedulers \
    +  --header 'Content-Type: application/json' \
    +  --data '{
    +    "name": "scheduler-run-local",
    +    "game": "game-test",
    +    "state": "creating",
    +    "portRange": {
    +        "start": 1,
    +        "end": 1000
    +    },
    +    "maxSurge": "10%",
    +    "spec": {
    +        "terminationGracePeriod": "100",
    +        "containers": [
    +            {
    +                "name": "alpine",
    +                "image": "alpine",
    +                "imagePullPolicy": "IfNotPresent",
    +                "command": [
    +                    "sh",
    +                    "-c",
    +                    "apk add curl && while true; do curl --request PUT {{ROOMS_API_ADDRESS}}:8070/scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping --data-raw '\''{\"status\": \"ready\",\"timestamp\": \"12312312313\"}'\'' && sleep 5; done"
    +                ],
    +                "environment": [],
    +                "requests": {
    +                    "memory": "100Mi",
    +                    "cpu": "100m"
    +                },
    +                "limits": {
    +                    "memory": "200Mi",
    +                    "cpu": "200m"
    +                },
    +                "ports": [
    +                    {
    +                        "name": "port-name",
    +                        "protocol": "tcp",
    +                        "port": 12345
    +                    }
    +                ]
    +            }
    +        ],
    +        "toleration": "",
    +        "affinity": ""
    +    },
    +    "forwarders": []
    +}'
    +
    +

    Congratulations

    +

    If you followed the steps above you have Maestro running in your local machine, and with a scheduler to try different operations on it. +Feel free to explore the available endpoints in the API hitting directly the management-API.

    +

    If you have any doubts or feedbacks regarding this process, feel free to reach out in Maestro's GitHub repository and open an issue/question.

    + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/tutorials/EventsForwarding/index.html b/tutorials/EventsForwarding/index.html new file mode 100644 index 000000000..6f5f2c69b --- /dev/null +++ b/tutorials/EventsForwarding/index.html @@ -0,0 +1,722 @@ + + + + + + + + + + + + + + + + + + + + + + Events Forwarding - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Events Forwarding

    + +

    Configuring Events Forwarding

    +

    Prerequisites

    +
      +
    • Have a game room container image that communicates with maestro through Maestro's rooms API
    • +
    +

    Learning Outcomes

    +

    After finishing this tutorial you will understand how:

    +
      +
    • to configure your room (ping) and player events to be forwarded to an external service (e.g. a matchmaking service)
    • +
    +

    What is

    +

    Events forwarding is an optional feature in which every room event or player event is forwarded to an external service.

    +

    Through rooms API, Maestro provides several endpoints for receiving events from the game rooms. These events +can be either room events (like room changing state from ready to occupied) or player events (like player joining or leaving the room). +Maestro rely only on room events for managing the game rooms, player events endpoint is designed to be used exclusively with the events forwarding feature, +since maestro does not depend on this information.

    +

    Usually Maestro is used with a Matchmaking service, and a matchmaking service generally will need to keep up-to-date with the pool of game rooms that are available or not. +Events forwarding feature exists for facilitating this integration, even being possible to make game rooms communicate with matchmaker directly.

    +

    How to configure and enable events forwarder

    +

    To get events forwarding working in your scheduler, firstly you need to configure the events forwarder and enable it, this forwarder +configuration resides in the root of the scheduler structure itself.

    +
    + YAML version +
    +
    +name: String
    +game: String
    +...
    +forwarders:
    +  - name: matchmaking
    +    enable: true
    +    type: gRPC
    +    address: 'external-matchmaker.svc.cluster.local:80'
    +    options:
    +      timeout: '1000'
    +      metadata:
    +        ...
    +        // Will vary according to the policy type.
    +        
    +
    +
    + +
    + JSON version +
    +
    +{
    +  "name": "String",
    +  "game": "String",
    +  ...
    +  "forwarders": [
    +    {
    +      "name": "matchmaking",
    +      "enable": true,
    +      "type": "gRPC",
    +      "address": "external-matchmaker.svc.cluster.local:80",
    +      "options": {
    +        "timeout": "1000",
    +        "metadata": {
    +            ...
    +            // Will vary according to the user needs.
    +        } 
    +      }
    +    }
    +  ]
    +}
    +        
    +
    +
    + +
      +
    • name: Name of the forwarder. Used only for reference (visibility and recognition);
    • +
    • enable: Toggle to easily enable/disable the forwarder;
    • +
    • type: Type of the forwarder. Right now, only accepts gRPC;
    • +
    • address: Address used by the scheduler to forward events. E.g. 'api.example.com:8080';
    • +
    • options: Optional parameters.
    • +
    • timeout: Timeout value for an event to successfully be forwarded;
    • +
    • metadata: Arbitrary metadata object that can contain any data that will be embedded in all event that is forwarded.
    • +
    +
    +

    Events Forwarding Types

    +

    Currently, Maestro only supports gRPC forwarder type.

    +

    GRPC

    +

    This event forwarding type uses the GRPCForwarder service proto definition +to forward events, this means that the external service should use gRPC protocol and implement this service to receive events.

    + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/tutorials/GettingStarted/index.html b/tutorials/GettingStarted/index.html new file mode 100644 index 000000000..05141e5ed --- /dev/null +++ b/tutorials/GettingStarted/index.html @@ -0,0 +1,705 @@ + + + + + + + + + + + + + + + + + + + + + + Getting Started - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + + + + + + + +

    Getting Started

    + +

    Getting Started Guide

    +

    Prerequisites

    +
      +
    • Have a game room container image
    • +
    +

    Learning Outcomes

    +

    After finishing this tutorial you will understand how:

    +
      +
    • to set up your game room to communicate its health status with maestro
    • +
    • to configure a new scheduler in maestro with a fixed number of replicas
    • +
    +

    Configuring your game room

    +

    For Maestro to be able to manage your game rooms, you need to ensure that your game room sends a periodic heartbeat to maestro. +This heartbeat is what we call ping, in which the room is able to inform its status (such as ready or occupied) to maestro.

    +

    For this, you can use maestro-client sdk, if you are using unity, or you can call +Maestro rooms API directly using two env vars that are configured in every game room managed by maestro by default.

    +

    PUT scheduler/$MAESTRO_SCHEDULER_NAME/rooms/$MAESTRO_ROOM_ID/ping

    +
    {
    +    "status": "ready",
    +    "timestamp": "12312312313"
    +}
    +
    +

    The status field can be: +- ready: the room is ready to accept players. +- occupied: the room is occupied by one or more matches, and is not ready to accept more players. +- terminating: the room is terminating, and will not accept any new players.

    +

    Create a scheduler

    +

    Use the command below to create a new scheduler, this will make a POST request for /schedulers endpoint.

    +

    You need to change some parameters according to your game room image needs, for further details on all scheduler fields check +the reference:

    +
      +
    • image: your game room image.
    • +
    • game: your game name (a same game can have multiple schedulers).
    • +
    • name: your scheduler name (usually, the stack name).
    • +
    • spec.command: any command that is required to run your game room.
    • +
    • spec.environment: any environment variable required to run your game room.
    • +
    • spec.ports: any port that must be exposed for clients to connect to the game room
    • +
    +
    curl --request POST \
    +  --url https://<maestro-url>/schedulers \
    +  --header 'Content-Type: application/json' \
    +  --header "Authorization: Basic <user:pass in base64>" \
    +  --data '{
    +    "name": "<your-scheduler-name-here>",
    +    "game": "<your-game-name-here>",
    +    "roomsReplicas": 1,
    +    "portRange": {
    +            "start": 20000,
    +            "end": 21000
    +    },
    +    "maxSurge": "10%",
    +    "spec": {
    +            "terminationGracePeriod": "100",
    +            "containers": [
    +                {
    +                    "name": "game-container",
    +                    "image": "<your-game-image-here>",
    +                    "imagePullPolicy": "IfNotPresent",
    +                    "command": [
    +                        <required-commands-for-game-image>
    +                        "sh example.sh"
    +                    ],
    +                    "environment": [
    +                        <required-commands-for-game-image>
    +                        {
    +                            "name": "EXAMPLE_NAME",
    +                            "value": "EXAMPLE_VALUE"
    +                        }
    +                    ],
    +                    "requests": {
    +                        "memory": "100Mi",
    +                        "cpu": "100m"
    +                    },
    +                    "limits": {
    +                        "memory": "200Mi",
    +                        "cpu": "200m"
    +                    },
    +                    "ports": [
    +                        {
    +                            "name": "port-name",
    +                            "protocol": "tcp",
    +                            "port": 12345
    +                        }
    +                    ]
    +                }
    +            ]
    +    },
    +    "forwarders": []
    +}'
    +
    +

    After running this command, a scheduler will be created with 1 game room replica.

    +

    Then you can use the following command to get the scheduler details such as how many rooms are ready or occupied:

    +
    curl --location --request GET "<maestro-url>/schedulers/info?game=<your-game-name-here>" \
    + --header "Accept: application/json" \
    + --header "Authorization: Basic <user:pass in base64>"
    +
    + +
    +
    + + + Last update: + 2023-08-07 + + +
    + + + + + + +
    +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file diff --git a/tutorials/index.html b/tutorials/index.html new file mode 100644 index 000000000..505817b3b --- /dev/null +++ b/tutorials/index.html @@ -0,0 +1,489 @@ + + + + + + + + + + + + + + + + + + Tutorials - Maestro + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + + +
    + + +
    + +
    + + + + + + +
    +
    + + + +
    +
    +
    + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    + +
    + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + \ No newline at end of file