Merge pull request #16 from andrerod/cli

#439: Add CRUD support for storage accounts
This commit is contained in:
André Rodrigues 2012-11-14 08:59:02 -08:00
Родитель 76ec049a45 42e71f5f9f
Коммит 747db082aa
2 изменённых файлов: 170 добавлений и 1 удалений

Просмотреть файл

@ -130,6 +130,81 @@ ServiceManagementSerialize.prototype.buildCreateStorageAccount = function(servic
}
};
/**
* Create the message body for UpdateStorageAccount
*
* @param {string} serviceName The name of the service.
* @param {object} serviceOptions The properties for the new service.
* @param {object} client The servicemanagement object.
*/
ServiceManagementSerialize.prototype.buildUpdateStorageAccount = function(serviceName, serviceOptions, client) {
var encLabel = undefined;
if (serviceOptions.Label) {
encLabel = new Buffer(serviceOptions.Label).toString('base64');
}
if (client.serializetype === 'XML') {
var doc = _createXmlRoot('UpdateStorageServiceInput');
_addDefinedValueXml(doc, 'ServiceName', serviceName);
if (encLabel) {
_addDefinedValueXml(doc, 'Label', encLabel);
}
if (serviceOptions.Description) {
_addDefinedValueXml(doc, 'Description', serviceOptions.Description);
}
if (serviceOptions.GeoReplicationEnabled) {
_addDefinedValueXml(doc, 'GeoReplicationEnabled', serviceOptions.GeoReplicationEnabled);
}
return doc.toString();
} else {
var jdoc = {
ServiceName: serviceName
};
if (encLabel) {
jdoc.Label = encLabel;
}
if (serviceOptions.Description) {
jdoc.Description = serviceOptions.Description;
}
if (serviceOptions.GeoReplicationEnabled) {
jdoc.GeoReplicationEnabled = serviceOptions.GeoReplicationEnabled;
}
return JSON.stringify(jdoc);
}
};
/**
* Create the message body for RegenerateStorageKeys
*
* @param {string} serviceName The name of the service.
* @param {string} keyType The key type.
* @param {object} client The servicemanagement object.
*/
ServiceManagementSerialize.prototype.buildRegenerateStorageKeys = function(serviceName, keyType, client) {
if (client.serializetype === 'XML') {
var doc = _createXmlRoot('RegenerateKeys');
doc.ele('KeyType').txt(keyType);
return doc.toString();
} else {
var jdoc = {
RegenerateKeys: {
KeyType: keyType
}
};
return JSON.stringify(jdoc);
}
};
/**
* Create the message body for CreateOSImage
* Use the specified serialization - for now only XML.

Просмотреть файл

@ -570,7 +570,7 @@ ServiceManagementService.prototype.deleteHostedService = function(serviceName, c
};
/**
* Returns keys of specified storage account.
* Creates a new storage account.
*
* @param {string} serviceName The name of the storage service. Required.
* @param {string} serviceOptions Object with properties for the service. Optional
@ -628,6 +628,44 @@ ServiceManagementService.prototype.createStorageAccount = function(serviceName,
});
};
/**
* Updates a storage account.
*
* @param {string} serviceName The name of the storage service. Required.
* @param {string} serviceOptions Object with properties for the service. Optional
* {
* Description: optional. Defaults to 'Service host'
* Label: optional. Defaults to serviceName
* GeoReplicationEnabled: optional. Indicates if the geo replication is enabled.
* }
* @param {function} callback The callback function called on completion. Required.
*/
ServiceManagementService.prototype.updateStorageAccount = function(serviceName, serviceOptions, callback) {
if (!callback) {
if (typeof serviceOptions === 'function') {
callback = serviceOptions;
serviceOptions = null;
}
}
validateStringArgument(serviceName, 'serviceName', 'updateStorageAccount');
validateObjectArgument(callback, 'callback', 'updateStorageAccount');
var path = '/' + this.subscriptionId + '/services/storageservices/' + serviceName;
var webResource = WebResource.put(path);
webResource.withOkCode(HttpConstants.HttpResponseCodes.OK_CODE, true);
var outbody = this.serialize.buildUpdateStorageAccount(serviceName, serviceOptions, this);
this.performRequest(webResource, outbody, null, function (responseObject, next) {
var finalCallback = function (returnObject) {
callback(returnObject.error, returnObject.response);
};
next(responseObject, finalCallback);
});
};
/**
* Returns keys of specified storage account.
*
@ -679,6 +717,62 @@ ServiceManagementService.prototype.getStorageAccountProperties = function(servic
});
};
/**
* Regenerates a storage account's keys
*
* @param {string} serviceName The name of the hosted service. Required.
* @param {string} keyType The storage key type (primary or secondary). Required.
* @param {function} callback The callback function called on completion. Required.
*/
ServiceManagementService.prototype.regenerateStorageAccountKeys = function(serviceName, keyType, callback) {
validateStringArgument(serviceName, 'serviceName', 'deleteDeployment');
validateObjectArgument(callback, 'callback', 'deleteDeployment');
if (keyType.toLowerCase() !== 'primary' && keyType.toLowerCase() !== 'secondary') {
throw new Error('Invalid storage account type');
}
var path = '/' + this.subscriptionId + '/services/storageservices/' + serviceName + '/keys?action=regenerate';
var webResource = WebResource.post(path);
webResource.withOkCode(HttpConstants.HttpResponseCodes.OK_CODE, true);
var outbody = this.serialize.buildRegenerateStorageKeys(serviceName, keyType, this);
this.performRequest(webResource, outbody, null, function (responseObject, next) {
var finalCallback = function (returnObject) {
callback(returnObject.error, returnObject.response);
};
next(responseObject, finalCallback);
});
};
/**
* Deletes a storage account
*
* @param {string} serviceName The name of the hosted service. Required.
* @param {function} callback The callback function called on completion. Required.
*/
ServiceManagementService.prototype.deleteStorageAccount = function(serviceName, callback) {
validateStringArgument(serviceName, 'serviceName', 'deleteDeployment');
validateObjectArgument(callback, 'callback', 'deleteDeployment');
var path = '/' + this.subscriptionId + '/services/storageservices/' + serviceName;
var webResource = WebResource.del(path);
webResource.withOkCode(HttpConstants.HttpResponseCodes.OK_CODE, true);
this.performRequest(webResource, null, null, function (responseObject, next) {
var finalCallback = function (returnObject) {
callback(returnObject.error, returnObject.response);
};
next(responseObject, finalCallback);
});
};
/**
* Gets deployment properties for named deployment
*