diff options
-rw-r--r-- | Makefile | 42 | ||||
-rw-r--r-- | download.htin | 62 | ||||
-rw-r--r-- | examples.htin | 1 | ||||
-rw-r--r-- | graphics/bwd.png | bin | 0 -> 180 bytes | |||
-rw-r--r-- | graphics/ctx.png | bin | 0 -> 312 bytes | |||
-rw-r--r-- | graphics/fwd.png | bin | 0 -> 180 bytes | |||
-rw-r--r-- | graphics/idx.png | bin | 0 -> 164 bytes | |||
-rw-r--r-- | graphics/left.png | bin | 0 -> 193 bytes | |||
-rw-r--r-- | graphics/right.png | bin | 0 -> 191 bytes | |||
-rw-r--r-- | graphics/top.png | bin | 0 -> 149 bytes | |||
-rw-r--r-- | graphics/up.png | bin | 0 -> 193 bytes | |||
-rw-r--r-- | gray.css | 267 | ||||
-rw-r--r-- | inc/footer.html | 37 | ||||
-rw-r--r-- | inc/header.html | 42 | ||||
-rw-r--r-- | index.htin | 220 | ||||
-rw-r--r-- | postproc.awk | 81 |
16 files changed, 752 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..bf7f992 --- /dev/null +++ b/Makefile @@ -0,0 +1,42 @@ +# The entire webdoc source tree must be located under the doc subdirectory +# of the Eclat tree. + +include ../Makefile.inc +VPATH=.. + +.SUFFIXES: .1 .5 .htin .html + +MAN2HTMLFLAGS=-r + +.1.html: + man2html $(MAN2HTMLFLAGS) $< | \ + sed 's/<[\/A-Z][A-Z0-9]*/\L&/g;s|<b>\\dq</b>|<b>\\"</b>|g;s|<b>dq</b>|<b>"</b>|g' | \ + awk -f postproc.awk + m4 -P -DACTIVE=documentation inc/header.html a.1 a.3 a.2 a.4 inc/footer.html > $@ + rm a.[1-4] +.5.html: + man2html $(MAN2HTMLFLAGS) $< | \ + sed 's/<[\/A-Z][A-Z0-9]*/\L&/g' | \ + awk -f postproc.awk + m4 -P -DACTIVE=documentation inc/header.html a.1 a.3 a.2 a.4 inc/footer.html > $@ + rm a.[1-4] + +.htin.html: + m4 -P -DACTIVE=$* inc/header.html $< inc/footer.html > $@ + +SOURCES=\ + index.htin\ + download.htin\ + examples.htin + +HTMLFILES=$(MANPAGES1:.1=.html) $(MANPAGES5:.5=.html) $(SOURCES:.htin=.html) + +all: $(HTMLFILES) + +archive: all + tar zcf eclat-webdoc.tar.gz $(HTMLFILES) *.css graphics + +clean:; rm -f *.html a.[1-4] *~ + +$(HTMLFILES): Makefile postproc.awk inc/header.html inc/footer.html + diff --git a/download.htin b/download.htin new file mode 100644 index 0000000..254a337 --- /dev/null +++ b/download.htin @@ -0,0 +1,62 @@ +<h3>Latest release</h3> +<p> +The latest alpha release of <b>Eclat</b> is available from the following +locations: +</p> +<table class="download"> + <thead> + <tr> + <td>Archive</td> + <td>Size</td> + <td>MD5</td> + <td>Signature</td> + </tr> + </thead> + <tbody> + <tr> + <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.gz">eclat-0.1.tar.gz</a></td> + <td>541K</td> + <td>7a6a6bd4ab1739604e429e288b13b38e</td> + <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.gz.sig">eclat-0.1.tar.gz.sig</a></td> + </tr> + <tr> + <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.xz">eclat-0.1.tar.xz</a></td> + <td>293K</td> + <td>95edca338514d2ae267e6bec0d92164f</td> + <td><a href="ftp://download.gnu.org.ua/pub/alpha/eclat/eclat-0.1.tar.xz.sig">eclat-0.1.tar.xz.sig</a></td> + </tr> + </tbody> +</table> +<p> +You can use the signature file to verify that +the corresponding file (without the .sig suffix) is intact. First, +be sure to download both the <i>.sig</i> file and the corresponding tarball. +Then, run a command like this: +</p> + +<pre> + gpg --verify eclat-0.1.tar.gz.sig +</pre> + +<p> +If that command fails because you don't have the required public key, +then run this command to import it: +</p> + +<pre> + gpg --keyserver keys.gnupg.net --recv-keys 55D0C732 +</pre> +<p> +and rerun the <code>gpg --verify</code> command. +</p> + +<h3>Other alphas</h3> +<p> + This and older versions of <b>Eclat</b> can be downloaded from +<a href="ftp://download.gnu.org.ua/pub/alpha/eclat">its ftp home</a>. +</p> +<p> + You can keep track of the news and updates at the +<a href="http://puszcza.gnu.org.ua/projects/eclat">project's +development page</a>. +</p> diff --git a/examples.htin b/examples.htin new file mode 100644 index 0000000..5f927ea --- /dev/null +++ b/examples.htin @@ -0,0 +1 @@ +FIXME: EXAMPLES PAGE diff --git a/graphics/bwd.png b/graphics/bwd.png Binary files differnew file mode 100644 index 0000000..0142be8 --- /dev/null +++ b/graphics/bwd.png diff --git a/graphics/ctx.png b/graphics/ctx.png Binary files differnew file mode 100644 index 0000000..4a86f08 --- /dev/null +++ b/graphics/ctx.png diff --git a/graphics/fwd.png b/graphics/fwd.png Binary files differnew file mode 100644 index 0000000..2e63647 --- /dev/null +++ b/graphics/fwd.png diff --git a/graphics/idx.png b/graphics/idx.png Binary files differnew file mode 100644 index 0000000..fd9356b --- /dev/null +++ b/graphics/idx.png diff --git a/graphics/left.png b/graphics/left.png Binary files differnew file mode 100644 index 0000000..1eeebee --- /dev/null +++ b/graphics/left.png diff --git a/graphics/right.png b/graphics/right.png Binary files differnew file mode 100644 index 0000000..0d1c199 --- /dev/null +++ b/graphics/right.png diff --git a/graphics/top.png b/graphics/top.png Binary files differnew file mode 100644 index 0000000..6544b17 --- /dev/null +++ b/graphics/top.png diff --git a/graphics/up.png b/graphics/up.png Binary files differnew file mode 100644 index 0000000..65a1897 --- /dev/null +++ b/graphics/up.png diff --git a/gray.css b/gray.css new file mode 100644 index 0000000..12526a9 --- /dev/null +++ b/gray.css @@ -0,0 +1,267 @@ +/* Basic settings */ +html, body, table, form { + margin: 0em; + padding: 0em; + height: 100%; +} + +body { + font-family: sans-serif; + font-size: 120%; + color: #333; + margin-left: auto; + margin-right: auto; + max-width: 960px; + background-color: silver; + padding: 1em; +} + +div { + background-color: white; +} + +div#content { + border: 1px solid black; + min-height: 800px; + position: relative; +} + +a { + color: blue; + text-decoration: none; +} + +a:hover { + text-decoration: underline; +} + +img { + border: none 0; + vertical-align: top; +} + +table { + border-collapse: collapse; +} + +.right { + text-align: right; +} + +div#header { + padding: 1em; +} + +/* Header table */ +table#header { + width: 100%; + margin-bottom: 1em; +} + +table#header td.logo { + width: 140px; +} + +table#header td.main { + padding-left: 10px; + white-space: nowrap; + margin: 0px; +} + +table#header td.main h1 { + margin: 0px; + font-style: normal; + font-weight: normal; + font-stretch: normal; + font-variant: normal; +} + +table#header td.main h1 a { + color: black; +} + +table#header td.sub { + color: #777; + border-top: solid 1px #ccc; + padding-left: 10px; + vertical-align: top; +} + +table#header td.sub h2 { + font-style: normal; + font-weight: normal; + font-stretch: normal; + font-variant: normal; + font-size: 100%; + margin: 0px; +} + +/* Main menu (tabs) */ +ul.tabs { + list-style-type: none; + width: 100%; + border-bottom: solid 2px #ccc; + border-collapse: collapse; + display: table; + margin: 0; +} + +ul.tabs li { + width: 20%; + margin-left: 5%; + display: block; + float: left; + vertical-align: bottom; + padding: 0; + color: #777; + font-size: 100%; +} + +ul.tabs li a { + color: #777; + font-size: 100%; + text-decoration: none; + padding: 2px 0.75em; +} + +ul.tabs li a.active { + color: #000; + background-color: #ccc; +} + +ul.tabs li a:hover { + text-decoration: underline; +} + +/* Ditto, table version */ +table.tabs { + border-bottom: solid 2px #ccc; + border-collapse: collapse; + margin-top: 2em; + margin-bottom: 0px; + width: 100%; +} + +table.tabs td { + padding: 0px 1em; + vertical-align: bottom; +} + +table.tabs td a { + padding: 2px 0.75em; + color: #777; + font-size: 110%; +} + +table.tabs td a.active { + color: #000; + background-color: #ccc; +} + +/* Main text */ +div#main { + margin-top: 2em; + margin-bottom: 2em; + margin-left: 5%; + margin-right: 5%; + padding-bottom: 10em; +} + +/* Copyright section */ +#copyright { + border-top: solid 2px #ccc; + font-size: 80%; + position: absolute; + height: 12em; + width: 100%; + bottom: 0; +} + +/* Download table */ +table.download { + border: 1px black solid; +} + +table.download td { + border: 1px black solid; + padding: 0.3em; +} + +table.download tbody.previous { + color: silver; +} + +table.download tbody.previous a { + color: lightblue; +} + +/* Example output */ +span.comment { + color: red; + font-style: italic; +} + +span.var { + color: #b8860b; +} + +span.lit { + color: #bc8f8f; +} + +span.kw { + color: #0000ff; +} + +table.examples td { + padding: 0.3em; +} + +/* Generator output */ +div.generator { + display: none; +} + +/* Release table */ +tbody.previous { + color: silver; +} + +tbody.previous a { + color: lightblue; +} + +div.inner { + padding: 1em; +} + +table.comparison { + margin-left: auto; + margin-right: auto; + border: 1px solid black; +} + +table.comparison td { + border: 1px solid black; + padding: 4px; +} + +table.comparison thead td.action { + text-align: center; +} + +table.comparison thead td { + text-align: center; +} + +table.comparison td.instance-type { + text-align: center; +} + +table.comparison td.action { + text-align: left; +} + +table.comparison td { + text-align: right; +} diff --git a/inc/footer.html b/inc/footer.html new file mode 100644 index 0000000..06f7063 --- /dev/null +++ b/inc/footer.html @@ -0,0 +1,37 @@ +</div> +<div id="copyright"> +<div class="inner"> +m4_ifelse(`<p> + Return to <a href="http://www.gnu.org">GNU's home page</a>. +</p> +') +<p> + Return to the <a href="http://puszcza.gnu.org.ua">Puszcza home page</a>. +</p> + +<p> + Return to <a href="http://gray.gnu.org.ua">Sergey Poznyakoff home page</a>. +</p> + +<p> +Please send broken links and other corrections (or suggestions) to +<a href="mailto:webmaster@gnu.org.ua"><em>webmaster at gnu dot org dot ua</em></a>. +</p> + +<!-- +<p> +Copyright © 2011 Sergey Poznyakoff +<br /> +Verbatim copying and distribution of this entire article is +permitted in any medium, provided this notice is preserved. +</p> +--> +<!-- +Updated: $Date: 2009/10/16 19:40:24 $ $Author: gray $ +--> +</div> +</div> +</div> +</body> +</html> + diff --git a/inc/header.html b/inc/header.html new file mode 100644 index 0000000..0f9a277 --- /dev/null +++ b/inc/header.html @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="utf-8" ?> +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + +<head> + <title>Eclat</title> + <link rev="made" href="mailto:gray@gnu.org.ua" /> + <link rel="stylesheet" type="text/css" href="gray.css" /> + <link rel="icon" type="image/png" href="/graphics/gnu-head-icon.png" /> +</head> +<body> +<div id="content"> +<div id="header"> +<table id="header"> + <tr> + <td class="logo" rowspan="3"> + <img src="/graphics/gnu-head-sm.jpg" + alt=" [image of the Head of a GNU] " width="129" height="122" /> + </td> + <td class="main"> + <h1><a href="/software/eclat">Eclat</a></h1> + </td> + </tr> + <tr> + <td class="sub"> + <h2>EC2 Command Line Administrator Tool</h2> + </td> + <td class='sub right'> + <a href="http://gray.gnu.org.ua">Sergey Poznyakoff</a> + </td> + </tr> +</table> +<ul class='tabs'> + <li><a m4_ifelse(ACTIVE,`index',`class="active" ')href="index.html">Main</a></li> +m4_dnl <li><a m4_ifelse(ACTIVE,`examples',`class="active" ')href="examples.html">Examples</a></li> + <li><a m4_ifelse(ACTIVE,`download',`class="active" ')href="download.html">Downloads</a></li> + <li><a m4_ifelse(ACTIVE,`documentation',`class="active" ')href="manual.html">Documentation</a></li> +</ul> +</div> +<div id="main"> + diff --git a/index.htin b/index.htin new file mode 100644 index 0000000..3355139 --- /dev/null +++ b/index.htin @@ -0,0 +1,220 @@ +<h3>What's Eclat</h3> +<p> +<b>Eclat</b> stands for EC2 Command Line Administrator Tool. It allows you to +manage Amazon EC2 services from the command line, fast and easy. It does +not require any resource-consuming libraries. It is written in plain C, +depends only on libraries which are always installed on any decent system, +and has a tiny memory footprint. +</p> + +<h3>Why use it?</h3> +<p>Amazon provides similar command line utilities in its +<code>ec2-api-tools</code> package. So why use Eclat instead? The answer is +simple: Eclat performs about 100 times faster, uses 10 times less CPU +and requires 32 times less memory than <code>ec2-api-tools</code>.</p> +<p> +The table below summarizes the results of running various <code>describe</code> +commands on two distinct classes of Amazon instances. +</p> + +<table class="comparison"> +<thead> +<tr> + <td rowspan="2" class="action">Action</td> + <td colspan="3">Real time</td> + <td colspan="3">CPU usage (%)</td> + <td colspan="3">Memory usage</td> +</tr> +<tr> + <td>EC2</td> + <td>Eclat</td> + <td>%</td> + <td>EC2</td> + <td>Eclat</td> + <td>%</td> + <td>EC2</td> + <td>Eclat</td> + <td>%</td> +</tr> +</thead> +<tbody> +<tr> + <td colspan="10" class="instance-type">t1.micro</td> +</tr> +</tbody> +<tbody> +<tr> + <td class="action">describe-addresses</td> + <td>0:07.73</td> + <td>0:00.25</td> + <td> 3.2</td> + <td> 93</td> + <td> 4</td> + <td> 4.3</td> + <td>541.3</td> + <td>19.4</td> + <td> 3.6</td> +</tr> +<tr> + <td class="action">describe-instance-status</td> + <td>0:31.78</td> + <td>0:00.39</td> + <td> 1.2</td> + <td> 98</td> + <td> 28</td> + <td>28.6</td> + <td>538.3</td> + <td>19.7</td> + <td> 3.7</td> +</tr> +<tr> + <td class="action">describe-instances</td> + <td>1:00.99</td> + <td>0:00.25</td> + <td> 0.4</td> + <td> 98</td> + <td> 9</td> + <td> 9.2</td> + <td>420.8</td> + <td>21.3</td> + <td> 5.1</td> +</tr> +<tr> + <td class="action">describe-tags</td> + <td>0:12.26</td> + <td>0:00.45</td> + <td> 3.7</td> + <td> 98</td> + <td> 51</td> + <td>52.0</td> + <td>541.6</td> + <td>20.2</td> + <td> 3.7</td> +</tr> +<tr> + <td class="action">describe-volumes</td> + <td>1:01.46</td> + <td>0:00.39</td> + <td> 0.6</td> + <td> 90</td> + <td> 5</td> + <td> 5.6</td> + <td>378.6</td> + <td>20.2</td> + <td> 5.3</td> +</tr> +<tr> + <td class="action">Average</td> + <td>0:34.84</td> + <td>0:00.35</td> + <td> 1.0</td> + <td> 95</td> + <td> 19</td> + <td>20.3</td> + <td>484.1</td> + <td>20.2</td> + <td> 4.2</td> +</tr> +</tbody> +<tbody> +<tr> + <td colspan="10" class="instance-type">m1.large</td> +</tr> +</tbody> +<tbody> +<tr> + <td class="action">describe-addresses</td> + <td>0:06.87</td> + <td>0:00.11</td> + <td> 1.6</td> + <td>140</td> + <td> 14</td> + <td>10.0</td> + <td>589.9</td> + <td>19.2</td> + <td> 3.3</td> +</tr> +<tr> + <td class="action">describe-instance-status</td> + <td>0:06.75</td> + <td>0:00.12</td> + <td> 1.8</td> + <td>143</td> + <td> 12</td> + <td> 8.4</td> + <td>611.8</td> + <td>19.5</td> + <td> 3.2</td> +</tr> +<tr> + <td class="action">describe-instances</td> + <td>0:07.47</td> + <td>0:00.11</td> + <td> 1.5</td> + <td>143</td> + <td> 21</td> + <td>14.7</td> + <td>643.8</td> + <td>21.1</td> + <td> 3.3</td> +</tr> +<tr> + <td class="action">describe-tags</td> + <td>0:07.82</td> + <td>0:00.10</td> + <td> 1.3</td> + <td>139</td> + <td> 19</td> + <td>13.7</td> + <td>654.7</td> + <td>20.1</td> + <td> 3.1</td> +</tr> +<tr> + <td class="action">describe-volumes</td> + <td>0:08.26</td> + <td>0:00.10</td> + <td> 1.2</td> + <td>129</td> + <td> 18</td> + <td>14.0</td> + <td>654.0</td> + <td>20.1</td> + <td> 3.1</td> +</tr> +<tr> + <td class="action">Average</td> + <td>0:07.43</td> + <td>0:00.11</td> + <td> 1.5</td> + <td>138</td> + <td> 16</td> + <td>12.1</td> + <td>630.8</td> + <td>20.0</td> + <td> 3.2</td> +</tr> +</tbody> +</table> +<p>The columns <code>EC2</code> and <code>Eclat</code> contain measurements shown by +<code>ec2-api-tools</code> and Eclat correspondingly. Each <code>%</code> column +shows the resource usage by Eclat relative to that of <code>ec2-api-tools</code>.</p> +<h3>Requirements and Build Prerequisites</h3> +<p> +There are no special requirements for the system where Eclat is to be run. +As the above table shows, it feels itself quite comfortably even in +conditions of extreme scarcity of resources, such as on <code>t1.micro</code> +instances. +</p> +<p>There are only two prerequisites for building the package: +<a href="http://curl.haxx.se">Curl</a> and +<a href="http://www.libexpat.org">Expat</a> libraries.</p> +<h3>ID Mapping</h3> +One of the unique features of Eclat is <i>ID mapping</i>, which +allows you to identify EC2 resources by arbitrary symbolic names, +instead of Amazon resource identifiers. Tables that map symbolic +names to identifiers can be stored in several formats, such as +plain text files, <a href="http://www.gnu.org/software/gdbm/">GDBM</a> +or <a href="http://www.openldap.org">LDAP</a> databases. + + diff --git a/postproc.awk b/postproc.awk new file mode 100644 index 0000000..c0c347a --- /dev/null +++ b/postproc.awk @@ -0,0 +1,81 @@ +BEGIN { + if (!filename) + filename = "a"; +} +function out(text) { + print text >> (filename "." state) +} +function downh(num) { + num=substr($0, 3, 1) + sub(/<h[0-9]>/,("<h" (num+1) ">")) + sub(/<\/h[0-9]>/,("</h" (num+1) ">")) +} +state == 0 && /<body>/ { state = 1; next } +state == 0 { next } + +state == 1 && /<h1>/ { + gsub(/\\-/,"-") + downh() + out($0); + next +} +state == 1 && /<hr>/ { + out("<hr>"); + state = 2; + next +} +state == 1 { next } + +state == 2 && /<h2>Index<\/h2>/ { + state = 3; + out($0); + next +} +# man2html is unable to handle commands like: +# .IP \n[step]. +# Instead of evaluating \n[step], it strips "\n[" and leaves the rest +# untouched. The klugde below is based on the assumption that we always +# use step as the name of the variable. +state == 2 && /<dl/ { counter=1 } +state == 2 && /<dt>step\]\./ { + sub(/<dt>step\]\./,("<dt>" counter ".")) + ++counter +} + +state == 2 && /<h2>COMMANDS<\/h2>/ { command_links=1; out($0); next } +state == 2 && /<h2>/ { command_links=0 } +state == 2 && command_links == 1 && /^<b>.*<\/b>[,.]$/ { + punct=substr($0,length($0)) + sub(/<b>/,"") + sub(/<\/b>[,.]/,"") + out("<b><a href=\"eclat-" $0 ".html\">" $0 "</a></b>" punct) + if (punct == ".") + command_links=0 + next +} + +state == 3 && /<hr>/ { + out($0); + state = 4; + next +} + +state == 4 { + out("<p>This document was created by <a href=\"http://primates.ximian.com/~flucifredi/man/\">man2html</a> and postprocessed by postproc.awk.</p>") + out("<p>" strftime("%c", systime()) "</p>") + exit +} + +/<h[0-9]>/ { downh() } + +{ + s=gensub(/HREF="\.\.\/man[1-8n]\/(eclat[a-z.-]*)\.[1-8n]\.html/, + "href=\"\\1.html", "g") + s=gensub(/HREF="\.\.\/man[1-8n]\/(forlan[a-z.-]*)\.[1-8n]\.html/, + "href=\"\\1.html", "g",s) + s=gensub(/HREF="\.\.\/man([1-8n])\/(.+)\.[1-8n]\.html/, + "href=\"http://www.manpagez.com/man/\\1/\\2/","g",s) + out(s) +} + +
\ No newline at end of file |