You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bf...@apache.org on 2013/07/12 21:52:12 UTC
git commit: updated refs/heads/master to 0113697
Updated Branches:
refs/heads/master 05ff19031 -> 0113697ea
CLOUDSTACK-2569: Add enable/disable actions to main VNMC network provider
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/0113697e
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/0113697e
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/0113697e
Branch: refs/heads/master
Commit: 0113697ea820c2d7179ca8eabcf8bcd6c5671538
Parents: 05ff190
Author: Brian Federle <br...@citrix.com>
Authored: Fri Jul 12 12:51:55 2013 -0700
Committer: Brian Federle <br...@citrix.com>
Committed: Fri Jul 12 12:51:55 2013 -0700
----------------------------------------------------------------------
.../vnmcNetworkProvider/vnmcNetworkProvider.js | 372 +++++++++++++++----
1 file changed, 296 insertions(+), 76 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/0113697e/ui/modules/vnmcNetworkProvider/vnmcNetworkProvider.js
----------------------------------------------------------------------
diff --git a/ui/modules/vnmcNetworkProvider/vnmcNetworkProvider.js b/ui/modules/vnmcNetworkProvider/vnmcNetworkProvider.js
index cad4a49..22cff63 100644
--- a/ui/modules/vnmcNetworkProvider/vnmcNetworkProvider.js
+++ b/ui/modules/vnmcNetworkProvider/vnmcNetworkProvider.js
@@ -15,7 +15,7 @@
// specific language governing permissions and limitations
// under the License.
(function($, cloudStack) {
- cloudStack.modules.vnmcNetworkProvider = function(module) {
+ cloudStack.modules.vnmcNetworkProvider = function(module) {
var vnmcDeviceViewAll = window._m = [
{
label: 'VNMC Devices',
@@ -28,26 +28,26 @@
fields: {
resourcename: { label: 'Resource Name' },
provider: { label: 'Provider' }
- },
- dataProvider: function(args) {
+ },
+ dataProvider: function(args) {
$.ajax({
url: createURL('listCiscoVnmcResources'),
data: {
physicalnetworkid: args.context.physicalNetworks[0].id
},
- success: function(json){
- var items = json.listCiscoVnmcResources.CiscoVnmcResource;
+ success: function(json){
+ var items = json.listCiscoVnmcResources.CiscoVnmcResource;
args.response.success({
data: items
- });
+ });
}
- });
- },
+ });
+ },
actions: {
add: {
label: 'Add VNMC device',
- messages: {
+ messages: {
notification: function(args) {
return 'Add VNMC device';
}
@@ -57,66 +57,66 @@
title: 'Add VNMC device',
fields: {
hostname: {
- label: 'label.host',
+ label: 'label.host',
validation: { required: true }
},
username: {
- label: 'label.username',
+ label: 'label.username',
validation: { required: true }
},
password: {
- label: 'label.password',
+ label: 'label.password',
isPassword: true,
validation: { required: true }
- }
+ }
}
},
- action: function(args) {
+ action: function(args) {
$.ajax({
url: createURL('listNetworkServiceProviders'),
data: {
name: 'CiscoVnmc',
- physicalnetworkid: args.context.physicalNetworks[0].id
+ physicalnetworkid: args.context.physicalNetworks[0].id
},
- success: function(json){
+ success: function(json){
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
if(items != null && items.length > 0) {
var ciscoVnmcProvider = items[0];
if(ciscoVnmcProvider.state == 'Enabled') {
- addCiscoVnmcResourceFn();
+ addCiscoVnmcResourceFn();
+ }
+ else {
+ enableCiscoVnmcProviderFn(ciscoVnmcProvider);
}
- else {
- enableCiscoVnmcProviderFn(ciscoVnmcProvider);
- }
- }
- else {
+ }
+ else {
$.ajax({
url: createURL("addNetworkServiceProvider"),
data: {
name: 'CiscoVnmc',
- physicalnetworkid: args.context.physicalNetworks[0].id
- },
+ physicalnetworkid: args.context.physicalNetworks[0].id
+ },
success: function(json) {
- var jobId = json.addnetworkserviceproviderresponse.jobid;
- var addVnmcProviderIntervalID = setInterval(function() {
+ var jobId = json.addnetworkserviceproviderresponse.jobid;
+ var addVnmcProviderIntervalID = setInterval(function() {
$.ajax({
url: createURL("queryAsyncJobResult&jobId="+jobId),
dataType: "json",
success: function(json) {
- var result = json.queryasyncjobresultresponse;
+ var result = json.queryasyncjobresultresponse;
if (result.jobstatus == 0) {
return; //Job has not completed
}
else {
- clearInterval(addVnmcProviderIntervalID );
+ clearInterval(addVnmcProviderIntervalID );
if (result.jobstatus == 1) {
//nspMap["CiscoVnmc"] = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
- var ciscoVnmcProvider = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
- enableCiscoVnmcProviderFn(ciscoVnmcProvider);
+ var ciscoVnmcProvider = json.queryasyncjobresultresponse.jobresult.networkserviceprovider;
+ enableCiscoVnmcProviderFn(ciscoVnmcProvider);
}
else if (result.jobstatus == 2) {
- args.response.error(_s(result.jobresult.errortext));
+ args.response.error(_s(result.jobresult.errortext));
}
}
},
@@ -124,14 +124,14 @@
args.response.error(parseXMLHttpResponse(data));
}
});
- }, g_queryAsyncJobResultInterval);
+ }, g_queryAsyncJobResultInterval);
}
- });
+ });
}
}
});
-
- var enableCiscoVnmcProviderFn = function(ciscoVnmcProvider){
+
+ var enableCiscoVnmcProviderFn = function(ciscoVnmcProvider){
$.ajax({
url: createURL('updateNetworkServiceProvider'),
data: {
@@ -155,30 +155,30 @@
clearInterval(enableVnmcProviderIntervalID);
if (result.jobstatus == 1) {
addCiscoVnmcResourceFn();
- }
+ }
else if (result.jobstatus == 2) {
- args.response.error(_s(result.jobresult.errortext));
- }
+ args.response.error(_s(result.jobresult.errortext));
+ }
}
}
- });
- }, g_queryAsyncJobResultInterval);
+ });
+ }, g_queryAsyncJobResultInterval);
}
- });
- }
-
- var addCiscoVnmcResourceFn = function(){
+ });
+ };
+
+ var addCiscoVnmcResourceFn = function(){
var data = {
physicalnetworkid: args.context.physicalNetworks[0].id,
hostname: args.data.hostname,
username: args.data.username,
password: args.data.password
- };
-
+ };
+
$.ajax({
url: createURL('addCiscoVnmcResource'),
- data: data,
- success: function(json) {
+ data: data,
+ success: function(json) {
var item = json.addCiscoVnmcResource.CiscoVnmcResource;
args.response.success({data: item});
},
@@ -196,10 +196,10 @@
}
}
},
-
+
detailView: {
name: 'CiscoVNMC resource details',
- actions: {
+ actions: {
remove: {
label: 'delete CiscoVNMC resource',
messages: {
@@ -210,12 +210,12 @@
return 'delete CiscoVNMC resource';
}
},
- action: function(args) {
+ action: function(args) {
$.ajax({
url: createURL('deleteCiscoVnmcResource'),
data: {
resourceid: args.context.vnmcDevices[0].resourceid
- },
+ },
success: function(json) {
args.response.success();
},
@@ -234,38 +234,232 @@
tabs: {
details: {
- title: 'label.details',
+ title: 'label.details',
fields: [
{
resourcename: { label: 'Resource Name' }
},
- {
+ {
resourceid: { label: 'Resource ID'},
provider: { label: 'Provider' },
RESOURCE_NAME: { label: 'Resource Name'}
}
],
- dataProvider: function(args) {
+ dataProvider: function(args) {
$.ajax({
url: createURL('listCiscoVnmcResources'),
data: {
resourceid: args.context.vnmcDevices[0].resourceid
},
- success: function(json){
- var item = json.listCiscoVnmcResources.CiscoVnmcResource[0];
- args.response.success({ data: item });
+ success: function(json){
+ var item = json.listCiscoVnmcResources.CiscoVnmcResource[0];
+ args.response.success({
+ data: item
+ });
}
- });
- }
+ });
+ }
}
}
- }
+ }
};
var vnmcProviderDetailView = {
id: 'vnmcProvider',
label: 'VNMC',
viewAll: vnmcDeviceViewAll,
+ actions: {
+ enable: {
+ label: 'Enable VNMC provider',
+
+ messages: {
+ confirm: function(args) {
+ return 'Please confirm you would like to enable the VNMC provider.';
+ },
+ notification: function(args) {
+ return 'Enable VNMC device';
+ }
+ },
+
+ action: function(args) {
+ $.ajax({
+ url: createURL('listNetworkServiceProviders'),
+ data: {
+ name: 'CiscoVnmc',
+ physicalnetworkid: args.context.physicalNetworks[0].id
+ },
+ success: function(json){
+ var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
+ if(items != null && items.length > 0) {
+ var ciscoVnmcProvider = items[0];
+
+ enableCiscoVnmcProviderFn(ciscoVnmcProvider);
+ } else {
+ args.response.error('VNMC is not available from provider list.');
+ }
+ }
+ });
+
+ var enableCiscoVnmcProviderFn = function(ciscoVnmcProvider){
+ $.ajax({
+ url: createURL('updateNetworkServiceProvider'),
+ data: {
+ id: ciscoVnmcProvider.id,
+ state: 'Enabled'
+ },
+ success: function(json) {
+ var jid = json.updatenetworkserviceproviderresponse.jobid;
+ var enableVnmcProviderIntervalID = setInterval(function(){
+ $.ajax({
+ url: createURL('queryAsyncJobResult'),
+ data: {
+ jobid: jid
+ },
+ success: function(json){
+ var result = json.queryasyncjobresultresponse;
+ if (result.jobstatus == 0) {
+ return; //Job has not completed
+ }
+ else {
+ if (result.jobstatus == 1) {
+ args.response.success({ data: { state: 'Enabled' } });
+ }
+ else if (result.jobstatus == 2) {
+ args.response.error(_s(result.jobresult.errortext));
+ }
+ }
+ }
+ });
+ }, g_queryAsyncJobResultInterval);
+ }
+ });
+ }
+
+ var addCiscoVnmcResourceFn = function(){
+ var data = {
+ physicalnetworkid: args.context.physicalNetworks[0].id,
+ hostname: args.data.hostname,
+ username: args.data.username,
+ password: args.data.password
+ };
+
+ $.ajax({
+ url: createURL('addCiscoVnmcResource'),
+ data: data,
+ success: function(json) {
+ var item = json.addCiscoVnmcResource.CiscoVnmcResource;
+ args.response.success({data: item});
+ },
+ error: function(data) {
+ args.response.error(parseXMLHttpResponse(data));
+ }
+ });
+ }
+ },
+
+ notification: {
+ poll: function(args) {
+ args.complete();
+ }
+ }
+ },
+
+ disable: {
+ label: 'Disable VNMC provider',
+
+ messages: {
+ confirm: function(args) {
+ return 'Please confirm you would like to disable the VNMC provider.';
+ },
+ notification: function(args) {
+ return 'Disable VNMC device';
+ }
+ },
+
+ action: function(args) {
+ $.ajax({
+ url: createURL('listNetworkServiceProviders'),
+ data: {
+ name: 'CiscoVnmc',
+ physicalnetworkid: args.context.physicalNetworks[0].id
+ },
+ success: function(json){
+ var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
+ if(items != null && items.length > 0) {
+ var ciscoVnmcProvider = items[0];
+
+ disableCiscoVnmcProviderFn(ciscoVnmcProvider);
+ } else {
+ args.response.error('VNMC is not available from provider list.');
+ }
+ }
+ });
+
+ var disableCiscoVnmcProviderFn = function(ciscoVnmcProvider){
+ $.ajax({
+ url: createURL('updateNetworkServiceProvider'),
+ data: {
+ id: ciscoVnmcProvider.id,
+ state: 'Disabled'
+ },
+ success: function(json) {
+ var jid = json.updatenetworkserviceproviderresponse.jobid;
+ var disableVnmcProviderIntervalID = setInterval(function(){
+ $.ajax({
+ url: createURL('queryAsyncJobResult'),
+ data: {
+ jobid: jid
+ },
+ success: function(json){
+ var result = json.queryasyncjobresultresponse;
+ if (result.jobstatus == 0) {
+ return; //Job has not completed
+ }
+ else {
+ clearInterval(disableVnmcProviderIntervalID);
+ if (result.jobstatus == 1) {
+ args.response.success({ data: { state: 'Disabled' } });
+ }
+ else if (result.jobstatus == 2) {
+ args.response.error(_s(result.jobresult.errortext));
+ }
+ }
+ }
+ });
+ }, g_queryAsyncJobResultInterval);
+ }
+ });
+ };
+
+ var addCiscoVnmcResourceFn = function(){
+ var data = {
+ physicalnetworkid: args.context.physicalNetworks[0].id,
+ hostname: args.data.hostname,
+ username: args.data.username,
+ password: args.data.password
+ };
+
+ $.ajax({
+ url: createURL('addCiscoVnmcResource'),
+ data: data,
+ success: function(json) {
+ var item = json.addCiscoVnmcResource.CiscoVnmcResource;
+ args.response.success({data: item});
+ },
+ error: function(data) {
+ args.response.error(parseXMLHttpResponse(data));
+ }
+ });
+ }
+ },
+
+ notification: {
+ poll: function(args) {
+ args.complete();
+ }
+ }
+ }
+ },
tabs: {
details: {
title: 'label.details',
@@ -274,12 +468,12 @@
name: { label: 'label.name' }
},
{
- state: { label: 'label.state' },
+ state: { label: 'label.state' },
id: { label: 'label.id' },
servicelist: {
label: 'Services',
- converter: function(args){
- if(args)
+ converter: function(args){
+ if(args)
return args.join(', ');
else
return '';
@@ -287,40 +481,66 @@
}
}
],
- dataProvider: function(args) {
+ dataProvider: function(args) {
$.ajax({
url: createURL('listNetworkServiceProviders'),
data: {
name: 'CiscoVnmc',
- physicalnetworkid: args.context.physicalNetworks[0].id
- },
- success: function(json){
+ physicalnetworkid: args.context.physicalNetworks[0].id
+ },
+ success: function(json){
var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
- if(items != null && items.length > 0) {
- args.response.success({ data: items[0] });
+ if(items != null && items.length > 0) {
+ args.response.success({ data: items[0] });
}
else {
- args.response.success({
+ args.response.success({
data: {
name: 'CiscoVnmc',
state: 'Disabled'
- }
- })
+ },
+ actionFilter: vnmcActionFilter
+ });
}
}
- });
+ });
}
}
}
};
-
+
+ var vnmcActionFilter = function(args) {
+ var enabledActions = ['enable'];
+
+ $.ajax({
+ url: createURL('listNetworkServiceProviders'),
+ async: false,
+ data: {
+ name: 'CiscoVnmc',
+ physicalnetworkid: args.context.physicalNetworks[0].id
+ },
+ success: function(json){
+ var items = json.listnetworkserviceprovidersresponse.networkserviceprovider;
+ if(items != null && items.length > 0) {
+ var ciscoVnmcProvider = items[0];
+
+ if (ciscoVnmcProvider.state === 'Enabled') {
+ enabledActions = ['disable'];
+ }
+ }
+ }
+ });
+
+ return enabledActions;
+ };
+
module.pluginAPI.extend({
addDevice: function(device) {
cloudStack.sections.system.subsections[device.id] = device;
vnmcDeviceViewAll.push({ label: device.title, path: '_zone.' + device.id });
}
});
-
+
module.infrastructure.networkServiceProvider({
id: 'CiscoVnmc',
name: 'Cisco VNMC',