occi-os/doc/occi.md
Andy Edmonds de0c920166 Update occi.md
added precautionary note
2013-04-24 12:07:09 +03:00

5.4 KiB

Note:

This documentation may not be current in places. There is also further documentation at the openstack wiki

OCCI and OpenStack: What can I do?

This guide will explain what you can do with the current OCCI implementation for OpenStack

First up, prerequisites:

Get a running instance of OpenStack

Lots of ways to do this:

  • Install via apt-get
  • Install with puppet
  • Install with chef
  • Install with crowbar
  • Install with devstack

The easiest is devstack.

Get the OCCI code

OCCI Library

On the machine(s) that you run the OCCI API, likely the same as the machine(s) as you run the OS-API, run the following:

pip install pyssf

OCCI API Implementation

On the machine(s) that you want to run the OCCI API, likely the same as the machine(s) as you run the OS-API, run the following:

cd $YOUR_NOVA_INSTALL_LOCATION

git add remote occi-upstream git://git@github.com/dizz/nova

git fetch occi-upstream

git merge occi-upstream/master

Configure devstack to run the volume service. Edit localrc and insert:

ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-sch,n-novnc,n-xvnc,n-cauth,horizon,mysql,rabbit,n-vol,openstackx

Run the OS-OCCI API

./bin/nova-api-occi --verbose --glance_api_servers=10.211.55.27:9292 --rabbit_host=10.211.55.27 --rabbit_password=admin --sql_connection=mysql://root:admin@10.211.55.27/nova

Get Authentication Credentials from Keystone


>```export $KID=<<Token from Keystone>>```

## OCCI-ness

_Note:_ some confusion will happen if a content-type is not specified.

### See What Can be Provisioned
>```curl -v -H 'X-Auth-Token: '$KID -H -X GET 0.0.0.0:8787/-/

Create a VM


### Get a Listing of VMs
>```curl -v -X GET localhost:8787/compute/ -H 'Content-Type: text/occi' -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1'

Get an Individual VM's details


### Execute a Stop Action Upon a VM
>```curl -v -X POST localhost:8787/compute/d54b4344-16be-486a-9871-2c566ef2263d?action=stop -H 'Content-Type: text/occi' -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1' -H 'Category: stop; scheme="http://schemas.ogf.org/occi/infrastructure/compute/action#"; class="action"'

Execute a Start Action Upon a VM

Note: this will probably result in an error state. Currently looking into the issue.


### Delete a VM
>```curl -v -X DELETE localhost:8787/compute/d54b4344-16be-486a-9871-2c566ef2263d -H 'Content-Type: text/occi' -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1' 

Create some a block storage volume


### Link and associate that volume to the new instance
>```curl -v -X POST localhost:8787/storage/link/ -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1' -H 'Category: storagelink; scheme="http://schemas.ogf.org/occi/infrastructure#"; class="kind"' -H 'X-OCCI-Attribute: occi.core.source="http://localhost:8787/compute/e7a34bc4-02e7-43e3-a543-8aec630b5364"' -H 'X-OCCI-Attribute: occi.core.target="http://localhost:8787/storage/1"' -H 'X-OCCI-Attribute: occi.storagelink.mountpoint="/dev/vdb"' -H 'Content-Type: text/occi'```

### Unlink and disassociate that volume with the new instance
>```curl -v -X DELETE localhost:8787/storage/link/6cb97f63-7d8a-4474-87cb-4d1c9c581de1 -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1' -H 'Content-Type: text/occi'```

## Upcoming
### Update a VM: Scale up!
Let's bump the current instance from tiny (512) to a custom flavour (768R, 1C).
_Notes:_ 

* This is a partial update with respect to OCCI.
* This only works with Xen currently
  * otherwise it fails silently

>```curl -v -X POST localhost:8787/compute/2ee26373-db62-4bbf-9325-ff68a81097e3 -H 'Content-Type: text/occi' -H 'X-Auth-Token: '$KID -H 'X-Auth-Project-ID: 1' -H 'Category: m1.medium; scheme="http://schemas.openstack.org/template/resource#"; class="mixin"'

Update a VM: Change the OS!

Let's use SmartOS as the new OS Notes:

  • this is in effect a partial update.