This is an automated email from the ASF dual-hosted git repository.

bhaisaab pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/master by this push:
     new 8f35657  CLOUDSTACK-10164: allow users to create a VPC through the UI. 
(#2345)
8f35657 is described below

commit 8f35657ac2dcf774a556075406332d6e84615639
Author: Sigert Goeminne <[email protected]>
AuthorDate: Thu Nov 30 22:09:21 2017 +0100

    CLOUDSTACK-10164: allow users to create a VPC through the UI. (#2345)
    
    The listNuageVspDomainTemplat cmd was called by the ui when the create vpc 
dialog was opened. This command failed when no nuage vsp device was present. As 
a consequence the ui did not show the dialog. So currently it's not possible to 
create a vpc through the UI with a native CloudStack deployment. This bugfix, 
adds robustness to the ui that in case the cmd fails the dialog will appear 
nonetheless . Furthermore I also changed the listNuageVspDomainTemplateCmd to 
always return an empty [...]
---
 .../cloud/network/manager/NuageVspManagerImpl.java |  20 +++-
 ui/scripts/network.js                              | 103 +++++++++++----------
 2 files changed, 67 insertions(+), 56 deletions(-)

diff --git 
a/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
 
b/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
index 1bbef4e..96016e6 100644
--- 
a/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
+++ 
b/plugins/network-elements/nuage-vsp/src/com/cloud/network/manager/NuageVspManagerImpl.java
@@ -57,6 +57,7 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Comparator;
 import java.util.HashMap;
+import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
@@ -845,18 +846,23 @@ public class NuageVspManagerImpl extends ManagerBase 
implements NuageVspManager,
         if (passedPhysicalNetworkId != null) {
             physicalNetworkId = Optional.of(passedPhysicalNetworkId);
         } else if (zoneId != null) {
-            physicalNetworkId = 
Optional.of(getPhysicalNetworkBasedOnZone(zoneId));
+            physicalNetworkId = 
Optional.ofNullable(getPhysicalNetworkBasedOnZone(zoneId));
         } else {
             throw new InvalidParameterValueException("No zoneid or 
physicalnetworkid specified.");
         }
 
-        List<VspDomainTemplate> domainTemplates;
+        if (!physicalNetworkId.isPresent()) {
+            return new LinkedList<>();
+        }
 
-        ListVspDomainTemplatesCommand agentCmd = new 
ListVspDomainTemplatesCommand(vspDomain, keyword);
         Long hostId = getNuageVspHostId(physicalNetworkId.get());
+        if (hostId == null) {
+            return new LinkedList<>();
+        }
 
+        ListVspDomainTemplatesCommand agentCmd = new 
ListVspDomainTemplatesCommand(vspDomain, keyword);
         ListVspDomainTemplatesAnswer answer = (ListVspDomainTemplatesAnswer) 
_agentMgr.easySend(hostId, agentCmd);
-        domainTemplates = answer.getDomainTemplates();
+        List<VspDomainTemplate> domainTemplates = answer.getDomainTemplates();
 
         return domainTemplates.stream()
                        .map(NuageVspManagerImpl::createDomainTemplateResponse)
@@ -926,6 +932,10 @@ public class NuageVspManagerImpl extends ManagerBase 
implements NuageVspManager,
     @Override
     public boolean entityExist(EntityExistsCommand cmd, Long 
physicalNetworkId){
         Long hostId = getNuageVspHostId(physicalNetworkId);
+        if (hostId == null) {
+            throw new CloudRuntimeException("There is no Nuage VSP device 
configured on physical network " + physicalNetworkId);
+        }
+
         Answer answer = _agentMgr.easySend(hostId, cmd);
         if (answer != null) {
             return answer.getResult();
@@ -1168,7 +1178,7 @@ public class NuageVspManagerImpl extends ManagerBase 
implements NuageVspManager,
             return config.getHostId();
         }
 
-        throw new CloudRuntimeException("There is no Nuage VSP device 
configured on physical network " + physicalNetworkId);
+        return null;
     }
 
     @DB
diff --git a/ui/scripts/network.js b/ui/scripts/network.js
index 16feaf1..66ab75a 100644
--- a/ui/scripts/network.js
+++ b/ui/scripts/network.js
@@ -5245,65 +5245,66 @@
                                                 args.context.domainTemplateMap 
= [];
                                                 
args.context.globalDomainTemplateUsed = [];
                                             }
-                                                $.ajax({
-                                                    url: 
createURL('listNuageVspDomainTemplates'),
-                                                    dataType: "json",
-                                                    data: {
-                                                        zoneid: args.zoneid
-                                                    },
-                                                    async: true,
-                                                    success: function (json) {
-                                                        $.ajax({
-                                                            url: 
createURL('listNuageVspGlobalDomainTemplate'),
-                                                            dataType: "json",
-                                                            data: {
-                                                                name: 
"nuagevsp.vpc.domaintemplate.name"
-                                                            },
-                                                            async: true,
-                                                            success: 
function(PDTjson){
-                                                                var 
domaintemplates = json.listnuagevspdomaintemplatesresponse.domaintemplates ? 
json.listnuagevspdomaintemplatesresponse.domaintemplates : [];
-                                                                var 
preConfiguredDomainTemplate = 
PDTjson.listnuagevspglobaldomaintemplateresponse.count == 1 ? 
PDTjson.listnuagevspglobaldomaintemplateresponse.domaintemplates[0].name : "";
 
-                                                                if 
(!domaintemplates.length) {
-                                                                    
args.$form.find("[rel=nuageusedomaintemplate]").hide();
-                                                                }
+                                            $.ajax({
+                                                url: 
createURL('listNuageVspDomainTemplates'),
+                                                dataType: "json",
+                                                data: {
+                                                    zoneid: args.zoneid
+                                                },
+                                                async: true,
+                                                error: 
function(XMLHttpRequest, textStatus, errorThrown) {
+                                                    args.response.success({});
+                                                },
+                                                success: function (json) {
+                                                    $.ajax({
+                                                        url: 
createURL('listNuageVspGlobalDomainTemplate'),
+                                                        dataType: "json",
+                                                        data: {
+                                                            name: 
"nuagevsp.vpc.domaintemplate.name"
+                                                        },
+                                                        async: true,
+                                                        success: 
function(PDTjson){
+                                                            var 
domaintemplates = json.listnuagevspdomaintemplatesresponse.domaintemplates ? 
json.listnuagevspdomaintemplatesresponse.domaintemplates : [];
+                                                            var 
preConfiguredDomainTemplate = 
PDTjson.listnuagevspglobaldomaintemplateresponse.count == 1 ? 
PDTjson.listnuagevspglobaldomaintemplateresponse.domaintemplates[0].name : "";
 
-                                                                var index = -1;
-                                                                
$.each(domaintemplates, function(key,value) {
-                                                                    if 
(preConfiguredDomainTemplate == value.name) {
-                                                                        index 
= key;
-                                                                    }
-                                                                });
+                                                            if 
(!domaintemplates.length) {
+                                                                
args.$form.find("[rel=nuageusedomaintemplate]").hide();
+                                                            }
 
-                                                                //Set global 
pre configured DT as the default by placing it to the top of the drop down list.
-                                                                if (index != 
-1) {
-                                                                    
domaintemplates.unshift(domaintemplates[index]);
-                                                                    
domaintemplates.splice(index + 1, 1);
-                                                                    
args.$form.find("[rel=nuageusedomaintemplate]").show();
-                                                                    
args.$form.find("[rel=nuagedomaintemplatelist]").show();
-                                                                    
args.$form.find("[rel=nuageusedomaintemplate]").find("input").attr('checked', 
true);
-                                                                    
args.context.globalDomainTemplateUsed[args.zoneid] = true;
-                                                                } else {
-                                                                    
args.context.globalDomainTemplateUsed[args.zoneid] = false;
+                                                            var index = -1;
+                                                            
$.each(domaintemplates, function(key,value) {
+                                                                if 
(preConfiguredDomainTemplate == value.name) {
+                                                                    index = 
key;
                                                                 }
+                                                            });
 
-                                                                
args.context.domainTemplateMap[args.zoneid] = domaintemplates;
-                                                                
args.response.success({
-                                                                    data: 
$.map(domaintemplates, function (dt) {
-                                                                        return 
{
-                                                                            
id: dt.name,
-                                                                            
description: dt.description
-                                                                        };
-                                                                    })
-                                                                });
+                                                            //Set global pre 
configured DT as the default by placing it to the top of the drop down list.
+                                                            if (index != -1) {
+                                                                
domaintemplates.unshift(domaintemplates[index]);
+                                                                
domaintemplates.splice(index + 1, 1);
+                                                                
args.$form.find("[rel=nuageusedomaintemplate]").show();
+                                                                
args.$form.find("[rel=nuagedomaintemplatelist]").show();
+                                                                
args.$form.find("[rel=nuageusedomaintemplate]").find("input").attr('checked', 
true);
+                                                                
args.context.globalDomainTemplateUsed[args.zoneid] = true;
+                                                            } else {
+                                                                
args.context.globalDomainTemplateUsed[args.zoneid] = false;
                                                             }
-                                                        });
 
-                                                    }
-                                                });
-
-                                            //}
+                                                            
args.context.domainTemplateMap[args.zoneid] = domaintemplates;
+                                                            
args.response.success({
+                                                                data: 
$.map(domaintemplates, function (dt) {
+                                                                    return {
+                                                                        id: 
dt.name,
+                                                                        
description: dt.description
+                                                                    };
+                                                                })
+                                                            });
+                                                        }
+                                                    });
 
+                                                }
+                                            });
                                         }
 
                                     }

-- 
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].

Reply via email to