Skip to content

Commit 1539e64

Browse files
committed
Broke up developer guide into multiple sections
1 parent be5370a commit 1539e64

14 files changed

+1514
-1429
lines changed

README.md

+41-6
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,58 @@
11
# XOS documentation on [guide.xosproject.org](https://guide.xosproject.org)
22

3-
This documentation uses [GitHub Pages](https://pages.github.com), specifically the [Jekyll Integration](https://help.github.com/articles/using-jekyll-with-pages/), which can be deployed using [Bundler](http://bundler.io/).
3+
This documentation uses [GitHub Pages](https://pages.github.com), specifically the [Jekyll Integration](https://help.github.com/articles/using-jekyll-with-pages/), which can be deployed using [Bundler](http://bundler.io/).
44

55
## Previewing a local copy during editing
66

77
To set up github-pages flavored Jekyll, `bundle install --path ../github-pages` in the repo root, which creates a bundle of gems in the parent directory that are current with the ones GitHub uses to render the site from it's repo.
88

99
To view the local edits: `bundle exec jekyll serve`, then visit http://localhost:4000 .
1010

11+
Note that you will have to restart this command if you modify the `_config.yml` file that contains the Jekyll configuration.
12+
1113
## Style notes
1214

13-
When quoting a section of text inline, such as method or variable names, filenames and paths, commands, and similar, use the backtick (`` ` ``) character. One exception - when creating a URL for a filename/path link that points to that location in the code repo, quoting isn't needed.
15+
*Quoting Text*: When quoting a section of text inline, such as method or variable names, filenames and paths, commands, and similar, use the backtick (`` ` ``) character, except when creating a URL for a filename/path link that points to that location in the code repo in which case quoting isn't needed.
16+
17+
*Code*: For standalone or multi-line code snippets, wrap code in tags for [Jekyll's code highlighting support](http://jekyllrb.com/docs/posts/#highlighting-code-snippets), which looks like this :
18+
```
19+
{% highlight sh %}
20+
Code in shell script
21+
{% endhighlight %}
22+
```
23+
24+
If you're quoting a template that uses the same `{% %}` tags as Jekyll, you may need to [escape the code as described here](http://stackoverflow.com/questions/3426182/how-to-escape-liquid-template-tags).
1425

15-
For standalone or multi-line code snippets, wrap code in tags for [Jekyll's code highlighting support](http://jekyllrb.com/docs/posts/#highlighting-code-snippets). You do not need to add additional indentation to the code.
26+
*Shell Commands*: For shell commands that are intended to be run interactively by a user, prefix line with `$` if run as a unprivileged user, or `#` if being run as root. Put a space between the prefix and the command. If you need to specify which user is running a commands, or on which host, add that to the prefix (ex: `username@host $`).
1627

17-
For shell commands that are intended to be run interactively by a user, prefix each line with `$` if run as a unprivledged user, or `#` if being run as root. Put a space between the prefix and the command. If you need to specify which user is running a commands, or on which host, add that to the prefix (ex: `username@host $`).
28+
*Figures/Images*: When embedding figures:
1829

19-
When embedding figures, name the image file with a prefix of the section where it's being used, place in `/figures`, and then use the Jekyll `include` command to add it with the figure template and a caption/alttext:
30+
1. Name the image file with a prefix of the page where it's being used,
31+
2. Optionally prefix it with the figure number and a description.
32+
3. Place in `/figures`
33+
4. Use the Jekyll `include` command to add it with the figure template and a caption/alttext:
2034

2135
```
22-
{% include figure.html url="/figures/archguide-fig02_service_anatomy.jpg" caption="Figure 2. Anatomy of a Service." %}
36+
{% include figure.html url="/figures/archguide-fig02_service_anatomy.jpg" caption="Figure 2. Anatomy of a Service." %}
2337
```
38+
39+
## Converting documents to include in this repo
40+
41+
Note - all the below methods require a bit of cleanup after conversion, but should do the majority of the work for you
42+
43+
### PDF
44+
45+
The [Poppler](http://poppler.freedesktop.org) library includes the utilties `pdftotext` and `pdfimages`.
46+
47+
Extract text: `pdftotext -layout -enc UTF-8 file.pdf file.txt`
48+
Extract images: `pdfimages -all file.pdf image_prefix`
49+
50+
### Google Docs
51+
52+
The [gdocs2md](https://github.com/mangini/gdocs2md) tool can convert then email you a markdown version in a zipfile.
53+
54+
### Other text/document formats
55+
56+
Many file formats are supported by [Pandoc](http://pandoc.org/).
57+
58+

_includes/sidebar.html

+8-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,15 @@ <h1>
1616
<a class="sidebar-nav-item{% if page.url == '/userguide/' %} active{% endif %}" href="/userguide/">User Guide</a>
1717
<a class="sidebar-nav-item{% if page.url == '/devguide/' %} active{% endif %}" href="/devguide/">Developer Guide</a>
1818
<ul class="sidebar_children">
19-
<li><a class="sidebar-nav-item{% if page.url == '/devguide/ansible/' %} active{% endif %}" href="/devguide/ansible/">Hello World Ansible</a></li>
19+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/configmgmt/' %} active{% endif %}" href="/devguide/configmgmt/">Configuration Management</a></li>
20+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/interfaces/' %} active{% endif %}" href="/devguide/interfaces/">Programmatic Interfaces</a></li>
21+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/addview/' %} active{% endif %}" href="/devguide/addview/">Adding Views</a></li>
22+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/addservice/' %} active{% endif %}" href="/devguide/addservice/">Adding Services</a></li>
23+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/addserviceansible/' %} active{% endif %}" href="/devguide/addserviceansible/">Adding Services using Ansible</a></li>
24+
<li><a class="sidebar-nav-item{% if page.url == '/devguide/datamodel/' %} active{% endif %}" href="/devguide/datamodel/">Data Modeling Conventions</a></li>
25+
2026
</ul>
21-
<a class="sidebar-nav-item{% if page.url == '/opsguide/ %} active{% endif %}" href="/opsguide/">Operator Guide</a>
27+
<a class="sidebar-nav-item{% if page.url == '/opsguide/' %} active{% endif %}" href="/opsguide/">Operator Guide</a>
2228
<a class="sidebar-nav-item{% if page.url == '/releasenotes/' %} active{% endif %}" href="/releasenotes/">Release Notes</a>
2329
<a class="sidebar-nav-item{% if page.url == '/roadmap/' %} active{% endif %}" href="/roadmap/">Roadmap</a>
2430

archguide.md

+14-13
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
layout: page
33
title: Architecture Guide
44
---
5+
{% include toc.html %}
56

67
## Overview
78

@@ -14,14 +15,14 @@ compose services as first-class operations.
1415

1516
In-depth descriptions of XOS are presented elsewhere. For example, see:
1617

17-
* [Services and Service Composition in XOS](http://xos.wpengine.com/wp-content/uploads/2015/04/Services-in-XOS.pdf).
18+
* [Services and Service Composition in XOS](http://xos.wpengine.com/wp-content/uploads/2015/04/Services-in-XOS.pdf)
1819

19-
* [XOS: An Extensible Cloud Operating System](http://xosproject.org/wp-content/uploads/2015/04/paper-xos-bigsys15.pdf).
20+
* [XOS: An Extensible Cloud Operating System](http://xosproject.org/wp-content/uploads/2015/04/paper-xos-bigsys15.pdf)
2021

2122
The following gives a high-level description of XOS sufficient for
2223
reading the rest of this Guide.
2324

24-
##OS Perspective
25+
## OS Perspective
2526

2627
XOS is designed from the perspective of an operating system. An OS
2728
provides many inter-related mechanisms to empower users. If we define
@@ -70,7 +71,7 @@ controller, which exposes a global interface; any per-instance or
7071
per-device interface is an implementation detail that is hidden behind
7172
the controller.
7273

73-
##Software Structure
74+
## Software Structure
7475

7576
The XOS implementation is organized around three layers, as
7677
illustrated in Figure 3. At the core is a *Data Model*, which records
@@ -143,7 +144,7 @@ vOLT, vCPE, and vBNG). We have also prototyped multi-tenant services
143144
using several open source projects, including Cassandra, Kairos,
144145
Swift, and Nagios.
145146

146-
##<a name="data-model">Data Model</a>
147+
## Data Model
147148

148149
This section gives a high-level overview of the XOS data model. This
149150
overview focuses on the abstract objects and relationships among them,
@@ -172,7 +173,7 @@ with some of their key Fields, including relationships to other Object
172173
Types. The discussion is organized around five categories: access
173174
control, infrastructure, policy, virtualization, and services.
174175

175-
###Access Control
176+
### Access Control
176177

177178
XOS uses role-based access control, where a user with a particular
178179
role is granted privileges in the context (scope) of some set of
@@ -217,7 +218,7 @@ objects.
217218
* **Deployment Privileges:** The binding of a User to a Role in the
218219
scope of a particular Deployment, which implies the Role applies
219220
to all Objects of type Image, NetworkTemplate, and Flavors
220-
assocaited with the Deployment. The sole Deployment-level role is:
221+
associated with the Deployment. The sole Deployment-level role is:
221222

222223
- **Admin:** Read/write access to all Deployment-specific objects.
223224

@@ -262,7 +263,7 @@ User*, that have restricted access to just a subset of Services and
262263
not other aspects of the XOS interface. In this way, custom service
263264
portals may be created, and users confined within those portals.
264265

265-
###Infrastructure
266+
### Infrastructure
266267

267268
XOS manages of a set of physical servers deployed throughout the
268269
network. These servers are aggregated along two dimensions, one
@@ -332,7 +333,7 @@ parameters for the Deployment, decides what Sites are allowed to host
332333
Nodes in that Deployment, and decides what Sites are allowed to
333334
instantiate Instances and Networks on the Deployment's resources.
334335

335-
###Policies and Configurations
336+
### Policies and Configurations
336337

337338
Each Deployment defines a set of parameters, configurations and
338339
policies that govern how a collection of resources are managed. XOS
@@ -370,7 +371,7 @@ parameterize an existing NetworkTemplate.) Note that Images and
370371
NetworkTemplates are analogous constructs in the sense that both are
371372
opaque objects from the perspective of the data model.
372373

373-
###Virtualization
374+
### Virtualization
374375

375376
A virtualized Slice of the physical infrastructure is allocated and
376377
managed as follows:
@@ -439,7 +440,7 @@ bound to a Slice share the same Image (hence that field is defined
439440
Slice-wide), while each Network potentially has a different
440441
NetworkTemplate (hence that field is defined per-Network).
441442

442-
###<a name="services-tenacy">Services and Tenancy</a>
443+
### Services and Tenancy
443444

444445
XOS goes beyond Slices to define a model for the service running
445446
within a Slice:
@@ -449,7 +450,7 @@ within a Slice:
449450

450451
- Bound to a set of Slices that collectively implement the Service.
451452

452-
- Bound to a set of Controllers that repesents the service's control
453+
- Bound to a set of Controllers that represents the service's control
453454
interface.
454455

455456
- Bound to a set of other Services upon which it depends.
@@ -470,6 +471,6 @@ object in the data model, and binding that object to the associated
470471
collection of Slice, Controller, and Service objects, but it also
471472
involves extending the underlying XOS code base. These additional
472473
steps are described in the
473-
[Adding Services to XOS](../2_developer/#adding-services) section of the
474+
[Adding Services](/devguide/addservice/) section of the
474475
Developer Guide.
475476

0 commit comments

Comments
 (0)