Add Gluster to the list of protocols in the Management Server

Gluster can now be used for Primary Storage just like NFS. This change adds the
Gluster protocol to the Management Server:

    Infrastructure -> Primary Storage -> Add Primary Storage

And also add the option to create Primary Storage on Gluster when
following the 'Add Zone' wizard from:

    Infrastructure -> Zones -> Add Zone

Some screenshots and verification:
- http://blog.nixpanic.net/2013/12/using-gluster-as-primary-storage-in.html
This commit is contained in:
Niels de Vos 2013-11-23 14:30:40 -07:00 committed by Wido den Hollander
parent e883877c7a
commit c02197ae86
5 changed files with 127 additions and 4 deletions

View File

@ -603,6 +603,7 @@ label.full=Full
label.gateway=Gateway
label.general.alerts=General Alerts
label.generating.url=Generating URL
label.gluster.volume=Volume
label.go.step.2=Go to Step 2
label.go.step.3=Go to Step 3
label.go.step.4=Go to Step 4

View File

@ -607,6 +607,7 @@ dictionary = {
'label.gateway': '<fmt:message key="label.gateway" />',
'label.general.alerts': '<fmt:message key="label.general.alerts" />',
'label.generating.url': '<fmt:message key="label.generating.url" />',
'label.gluster.volume': '<fmt:message key="label.gluster.volume" />',
'label.go.step.2': '<fmt:message key="label.go.step.2" />',
'label.go.step.3': '<fmt:message key="label.go.step.3" />',
'label.go.step.4': '<fmt:message key="label.go.step.4" />',

View File

@ -1340,6 +1340,15 @@ var processPropertiesInImagestoreObject = function(jsonObj) {
return url;
}
function glusterURL(server, path) {
var url;
if (server.indexOf("://") == -1)
url = "gluster://" + server + path;
else
url = server + path;
return url;
}
//VM Instance

View File

@ -15171,6 +15171,10 @@
id: "clvm",
description: "CLVM"
});
items.push({
id: "gluster",
description: "Gluster"
});
args.response.success({
data: items
});
@ -15277,6 +15281,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "SMB") {
//"SMB" show almost the same fields as "nfs" does, except 3 more SMB-specific fields.
$form.find('.form-item[rel=server]').css('display', 'inline-block');
@ -15302,6 +15308,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "ocfs2") {
//ocfs2 is the same as nfs, except no server field.
$form.find('.form-item[rel=server]').hide();
@ -15327,6 +15335,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "PreSetup") {
$form.find('.form-item[rel=server]').hide();
$form.find('.form-item[rel=server]').find(".value").find("input").val("localhost");
@ -15351,6 +15361,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "iscsi") {
$form.find('.form-item[rel=server]').css('display', 'inline-block');
$form.find('.form-item[rel=server]').find(".value").find("input").val("");
@ -15373,6 +15385,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if ($(this).val() == "clvm") {
$form.find('.form-item[rel=server]').hide();
$form.find('.form-item[rel=server]').find(".value").find("input").val("localhost");
@ -15395,6 +15409,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "vmfs") {
$form.find('.form-item[rel=server]').css('display', 'inline-block');
$form.find('.form-item[rel=server]').find(".value").find("input").val("");
@ -15417,6 +15433,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "SharedMountPoint") {
//"SharedMountPoint" show the same fields as "nfs" does.
$form.find('.form-item[rel=server]').hide();
@ -15442,6 +15460,8 @@
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "rbd") {
$form.find('.form-item[rel=rbdmonitor]').css('display', 'inline-block');
$form.find('.form-item[rel=rbdmonitor]').find(".name").find("label").text("RADOS Monitor:");
@ -15466,6 +15486,33 @@
$form.find('.form-item[rel=smbUsername]').hide();
$form.find('.form-item[rel=smbPassword]').hide();
$form.find('.form-item[rel=smbDomain]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "gluster") {
$form.find('.form-item[rel=server]').css('display', 'inline-block');
$form.find('.form-item[rel=server]').find(".value").find("input");
$form.find('.form-item[rel=glustervolume]').css('display', 'inline-block');
$form.find('.form-item[rel=glustervolume]').find(".name").find("label").text("Volume:");
$form.find('.form-item[rel=path]').hide();
$form.find('.form-item[rel=smbUsername]').hide();
$form.find('.form-item[rel=smbPassword]').hide();
$form.find('.form-item[rel=smbDomain]').hide();
$form.find('.form-item[rel=iqn]').hide();
$form.find('.form-item[rel=lun]').hide();
$form.find('.form-item[rel=volumegroup]').hide();
$form.find('.form-item[rel=vCenterDataCenter]').hide();
$form.find('.form-item[rel=vCenterDataStore]').hide();
$form.find('.form-item[rel=rbdmonitor]').hide();
$form.find('.form-item[rel=rbdpool]').hide();
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
} else {
$form.find('.form-item[rel=server]').css('display', 'inline-block');
$form.find('.form-item[rel=server]').find(".value").find("input").val("");
@ -15486,6 +15533,8 @@
$form.find('.form-item[rel=smbUsername]').hide();
$form.find('.form-item[rel=smbPassword]').hide();
$form.find('.form-item[rel=smbDomain]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
}
});
@ -15614,6 +15663,15 @@
isHidden: true
},
//gluster
glustervolume: {
label: 'label.gluster.volume',
validation: {
required: true
},
isHidden: true
},
//always appear (begin)
storageTags: {
label: 'label.storage.tags',
@ -15698,6 +15756,12 @@
path = "/" + path;
path += "/" + args.data.vCenterDataStore;
url = vmfsURL("dummy", path);
} else if (args.data.protocol == "gluster") {
var glustervolume = args.data.glustervolume;
if (glustervolume.substring(0, 1) != "/")
glustervolume = "/" + glustervolume;
url = glusterURL(server, glustervolume);
} else {
var iqn = args.data.iqn;
if (iqn.substring(0, 1) != "/")
@ -16904,7 +16968,6 @@
},
//SMB (end)
//S3 (begin)
accesskey: {
label: 'label.s3.access_key',

View File

@ -1486,6 +1486,10 @@
id: "clvm",
description: "CLVM"
});
items.push({
id: "gluster",
description: "Gluster"
});
args.response.success({
data: items
});
@ -1587,6 +1591,7 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "SMB") { //"SMB" show almost the same fields as "nfs" does, except 3 more SMB-specific fields.
$form.find('[rel=server]').css('display', 'block');
$form.find('[rel=server]').find(".value").find("input").val("");
@ -1604,6 +1609,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "ocfs2") { //ocfs2 is the same as nfs, except no server field.
$form.find('[rel=server]').hide();
$form.find('[rel=server]').find(".value").find("input").val("");
@ -1621,6 +1628,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "PreSetup") {
$form.find('[rel=server]').hide();
$form.find('[rel=server]').find(".value").find("input").val("localhost");
@ -1639,6 +1648,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "iscsi") {
$form.find('[rel=server]').css('display', 'block');
$form.find('[rel=server]').find(".value").find("input").val("");
@ -1656,6 +1667,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if ($(this).val() == "clvm") {
$form.find('[rel=server]').hide();
$form.find('[rel=server]').find(".value").find("input").val("localhost");
@ -1673,6 +1686,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "vmfs") {
$form.find('[rel=server]').css('display', 'block');
$form.find('[rel=server]').find(".value").find("input").val("");
@ -1690,6 +1705,8 @@
$form.find('[rel=vCenterDataCenter]').css('display', 'block');
$form.find('[rel=vCenterDataStore]').css('display', 'block');
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "SharedMountPoint") { //"SharedMountPoint" show the same fields as "nfs" does.
$form.find('[rel=server]').hide();
$form.find('[rel=server]').find(".value").find("input").val("localhost");
@ -1707,6 +1724,27 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
} else if (protocol == "gluster") {
$form.find('[rel=server]').css('display', 'block');
$form.find('[rel=server]').find(".value").find("input").val("");
$form.find('[rel=path]').hide();
$form.find('[rel=smbUsername]').hide();
$form.find('[rel=smbPassword]').hide();
$form.find('[rel=smbDomain]').hide();
$form.find('[rel=iqn]').hide();
$form.find('[rel=lun]').hide();
$form.find('[rel=volumegroup]').hide();
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').css('display', 'block');
} else {
$form.find('[rel=server]').css('display', 'block');
$form.find('[rel=server]').find(".value").find("input").val("");
@ -1722,6 +1760,8 @@
$form.find('[rel=vCenterDataCenter]').hide();
$form.find('[rel=vCenterDataStore]').hide();
$form.find('[rel=glustervolume]').hide();
}
});
@ -1810,6 +1850,15 @@
isHidden: true
},
//gluster
glustervolume: {
label: 'label.gluster.volume',
validation: {
required: true
},
isHidden: true
},
//always appear (begin)
storageTags: {
label: 'label.storage.tags',