Skip to content

Commit

Permalink
Merge pull request #1 from dickon/master
Browse files Browse the repository at this point in the history
OXT-168: add a brief README file. With a diagram!
  • Loading branch information
flihp committed Feb 23, 2015
2 parents 8e81151 + 52dbd6d commit 9571561
Show file tree
Hide file tree
Showing 3 changed files with 231 additions and 0 deletions.
52 changes: 52 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
The OpenXT synchronizers

![Block diagram of the OpenXT Synchonizer](diagrams/Syncstruct.png)

Synchronizer XT enables sysadmins and IT professionals to securely and
easily manage a large number of XenClient laptops and the Windows VMs
that run on them.

This contains the client part of the OpenXT synchronizer. The code here (mainly
sync_client/client.py) is a python program that runs in a low privilege service VM,
makes an HTTPS to a synchronizer web server which tells it what VMs it should be running.
client.py then compares this to the current state of the machine, downloads disks, configures
and starts VM as appropriate.

Note that client.py is a short running process which maintains no state. It runs once
to completion and then exits. Normally client.py is started by launcher.py which handles
getting the configuring information for client.py and running it regularly, and handling exits.

## Dependencies

sync-client requires:

* a synchronizer server to get target state and VHDs from (see https://github.com/openxt/sync-server/). In
turn the synchronizer server will require:
** sync-database, a schema and stored procedures
** sync-cli, commnad line tools to access that database
** sync-wui, an optional web user interface for administrators
* icbinn (https://github.com/openxt/icbinn) to provide specific filesystem access to dom0 to write VHD files
* Python 2, (http://python.org)
* dbus-python (https://pypi.python.org/pypi/pydbus/0.2)

Normally sync-client is built as part of an OpenXT build via the recipe (OpenEmbedded makefile) at:

https://github.com/OpenXT/xenclient-oe/blob/master/recipes-openxt/xenclient/sync-client_git.bb

## Getting help

Start at:

http://www.openxt.org/

for details of reaching the OpenXT community.


## Authors

This document was written by Dickon Reed, [email protected], 20th
February 2015.

The OpenXT synchronizer was written by a wider team, who may wish to add
themselves to this README file.

179 changes: 179 additions & 0 deletions diagrams/Syncstruct.dia
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>File:Syncstruct.dia - XenClient</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="generator" content="MediaWiki 1.23.3" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="/opensearch_desc.php" title="XenClient (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.cam.xci-test.com/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="XenClient Atom feed" href="/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="http://wiki.cam.xci-test.com/load.php?debug=false&amp;lang=en&amp;modules=ext.visualEditor.viewPageTarget.noscript%7Cmediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.skinning.interface%7Cmediawiki.ui.button%7Cskins.monobook.styles&amp;only=styles&amp;skin=monobook&amp;*" />
<!--[if IE 6]><link rel="stylesheet" href="/skins/monobook/IE60Fixes.css?303" media="screen" /><![endif]-->
<!--[if IE 7]><link rel="stylesheet" href="/skins/monobook/IE70Fixes.css?303" media="screen" /><![endif]--><meta name="ResourceLoaderDynamicStyles" content="" />
<link rel="stylesheet" href="http://wiki.cam.xci-test.com/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=styles&amp;skin=monobook&amp;*" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: wikidb:resourceloader:filter:minify-css:7:b36fd1c042133c9c9b60260f7c29b237 */</style>
<script src="http://wiki.cam.xci-test.com/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=monobook&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"File","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":6,"wgPageName":"File:Syncstruct.dia","wgTitle":"Syncstruct.dia","wgCurRevisionId":4564,"wgRevisionId":4564,"wgArticleId":321,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":[],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"File:Syncstruct.dia","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgRestrictionUpload":[],"wgVisualEditor":{"isPageWatched":false,"magnifyClipIconURL":"/skins/common/images/magnify-clip.png","pageLanguageCode":"en","pageLanguageDir":"ltr","svgMaxSize":2048}});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"monobook","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,
"useeditwarning":1,"prefershttps":1,"visualeditor-enable":1,"visualeditor-enable-experimental":0,"visualeditor-betatempdisable":0,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: wikidb:resourceloader:filter:minify-js:7:fe59e018522293342af3473987427bd6 */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax","ext.visualEditor.viewPageTarget.init"]);
}</script>
<script src="/extensions/UmlCanvas/Canvas2D.standalone.min.js" type="text/javascript"></script><script src="/extensions/UmlCanvas/UmlCanvas.shared.min.js" type="text/javascript"></script><link href="/extensions/UmlCanvas/UmlCanvas.css" rel="stylesheet" type="text/css" /></head>
<body class="mediawiki ltr sitedir-ltr ns-6 ns-subject page-File_Syncstruct_dia skin-monobook action-view">
<div id="globalWrapper">
<div id="column-content"><div id="content" class="mw-body-primary" role="main">
<a id="top"></a>

<h1 id="firstHeading" class="firstHeading" lang="en"><span dir="auto">File:Syncstruct.dia</span></h1>
<div id="bodyContent" class="mw-body">
<div id="siteSub">From XenClient</div>
<div id="contentSub"></div>
<div id="jump-to-nav" class="mw-jump">Jump to: <a href="#column-one">navigation</a>, <a href="#searchInput">search</a></div>

<!-- start content -->
<div id="mw-content-text"><ul id="filetoc"><li><a href="#file">File</a></li>
<li><a href="#filehistory">File history</a></li>
<li><a href="#filelinks">File usage</a></li></ul><div class="fullMedia"><span class="dangerousLink"><a href="/images/1/1a/Syncstruct.dia" class="internal" title="Syncstruct.dia">Syncstruct.dia</a></span> &#8206;<span class="fileInfo">(file size: 4 KB, MIME type: application/x-gzip)</span></div>
<div class="mediaWarning"><strong>Warning:</strong> This file type may contain malicious code.
By executing it, your system may be compromised.</div>
<div id="mw-imagepage-content" lang="en" dir="ltr" class="mw-content-ltr"><p>dia source
</p>
<!--
NewPP limit report
CPU time usage: 0.000 seconds
Real time usage: 0.001 seconds
Preprocessor visited node count: 1/1000000
Preprocessor generated node count: 4/1000000
Post‐expand include size: 0/2097152 bytes
Template argument size: 0/2097152 bytes
Highest expansion depth: 1/40
Expensive parser function count: 0/100
-->

<!-- Saved in parser cache with key wikidb:pcache:idhash:321-0!*!*!*!*!*!* and timestamp 20150220164157 and revision id 4564
-->
</div><h2 id="filehistory">File history</h2>
<div id="mw-imagepage-section-filehistory">
<p>Click on a date/time to view the file as it appeared at that time.
</p>
<table class="wikitable filehistory">
<tr><td></td><th>Date/Time</th><th>Dimensions</th><th>User</th><th>Comment</th></tr>
<tr><td>current</td><td class='filehistory-selected' style='white-space: nowrap;'><a href="/images/1/1a/Syncstruct.dia">17:10, 11 April 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Dickonr&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Dickonr (page does not exist)">Dickonr</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Dickonr&amp;action=edit&amp;redlink=1" class="new" title="User talk:Dickonr (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Dickonr" title="Special:Contributions/Dickonr">contribs</a>)</span></span></td><td dir="ltr"></td></tr>
<tr><td></td><td style='white-space: nowrap;'><a href="/images/archive/1/1a/20120411171057%21Syncstruct.dia">14:26, 17 January 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Apeace&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Apeace (page does not exist)">Apeace</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Apeace&amp;action=edit&amp;redlink=1" class="new" title="User talk:Apeace (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Apeace" title="Special:Contributions/Apeace">contribs</a>)</span></span></td><td dir="ltr">Minor changes; change BED to Python.</td></tr>
<tr><td></td><td style='white-space: nowrap;'><a href="/images/archive/1/1a/20120117142602%21Syncstruct.dia">16:44, 11 January 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Dickonr&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Dickonr (page does not exist)">Dickonr</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Dickonr&amp;action=edit&amp;redlink=1" class="new" title="User talk:Dickonr (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Dickonr" title="Special:Contributions/Dickonr">contribs</a>)</span></span></td><td dir="ltr">change language for sync-client </td></tr>
<tr><td></td><td style='white-space: nowrap;'><a href="/images/archive/1/1a/20120111164404%21Syncstruct.dia">16:06, 10 January 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Dickonr&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Dickonr (page does not exist)">Dickonr</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Dickonr&amp;action=edit&amp;redlink=1" class="new" title="User talk:Dickonr (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Dickonr" title="Special:Contributions/Dickonr">contribs</a>)</span></span></td><td dir="ltr">relabel database </td></tr>
<tr><td></td><td style='white-space: nowrap;'><a href="/images/archive/1/1a/20120110160626%21Syncstruct.dia">14:34, 10 January 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Dickonr&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Dickonr (page does not exist)">Dickonr</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Dickonr&amp;action=edit&amp;redlink=1" class="new" title="User talk:Dickonr (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Dickonr" title="Special:Contributions/Dickonr">contribs</a>)</span></span></td><td dir="ltr"></td></tr>
<tr><td></td><td style='white-space: nowrap;'><a href="/images/archive/1/1a/20120110143401%21Syncstruct.dia">14:27, 10 January 2012</a></td><td> <span style="white-space: nowrap;">(4 KB)</span></td><td><a href="/index.php?title=User:Dickonr&amp;action=edit&amp;redlink=1" class="new mw-userlink" title="User:Dickonr (page does not exist)">Dickonr</a> <span style="white-space: nowrap;"> <span class="mw-usertoollinks">(<a href="/index.php?title=User_talk:Dickonr&amp;action=edit&amp;redlink=1" class="new" title="User talk:Dickonr (page does not exist)">Talk</a> | <a href="/index.php/Special:Contributions/Dickonr" title="Special:Contributions/Dickonr">contribs</a>)</span></span></td><td dir="ltr">dia source</td></tr>
</table>

</div>
<ul>
<li id="mw-imagepage-upload-disallowed">You cannot overwrite this file.</li>
</ul>
<h2 id="filelinks">File usage</h2>
<div id='mw-imagepage-section-linkstoimage'>
<p>The following page links to this file:
</p><ul class="mw-imagepage-linkstoimage">
<li class="mw-imagepage-linkstoimage-ns0"><a href="/index.php/Synchronizer_XT_Overview" title="Synchronizer XT Overview">Synchronizer XT Overview</a></li>
</ul>
</div>
</div><div class="printfooter">
Retrieved from "<a href="http://wiki.cam.xci-test.com/index.php?title=File:Syncstruct.dia&amp;oldid=4564">http://wiki.cam.xci-test.com/index.php?title=File:Syncstruct.dia&amp;oldid=4564</a>"</div>
<div id='catlinks' class='catlinks catlinks-allhidden'></div> <!-- end content -->
<div class="visualClear"></div>
</div>
</div></div>
<div id="column-one">
<h2>Navigation menu</h2>
<div id="p-cactions" class="portlet" role="navigation">
<h3>Views</h3>
<div class="pBody">
<ul>
<li id="ca-nstab-image" class="selected"><a href="/index.php/File:Syncstruct.dia" title="View the file page [c]" accesskey="c">File</a></li>
<li id="ca-talk" class="new"><a href="/index.php?title=File_talk:Syncstruct.dia&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t">Discussion</a></li>
<li id="ca-viewsource"><a href="/index.php?title=File:Syncstruct.dia&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e">View source</a></li>
<li id="ca-history"><a href="/index.php?title=File:Syncstruct.dia&amp;action=history" rel="archives" title="Past revisions of this page [h]" accesskey="h">History</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-personal" role="navigation">
<h3>Personal tools</h3>
<div class="pBody">
<ul>
<li id="pt-login"><a href="/index.php?title=Special:UserLogin&amp;returnto=File%3ASyncstruct.dia" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li>
</ul>
</div>
</div>
<div class="portlet" id="p-logo" role="banner">
<a href="/index.php/Main_Page" style="background-image: url(http://www.cam.xci-test.com/xc_dist/xen_logo.gif);" title="Visit the main page"></a>
</div>
<div class="generated-sidebar portlet" id="p-navigation" role="navigation">
<h3>Navigation</h3>
<div class='pBody'>
<ul>
<li id="n-mainpage-description"><a href="/index.php/Main_Page" title="Visit the main page [z]" accesskey="z">Main page</a></li>
<li id="n-recentchanges"><a href="/index.php/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li>
<li id="n-randompage"><a href="/index.php/Special:Random" title="Load a random page [x]" accesskey="x">Random page</a></li>
<li id="n-help"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" title="The place to find out">Help</a></li>
</ul>
</div>
</div>
<div id="p-search" class="portlet" role="search">
<h3><label for="searchInput">Search</label></h3>
<div id="searchBody" class="pBody">
<form action="/index.php" id="searchform">
<input type='hidden' name="title" value="Special:Search"/>
<input type="search" name="search" placeholder="Search" title="Search XenClient [f]" accesskey="f" id="searchInput" />
<input type="submit" name="go" value="Go" title="Go to a page with this exact name if exists" id="searchGoButton" class="searchButton" />&#160;
<input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton" />
</form>

</div>
</div>
<div class="portlet" id="p-tb" role="navigation">
<h3>Tools</h3>
<div class="pBody">
<ul>
<li id="t-whatlinkshere"><a href="/index.php/Special:WhatLinksHere/File:Syncstruct.dia" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li>
<li id="t-recentchangeslinked"><a href="/index.php/Special:RecentChangesLinked/File:Syncstruct.dia" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li>
<li id="t-specialpages"><a href="/index.php/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li>
<li id="t-print"><a href="/index.php?title=File:Syncstruct.dia&amp;printable=yes" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li>
<li id="t-permalink"><a href="/index.php?title=File:Syncstruct.dia&amp;oldid=4564" title="Permanent link to this revision of the page">Permanent link</a></li>
<li id="t-info"><a href="/index.php?title=File:Syncstruct.dia&amp;action=info">Page information</a></li>
<li id="t-pdf">
<a href="/index.php?title=Special:PdfPrint&amp;page=File:Syncstruct.dia">Print as PDF</a></li> </ul>
</div>
</div>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
<div id="footer" role="contentinfo">
<div id="f-poweredbyico">
<a href="//www.mediawiki.org/"><img src="/skins/common/images/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" width="88" height="31" /></a>
</div>
<ul id="f-list">
<li id="lastmod"> This page was last modified on 11 April 2012, at 17:10.</li>
<li id="viewcount">This page has been accessed 353 times.</li>
<li id="privacy"><a href="/index.php/XenClient:Privacy_policy" title="XenClient:Privacy policy">Privacy policy</a></li>
<li id="about"><a href="/index.php/XenClient:About" title="XenClient:About">About XenClient</a></li>
<li id="disclaimer"><a href="/index.php/XenClient:General_disclaimer" title="XenClient:General disclaimer">Disclaimers</a></li>
</ul>
</div>
</div>
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"site":"loading","user":"ready","user.groups":"ready"});
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest"],null,true);
}</script>
<script src="http://wiki.cam.xci-test.com/load.php?debug=false&amp;lang=en&amp;modules=site&amp;only=scripts&amp;skin=monobook&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":274});
}</script></body></html>
Binary file added diagrams/Syncstruct.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit 9571561

Please sign in to comment.