Enable primary storage to be added that is based on non-default storage plug-ins

This commit is contained in:
seif 2014-06-23 00:37:44 +02:00 committed by Mike Tutkowski
parent 5c36fe84b6
commit 9a27f201b0
4 changed files with 239 additions and 69 deletions

View File

@ -425,6 +425,8 @@ label.bytes.received=Bytes Received
label.bytes.sent=Bytes Sent
label.cancel=Cancel
label.capacity=Capacity
label.capacity.bytes=Capacity Bytes
label.capacity.iops=Capacity IOPS
label.certificate=Certificate
label.change.service.offering=Change service offering
label.change.value=Change value
@ -747,6 +749,7 @@ label.lun=LUN
label.make.project.owner=Make account project owner
label.manage.resources=Manage Resources
label.manage=Manage
label.managed=Managed
label.management.ips=Management IP Addresses
label.management=Management
label.max.cpus=Max. CPU cores
@ -1076,7 +1079,7 @@ label.source=Source
label.specify.IP.ranges=Specify IP ranges
label.specify.vlan=Specify VLAN
label.specify.vxlan=Specify VXLAN
label.SR.name = SR Name-Label
label.SR.name=SR Name-Label
label.srx=SRX
label.PA=Palo Alto
label.start.IP=Start IP

View File

@ -76,6 +76,8 @@ dictionary = {
'label.hypervisor.snapshot.reserve': '<fmt:message key="label.hypervisor.snapshot.reserve" />',
'label.acquire.new.secondary.ip': '<fmt:message key="label.acquire.new.secondary.ip" />',
'label.view.secondary.ips': '<fmt:message key="label.view.secondary.ips" />',
'label.capacity.bytes': '<fmt:message key="label.capacity.bytes" />',
'label.capacity.iops': '<fmt:message key="label.capacity.iops" />',
'message.acquire.ip.nic': '<fmt:message key="message.acquire.ip.nic" />',
'message.select.affinity.groups': '<fmt:message key="message.select.affinity.groups" />',
'message.no.affinity.groups': '<fmt:message key="message.no.affinity.groups" />',
@ -736,6 +738,7 @@ dictionary = {
'label.LUN.number': '<fmt:message key="label.LUN.number" />',
'label.make.project.owner': '<fmt:message key="label.make.project.owner" />',
'label.manage': '<fmt:message key="label.manage" />',
'label.managed': '<fmt:message key="label.managed" />',
'label.management': '<fmt:message key="label.management" />',
'label.management.ips': '<fmt:message key="label.management.ips" />',
'label.max.cpus': '<fmt:message key="label.max.cpus" />',

View File

@ -85,6 +85,29 @@ cloudStack.docs = {
externalLink: ''
},
helpManaged: {
desc: 'True if CloudStack manages the storage; else, false (check with storage provider if unknown)',
externalLink: ''
},
helpCapacityBytes: {
desc: 'Number of bytes for the primary storage to have',
externalLink: ''
},
helpCapacityIops: {
desc: 'Number of IOPS for the primary storage to have',
externalLink: ''
},
helpUrl: {
desc: 'Arbitrary data to be sent to the storage provider for configuration purposes',
externalLink: ''
},
//Ldap
helpLdapQueryFilter: {

View File

@ -15294,7 +15294,10 @@
id: 'Hyperv',
description: _l('Hyperv')
});
items.push({
id: 'Any',
description: _l('Any')
});
args.response.success({
data: items
});
@ -15489,6 +15492,10 @@
id: "iscsi",
description: "iscsi"
});
items.push({
id: "custom",
description: "custom"
});
args.response.success({
data: items
});
@ -15502,6 +15509,10 @@
id: "vmfs",
description: "vmfs"
});
items.push({
id: "custom",
description: "custom"
});
args.response.success({
data: items
});
@ -15659,6 +15670,30 @@
$form.find('.form-item[rel=rbdid]').hide();
$form.find('.form-item[rel=rbdsecret]').hide();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "custom") {
$form.find('.form-item[rel=server]').hide();
$form.find('.form-item[rel=server]').find(".value").find("input").val("localhost");
$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();
$form.find('.form-item[rel=glustervolume]').hide();
} else if (protocol == "iscsi") {
$form.find('.form-item[rel=server]').css('display', 'inline-block');
@ -15858,7 +15893,83 @@
},
isHidden: true
},
provider: {
label: 'label.provider',
docID: 'helpPrimaryStorageZone',
validation: {
required: true
},
select: function (args) {
var data = args.context.providers ?
{ id: args.context.providers[0].id } :
{ listAll: true };
$.ajax({
url: createURL('listStorageProviders'),
data: {
type: 'primary'
},
success: function (json) {
var providers = json.liststorageprovidersresponse.dataStoreProvider ? json.liststorageprovidersresponse.dataStoreProvider : [];
args.response.success({
data: $.map(providers, function (provider) {
return {
id: provider.name,
description: provider.name
};
})
});
}
});
args.$select.change(function () {
var $form = $(this).closest('form');
var scope = $(this).val();
if (scope == 'DefaultPrimary') {
$form.find('.form-item[rel=isManaged]').hide();
$form.find('.form-item[rel=capacityIops]').hide();
$form.find('.form-item[rel=capacityBytes]').hide();
$form.find('.form-item[rel=url]').hide();
} else {
$form.find('.form-item[rel=isManaged]').css('display', 'inline-block');
$form.find('.form-item[rel=capacityIops]').css('display', 'inline-block');
$form.find('.form-item[rel=capacityBytes]').css('display', 'inline-block');
$form.find('.form-item[rel=url]').css('display', 'inline-block');
}
}
)
}},
isManaged: {
label: 'label.managed',
docID: 'helpManaged',
isBoolean: true,
isChecked: false,
validation: {
required: false
}
},
capacityBytes: {
label: 'label.capacity.bytes',
docID: 'helpCapacityBytes',
validation: {
required: false
}
},
capacityIops: {
label: 'label.capacity.iops',
docID: 'helpCapacityIops',
validation: {
required: false
}
},
url: {
label: 'URL',
docID: 'helpUrl',
validation: {
required: false
}
},
//SMB
smbUsername: {
label: 'label.smb.username',
@ -15981,6 +16092,7 @@
}
},
/******************************/
action: function (args) {
var array1 =[];
array1.push("&scope=" + todb(args.data.scope));
@ -16003,74 +16115,103 @@
array1.push("&clusterid=" + args.data.clusterId);
array1.push("&hostid=" + args.data.hostId);
}
array1.push("&name=" + todb(args.data.name));
var server = args.data.server;
var url = null;
if (args.data.protocol == "nfs") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = nfsURL(server, path);
} else if (args.data.protocol == "SMB") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = smbURL(server, path);
array1.push("&details[0].user=" + args.data.smbUsername);
array1.push("&details[1].password=" + todb(args.data.smbPassword));
array1.push("&details[2].domain=" + args.data.smbDomain);
} else if (args.data.protocol == "PreSetup") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = presetupURL(server, path);
} else if (args.data.protocol == "ocfs2") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = ocfs2URL(server, path);
} else if (args.data.protocol == "SharedMountPoint") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = SharedMountPointURL(server, path);
} else if (args.data.protocol == "clvm") {
var vg = args.data.volumegroup;
if (vg.substring(0, 1) != "/")
vg = "/" + vg;
url = clvmURL(vg);
} else if (args.data.protocol == "rbd") {
var rbdmonitor = args.data.rbdmonitor;
var rbdpool = args.data.rbdpool;
var rbdid = args.data.rbdid;
var rbdsecret = args.data.rbdsecret;
url = rbdURL(rbdmonitor, rbdpool, rbdid, rbdsecret);
} else if (args.data.protocol == "vmfs") {
var path = args.data.vCenterDataCenter;
if (path.substring(0, 1) != "/")
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) != "/")
iqn = "/" + iqn;
var lun = args.data.lun;
url = iscsiURL(server, iqn, lun);
array1.push("&name=" + todb(args.data.name));
array1.push("&provider=" + todb(args.data.provider));
if (args.data.provider == "DefaultPrimary")
{
var server = args.data.server;
var url = null;
if (args.data.protocol == "nfs") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = nfsURL(server, path);
} else if (args.data.protocol == "SMB") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = smbURL(server, path);
array1.push("&details[0].user=" + args.data.smbUsername);
array1.push("&details[1].password=" + todb(args.data.smbPassword));
array1.push("&details[2].domain=" + args.data.smbDomain);
} else if (args.data.protocol == "PreSetup") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = presetupURL(server, path);
} else if (args.data.protocol == "ocfs2") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = ocfs2URL(server, path);
} else if (args.data.protocol == "SharedMountPoint") {
var path = args.data.path;
if (path.substring(0, 1) != "/")
path = "/" + path;
url = SharedMountPointURL(server, path);
} else if (args.data.protocol == "clvm") {
var vg = args.data.volumegroup;
if (vg.substring(0, 1) != "/")
vg = "/" + vg;
url = clvmURL(vg);
} else if (args.data.protocol == "rbd") {
var rbdmonitor = args.data.rbdmonitor;
var rbdpool = args.data.rbdpool;
var rbdid = args.data.rbdid;
var rbdsecret = args.data.rbdsecret;
url = rbdURL(rbdmonitor, rbdpool, rbdid, rbdsecret);
} else if (args.data.protocol == "vmfs") {
var path = args.data.vCenterDataCenter;
if (path.substring(0, 1) != "/")
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 if (args.data.protocol == "iscsi") {
var iqn = args.data.iqn;
if (iqn.substring(0, 1) != "/")
iqn = "/" + iqn;
var lun = args.data.lun;
url = iscsiURL(server, iqn, lun);
} else {
url = "";
}
array1.push("&url=" + todb(url));
}
array1.push("&url=" + todb(url));
else
{
array1.push("&managed=" + (args.data.isManaged == "on").toString());
if (args.data.capacityBytes != null && args.data.capacityBytes.length > 0)
{
array1.push("&capacityBytes=" + args.data.capacityBytes.split(",").join(""));
}
if (args.data.capacityIops != null && args.data.capacityIops.length > 0)
{
array1.push("&capacityIops=" + args.data.capacityIops.split(",").join(""));
}
if (args.data.url != null && args.data.url.length > 0)
{
array1.push("&url=" + todb(args.data.url));
}
}
if (args.data.storageTags != null && args.data.storageTags.length > 0)
array1.push("&tags=" + todb(args.data.storageTags));
{
array1.push("&tags=" + todb(args.data.storageTags));
}
$.ajax({
url: createURL("createStoragePool" + array1.join("")),
dataType: "json",
@ -17899,7 +18040,7 @@
label: 'label.url'
},
providername: {
label: 'Provider'
label: 'label.provider'
},
scope: {
label: 'label.scope'