test_develop_test

Contribute to CompatibleOne

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!

General Information

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:

  1. an open model named CORDS (CompatibleOne Resource Description Schema) licensed under Creative Commons BY-NC-ND 3.0
    • This object oriented model enables to describe in any type of cloud services. This model is based on OCCI
      • CORDS Reference Manual 
      • Cords.xsd is used by all documents to import collections of category instances eg infrastructure, package, system descriptions
      • Cordstypes.xsd  provides the definitions of all complex types used in the cords.xsd and manifest.xsd
      • Manifest.xsd is the schema to be used for manifest documents
  2. a free, open source software named ACCORDS (Advanced Capabilities for CompatibleOne Resource Distribution Services) licensed under LGPL V3
    • ACCORDS is actually the Provisioning System for CompatibleOne: it provides all the necessary capabilities of a Cloud Services Broker (intermediation, aggreagation and arbitrage). All communication within ACCORDS is performed in conjunction with the Publication Service offered by the Publisher, working in tight coordination with the Security Service COSS  (CompatibleOne Security Service) and using OCCI over HTTP. This collection of protocols and specifications constitutes the cloud middleware offered by ACCORDS.

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

You may also download a complete and detailed document  and watch its companion videos.

How to get CompatibleOne Package

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 

How to get source code and install CompatibleOne

Get Source Code

Accords source code is avalaible on ow2.gitorious and mirrored on  github   

git clone http://git.gitorious.ow2.org/ow2-compatibleone/accords-platform.git

Install CompatibleOne

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)

How to use ACCORDS

ACCORDS – The Basics

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.

Which Language for ACCORDS

Operational service provider components provided in Accords-platform are implemented in C.

Note: An ACCORDS component can be implemented in any language if:

  1. this component manages standard OCCI/REST messages
  2. this component is aware of ACCORDS architecture and services (Coss, Publisher, Parser, Broker,...)
A draft document (available in French) shows How to add an Accords python component 
ACCORDS Commands
co-startthis 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-stopthis script will stop the collection of platform components in the correct order
co-statusthis script displays the current presence of the collection of platform components
co-parser mymanifestThis 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

Configuration files

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>

Manifests Examples

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>


All content on this site is licensed under a Creative Commons 3.0 license
CC 2011-12 COMPATIBLEONE - Legal Notice

Site maintained by