Repository: cloudstack
Updated Branches:
  refs/heads/4.3-forward 258d8e2a0 -> 065ac54bd


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/065ac54b/tools/apidoc/gen_toc.py
----------------------------------------------------------------------
diff --git a/tools/apidoc/gen_toc.py b/tools/apidoc/gen_toc.py
index 9e4cd31..1d4d6e6 100644
--- a/tools/apidoc/gen_toc.py
+++ b/tools/apidoc/gen_toc.py
@@ -161,6 +161,7 @@ known_categories = {
     'CacheStores' : 'Cache Stores',
     'CacheStore' : 'Cache Store',
     'StratosphereSsp' : ' Stratosphere SSP'
+    'OvsElement' : 'Ovs Element'
     }
 
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/065ac54b/ui/scripts/system.js
----------------------------------------------------------------------
diff --git a/ui/scripts/system.js b/ui/scripts/system.js
index 0c56baf..d82bbc8 100644
--- a/ui/scripts/system.js
+++ b/ui/scripts/system.js
@@ -5705,6 +5705,607 @@
                                 notification: {
                                     poll: pollAsyncJobResult
                                 }
+                            }
+                        }
+                    },
+
+                    //ovs
+                    Ovs: {
+                        id: 'ovsProviders',
+                        label: 'label.ovs',
+                        isMaximized: true,
+                        type: 'detailView',
+                        fields: {
+                            name: {
+                                label: 'label.name'
+                            },
+                            ipaddress: {
+                                label: 'label.ip.address'
+                            },
+                            state: {
+                                label: 'label.status',
+                                indicator: {
+                                    'Enabled': 'on'
+                                }
+                            }
+                        },
+                        tabs: {
+                            network: {
+                                title: 'label.network',
+                                fields: [{
+                                    name: {
+                                        label: 'label.name'
+                                    }
+                                }, {
+                                    id: {
+                                        label: 'label.id'
+                                    },
+                                    state: {
+                                        label: 'label.state'
+                                    },
+                                    physicalnetworkid: {
+                                        label: 'label.physical.network.ID'
+                                    },
+                                    destinationphysicalnetworkid: {
+                                        label: 
'label.destination.physical.network.id'
+                                    },
+                                    supportedServices: {
+                                        label: 'label.supported.services'
+                                    }
+                                }],
+                                dataProvider: function (args) {
+                                    refreshNspData("Ovs");
+                                    args.response.success({
+                                        actionFilter: 
virtualRouterProviderActionFilter,
+                                        data: $.extend(nspMap["Ovs"], {
+                                            supportedServices: 
nspMap["Ovs"].servicelist.join(', ')
+                                        })
+                                    });
+                                }
+                            },
+
+                            instances: {
+                                title: 'label.instances',
+                                listView: {
+                                    label: 'label.virtual.appliances',
+                                    id: 'routers',
+                                    fields: {
+                                        name: {
+                                            label: 'label.name'
+                                        },
+                                        zonename: {
+                                            label: 'label.zone'
+                                        },
+                                        routerType: {
+                                            label: 'label.type'
+                                        },
+                                        state: {
+                                            converter: function (str) {
+                                                // For localization
+                                                return str;
+                                            },
+                                            label: 'label.status',
+                                            indicator: {
+                                                'Running': 'on',
+                                                'Stopped': 'off',
+                                                'Error': 'off'
+                                            }
+                                        }
+                                    },
+                                    dataProvider: function (args) {
+                                        var array1 = [];
+                                        if (args.filterBy != null) {
+                                            if (args.filterBy.search != null 
&& args.filterBy.search.by != null && args.filterBy.search.value != null) {
+                                                switch 
(args.filterBy.search.by) {
+                                                case "name":
+                                                    if 
(args.filterBy.search.value.length > 0)
+                                                        
array1.push("&keyword=" + args.filterBy.search.value);
+                                                    break;
+                                                }
+                                            }
+                                        }
+
+                                        var data2 = {
+                                            forvpc: false
+                                        };
+                                        var routers = [];
+                                        $.ajax({
+                                            url: 
createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + 
args.page + "&pagesize=" + pageSize + array1.join("")),
+                                            data: data2,
+                                            success: function (json) {
+                                                var items = 
json.listroutersresponse.router ?
+                                                    
json.listroutersresponse.router : [];
+
+                                                $(items).map(function (index, 
item) {
+                                                    routers.push(item);
+                                                });
+
+                                                // Get project routers
+                                                $.ajax({
+                                                    url: 
createURL("listRouters&zoneid=" + selectedZoneObj.id + "&listAll=true&page=" + 
args.page + "&pagesize=" + pageSize + array1.join("") + "&projectid=-1"),
+                                                    data: data2,
+                                                    success: function (json) {
+                                                        var items = 
json.listroutersresponse.router ?
+                                                            
json.listroutersresponse.router : [];
+
+                                                        $(items).map(function 
(index, item) {
+                                                            routers.push(item);
+                                                        });
+                                                        args.response.success({
+                                                            actionFilter: 
routerActionfilter,
+                                                            data: 
$(routers).map(mapRouterType)
+                                                        });
+                                                    }
+                                                });
+                                            }
+                                        });
+                                    },
+                                    detailView: {
+                                        name: 'Virtual applicance details',
+                                        actions: {
+                                            start: {
+                                                label: 
'label.action.start.router',
+                                                messages: {
+                                                    confirm: function (args) {
+                                                        return 
'message.action.start.router';
+                                                    },
+                                                    notification: function 
(args) {
+                                                        return 
'label.action.start.router';
+                                                    }
+                                                },
+                                                action: function (args) {
+                                                    $.ajax({
+                                                        url: 
createURL('startRouter&id=' + args.context.routers[0].id),
+                                                        dataType: 'json',
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jid = 
json.startrouterresponse.jobid;
+                                                            
args.response.success({
+                                                                _custom: {
+                                                                    jobId: jid,
+                                                                    
getUpdatedItem: function (json) {
+                                                                        return 
json.queryasyncjobresultresponse.jobresult.domainrouter;
+                                                                    },
+                                                                    
getActionFilter: function () {
+                                                                        return 
routerActionfilter;
+                                                                    }
+                                                                }
+                                                            });
+                                                        }
+                                                    });
+                                                },
+                                                notification: {
+                                                    poll: pollAsyncJobResult
+                                                }
+                                            },
+
+                                            stop: {
+                                                label: 
'label.action.stop.router',
+                                                createForm: {
+                                                    title: 
'label.action.stop.router',
+                                                    desc: 
'message.action.stop.router',
+                                                    fields: {
+                                                        forced: {
+                                                            label: 
'force.stop',
+                                                            isBoolean: true,
+                                                            isChecked: false
+                                                        }
+                                                    }
+                                                },
+                                                messages: {
+                                                    notification: function 
(args) {
+                                                        return 
'label.action.stop.router';
+                                                    }
+                                                },
+                                                action: function (args) {
+                                                    var array1 = [];
+                                                    array1.push("&forced=" + 
(args.data.forced == "on"));
+                                                    $.ajax({
+                                                        url: 
createURL('stopRouter&id=' + args.context.routers[0].id + array1.join("")),
+                                                        dataType: 'json',
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jid = 
json.stoprouterresponse.jobid;
+                                                            
args.response.success({
+                                                                _custom: {
+                                                                    jobId: jid,
+                                                                    
getUpdatedItem: function (json) {
+                                                                        return 
json.queryasyncjobresultresponse.jobresult.domainrouter;
+                                                                    },
+                                                                    
getActionFilter: function () {
+                                                                        return 
routerActionfilter;
+                                                                    }
+                                                                }
+                                                            });
+                                                        }
+                                                    });
+                                                },
+                                                notification: {
+                                                    poll: pollAsyncJobResult
+                                                }
+                                            },
+
+                                            'remove': {
+                                                label: 'label.destroy.router',
+                                                messages: {
+                                                    confirm: function (args) {
+                                                        return 
'message.confirm.destroy.router';
+                                                    },
+                                                    notification: function 
(args) {
+                                                        return 
'label.destroy.router';
+                                                    }
+                                                },
+                                                action: function (args) {
+                                                    $.ajax({
+                                                        url: 
createURL("destroyRouter&id=" + args.context.routers[0].id),
+                                                        dataType: "json",
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jid = 
json.destroyrouterresponse.jobid;
+                                                            
args.response.success({
+                                                                _custom: {
+                                                                    jobId: jid
+                                                                }
+                                                            });
+                                                        }
+                                                    });
+                                                },
+                                                notification: {
+                                                    poll: pollAsyncJobResult
+                                                }
+                                            },
+
+                                            migrate: {
+                                                label: 
'label.action.migrate.router',
+                                                createForm: {
+                                                    title: 
'label.action.migrate.router',
+                                                    desc: '',
+                                                    fields: {
+                                                        hostId: {
+                                                            label: 
'label.host',
+                                                            validation: {
+                                                                required: true
+                                                            },
+                                                            select: function 
(args) {
+                                                                $.ajax({
+                                                                    url: 
createURL("findHostsForMigration&VirtualMachineId=" + 
args.context.routers[0].id),
+                                                                    dataType: 
"json",
+                                                                    async: 
true,
+                                                                    success: 
function (json) {
+                                                                        var 
hostObjs = json.findhostsformigrationresponse.host;
+                                                                        var 
items = [];
+                                                                        
$(hostObjs).each(function () {
+                                                                            
items.push({
+                                                                               
 id: this.id,
+                                                                               
 description: (this.name + " (" + (this.suitableformigration ? "Suitable" : 
"Not Suitable") + ")")
+                                                                            });
+                                                                        });
+                                                                        
args.response.success({
+                                                                            
data: items
+                                                                        });
+                                                                    }
+                                                                });
+                                                            },
+                                                            error: function 
(XMLHttpResponse) {
+                                                                var errorMsg = 
parseXMLHttpResponse(XMLHttpResponse);
+                                                                
args.response.error(errorMsg);
+                                                            }
+                                                        }
+                                                    }
+                                                },
+                                                messages: {
+                                                    notification: function 
(args) {
+                                                        return 
'label.action.migrate.router';
+                                                    }
+                                                },
+                                                action: function (args) {
+                                                    $.ajax({
+                                                        url: 
createURL("migrateSystemVm&hostid=" + args.data.hostId + "&virtualmachineid=" + 
args.context.routers[0].id),
+                                                        dataType: "json",
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jid = 
json.migratesystemvmresponse.jobid;
+                                                            
args.response.success({
+                                                                _custom: {
+                                                                    jobId: jid,
+                                                                    
getUpdatedItem: function (json) {
+                                                                        
//return json.queryasyncjobresultresponse.jobresult.systemvminstance;    //not 
all properties returned in systemvminstance
+                                                                        
$.ajax({
+                                                                            
url: createURL("listRouters&id=" + 
json.queryasyncjobresultresponse.jobresult.systemvminstance.id),
+                                                                            
dataType: "json",
+                                                                            
async: false,
+                                                                            
success: function (json) {
+                                                                               
 var items = json.listroutersresponse.router;
+                                                                               
 if (items != null && items.length > 0) {
+                                                                               
     return items[0];
+                                                                               
 }
+                                                                            }
+                                                                        });
+                                                                    },
+                                                                    
getActionFilter: function () {
+                                                                        return 
routerActionfilter;
+                                                                    }
+                                                                }
+                                                            });
+                                                        }
+                                                    });
+                                                },
+                                                notification: {
+                                                    poll: pollAsyncJobResult
+                                                }
+                                            },
+
+                                            viewConsole: {
+                                                label: 'label.view.console',
+                                                action: {
+                                                    externalLink: {
+                                                        url: function (args) {
+                                                            return 
clientConsoleUrl + '?cmd=access&vm=' + args.context.routers[0].id;
+                                                        },
+                                                        title: function (args) 
{
+                                                            return 
args.context.routers[0].id.substr(0, 8); //title in window.open() can't have 
space nor longer than 8 characters. Otherwise, IE browser will have error.
+                                                        },
+                                                        width: 820,
+                                                        height: 640
+                                                    }
+                                                }
+                                            }
+                                        },
+                                        tabs: {
+                                            details: {
+                                                title: 'label.details',
+                                                preFilter: function (args) {
+                                                    var hiddenFields = [];
+                                                    if 
(!args.context.routers[0].project) {
+                                                        
hiddenFields.push('project');
+                                                        
hiddenFields.push('projectid');
+                                                    }
+                                                    if 
(selectedZoneObj.networktype == 'Basic') {
+                                                        
hiddenFields.push('publicip'); //In Basic zone, guest IP is public IP. So, 
publicip is not returned by listRouters API. Only guestipaddress is returned by 
listRouters API.
+                                                    }
+                                                    return hiddenFields;
+                                                },
+                                                fields: [{
+                                                    name: {
+                                                        label: 'label.name'
+                                                    },
+                                                    project: {
+                                                        label: 'label.project'
+                                                    }
+                                                }, {
+                                                    id: {
+                                                        label: 'label.id'
+                                                    },
+                                                    projectid: {
+                                                        label: 
'label.project.id'
+                                                    },
+                                                    state: {
+                                                        label: 'label.state'
+                                                    },
+                                                    guestnetworkid: {
+                                                        label: 
'label.network.id'
+                                                    },
+                                                    publicip: {
+                                                        label: 
'label.public.ip'
+                                                    },
+                                                    guestipaddress: {
+                                                        label: 'label.guest.ip'
+                                                    },
+                                                    linklocalip: {
+                                                        label: 
'label.linklocal.ip'
+                                                    },
+                                                    hostname: {
+                                                        label: 'label.host'
+                                                    },
+                                                    serviceofferingname: {
+                                                        label: 
'label.compute.offering'
+                                                    },
+                                                    networkdomain: {
+                                                        label: 
'label.network.domain'
+                                                    },
+                                                    domain: {
+                                                        label: 'label.domain'
+                                                    },
+                                                    account: {
+                                                        label: 'label.account'
+                                                    },
+                                                    created: {
+                                                        label: 'label.created',
+                                                        converter: 
cloudStack.converters.toLocalDate
+                                                    },
+                                                    isredundantrouter: {
+                                                        label: 
'label.redundant.router',
+                                                        converter: 
cloudStack.converters.toBooleanText
+                                                    },
+                                                    redundantRouterState: {
+                                                        label: 
'label.redundant.state'
+                                                    }
+                                                }],
+                                                dataProvider: function (args) {
+                                                    $.ajax({
+                                                        url: 
createURL("listRouters&id=" + args.context.routers[0].id),
+                                                        dataType: 'json',
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jsonObj = 
json.listroutersresponse.router[0];
+                                                            
addExtraPropertiesToRouterInstanceObject(jsonObj);
+                                                            
args.response.success({
+                                                                actionFilter: 
routerActionfilter,
+                                                                data: jsonObj
+                                                            });
+                                                        }
+                                                    });
+                                                }
+                                            },
+                                            nics: {
+                                                title: 'label.nics',
+                                                multiple: true,
+                                                fields: [{
+                                                    name: {
+                                                        label: 'label.name',
+                                                        header: true
+                                                    },
+                                                    type: {
+                                                        label: 'label.type'
+                                                    },
+                                                    traffictype: {
+                                                        label: 
'label.traffic.type'
+                                                    },
+                                                    networkname: {
+                                                        label: 
'label.network.name'
+                                                    },
+                                                    netmask: {
+                                                        label: 'label.netmask'
+                                                    },
+                                                    ipaddress: {
+                                                        label: 
'label.ip.address'
+                                                    },
+                                                    id: {
+                                                        label: 'label.id'
+                                                    },
+                                                    networkid: {
+                                                        label: 
'label.network.id'
+                                                    },
+                                                    isolationuri: {
+                                                        label: 
'label.isolation.uri'
+                                                    },
+                                                    broadcasturi: {
+                                                        label: 
'label.broadcast.uri'
+                                                    }
+                                                }],
+                                                dataProvider: function (args) {
+                                                    $.ajax({
+                                                        url: 
createURL("listRouters&id=" + args.context.routers[0].id),
+                                                        dataType: 'json',
+                                                        async: true,
+                                                        success: function 
(json) {
+                                                            var jsonObj = 
json.listroutersresponse.router[0].nic;
+
+                                                            
args.response.success({
+                                                                actionFilter: 
routerActionfilter,
+                                                                data: 
$.map(jsonObj, function (nic, index) {
+                                                                    var name = 
'NIC ' + (index + 1);
+                                                                    if 
(nic.isdefault) {
+                                                                        name 
+= ' (' + _l('label.default') + ')';
+                                                                    }
+                                                                    return 
$.extend(nic, {
+                                                                        name: 
name
+                                                                    });
+                                                                })
+                                                            });
+                                                        }
+                                                    });
+                                                }
+                                            }
+                                        }
+                                    }
+                                }
+                            }
+                        },
+                        actions: {
+                            enable: {
+                                label: 'label.enable.provider',
+                                action: function (args) {
+                                    $.ajax({
+                                        url: 
createURL("updateNetworkServiceProvider&id=" + nspMap["Ovs"].id + 
"&state=Enabled"),
+                                        dataType: "json",
+                                        success: function (json) {
+                                            var jid = 
json.updatenetworkserviceproviderresponse.jobid;
+                                            args.response.success({
+                                                _custom: {
+                                                    jobId: jid,
+                                                    getUpdatedItem: function 
(json) {
+                                                        
$(window).trigger('cloudStack.fullRefresh');
+                                                    }
+                                                }
+                                            });
+                                        }
+                                    });
+                                },
+                                messages: {
+                                    confirm: function (args) {
+                                        return 
'message.confirm.enable.provider';
+                                    },
+                                    notification: function () {
+                                        return 'label.enable.provider';
+                                    }
+                                },
+                                notification: {
+                                    poll: pollAsyncJobResult
+                                }
+                            },
+                            disable: {
+                                label: 'label.disable.provider',
+                                action: function (args) {
+                                    $.ajax({
+                                        url: 
createURL("updateNetworkServiceProvider&id=" + nspMap["Ovs"].id + 
"&state=Disabled"),
+                                        dataType: "json",
+                                        success: function (json) {
+                                            var jid = 
json.updatenetworkserviceproviderresponse.jobid;
+                                            args.response.success({
+                                                _custom: {
+                                                    jobId: jid,
+                                                    getUpdatedItem: function 
(json) {
+                                                        
$(window).trigger('cloudStack.fullRefresh');
+                                                    }
+                                                }
+                                            });
+                                        }
+                                    });
+                                },
+                                messages: {
+                                    confirm: function (args) {
+                                        return 
'message.confirm.disable.provider';
+                                    },
+                                    notification: function () {
+                                        return 'label.disable.provider';
+                                    }
+                                },
+                                notification: {
+                                    poll: pollAsyncJobResult
+                                }
+                            }
+                        }
+                    },
+                }
+            }
+        },
+        show: cloudStack.uiCustom.physicalResources({
+            sections: {
+                physicalResources: {
+                    type: 'select',
+                    title: 'Physical Resources',
+                    listView: {
+                        zones: {
+                            id: 'physicalResources',
+                            label: 'label.menu.physical.resources',
+                            fields: {
+                                name: {
+                                    label: 'label.zone'
+                                },
+                                networktype: {
+                                    label: 'label.network.type'
+                                },
+                                domainid: {
+                                    label: 'label.public',
+                                    converter: function(args) {
+                                        if (args == null)
+                                            return "Yes";
+                                        else
+                                            return "No";
+                                    }
+                                },
+                                allocationstate: {
+                                    label: 'label.allocation.state',
+                                    converter: function(str) {
+                                        // For localization
+                                        return str;
+                                    },
+                                    indicator: {
+                                        'Enabled': 'on',
+                                        'Disabled': 'off'
+                                    }
+                                }
                             },
                             destroy: {
                                 label: 'label.shutdown.provider',
@@ -18114,48 +18715,45 @@
                 if (items != null) {
                     for (var i = 0; i < items.length; i++) {
                         switch (items[i].name) {
-                            case "VirtualRouter":
-                                nspMap["virtualRouter"] = items[i];
-                                break;
-                            case "InternalLbVm":
-                                nspMap["InternalLbVm"] = items[i];
-                                break;
-                            case "VpcVirtualRouter":
-                                nspMap["vpcVirtualRouter"] = items[i];
-                                break;
-                            case "Ovs":
-                                nspMap["Ovs"] = items[i];
-                                break;      
-                            case "Netscaler":
-                                nspMap["netscaler"] = items[i];
-                                break;
-                            case "MidoNet":
-                                nspMap["midoNet"] = items[i];
-                                break;
-                            case "BaremetalDhcpProvider":
-                                nspMap["BaremetalDhcpProvider"] = items[i];
-                                break;
-                            case "BaremetalPxeProvider":
-                                nspMap["BaremetalPxeProvider"] = items[i];
-                                break;
-                            case "F5BigIp":
-                                nspMap["f5"] = items[i];
-                                break;
-                            case "JuniperSRX":
-                                nspMap["srx"] = items[i];
-                                break;
-                            case "PaloAlto":
-                                nspMap["pa"] = items[i];
-                                break;
-                            case "SecurityGroupProvider":
-                                nspMap["securityGroups"] = items[i];
-                                break;
-                            case "NiciraNvp":
-                                nspMap["niciraNvp"] = items[i];
-                                break;
-                            case "BigSwitchVns":
-                                nspMap["bigswitchVns"] = items[i];
-                                break;
+                        case "VirtualRouter":
+                            nspMap["virtualRouter"] = items[i];
+                            break;
+                        case "Ovs":
+                            nspMap["Ovs"] = items[i];
+                            break;
+                        case "InternalLbVm":
+                            nspMap["InternalLbVm"] = items[i];
+                            break;
+                        case "VpcVirtualRouter":
+                            nspMap["vpcVirtualRouter"] = items[i];
+                            break;
+                        case "Netscaler":
+                            nspMap["netscaler"] = items[i];
+                            break;
+                        case "MidoNet":
+                            nspMap["midoNet"] = items[i];
+                            break;
+                        case "BaremetalDhcpProvider":
+                            nspMap["BaremetalDhcpProvider"] = items[i];
+                            break;
+                        case "BaremetalPxeProvider":
+                            nspMap["BaremetalPxeProvider"] = items[i];
+                            break;
+                        case "F5BigIp":
+                            nspMap["f5"] = items[i];
+                            break;
+                        case "JuniperSRX":
+                            nspMap["srx"] = items[i];
+                            break;
+                        case "SecurityGroupProvider":
+                            nspMap["securityGroups"] = items[i];
+                            break;
+                        case "NiciraNvp":
+                            nspMap["niciraNvp"] = items[i];
+                            break;
+                        case "BigSwitchVns":
+                            nspMap["bigswitchVns"] = items[i];
+                            break;
                         }
                     }
                 }
@@ -18171,6 +18769,10 @@
             name: 'Virtual Router',
             state: nspMap.virtualRouter ? nspMap.virtualRouter.state : 
'Disabled'
         }, {
+            id: 'Ovs',
+            name: 'Ovs',
+            state: nspMap.Ovs ? nspMap.Ovs.state : 'Disabled'
+        }, {
             id: 'niciraNvp',
             name: 'Nicira Nvp',
             state: nspMap.niciraNvp ? nspMap.niciraNvp.state : 'Disabled'

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/065ac54b/ui/scripts/zoneWizard.js
----------------------------------------------------------------------
diff --git a/ui/scripts/zoneWizard.js b/ui/scripts/zoneWizard.js
index 006bf7d..6bafab4 100755
--- a/ui/scripts/zoneWizard.js
+++ b/ui/scripts/zoneWizard.js
@@ -354,12 +354,12 @@
                         success: function(json) {
                             var items = 
json.listconfigurationsresponse.configuration; //2 entries returned: 
'sdn.ovs.controller', 'sdn.ovs.controller.default.label'
                             $(items).each(function() {
-                                if (this.name == 'sdn.ovs.controller') {
-                                    if (this.value == 'true' || this.value == 
true) {
-                                        skipGuestTrafficStep = true;
-                                    }
-                                    return false; //break each loop
-                                }
+                   //             if (this.name == 'sdn.ovs.controller') {
+                   //                 if (this.value == 'true' || this.value 
== true) {
+                   //                     skipGuestTrafficStep = true;
+                   //                 }
+                   //                 return false; //break each loop
+                   //             }
                             });
                         }
                     });
@@ -3021,6 +3021,102 @@
                                                         });
                                                         // ***** Virtual 
Router ***** (end) *****
 
+                                                        // ***** Ovs ***** 
(begin) *****
+                                                        var ovsProviderId =  
null;
+                                                        $.ajax({
+                                                            url: 
createURL("listNetworkServiceProviders&name=Ovs&physicalNetworkId=" + 
thisPhysicalNetwork.id),
+                                                            dataType: "json",
+                                                            async: false,
+                                                            success: function 
(json) {
+                                                                var items = 
json.listnetworkserviceprovidersresponse.networkserviceprovider;
+                                                                if (items != 
null && items.length > 0) {
+                                                                    
ovsProviderId = items[0].id;
+                                                                }
+                                                            }
+                                                        });
+                                                        if (ovsProviderId != 
null) {
+                                                            var ovsElementId = 
null;
+                                                            $.ajax({
+                                                                url: 
createURL("listOvsElements&nspid=" + ovsProviderId),
+                                                                dataType: 
"json",
+                                                                async: false,
+                                                                success: 
function (json) {
+                                                                    var items 
= json.listovselementsresponse.ovselement;
+                                                                    if (items 
!= null && items.length > 0) {
+                                                                        
ovsElementId = items[0].id;
+                                                                    }
+                                                                }
+                                                            });
+                                                            if (ovsElementId 
!= null) {
+                                                                $.ajax({
+                                                                    url: 
createURL("configureOvsElement&enabled=true&id=" + ovsElementId),
+                                                                    dataType: 
"json",
+                                                                    async: 
false,
+                                                                    success: 
function (json) {
+                                                                        var 
jobId = json.configureovselementresponse.jobid;
+                                                                        var 
enableOvsElementIntervalID = setInterval(function () {
+                                                                            
$.ajax({
+                                                                               
 url: createURL("queryAsyncJobResult&jobId=" + jobId),
+                                                                               
 dataType: "json",
+                                                                               
 success: function (json) {
+                                                                               
     var result = json.queryasyncjobresultresponse;
+                                                                               
     if (result.jobstatus == 0) {
+                                                                               
         return; //Job has not completed
+                                                                               
     } else {
+                                                                               
         clearInterval(enableOvsElementIntervalID);
+
+                                                                               
         if (result.jobstatus == 1) { //configureOvsElement succeeded
+                                                                               
             $.ajax({
+                                                                               
                 url: 
createURL("updateNetworkServiceProvider&state=Enabled&id=" + ovsProviderId),
+                                                                               
                 dataType: "json",
+                                                                               
                 async: false,
+                                                                               
                 success: function (json) {
+                                                                               
                     var jobId = 
json.updatenetworkserviceproviderresponse.jobid;
+                                                                               
                     var enableOvsProviderIntervalID = setInterval(function () {
+                                                                               
                         $.ajax({
+                                                                               
                             url: createURL("queryAsyncJobResult&jobId=" + 
jobId),
+                                                                               
                             dataType: "json",
+                                                                               
                             success: function (json) {
+                                                                               
                                 var result = json.queryasyncjobresultresponse;
+                                                                               
                                 if (result.jobstatus == 0) {
+                                                                               
                                     return; //Job has not completed
+                                                                               
                                 } else {
+                                                                               
                                     clearInterval(enableOvsProviderIntervalID);
+
+                                                                               
                                     if (result.jobstatus == 2) {
+                                                                               
                                         alert("failed to enable Ovs Provider. 
Error: " + _s(result.jobresult.errortext));
+                                                                               
                                     }
+                                                                               
                                 }
+                                                                               
                             },
+                                                                               
                             error: function (XMLHttpResponse) {
+                                                                               
                                 var errorMsg = 
parseXMLHttpResponse(XMLHttpResponse);
+                                                                               
                                 alert("updateNetworkServiceProvider failed. 
Error: " + errorMsg);
+                                                                               
                             }
+                                                                               
                         });
+                                                                               
                     }, g_queryAsyncJobResultInterval);
+                                                                               
                 }
+                                                                               
             });
+                                                                               
         } else if (result.jobstatus == 2) {
+                                                                               
             alert("configureOvsElement failed. Error: " + 
_s(result.jobresult.errortext));
+                                                                               
         }
+                                                                               
     }
+                                                                               
 },
+                                                                               
 error: function (XMLHttpResponse) {
+                                                                               
     var errorMsg = parseXMLHttpResponse(XMLHttpResponse);
+                                                                               
     alert("configureOvsElement failed. Error: " + errorMsg);
+                                                                               
 }
+                                                                            });
+                                                                        }, 
g_queryAsyncJobResultInterval);
+                                                                    }
+                                                                });
+                                                            }
+
+
+                                                        }
+
+
+                                                        // ***** Ovs ***** 
(end) *****
+
                                                         // ***** Internal LB 
***** (begin) *****
                                                         var 
internalLbProviderId;
                                                         $.ajax({

Reply via email to