SlapOS core.
Project description
slapos.core
===========
The core of SlapOS.
Contains the SLAP library, and the slapgrid, slapformat, slapproxy tools.
For more information, see http://www.slapos.org.
Changes
=======
0.22 (2012-02-09)
-----------------
* slapformat : Add no-bridge feature. [Cedric de Saint Martin]
* slapgrid : Add binary cache support. [Yingjie Xu]
0.21 (2011-12-23)
-----------------
* slap: Add renaming API. [Antoine Catton]
0.20 (2011-11-24)
-----------------
* slapgrid: Support service-less parttions. [Antoine Catton]
* slapgrid: Avoid gid collision while dropping privileges. [Antoine Catton]
* slapgrid: Drop down network usage during usage reporting. [Łukasz Nowak]
* general: Add sphinx documentation. [Romain Courteaud]
0.19 (2011-11-07)
-----------------
* bang: Executable to be called by being banged computer. [Łukasz Nowak]
0.18 (2011-10-18)
-----------------
* Fix 0.17 release: missing change for slap library. [Łukasz Nowak]
0.17 (2011-10-18)
-----------------
* slap: Avoid request under the hood. [Łukasz Nowak]
* slap: ComputerPartition.bang provided. It allows to update all instances
in tree. [Łukasz Nowak]
* slap: Computer.bang provided. It allows to bang all instances on computer.
[Łukasz Nowak]
0.16 (2011-10-03)
-----------------
* slapgrid: Bugfix for slapgrid introduced in 0.15. [Łukasz Nowak]
0.15 (2011-09-27)
-----------------
* slapgrid: Sanitize environment variables as early as possible. [Arnaud
Fontaine]
* slap: Docstring bugfix. [Sebastien Robin]
* slap: Make request asynchronous call. [Łukasz Nowak]
0.14 (2011-08-31)
-----------------
* slapgrid: Implement SSL based authentication to shadir and shacache.
[Łukasz Nowak]
* slapgrid, slap: Fix usage report packing list generation. [Nicolas Godbert]
0.13 (2011-08-25)
-----------------
* slapgrid: Implement software signing and shacache upload. [Lucas Carvalho]
* slap: Support slave instances [Gabriel Monnerat]
* slapformat: Generate always address for computer [Łukasz Nowak]
* slapgrid: Support promises scripts [Antoine Catton]
* general: slapos.core gets tests. [many contributors]
0.12 (2011-07-15)
-----------------
* Include modifications that should have been included in 0.11.
0.11 (2011-07-15)
-----------------
* Bug fix : slapconsole : shorthand methods request and supply now correctly
return an object. [Cedric de Saint Martin]
0.10 (2011-07-13)
-----------------
* Fix a bug in slapconsole where request and supply shorthand methods
don't accept all needed parameters. [Cedric de Saint Martin]
0.9 (2011-07-11)
----------------
* slapconsole: Simplify usage and use configuration file. You can now
just run slapconsole and type things like "request(kvm, 'mykvm')".
[Cedric de Saint Martin]
* slapformat: Fix issue of bridge not connected with real interface on
Linux >= 2.6.39 [Arnaud Fontaine]
* slapformat: Allow to have IPv6 only interface, with bridge still supporting
local IPv4 stack. [Łukasz Nowak]
0.8 (2011-06-27)
----------------
* slapgrid: Bugfix for temporary extends cache permissions. [Łukasz Nowak]
0.7 (2011-06-27)
----------------
* slapgrid: Fallback to buildout in own search path. [Łukasz Nowak]
0.6 (2011-06-27)
----------------
* slap: Fix bug: state shall be XML encapsulated. [Łukasz Nowak]
0.5 (2011-06-24)
----------------
* slapgrid: Use temporary extends-cache directory in order to make faster
remote profile refresh. [Łukasz Nowak]
0.4 (2011-06-24)
----------------
* general: Polish requirement versions. [Arnaud Fontaine]
* general: Remove libnetworkcache. [Lucas Carvalho]
* slap: Remove not needed method from interface. [Romain Courteaud]
* slap: state parameter is accepted and transmitted to SlapOS master [Łukasz
Nowak]
* slapformat: Implement dry run. [Vincent Pelletier]
* slapgrid: Allow to select any buildout binary used to bootstrap environment.
[Łukasz Nowak]
0.3 (2011-06-14)
----------------
* slap: Implement SLA by filter_kw in OpenOrder.request. [Łukasz Nowak]
* slap: Timeout network operations. [Łukasz Nowak]
* slapformat: Make slapsoft and slapuser* system users. [Kazuhiko Shiozaki]
* slapgrid: Add more tolerance with supervisord. [Łukasz Nowak]
0.2 (2011-06-01)
----------------
* Include required files in distribution [Łukasz Nowak]
0.1 (2011-05-27)
----------------
* Merged slapos.slap, slapos.tool.console, slapos.tool.format,
slapos.tool.grid, slapos.tool.libnetworkcache and slapos.tool.proxy into one
package: slapos.core
console
=======
The slapconsole tool allows to interact with a SlapOS Master throught the SLAP
library.
For more information about SlapOS or slapconsole usages, please go to
http://www.slapos.org.
The slapconsole tool is only a bare Python console with several global variables
defined and initialized.
Initialization and configuration file
=====
Slapconsole allows to automatically connect to a Master using URL and SSL
certificate from given slapos.cfg.
Certificate has to be *USER* certificate, manually obtained from SlapOS master
web interface.
Slapconsole tools reads the given slapos.cfg configuration file and use the
following informations :
* Master URL is read from [slapos] in the "master_url" parameter.
* SSL Certificate is read from [slapconsole] in the "cert_file" parameter.
* SSL Key is read from [slapconsole] in the "key_file" parameter.
See slapos.cfg.example for examples.
Global functions
=====
* request() is a shorthand for slap.registerOpenOrder().request() allowing
to request instances.
* supply() is a shorthand for slap.registerSupply().supply() allowing to
request software installation.
For more information about those methods, please read the SLAP library
documentation.
Global aliases
=====
"software_list" is a list containing all the Software Release URLs defined in
client slapos.cfg configuration file.
Also, each Software Release defined in this configuration file is translated
into a global variable to ease the request of those Sofware Releases.
This allows to request instances in a few words, i.e
request("http://www.url.com/path/to/kvm/software.cfg", "mykvm")
can be simplified into :
request(kvm, "mykvm")
If the slapos.cfg file contains :
alias =
kvm http://www.url.com/path/to/kvm/software.cfg
Global objects
=====
"slap" is an instance of the SLAP library. It is only used for advanced usages.
"slap" instance is obtained by doing :
slap = slapos.slap.slap()
slap.initializeConnection(config.master_url,
key_file=config.key_file, cert_file=config.cert_file)
Examples
=====
>>> # Request instance
>>> request(kvm, "myuniquekvm")
>>> # Request software installation on owned computer
>>> supply(kvm, "mycomputer")
>>> # Fetch instance status
>>> request(kvm, "myuniquekvm").getState()
>>> # Fetch instance informations on already launched instance
>>> request(kvm, "myuniquekvm").getConnectionParameter("url")
format
======
slapformat is an application to prepare SlapOS ready node (machine).
It "formats" the machine by:
- creating users and groups
- creating bridge interface
- creating needed tap interfaces
- creating needed directories with proper ownership and permissions
In the end special report is generated and information are posted to
configured SlapOS server.
This program shall be only run by root.
Requirements
------------
Linux with IPv6, bridging and tap interface support.
Binaries:
* brctl
* groupadd
* ip
* tunctl
* useradd
grid
====
slapgrid is a client of SLAPos. SLAPos provides support for deploying a SaaS
system in a minute.
Slapgrid allows you to easily deploy instances of softwares based on buildout
profiles.
For more informations about SLAP and SLAPos, please see the SLAP documentation.
Requirements
------------
A working SLAP server with informations about your computer, in order to
retrieve them.
As Vifib servers use IPv6 only, we strongly recommend an IPv6 enabled UNIX
box.
For the same reasons, Python >= 2.6 with development headers is also strongly
recommended (IPv6 support is not complete in previous releases).
For now, gcc and glibc development headers are required to build most software
releases.
Concepts
--------
Here are the fundamental concepts of slapgrid :
A Software Release (SR) is just a software.
A Computer Partition (CP) is an instance of a Software Release.
Imagine you want to install with slapgrid some software and run it. You will
have to install the software as a Software Release, and then instantiate it,
i.e configuring it for your needs, as a Computer Partition.
How it works
------------
When run, slapgrid will authenticate to the SLAP library with a computer_id and
fetch the list of Software Releases to install or remove and Computer
Partitions to start or stop.
Then, it will process each Software Release, and each Computer Partition.
It will also periodically send to SLAP the usage report of each Computer
Partition.
Installation
------------
With easy_install::
$ easy_install slapgrid
slapgrid needs several directories to be created and configured before being
able to run : a software releases directory, and an instances directory with
configured computer partition directory(ies).
You should create for each Computer Partition directory created a specific user
and associate it with its Computer Partition directory. Each Computer Partition
directory should belongs to this specific user, with permissions of 0750.
Usage
-----
slapgrid needs several informations in order to run. You can specify them by
adding arguments to the slapgrid command line, or by putting then in a
configuration file.
Beware : you need a valid computer resource on server side.
Examples
--------
simple example :
Just run slapgrid:
$ slapgrid --instance-root /path/to/instance/root --software-root
/path/to/software_root --master-url https://some.server/some.resource
--computer-id my.computer.id
configuration file example::
[slapgrid]
instance_root = /path/to/instance/root
software_root = /path/to/software/root
master_url = https://slapos.server/slap_service
computer_id = my.computer.id
then run slapgrid::
$ slapgrid --configuration-file = path/to/configuration/file
proxy
=====
slap
====
Simple Language for Accounting and Provisioning python library.
Developer note - python version
-------------------------------
This library is used on client (slapgrid) and server side.
Server is using python2.4 and client is using python2.6
Having this in mind, code of this library *have* to work
on python2.4
How it works
------------
The SLAP main server which is in charge of service coordination receives from participating servers the number of computer paritions which are available, the type of resource which a party is ready provide, and request from parties for resources which are needed.
Each participating server is identified by a unique ID and runs a slap-server daemon. This dameon collects from the main server the installation tasks and does the installation of resources, then notifies the main server of completion whenever a resource is configured, installed and available.
The data structure on the main server is the following:
A - Action: an action which can happen to provide a resource or account its usage
CP - Computer Partition: provides a URL to Access a Cloud Resource
RI - Resource Item: describes a resource
CI - Contract Item: describes the contract to attach the DL to (This is unclear still)
R - Resource: describes a type of cloud resource (ex. MySQL Table) is published on slapgrid.org
DL - Delivery Line: Describes an action happening on a resource item on a computer partition
D - Delivery: groups multiple Delivery Lines
===========
The core of SlapOS.
Contains the SLAP library, and the slapgrid, slapformat, slapproxy tools.
For more information, see http://www.slapos.org.
Changes
=======
0.22 (2012-02-09)
-----------------
* slapformat : Add no-bridge feature. [Cedric de Saint Martin]
* slapgrid : Add binary cache support. [Yingjie Xu]
0.21 (2011-12-23)
-----------------
* slap: Add renaming API. [Antoine Catton]
0.20 (2011-11-24)
-----------------
* slapgrid: Support service-less parttions. [Antoine Catton]
* slapgrid: Avoid gid collision while dropping privileges. [Antoine Catton]
* slapgrid: Drop down network usage during usage reporting. [Łukasz Nowak]
* general: Add sphinx documentation. [Romain Courteaud]
0.19 (2011-11-07)
-----------------
* bang: Executable to be called by being banged computer. [Łukasz Nowak]
0.18 (2011-10-18)
-----------------
* Fix 0.17 release: missing change for slap library. [Łukasz Nowak]
0.17 (2011-10-18)
-----------------
* slap: Avoid request under the hood. [Łukasz Nowak]
* slap: ComputerPartition.bang provided. It allows to update all instances
in tree. [Łukasz Nowak]
* slap: Computer.bang provided. It allows to bang all instances on computer.
[Łukasz Nowak]
0.16 (2011-10-03)
-----------------
* slapgrid: Bugfix for slapgrid introduced in 0.15. [Łukasz Nowak]
0.15 (2011-09-27)
-----------------
* slapgrid: Sanitize environment variables as early as possible. [Arnaud
Fontaine]
* slap: Docstring bugfix. [Sebastien Robin]
* slap: Make request asynchronous call. [Łukasz Nowak]
0.14 (2011-08-31)
-----------------
* slapgrid: Implement SSL based authentication to shadir and shacache.
[Łukasz Nowak]
* slapgrid, slap: Fix usage report packing list generation. [Nicolas Godbert]
0.13 (2011-08-25)
-----------------
* slapgrid: Implement software signing and shacache upload. [Lucas Carvalho]
* slap: Support slave instances [Gabriel Monnerat]
* slapformat: Generate always address for computer [Łukasz Nowak]
* slapgrid: Support promises scripts [Antoine Catton]
* general: slapos.core gets tests. [many contributors]
0.12 (2011-07-15)
-----------------
* Include modifications that should have been included in 0.11.
0.11 (2011-07-15)
-----------------
* Bug fix : slapconsole : shorthand methods request and supply now correctly
return an object. [Cedric de Saint Martin]
0.10 (2011-07-13)
-----------------
* Fix a bug in slapconsole where request and supply shorthand methods
don't accept all needed parameters. [Cedric de Saint Martin]
0.9 (2011-07-11)
----------------
* slapconsole: Simplify usage and use configuration file. You can now
just run slapconsole and type things like "request(kvm, 'mykvm')".
[Cedric de Saint Martin]
* slapformat: Fix issue of bridge not connected with real interface on
Linux >= 2.6.39 [Arnaud Fontaine]
* slapformat: Allow to have IPv6 only interface, with bridge still supporting
local IPv4 stack. [Łukasz Nowak]
0.8 (2011-06-27)
----------------
* slapgrid: Bugfix for temporary extends cache permissions. [Łukasz Nowak]
0.7 (2011-06-27)
----------------
* slapgrid: Fallback to buildout in own search path. [Łukasz Nowak]
0.6 (2011-06-27)
----------------
* slap: Fix bug: state shall be XML encapsulated. [Łukasz Nowak]
0.5 (2011-06-24)
----------------
* slapgrid: Use temporary extends-cache directory in order to make faster
remote profile refresh. [Łukasz Nowak]
0.4 (2011-06-24)
----------------
* general: Polish requirement versions. [Arnaud Fontaine]
* general: Remove libnetworkcache. [Lucas Carvalho]
* slap: Remove not needed method from interface. [Romain Courteaud]
* slap: state parameter is accepted and transmitted to SlapOS master [Łukasz
Nowak]
* slapformat: Implement dry run. [Vincent Pelletier]
* slapgrid: Allow to select any buildout binary used to bootstrap environment.
[Łukasz Nowak]
0.3 (2011-06-14)
----------------
* slap: Implement SLA by filter_kw in OpenOrder.request. [Łukasz Nowak]
* slap: Timeout network operations. [Łukasz Nowak]
* slapformat: Make slapsoft and slapuser* system users. [Kazuhiko Shiozaki]
* slapgrid: Add more tolerance with supervisord. [Łukasz Nowak]
0.2 (2011-06-01)
----------------
* Include required files in distribution [Łukasz Nowak]
0.1 (2011-05-27)
----------------
* Merged slapos.slap, slapos.tool.console, slapos.tool.format,
slapos.tool.grid, slapos.tool.libnetworkcache and slapos.tool.proxy into one
package: slapos.core
console
=======
The slapconsole tool allows to interact with a SlapOS Master throught the SLAP
library.
For more information about SlapOS or slapconsole usages, please go to
http://www.slapos.org.
The slapconsole tool is only a bare Python console with several global variables
defined and initialized.
Initialization and configuration file
=====
Slapconsole allows to automatically connect to a Master using URL and SSL
certificate from given slapos.cfg.
Certificate has to be *USER* certificate, manually obtained from SlapOS master
web interface.
Slapconsole tools reads the given slapos.cfg configuration file and use the
following informations :
* Master URL is read from [slapos] in the "master_url" parameter.
* SSL Certificate is read from [slapconsole] in the "cert_file" parameter.
* SSL Key is read from [slapconsole] in the "key_file" parameter.
See slapos.cfg.example for examples.
Global functions
=====
* request() is a shorthand for slap.registerOpenOrder().request() allowing
to request instances.
* supply() is a shorthand for slap.registerSupply().supply() allowing to
request software installation.
For more information about those methods, please read the SLAP library
documentation.
Global aliases
=====
"software_list" is a list containing all the Software Release URLs defined in
client slapos.cfg configuration file.
Also, each Software Release defined in this configuration file is translated
into a global variable to ease the request of those Sofware Releases.
This allows to request instances in a few words, i.e
request("http://www.url.com/path/to/kvm/software.cfg", "mykvm")
can be simplified into :
request(kvm, "mykvm")
If the slapos.cfg file contains :
alias =
kvm http://www.url.com/path/to/kvm/software.cfg
Global objects
=====
"slap" is an instance of the SLAP library. It is only used for advanced usages.
"slap" instance is obtained by doing :
slap = slapos.slap.slap()
slap.initializeConnection(config.master_url,
key_file=config.key_file, cert_file=config.cert_file)
Examples
=====
>>> # Request instance
>>> request(kvm, "myuniquekvm")
>>> # Request software installation on owned computer
>>> supply(kvm, "mycomputer")
>>> # Fetch instance status
>>> request(kvm, "myuniquekvm").getState()
>>> # Fetch instance informations on already launched instance
>>> request(kvm, "myuniquekvm").getConnectionParameter("url")
format
======
slapformat is an application to prepare SlapOS ready node (machine).
It "formats" the machine by:
- creating users and groups
- creating bridge interface
- creating needed tap interfaces
- creating needed directories with proper ownership and permissions
In the end special report is generated and information are posted to
configured SlapOS server.
This program shall be only run by root.
Requirements
------------
Linux with IPv6, bridging and tap interface support.
Binaries:
* brctl
* groupadd
* ip
* tunctl
* useradd
grid
====
slapgrid is a client of SLAPos. SLAPos provides support for deploying a SaaS
system in a minute.
Slapgrid allows you to easily deploy instances of softwares based on buildout
profiles.
For more informations about SLAP and SLAPos, please see the SLAP documentation.
Requirements
------------
A working SLAP server with informations about your computer, in order to
retrieve them.
As Vifib servers use IPv6 only, we strongly recommend an IPv6 enabled UNIX
box.
For the same reasons, Python >= 2.6 with development headers is also strongly
recommended (IPv6 support is not complete in previous releases).
For now, gcc and glibc development headers are required to build most software
releases.
Concepts
--------
Here are the fundamental concepts of slapgrid :
A Software Release (SR) is just a software.
A Computer Partition (CP) is an instance of a Software Release.
Imagine you want to install with slapgrid some software and run it. You will
have to install the software as a Software Release, and then instantiate it,
i.e configuring it for your needs, as a Computer Partition.
How it works
------------
When run, slapgrid will authenticate to the SLAP library with a computer_id and
fetch the list of Software Releases to install or remove and Computer
Partitions to start or stop.
Then, it will process each Software Release, and each Computer Partition.
It will also periodically send to SLAP the usage report of each Computer
Partition.
Installation
------------
With easy_install::
$ easy_install slapgrid
slapgrid needs several directories to be created and configured before being
able to run : a software releases directory, and an instances directory with
configured computer partition directory(ies).
You should create for each Computer Partition directory created a specific user
and associate it with its Computer Partition directory. Each Computer Partition
directory should belongs to this specific user, with permissions of 0750.
Usage
-----
slapgrid needs several informations in order to run. You can specify them by
adding arguments to the slapgrid command line, or by putting then in a
configuration file.
Beware : you need a valid computer resource on server side.
Examples
--------
simple example :
Just run slapgrid:
$ slapgrid --instance-root /path/to/instance/root --software-root
/path/to/software_root --master-url https://some.server/some.resource
--computer-id my.computer.id
configuration file example::
[slapgrid]
instance_root = /path/to/instance/root
software_root = /path/to/software/root
master_url = https://slapos.server/slap_service
computer_id = my.computer.id
then run slapgrid::
$ slapgrid --configuration-file = path/to/configuration/file
proxy
=====
slap
====
Simple Language for Accounting and Provisioning python library.
Developer note - python version
-------------------------------
This library is used on client (slapgrid) and server side.
Server is using python2.4 and client is using python2.6
Having this in mind, code of this library *have* to work
on python2.4
How it works
------------
The SLAP main server which is in charge of service coordination receives from participating servers the number of computer paritions which are available, the type of resource which a party is ready provide, and request from parties for resources which are needed.
Each participating server is identified by a unique ID and runs a slap-server daemon. This dameon collects from the main server the installation tasks and does the installation of resources, then notifies the main server of completion whenever a resource is configured, installed and available.
The data structure on the main server is the following:
A - Action: an action which can happen to provide a resource or account its usage
CP - Computer Partition: provides a URL to Access a Cloud Resource
RI - Resource Item: describes a resource
CI - Contract Item: describes the contract to attach the DL to (This is unclear still)
R - Resource: describes a type of cloud resource (ex. MySQL Table) is published on slapgrid.org
DL - Delivery Line: Describes an action happening on a resource item on a computer partition
D - Delivery: groups multiple Delivery Lines
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
slapos.core-0.22.tar.gz
(73.1 kB
view hashes)