diff --git a/docs/docs/developer_docs/img/architecture_diagram.svg b/docs/docs/developer_docs/img/architecture_diagram.svg index 0c9a2f31c2855fcf49f82e925f73a7801fc85124..0e04360d75b9a19b33043648c72e6014e52d0b5e 100644 --- a/docs/docs/developer_docs/img/architecture_diagram.svg +++ b/docs/docs/developer_docs/img/architecture_diagram.svg @@ -1,2 +1,2 @@ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="713px" height="573px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36" version="6.0.2.1" editor="www.draw.io" type="device"><diagram name="Page-1">7Vptb9owEP41fJ2SmBD4CKx0k9ppEp3afXQTl3iYGDnmbb9+dmOTFwdoIUkLrEiVfb7Y8fNc7s6XtMBwtr5lcB7e0wCRlmMF6xb42nIcrwfEfynYJAK3ayeCCcNBIsoIxvgvUkJLSRc4QHFOkVNKOJ7nhT6NIuTznAwyRld5tRdK8qvO4QQZgrEPiSl9xAEPE2nXtVL5N4QnoV7ZttTIM/SnE0YXkVqv5YCX179keAb1XEo/DmFAVxkRuGmBIaOUJ63ZeoiIhFbDllw32jEKusm0S0gWaiu/Io45QYGQ3sENYmpdvtF7JdSfInm93QIDvT+GIv6mBXvGgsYCr3BsV1iFmKPxHPpydCWsR8hCPiNqOOaMTtGQEsqEJKIR2go1E1LthUZ8BGeYSAN7gCGdQSVVxiQsCQwg81UXyFFMiJ5Y8DLy5G+75yViHK0L9KcwJMgqEG4RnSHONkJHX9FWhG60Iav+KjWftjafMGs6WgiVyU62c6ewi4ZCvpwFvfi1s9D28iw4XZMFYJewAHpVsGD/Z+HV+7+BhG5dJJTc7n4PtvXEKUkoEMFAdSnjIZ3QCJKbVDrI05ihDK0xfxJtS7V/y/YXV/YisZMnrSY76dgfxPlGsQMXnApRuu4dpfN3MZ3sR25iJyRKFNMF85WWihwcsgnSWqCcZ4YI5HiZn/4U0rb3UyMHzrmS4DRFgumtqiAhMX5Fg53lIPNc/FZ0fVYOrBM5eL20zxjcZBTmFEc8Nijazv821kA9rHmXQJvd0KNjZt1jxJYlufaBgF+Ojxnx84mBiN92X/40lmo9nRTuD+Y7MFIXAKuQ15YEc9spCebtCmK54zXskT5pVNAZa862d+Rg1YeFbj0kOBfBgtcUC72m3fw5sdBriAXbPGffwwhOpKe3Bt8vz92DkjJGbe7eNs/PKbpDQhfB+QPc7n0kwI6Zp3DKZC20CGwcwrls+huChQ9h7y1WZDE8tmJRAdy218mnLyLqFOFu90rQditAGxhoj7DA17EOgr54Rk0AHidgezVh3zmcOpaVgaqwdODWEi5zBQUvV1Cw8uHSqT5exiLk8b58uSFNhMA4xv5DiCM9JIxre8NRUK4oBjJqR0bgzgfmQaBTP7H7eL0yWk89ZByoe6iZf0pBxnGAQowsVnAP6Lu2VTCp5A6OLbGAeo6he6qT1210p2bzxxmdUzA6+4DRFfRdr1qj08hksocf/fGVpQxl2XFdKYPtGYA/UjYVjwPHNBID5juKszt9FPFtgyZPH2aVNA+wc4EA95oE2PwWIw+w+arg7AF23foAFt30Q5zEhacfO4Gbfw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g transform="translate(0.5,0.5)"><rect x="71" y="1" width="450" height="150" rx="4.5" ry="4.5" fill="#f7f7f7" stroke="none" pointer-events="none"/><rect x="401" y="181" width="310" height="390" rx="9.3" ry="9.3" fill="#f7f7f7" stroke="none" pointer-events="none"/><rect x="1" y="181" width="380" height="390" rx="11.4" ry="11.4" fill="#f7f7f7" stroke="none" pointer-events="none"/><path d="M 231.33 101.33 L 177.7 101.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 172.45 101.33 L 179.45 97.83 L 177.7 101.33 L 179.45 104.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 231.33 91.33 L 203.33 91.33 Q 193.33 91.33 193.33 81.33 L 193.33 58.67 Q 193.33 48.67 183.33 48.67 L 162.37 48.67" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 157.12 48.67 L 164.12 45.17 L 162.37 48.67 L 164.12 52.17 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 291.33 121.33 L 291.33 194.97" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 291.33 200.22 L 287.83 193.22 L 291.33 194.97 L 294.83 193.22 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 321.33 121.33 L 321.33 151.33 Q 321.33 161.33 331.33 161.33 L 471.33 161.33 Q 481.33 161.33 481.33 171.33 L 481.33 194.97" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 481.33 200.22 L 477.83 193.22 L 481.33 194.97 L 484.83 193.22 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="231" y="81" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(274.5,94.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="33" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 35px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Server</div></div></foreignObject><text x="17" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Server</text></switch></g><path d="M 291.33 241.33 L 291.33 401.33 Q 291.33 411.33 281.33 411.33 L 217.7 411.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 212.45 411.33 L 219.45 407.83 L 217.7 411.33 L 219.45 414.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 261.33 241.33 L 261.33 341.33 Q 261.33 351.33 251.33 351.33 L 217.7 351.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 212.45 351.33 L 219.45 347.83 L 217.7 351.33 L 219.45 354.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 321.33 241.33 L 321.33 461.33 Q 321.33 471.33 311.33 471.33 L 217.7 471.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 212.45 471.33 L 219.45 467.83 L 217.7 471.33 L 219.45 474.83 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="231" y="201" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(260.5,214.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="61" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 63px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Manager BI</div></div></foreignObject><text x="31" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Manager BI</text></switch></g><rect x="421" y="201" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(441.5,214.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="79" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 81px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Manager Cloud</div></div></foreignObject><text x="40" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Manager Cloud</text></switch></g><path d="M 107 35 C 107 23 156 23 156 35 L 156 62 C 156 74 107 74 107 62 Z" fill="#ffffff" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><path d="M 107 35 C 107 44 156 44 156 35" fill="none" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(114.5,43.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="34" height="10" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 10px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 34px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Storage</div></div></foreignObject><text x="17" y="10" fill="#000000" text-anchor="middle" font-size="10px" font-family="Tahoma">Storage</text></switch></g><path d="M 91 81 L 164 81 L 171 88 L 171 121 L 98 121 L 91 114 L 91 81 Z" fill="#ffffff" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><path d="M 98 121 L 98 88 L 91 81 M 98 88 L 171 88" fill="none" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(104.5,95.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="53" height="10" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 10px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 53px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">File Storage</div></div></foreignObject><text x="27" y="10" fill="#000000" text-anchor="middle" font-size="10px" font-family="Tahoma">File Storage</text></switch></g><path d="M 84.97 231.33 L 78.15 231.33 Q 71.33 231.33 71.33 241.33 L 71.33 331.33 Q 71.33 341.33 78.15 341.33 L 84.97 341.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 231.33 L 83.22 233.67 L 84.97 231.33 L 83.22 229 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 341.33 L 83.22 343.67 L 84.97 341.33 L 83.22 339 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 84.97 221.33 L 71.33 221.33 Q 61.33 221.33 61.33 231.33 L 61.33 401.33 Q 61.33 411.33 71.33 411.33 L 84.97 411.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 221.33 L 83.22 223.67 L 84.97 221.33 L 83.22 219 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 411.33 L 83.22 413.67 L 84.97 411.33 L 83.22 409 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 84.97 211.33 L 61.33 211.33 Q 51.33 211.33 51.33 221.33 L 51.33 461.33 Q 51.33 471.33 61.33 471.33 L 84.97 471.33" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 211.33 L 83.22 213.67 L 84.97 211.33 L 83.22 209 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90.22 471.33 L 83.22 473.67 L 84.97 471.33 L 83.22 469 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 91 201 L 164 201 L 171 208 L 171 241 L 98 241 L 91 234 L 91 201 Z" fill="#ffffff" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><path d="M 98 241 L 98 208 L 91 201 M 98 208 L 171 208" fill="none" stroke="#1a1a1a" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(121.5,215.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="19" height="10" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 10px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 19px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">NAS</div></div></foreignObject><text x="10" y="10" fill="#000000" text-anchor="middle" font-size="10px" font-family="Tahoma">NAS</text></switch></g><rect x="91" y="331" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(114.5,344.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="73" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 75px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Workstation 1</div></div></foreignObject><text x="37" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Workstation 1</text></switch></g><rect x="91" y="391" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(114.5,404.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="73" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 75px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Workstation 2</div></div></foreignObject><text x="37" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Workstation 2</text></switch></g><rect x="91" y="451" width="120" height="40" fill="#ffffff" stroke="#1a1a1a" pointer-events="none"/><g transform="translate(114.5,464.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="73" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 75px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Workstation 3</div></div></foreignObject><text x="37" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Tahoma">Workstation 3</text></switch></g></g></svg> \ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="851px" height="371px" version="1.1" content="<mxfile userAgent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36" version="6.0.3.3" editor="www.draw.io" type="google"><diagram name="Page-1">7VnLcpswFP0aZtpFPAgBdpaNm6aLZKYznjbNUgEFqGWuRwg/+vUVRrwscEmaYvrwxuhwka7OOb4Xg4Hnq90NJ+vwDnzKDMv0dwZ+b1gWstBUfmXIPkdmjpkDAY98FVQBi+g7VWARlkY+TRqBAoCJaN0EPYhj6okGRjiHbTPsCVhz1TUJqAYsPMJ09D7yRXi0iwz/SKMgLFZGpjrzSLxlwCGN1XqGhZ8On/z0ihRzqfgkJD5saxC+NvCcA4j8aLWbU5ZxW9CWX/eh4+zUoo9T7BD86PvoyUIXWXC2zoawVO3tcywiwagv0Vuyp1wlIvbF5hl4S5pNiAx8VWyY01i8LANby0BbcRtGgi7WxMvGW2kpuXAoVkzlkAgOSzoHBlwiMcS0TGxDuaC7I9GqXDv4UKnfUFhRwffyIjXFpZJF2RbZarxtMUFYMwCeKpAo4wXl1BVX8kDR1U5dS/7P5Br/nGrqS6OrIXARQgAxYdcVenVwb6l/TYZvVIi9+q2SVICEqhluAdYqju4i8VUemxNHjR4aZspS6NyxghJIuUc7tllUBMID2il0u86cMiKiTXP9NtEOl77jnOxrAWuIYpHUZv6UAZV9bMtp+MdyjwQ8iseueSpeHuQZVPYpt9LLURor9gv8UHNAt7K9vRHL5GtTZMNsDlMz3oBecV7DK7oZnHYzlFPkOamrKtV/t+kcc2DTIfc1q1C3B095q68/B3Qd+lXb9e0rXdnV2sSC8k3LnUBThGd1aXnjYx4+fVs1OtmYsds0OZrpnRlZLZ3ZfoXGrBE4HcbQA5vW6mFa91yevfznakgfOWbnkkP/W3FHYvmvSNYQ800UX4SQJvTtmAvKURcsx2cpKAhpVP0NFcXp0wbNdp0GaIMvuRv+s2tKL0HwuQSx/wvSKsjZqrxzqsrPGaT+mEu8bY+pxLsal1eM+HTE/JXcKP5sdE7+Zhp/98CXiZA/AYhHzKLljonFYvEajV/uRsyeg0bFnv6AddTsuc6o2NPbyWQyGTF9zmxMDQTpFXDc9E0vh3OfHFYvzfKHltWbSXz9Aw==</diagram></mxfile>" style="background-color: rgb(255, 255, 255);"><defs/><g transform="translate(0.5,0.5)"><rect x="0" y="0" width="850" height="370" fill="#ffffff" stroke="none" pointer-events="none"/><path d="M 335 80 L 335 110 Q 335 120 325 120 L 280 120 Q 270 120 270 130 L 270 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 270 158.88 L 266.5 151.88 L 270 153.63 L 273.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 335 80 L 335 110 Q 335 120 345 120 L 400 120 Q 410 120 410 130 L 410 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 158.88 L 406.5 151.88 L 410 153.63 L 413.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 335 80 L 335 110 Q 335 120 345 120 L 540 120 Q 550 120 550 130 L 550 153.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 550 158.88 L 546.5 151.88 L 550 153.63 L 553.5 151.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="275" y="40" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(316.5,53.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="36" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 36px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Server</div></div></foreignObject><text x="18" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Server</text></switch></g><path d="M 270 200 L 270 225 Q 270 235 260 235 L 100 235 Q 90 235 90 245 L 90 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 90 268.88 L 86.5 261.88 L 90 263.63 L 93.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 270 200 L 270 225 Q 270 235 260 235 L 240 235 Q 230 235 230 245 L 230 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 230 268.88 L 226.5 261.88 L 230 263.63 L 233.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="210" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(217.5,173.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="104" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 106px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Manager (in-house)</div></div></foreignObject><text x="52" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Manager (in-house)</text></switch></g><path d="M 410 200 L 410 225 Q 410 235 420 235 L 470 235 Q 480 235 480 245 L 480 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 480 268.88 L 476.5 261.88 L 480 263.63 L 483.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 200 L 410 225 Q 410 235 420 235 L 610 235 Q 620 235 620 245 L 620 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 620 268.88 L 616.5 261.88 L 620 263.63 L 623.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 200 L 410 225 Q 410 235 420 235 L 750 235 Q 760 235 760 245 L 760 263.63" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><path d="M 760 268.88 L 756.5 261.88 L 760 263.63 L 763.5 261.88 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="none"/><rect x="350" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(364.5,173.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="90" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 92px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Manager (Cloud)</div></div></foreignObject><text x="45" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Manager (Cloud)</text></switch></g><rect x="30" y="270" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(74.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="30" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 32px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Blade</div></div></foreignObject><text x="15" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Blade</text></switch></g><rect x="170" y="270" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(197.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="64" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 64px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Workstation</div></div></foreignObject><text x="32" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">Workstation</text></switch></g><rect x="420" y="270" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(470.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="18" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 19px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">VM</div></div></foreignObject><text x="9" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">VM</text></switch></g><rect x="560" y="270" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(610.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="18" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 19px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">VM</div></div></foreignObject><text x="9" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">VM</text></switch></g><rect x="490" y="160" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(544.5,173.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="10" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 12px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">...</div></div></foreignObject><text x="5" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">...</text></switch></g><rect x="700" y="270" width="120" height="40" rx="6" ry="6" fill="#ffffff" stroke="#000000" pointer-events="none"/><g transform="translate(754.5,283.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="10" height="12" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 12px; white-space: nowrap; word-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">...</div></div></foreignObject><text x="5" y="12" fill="#000000" text-anchor="middle" font-size="12px" font-family="Helvetica">...</text></switch></g></g></svg> \ No newline at end of file diff --git a/docs/docs/developer_docs/roadmap.md b/docs/docs/developer_docs/roadmap.md index 652e9af46c1f52d39baf8631b82054d85f3efc02..a1c619cfab297615bac26a51b619db63a57a5304 100644 --- a/docs/docs/developer_docs/roadmap.md +++ b/docs/docs/developer_docs/roadmap.md @@ -1,227 +1,5 @@ # Roadmap -General planning for the next develoment steps. +The day-to-day planning for development is available on +[developer.blender.org](https://developer.blender.org/project/board/58/). In this section we summarize +the high level goals for the projects. -## In progress -Handle mapping of executable paths (and shared dir paths) for each worker when compiling a task. - -## New job/task system -We use a nested Job -> Tasks -> Commands structure. A *job* defines a directed graph of *tasks*, wich are composed by an ordered list of *commands*. - -Here is the data structure of a job. - - -``` -{ - 'name': { - 'type': 'string', - 'required': True, - }, - # Defines how we are going to parse the settings field, in order to generate - # the tasks list. - 'job_type': { - 'type': 'string', - 'required': True, - }, - # Remarks about the settings, the author or the system - 'notes': { - 'type': 'string', - }, - 'project': { - 'type': 'objectid', - 'data_relation': { - 'resource': 'projects', - 'field': '_id', - 'embeddable': True - }, - }, - 'user': { - 'type': 'objectid', - 'required': True, - 'data_relation': { - 'resource': 'users', - 'field': '_id', - 'embeddable': True - }, - }, - # We currently say that a job, and all its tasks, will be assigned to one - # manager only. If one day we want to allow multiple managers to handle a - # job we can convert this to a list. - 'manager': { - 'type': 'objectid', - 'data_relation': { - 'resource': 'managers', - 'field': '_id', - 'embeddable': True - }, - }, - 'status': { - 'type': 'string', - 'allowed': [ - 'completed', - 'active', - 'canceled', - 'queued', - 'failed'], - 'default': 'queued' - }, - # This number could be also be a float between 0 and 1. - 'priority': { - 'type': 'integer', - 'min': 1, - 'max': 100, - 'default': 50 - }, - # Embedded summary of the status of all tasks of a job. Used when listing - # all jobs via a graphical interface. - 'tasks_status': { - 'type': 'dict', - 'schema': { - 'count': {'type': 'integer'}, - 'completed': {'type': 'integer'}, - 'failed': {'type': 'integer'}, - 'canceled': {'type': 'integer'} - } - }, - # The most important part of a job. These custom values are parsed by the - # job compiler in order to generate the tasks. - 'settings': { - 'type': 'dict', - # TODO: introduce dynamic validator, based on job_type/task_type - 'allow_unknown': True, - } -} -``` - -While the original structure of jobs remains the same from the original Flamenco 2, we are altering the task structure. - - -``` -{ - 'job': { - 'type': 'objectid', - 'data_relation': { - 'resource': 'jobs', - 'field': '_id', - 'embeddable': True - }, - }, - 'manager': { - 'type': 'objectid', - 'data_relation': { - 'resource': 'managers', - 'field': '_id', - 'embeddable': True - }, - }, - 'name': { - 'type': 'string', - 'required': True, - }, - 'status': { - 'type': 'string', - 'allowed': [ - 'completed', - 'active', - 'canceled', - 'queued', - 'processing', - 'failed'], - 'default': 'queued' - }, - 'priority': { - 'type': 'integer', - 'min': 1, - 'max': 100, - 'default': 50 - }, - 'job_type': { - 'type': 'string', - 'required': True, - }, - 'parser': { - 'type': 'string', - 'required': True, - }, - 'settings': { - 'type': 'dict', - # TODO: introduce dynamic validator, based on job_type/task_type - 'allow_unknown': True, - }, - # 'commands': { - # 'type': 'list', - # 'schema': { - # 'type': 'dict', - # 'schema': { - # # The parser is inferred form the command name - # 'name': { - # 'type': 'string', - # 'required': True, - # }, - # # In the list of built arguments for the command, we will - # # replace the executable, which will be defined on the fly by - # # the manager - # 'argv': { - # 'type': 'list', - # 'schema': { - # 'type': 'string' - # }, - # }, - # } - # }, - # }, - 'log': { - 'type': 'string', - }, - 'activity': { - 'type': 'string', - 'maxlength': 128 - }, - 'parents': { - 'type': 'list', - 'schema': { - 'type': 'objectid', - 'data_relation': { - 'resource': 'tasks', - 'field': '_id', - 'embeddable': True - } - }, - }, - 'worker': { - 'type': 'string', - } -} -``` - - -## Implement local storage -Create an abstract Storage class for Pillar, that can be initialized with different storage backends. - -## Jobs and tasks storage -Default Pillar storage is flat and file-based (one file has one _id). For Flamenco jobs (and tasks) it makes sense to keep everything into 1 directory. - -``` -/<project_uuid> - /flamenco - /<job_uuid> - /thumbnails - /<command_name> -``` - -## Manager: job_type table -In the job_type table we store the path remap instructions for each job. - -``` -{ -'blender_render': { - 'windows': '', - 'darwin': '', - 'linux': '', - }, -'shared': { - 'windows': '\\shared\', - 'darwin': '/Volumes/shared', - 'linux': '/shared', - }, -} -``` \ No newline at end of file diff --git a/docs/docs/developer_docs/worker.md b/docs/docs/developer_docs/worker.md deleted file mode 100644 index 250c75573cb11939fffbae926c8593e654b7a82d..0000000000000000000000000000000000000000 --- a/docs/docs/developer_docs/worker.md +++ /dev/null @@ -1,89 +0,0 @@ -# Worker setup - -There is a number of ways to set up a Flamenco worker. We are going to consider -the specific instance of getting a Blender render node. - -## Simple worker (Linux) - -Setting up a simple worker would require the following configuration: - -* python 2.7 with requests library -* blender package -* `libglu` and and `libxi6` libraries - -The libraries can be installed with:: - - sudo apt-get install libglu1-mesa libxi6 - -Once the node is setup, we run the manager run.py script and wait for a response -from the manager, which will provide a link to download. - -## Shared resources - -In case the job files are large (2+GiB), we can avoid long transfer times by -mounting a shared drive with the workers, which will be able to read the file -directly. - - -Run a Blender instance inside of a byobu session. - -## Compute Engine setup - -### Ubuntu 14.04 - -We need to mount the resources disk (with software and file to render).:: - - sudo mkdir /mnt/render - sudo mkdir /mnt/render-output - -We if our disk is labeled `render-base`, then it will be available with a -`google-` prefix.:: - - sudo mount -o discard,defaults /dev/disk/by-id/google-render-base /mnt/render - sudo chmod a+w /mnt/render - sudo chmod a+w /mnt/render-output - echo '/dev/disk/by-id/google-render-base /mnt/render ext4 discard,defaults 1 1' | sudo tee -a /etc/fstab - -### GCS Fuse setup - -In order to mount a large storage (a GCS bucket) we need to get `gcsfuse` running. -Taken from gcsfuse docs. - - -1. Add the gcsfuse distribution URL as a package source and import its public - key:: - - export GCSFUSE_REPO=gcsfuse-`lsb_release -c -s` - echo "deb http://packages.cloud.google.com/apt $GCSFUSE_REPO main" | sudo tee /etc/apt/sources.list.d/gcsfuse.list - curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - - -2. Update the list of packages available and install gcsfuse.:: - - sudo apt-get update - sudo apt-get install gcsfuse - -3. (**Ubuntu before wily only**) Add yourself to the `fuse` group, then log - out and back in:: - - sudo usermod -a -G fuse $USER - exit - - -### Connect GCS bucket - - - gcsfuse render-storage /mnt/render-output - - -### Blender command example - - - /mnt/render/data/bin/blender-pano-experiments/blender \ - --enable-autoexec -noaudio --background \ - /mnt/render/data/file/01_01_A.lighting.vr/01_01_A.lighting.vr.blend \ - --render-output /mnt/render-output \ - --render-format EXR \ - -f 760 \ - -- \ - --cycles-resumable-num-chunks 1 \ - --cycles-resumable-current-chunk 2 \ No newline at end of file