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',