Skip to content

Commit

Permalink
Merge 38e05d3 into 6f490f6
Browse files Browse the repository at this point in the history
  • Loading branch information
yaolingling committed Dec 14, 2017
2 parents 6f490f6 + 38e05d3 commit ae4b3c2
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 11 deletions.
20 changes: 9 additions & 11 deletions lib/api/redfish-1.0/systems.js
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ var dataFactory = function(identifier, dataName) {
}).then(function(data) {
return data[0].sel;
});
default:
default:
return nodeApi.getNodeCatalogSourceById(identifier, dataName);
}
};
Expand Down Expand Up @@ -1042,7 +1042,6 @@ var getStorage = controller(function (req, res) {
options.devices.push(ele.SMART);
}
});

return redfish.render('redfish.1.0.0.storage.1.0.0.json',
'Storage.v1_1_1.json#/definitions/Storage',
options);
Expand Down Expand Up @@ -1157,7 +1156,6 @@ var listVolume = controller(function(req, res) {
return Promise.resolve(dataFactory(identifier, 'hardware'))
.then(function(hardware) {
options.hardware = hardware;

options.virtualDisks = [];
_.forEach(hardware.data.storage.virtualDisks, function(ele) {
options.virtualDisks.push(ele);
Expand Down Expand Up @@ -1841,7 +1839,7 @@ var deleteVolume = controller(function(req,res) {
var options = redfish.makeOptions(req, res, identifier);
var volumeIndex = req.swagger.params.volumeIndex.value;
var payload = req.swagger.params.payload.value;
var graphName = 'Graph.Delete.Volume';
var graphName = 'Graph.Dell.Wsman.Delete.Volume';
var graphOptions = {
defaults: payload
};
Expand Down Expand Up @@ -1874,7 +1872,7 @@ var addVolume = controller(function(req,res) {
var identifier = req.swagger.params.identifier.value;
var options = redfish.makeOptions(req, res, identifier);
var payload = req.swagger.params.payload.value;
var graphName = 'Graph.Add.Volume';
var graphName = 'Graph.Dell.Wsman.Add.Volume';
var graphOptions = {
defaults: {
username: payload.username,
Expand All @@ -1901,7 +1899,7 @@ var addVolume = controller(function(req,res) {
graphOptions.defaults.ipAddress = hardware.data.id;
graphOptions.defaults.name = payload.volume.Name;
if (graphOptions.defaults.name.indexOf(" ") !== -1){
throw new Error("Virtual disk name cannot have spaces");
throw new Error("Virtual disk name cannot have spaces");
}
graphOptions.defaults.sizeInBytes = payload.volume.CapacityBytes;
graphOptions.defaults.drives = "";
Expand All @@ -1918,19 +1916,19 @@ var addVolume = controller(function(req,res) {
switch(raidLevel)
{
case "NonRedundant":
graphOptions.defaults.raidLevel = 'r0';
graphOptions.defaults.raidLevel = 0;
break;
case "Mirrored":
graphOptions.defaults.raidLevel = 'r1';
graphOptions.defaults.raidLevel = 1;
break;
case "StripedWithParity":
graphOptions.defaults.raidLevel = 'r5';
graphOptions.defaults.raidLevel = 5;
break;
case "SpannedMirrors":
graphOptions.defaults.raidLevel = 'r10';
graphOptions.defaults.raidLevel = 10;
break;
case "SpannedStripesWithParity":
graphOptions.defaults.raidLevel = 'r50';
graphOptions.defaults.raidLevel = 50;
break;
default:
throw "Invalid Raid Level for creating volume";
Expand Down
68 changes: 68 additions & 0 deletions spec/lib/api/redfish-1.0/system-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3084,6 +3084,74 @@ describe('Redfish Systems Root', function () {
});
});

it('should throw 500 internal error for post volume with Name error', function() {
var redfishVolumeCreate = {
"username": "someuser",
"password": "somepassword",
"volume": {
"Id": "AnId",
"Name": "name 123",
"CapacityBytes": 1234567,
"VolumeType": "NonRedundant",
"Links": {
"Drives@odata.count": 3,
"Drives": [{
"@odata.id": "/redfish/v1/Systems/SomeNodeId/Storage/RAID.Integrated.1-1/Drives/0"
},
{
"@odata.id": "/redfish/v1/Systems/SomeNodeId/Storage/RAID.Integrated.1-1/Drives/1"
},
{
"@odata.id": "/redfish/v1/Systems/SomeNodeId/Storage/RAID.Integrated.1-1/Drives/2"
}]
}
}
};
waterline.catalogs.findLatestCatalogOfSource.resolves(Promise.resolve({
node: dellNode.id,
source: 'dummysource',
data: dellCatalogData
}));
return helper.request().post('/redfish/v1/Systems/' + dellNode.id +
'/Storage/RAID_Integrated_1-1/Volumes')
.send(redfishVolumeCreate)
.expect('Content-Type', /^application\/json/)
.expect(500)
.expect(function(res) {
expect(res.error.message).to.equal('cannot POST /redfish/v1/Systems/DELLabcd1234abcd1234abcd/Storage/RAID_Integrated_1-1/Volumes (500)');
});
});

it('should throw 500 internal error for post volume without Drives', function() {
var redfishVolumeCreate = {
"username": "someuser",
"password": "somepassword",
"volume": {
"Id": "AnId",
"Name": "name 123",
"CapacityBytes": 1234567,
"VolumeType": "NonRedundant",
"Links": {
"Drives@odata.count": 3,
"Drives": []
}
}
};
waterline.catalogs.findLatestCatalogOfSource.resolves(Promise.resolve({
node: dellNode.id,
source: 'dummysource',
data: dellCatalogData
}));
return helper.request().post('/redfish/v1/Systems/' + dellNode.id +
'/Storage/RAID_Integrated_1-1/Volumes')
.send(redfishVolumeCreate)
.expect('Content-Type', /^application\/json/)
.expect(500)
.expect(function(res) {
expect(res.error.message).to.equal('cannot POST /redfish/v1/Systems/DELLabcd1234abcd1234abcd/Storage/RAID_Integrated_1-1/Volumes (500)');
});
});

it('should return a valid create volume for devices with DELL catalogs (raid type Mirrored)', function() {
waterline.catalogs.findLatestCatalogOfSource.resolves(Promise.resolve({
node: dellNode.id,
Expand Down

0 comments on commit ae4b3c2

Please sign in to comment.