CompatibleOne is a free, open source project. Please feel free to contact us if you have any questions about the project or any suggestions on how to improve CompatibleOne. The CompatibleOne developer community is open to anyone that wants to contribute!
CompatibleOne is composed of 2 key components for the description, provisioning and integration of various cloud resources and services provisioned by heterogeneous Cloud Service Providers:
This page provides you with useful information about:
How to get CompatibleOne Packages
How to get source code and install CompatibleOne
How to use Accords
If source code is not needed, Accords-platform package for CentOS / Fedora / RedHat can be found on build.opensuse.org
Get it, install it then start Accords
Accords source code is avalaible on ow2.gitorious and mirrored on github
git clone http://git.gitorious.ow2.org/ow2-compatibleone/accords-platform.git
Once accords-platform is cloned, in order to build and install, run
./autogen.sh
./configure [options]
make
make install
Installation dependancies: You must have the following packages installed: autoconf automake autotools make gcc libtool openssl uuid libssl-dev uuid-dev
Other information about How to install CompatibleOne Accords on OpenStack (Diablo)
OCCI was selected as the basis for the implementation of the CORDS model and also for the rendering of the model using REST over HTTP. Each operational service provider component of the platform is a standalone OCCI, REST, HTTP server responsible for the management of a specific collection of categories. Each category corresponds to an element of CORDS.
Here is an example of Trace of OCCI Requests generated by ACCORDS during demonstration at OCCI Cloud Plug Fest in Dusseldorf on the 29th February 2012.
Operational service provider components provided in Accords-platform are implemented in C.
Note: An ACCORDS component can be implemented in any language if:
| co-start | this script launches the complete collection of platform components in the required order Once co-start starts succesfully, execute co-parser coips in order to identify the infrastructure in charge of building the image. |
| co-stop | this script will stop the collection of platform components in the correct order |
| co-status | this script displays the current presence of the collection of platform components |
| co-parser mymanifest | This script may be used to parse a manifest to produce a provisioning plan (mymanifest.xml) Once co-parser mymanifest, check mymanifest.xml file to make sure there is no message error |
| co-broker mymanifest | This script may be used to process a provisioning plan to provision the resources of a service. |
| co-command start service / {uuid} | This command will start a service instance if it is currently in the stopped state otherwise it will be silently ignored. Starting a service instance involves deploying the provisioned resources and when required will initiate priced transactions through the financial channels. |
| co-command stop service / {uuid} | This command will stop a running service instance if it is currently in the active or started state otherwise it will be silently ignored. Stoping a service instance involves release of the provisioned resources and when required will terminate priced transactions through the financial channels. |
| co-command save service / {uuid} | This command will save the image of a running service instance if it is currently in the active or started state otherwise it will be silently ignored. The image saved will become the image of the service if it is stopped and then restarted. This function allows a snapshot to be taken and allows a failover restart point to be established. This operation may be priced in which case transactions will ensue. |
| co-command delete service / {uuid} | This command will delete a service instance and its control graph from the ACCORDS platform. If it is currently active and running the service will be stopped and all provisioned resources will be released. The service and contract descriptions referenced through its service instance identifier will be deleted and the instance identifier will become invalid |
# co-status
-
Accords Platform Components
-
tcp 0 0 *:8086 *:* LISTEN 18860/publisher
tcp 0 0 *:xprint-server *:* LISTEN 18865/fileserver
tcp 0 0 *:8087 *:* LISTEN 18870/coss
tcp 0 0 *:radan-http *:* LISTEN 18876/comons
tcp 0 0 *:8090 *:* LISTEN 18887/conets
tcp 0 0 *:8091 *:* LISTEN 18881/coobas
tcp 0 0 *:8089 *:* LISTEN 18894/coes
tcp 0 0 *:8103 *:* LISTEN 18899/coees
tcp 0 0 *:8092 *:* LISTEN 18916/parser
tcp 0 0 *:8093 *:* LISTEN 18921/broker
tcp 0 0 *:8094 *:* LISTEN 18926/procci
tcp 0 0 *:8095 *:* LISTEN 18936/osprocci
tcp 0 0 *:8104 *:* LISTEN 18931/cosched
tcp 0 0 *:8101 *:* LISTEN 18904/ezvm
tcp 0 0 *:8102 *:* LISTEN 18911/coips
tcp 0 0 *:8286 *:* LISTEN 18951/cosacs
A configuration file “provider_config.xml” provides provider subscription account details must be prepared before the providerPROCCI service is started.
As an example for OSPROCCI (Openstack Procci), the configuration file "os_config.xml" has the following format :
<os_configs>
<os_config
id="e1f892e3-0001-4326-8866-9354b95d3b17"
name="{userid}"
user="{userid}"
password="{password}"
namespace="{domain}"
description="Configuration of CompatibleOne Hands On Meeting Account"
agent=’OpenStackClient/1.0a.0.01’
host=’http:94.143.114.137:5000/v2.0/’
version="v1.1"
authenticate=""
base=""
tls="0"
current="0" />
</os_configs>
The following examples are showing how a manifest must be described in order to provision, deploy and install a complete Xwiki application and its MySQL DBMS. Both can be located on the same cloud (as shown in example 1 with OpenStack) or they can be distributed on different clouds (as shown in example 2 with Xwiki on OpenStack and MySQL on OpenNebula)
Some useful information about how to install Openstack: Openstack on Debian or OpenStack Users Guide
Example 1: XWiki using a Private MySQL on OpenStack
<manifest name="xwikios" xmlns="http://www.compatibleone.fr/schemes/manifest.xsd">
<description>The XWiki application using a Private MYSQL on OpenStack</description>
<node name="osdatabase" type="mysqlos"/>
<node name="xwiki" type="simple" access="public" scope="normal" provider="openstack" >
<infrastructure name="xwiki">
<compute name="xwiki" architecture="x86_64" cores="1" memory="1G" speed="1G"/>
<storage name="xwiki" size="10G"/>
<network name="xwiki" label="ethernet" vlan="100M">
<port name="http-alt"
description="xwiki application server access"
protocol="tcp"
number="8080"/>
</network>
</infrastructure>
<image name="xwiki">
<system name="POC1V2.4h"/>
</image>
</node>
<configuration name="xwikios">
<action name="xwikios" expression="xwiki.configure(osdatabase.mysqlos.hostname);"/>
<action name="xwikiose" expression="xwiki.system('export database_mysql_hostname=$osdatabase_mysqlos_hostname');"/>
<action name="xwikigo" expression="xwiki.fork('bash /root/xwiki.sh');"/>
</configuration>
<interface name="xwikios"/>
<account name="test"/>
<security name="xwikios"/>
</manifest>
<manifest xmlns="http://www.compatibleone.fr/schemes/manifest.xsd" name="mysqlos">
<description>The Private MySQL service for OpenStack</description>
<node name="mysqlos" type="simple" access="private" scope="normal" provider="openstack">
<infrastructure name="mysqlos">
<compute name="mysqlos" architecture="x86_64" cores="1" memory="1G" speed="1G"/>
<storage name="mysqlos" size="10G"/>
<network name="mysqlos" label="ethernet" vlan="100M"/>
</infrastructure>
<image name="mysqlos">
<system name="debian_with_cosacs"/>
<package name="mysql1" installation="wget http://gitorious.ow2.org/ow2-compatibleone/cosacs-repository/blobs/raw/master/debian_squeeze/mysql/install.sh; bash install.sh" configuration="#"/>
</image>
</node>
<configuration name="mysqlos"/>
<interface name="mysqlos"/>
<account name="test"/>
<security name="mysqlos"/>
</manifest>
Example 2: XWiki using a Public MySQL on OpenNebula
<manifest xmlns="http://www.compatibleone.fr/schemes/manifest.xsd" name="xwikion">
<description>
The XWiki application using a Public MYSQL on OpenNebula
</description>
<node name="ondatabase" type="mysqlon"/>
<node name="xwiki" type="simple" access="public" scope="normal" provider="openstack">
<infrastructure name="xwiki">
<compute name="xwiki" architecture="x86_64" cores="1" memory="1G" speed="1G"/>
<storage name="xwiki" size="10G"/>
<network name="xwiki" label="ethernet" vlan="100M"/>
</infrastructure>
<image name="xwiki">
<system name="POC1V2.4h"/>
</image>
</node>
<configuration name="xwikion">
<action name="xwikion" expression="xwiki.configure(ondatabase.mysqlon.hostname);"/>
<action name="xwikione" expression="xwiki.system('export database_mysql_hostname=$ondatabase_mysqlon_hostname');"/>
<action name="xwikigo" expression="xwiki.fork('bash /root/xwiki.sh');"/>
</configuration>
<interface name="xwikion"/>
<account name="test"/>
<security name="xwikion"/>
</manifest>
<manifest xmlns="http://www.compatibleone.fr/schemes/manifest.xsd" name="mysqlon">
<description>The Open Nebula MySQL service</description>
<node name="mysqlon" type="simple" access="public" scope="normal" provider="opennebula">
<infrastructure name="mysqlon">
<compute name="mysqlon" architecture="x86_64" cores="1" memory="1G" speed="1G"/>
<storage name="mysqlon" size="10G"/>
<network name="PUB_Compatible" label="ethernet" vlan="100M"/>
</infrastructure>
<image name="mysqlon">
<system name="ubuntu_with_cosacs"/>
<package name="mysqlon1" installation="wget http://gitorious.ow2.org/ow2-compatibleone/cosacs-repository/blobs/raw/master/debian_squeeze/mysql/install.sh; bash install.sh" configuration="#"/>
</image>
</node>
<configuration name="mysqlon"/>
<interface name="mysqlon"/>
<account name="test"/>
<security name="mysqlon"/>
</manifest>