node package manager
Stop wasting time. Easily manage code sharing in your team. Create a free org ยป


openstack-storage NPM version

A node.js client library for interacting with Openstack Storage (Swift)

Copyright 2012, FeedHenry Ltd. Licensed under the MIT license, please see the LICENSE file. All rights reserved.


npm install openstack-storage

Example usage 1

var async = require('async');
var storage = require('storage');
var authenticate = require('authenticate');

## get an authentication function. config formats are described in lib/authenticate.js
## use one of these:
var authFn = async.apply(authenticate.getTokensKeystone, config); // for keystone auth
var authFn = async.apply(authenticate.getTokensNative, config); // for native auth (swauth or tempauth)

var storageSwift = new storage.OpenStackStorage (authFn, function(err, res, tokens) {
  console.log('Storage constructor - err: ', err, ', tokens: ', tokens);
  var containers = storageSwift.getContainers(function(err, containers) {
    console.log('getCOntainers - err: ', err, ', containers: ', containers);
    // containers is an array of objects [{name: "Name1"...}, ...]

Example usage 2

// Create a container called "EngTest"
storageSwift.createContainer("EngTest", function (err, statusCode) {});

// upload a local file test.png to a container called "EngTest" naming the remote file: file1.png 
storageSwift.putFile("EngTest", {remoteName:'file1.png', localFile:'./test.png'}, function(err, statusCode) {});

// delete a remote file: file1.png from a container called "EngTest"
storageSwift.deleteFile("EngTest", 'file1.png', function (err, statusCode) {})

// delete a container
storageSwift.deleteContainer("EngTest", function (err, statusCode) {});

See the examples folder for more sample API usage.


The tests use mocha and require access to an Openstack compliant Identity/Storage service. The tests load a config file called testconfig.json in the config directory, there is a sample provided as testconfig-sample.json, but the user credentials will have to be entered. The timeout for the tests has been specified at 10 seconds in the package.json file, to allow for testing against a slow remote server.

"test": "mocha --ui tdd --globals writeln --reporter spec --timeout 10000"