HP OCCI

HP Labs employ a proprietary Virtual Infrastructure Manager (VIM). HP`s Cells technology is a highly scalable data centre management tool that accommodates real world workloads into various clusters of physical machines. HP’s infrastructure service (Cells) provides proprietary Cloud interfaces to expose its functionality for virtual machine, storage, user, virtual appliance configuration, id management, authorization and network management.

APIs provided

HP’s infrastructure service exposes a restricted part of its functionality via an OCCI web service that enables launching and managing of virtual machines using OGF’s OCCI API specification. The current implementation includes all the resources referenced in the latest draft of the OGF OCCI API specification, namely:

  • Compute:

    • Create

      Create a VM. The user may specify network connections to the Internet, the BonFIRE WAN, or private subnets that the user has access rights to.

    • Get

      Get a complete description of the VM.

    • List

      Get a brief description of each VM visible to the requesting user, in list form.

    • Update

      This feature can be used to either shut down a vm, or request that a save-as of the specified attached volume be started, the next time the vm is shut down.

    • Delete

      Delete the VM.

    • List instance types

      This lists the available VM instance types currently supported by HP. These are:

      • Lite
      • Small
      • Med
      • Large
      • XLarge
  • Network:

    • Create

      A user can create a private subnet by supplying a subnet prefix in the range 20-30.

    • Get

      Get a complete description of the network.

    • List

      Get a brief description of each network visible to the requesting user, in list form.

    • Delete

      Delete the network.

  • Storage:
    • Create

      A user may create storage resource of type DATABLOCK.

    • Get

      This can be performed on a storage of either type DATABLOCK or OS.

    • List

      This lists all storage resources visible to the user, of both type DATABLOCK and OS.

    • Delete

      This may only be performed on a storage of type DATABLOCK, with the exception of user-created save-as images that belong to the requesting user.

APIs used

HP’s infrastructure service for BonFIRE is implemented as a standalone process using the Restlet APIs, in conjunction with the HP Cells proprietary APIs, relying on lighttpd for certificate managing and proxy functions.

Message queue use

The HP services also posts events in real-time to the Management Message Queue. Each event is sent at the moment the Cells state changes, not at the time of the user’s request. The events we supply are:

  • Compute

    • Create
    uk-hplabs.compute.create
    {
            "timestamp":"1370946407",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/computes/vm-3-150",
            "userId":"gvseghbr",
            "eventType":"create",
            "objectType":"compute",
            "objectData": {
                    "networks": [{
                            "mac":null,
                            "network":"/locations/uk-hplabs/networks/subnet-3-2",
                            "ip":null
                    }],
                    "disks": [{
                            "id":"1",
                            "target":"/dev/vda",
                            "type":"OS",
                            "storage":"locations/uk-hplabs/storages/vol-f8j4987"
                    }],
                    "name": "mycompute",
                    "instanceType", /locations/uk-hplabs/configurations/lite",
                    "cpu": "1",
                    "vcpu": null,
                    "memory": "256",
                    "osimage": "/locations/hplabs/storages/vol-1-1-1a",
                    "experimentId":"/experiments/3013"
            }
    }
    • State Change:

    At the time a compute create message is sent, a “reserved” state message is also sent, to indicate the initial state of the vm, before it boots.

    uk-hplabs.compute.state.reserved
    {
            "timestamp":"1370946428",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/computes/vm-3-152",
            "userId":"gvseghbr",
            "eventType":"uk-hplabs.compute.state.reserved",
            "objectType":"compute"
    }
    

    Other state events are similar - the other possible states are: “active.up”, triggered when a VM has booted an is available. “stopping.off”, triggered when a VM has been shut down, either by the user, or by cells prior to deleting it.

    • Update:

    A VM update message is sent when a vm reaches the “active.up” state, and provides its IP and MAC address.

    uk-hplabs.compute.update
    {
            "timestamp":"1370946407",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/computes/vm-3-150",
            "userId":"gvseghbr",
            "eventType":"create",
            "objectType":"compute",
            "objectData": {
                    "networks": [{
                            "mac":"01:23:45:67:89:ab",
                            "network":"/locations/uk-hplabs/networks/subnet-3-2",
                            "ip":"1.1.1.1"
                    }],
                    "disks": [{
                            "id":"1",
                            "target":"/dev/vda",
                            "type":"OS",
                            "storage":"locations/uk-hplabs/storages/vol-f8j4987"
                    }],
                    "name": "mycompute",
                    "instanceType", /locations/uk-hplabs/configurations/lite",
                    "cpu": "1",
                    "vcpu": null,
                    "memory": "256",
                    "osimage": "/locations/hplabs/storages/vol-1-1-1a",
                    "experimentId":"/experiments/3013"
            }
    }
    • Delete:

    When a VM is deleted by cells, if it is not already shut down, then Cells will perform this shutdown automatically. This means that a “stopping.off” state event will be sent shortly before the delete event for that VM.

  • Network:

    • Create:
    uk-hplabs.network.create
    {
            "timestamp":"1370946265",
            "groupId":"gvseghbr",
            "objectData":
            {
                    "experimentId":"3013",
                    "address":"10.25.2.48",
                    "name":"netwkHP",
                    "size":"6"
            },
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/networks/subnet-3-19",
            "userId":"gvseghbr",
            "eventType":"create",
            "objectType":"network"
    }
    
    • Delete:
    uk-hplabs.network.delete
    {
            "timestamp":"1370951015",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/networks/subnet-3-19",
            "userId":"gvseghbr",
            "eventType":"delete",
            "objectType":"network"
    }
    
  • Storage:

    • Create:
    uk-hplabs.storage.create
    {
            "timestamp":"1370946298",
            "groupId":"gvseghbr",
            "objectData":
            {
                    "experimentId":"3013",
                    "fstype":"",
                    "persistent":"NO",
                    "name":"dbHP",
                    "type":"DATABLOCK",
                    "size":"15"
            },
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/storages/vol-3-1-255a",
            "userId":"gvseghbr",
            "eventType":"create",
            "objectType":"storage"
    }
    
    • Delete:
    uk-hplabs.storage.delete
    {
            "timestamp":"1370946298",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/storages/vol-3-1-255a",
            "userId":"gvseghbr",
            "eventType":"delete",
            "objectType":"storage"
    }
    
    • State:

      State events apply only to save-as volumes. When a new volume image is created as a result of the save-as process, the volume takes some time to be imaged. When the volume copy is complete and the new image is ready to be used, the following state event is sent.

    uk-hplabs.storage.state
    {
            "timestamp":"1370946298",
            "groupId":"gvseghbr",
            "source":"uk-hplabs",
            "objectId":"/locations/uk-hplabs/storages/vol-3-1-255a",
            "userId":"gvseghbr",
            "eventType":"state.READY",
            "objectType":"storage"
    }
    

HP Specific Behaviours

Since HP Cells is a proprietary platform, the HP OCCI server uses proprietary APIs, so limited information on implementation can be provided. There are however, some peculiarities in obeservable behaviour of our OCCI server, that are specific to HP Cells.

Firstly the IP address(es) of a newly created compute are not available until the compute resource has booted, this is an implementation detail of Cells itself. In practice, the user would not be able to connect (SSH for example) to their VMs until they have booted anyway. Until a compute reaches the up state, a GET request on the compute will display the network interfaces, but the IP address attributes will be empty. As soon as the VM reaches the up state, these attributes will be populated in the response.

A second notable difference to the behaviour of other sites is that when a save-as request is made, the immediate response will not contain the ID of the new volume, only the user-assigned name. However, as soon as the newly imaged volume reaches the READY state, the ID will be visible in the response to a GET/LIST request, and thus the volume can be used as a boot image for new compute resources. Additionally, HP Cells requires that only alphanumeric, space and underscore characters may be used in the user-specified volume name. HP will reject any requests that attempt to supply an invalid name with a 422 unprocessable entity response and an error message.

Table Of Contents

Previous topic

OpenNebula

Next topic

Virtual Wall OCCI

This Page