Skip to content
This repository has been archived by the owner on Apr 5, 2020. It is now read-only.

Node.js module for using the rackspace openstack servers api.

License

Notifications You must be signed in to change notification settings

kenperkins/rackspace-openstack

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

rackspace-openstack

A client implementation for the Rackspace Openstack API (v2)

THIS PACKAGE IS NOW DEPRECATED

All functionality in this package is either implemented in pkgcloud or is in the process of being migrated to pkgcloud. Please only use this package for prototyping at this point as the next published version will remove functionality entirely.

Usage

The rackspace-openstack module is compliant with the Rackspace Openstack API. rackspace-openstack is a nearly feature complete wrapper for the Rackspace Openstack APIs and should work in most scenarios.

Supported APIs

Currently, the following feature areas are supported:

  • Open Stack CloudServers
  • CloudDNS
  • CloudLoadBalancers

Getting Started

Creating and authenticating your client against the Rackspace API is simple:

var rackspace = require('rackspace-openstack'),
    config = {
        auth : {
            username: 'your-username',
            apiKey: 'your-api-key'
    }
};

var client = rackspace.createClient(config);

client.authorize(function(err) {
    if (err) {
        process.exit(1);
        return;
    }

    // Do stuff here
}

Creating a Server

client.createServer({
    image: '5cebb13a-f783-4f8c-8058-c4182c724ccd',
    flavor: 2,
    name: 'My Server'
}, function(err, server) {

    // Do stuff with your new server
    
});

Getting a domain and creating a record

var myDomainId = 1234567;

client.getDomain(myDomainId, function(err, domain) {
    domain.addRecordsWithWait([
        {
            name: 'foo.' + domain.name,
            type: 'A',
            data: '1.2.3.4'
        }
    ], function(err, records) {

        // use your new records here
    });
});

Create a cloud load balancer

client.createLoadBalancer({
    name: 'My Load Balancer',
    nodes: [ {
        address: '192.168.1.1',
        port: '80',
        condition: rackspace.NodeConditions.ENABLED
    } ],
    protocol: rackspace.Protocols.HTTP,
    virtualIps: [{
        type: rackspace.VirtualIpTypes.PUBLIC
    }]
}, function(err, loadBalancer) {
    // Use your new Load Balancer here
});

Create and attach a Cloud BlockStorage Volume

client.getServer(serverId, function(err, server) {
    client.createVolume({
        display_name: 'my new volume ' + serverId,
        size: 100,
        volume_type: rackspace.VolumeType.SATA
    }, function(err, volume) {
        server.attachVolume({
            volumeId: volume.id,
            device: '/dev/xvdb'
        }, function(err, result) {
            // Use your Volume Here
        });
    });
});

Run Tests

All rackspace-openstack tests are available by running make test

Credit

Much of the shape of this library was courtesy of Charlie Robbins and the team at Nodejitsu for node-cloudservers

Author: Ken Perkins

About

Node.js module for using the rackspace openstack servers api.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published