You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by je...@apache.org on 2014/05/12 20:37:42 UTC

git commit: updated refs/heads/4.4-forward to c20acc6

Repository: cloudstack
Updated Branches:
  refs/heads/4.4-forward afd9d4e75 -> c20acc6a4


CLOUDSTACK-6565: [UI] New Zones tab for Templates and ISOs


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/c20acc6a
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/c20acc6a
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/c20acc6a

Branch: refs/heads/4.4-forward
Commit: c20acc6a4451dd0f3eba1beeb52e215f000b59d9
Parents: afd9d4e
Author: Gabor Apati-Nagy <ga...@citrix.com>
Authored: Tue May 6 10:44:07 2014 +0100
Committer: Jessica Wang <je...@apache.org>
Committed: Mon May 12 10:59:52 2014 -0700

----------------------------------------------------------------------
 .../classes/resources/messages.properties       |   1 +
 ui/css/cloudstack3.css                          |   7 +-
 ui/dictionary.jsp                               |   2 +
 ui/scripts/templates.js                         | 617 +++++++++++--------
 4 files changed, 362 insertions(+), 265 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c20acc6a/client/WEB-INF/classes/resources/messages.properties
----------------------------------------------------------------------
diff --git a/client/WEB-INF/classes/resources/messages.properties b/client/WEB-INF/classes/resources/messages.properties
index 94b5d7c..b422c7c 100644
--- a/client/WEB-INF/classes/resources/messages.properties
+++ b/client/WEB-INF/classes/resources/messages.properties
@@ -1270,6 +1270,7 @@ label.zone.type=Zone Type
 label.zone.wide=Zone-Wide
 label.zone=Zone
 label.zones=Zones
+label.multiplezones=Multiple Zones
 label.zoneWizard.trafficType.guest=Guest\: Traffic between end-user virtual machines
 label.zoneWizard.trafficType.management=Management\: Traffic between CloudStack\\\\'s internal resources, including any components that communicate with the Management Server, such as hosts and CloudStack system VMs
 label.zoneWizard.trafficType.public=Public\: Traffic between the internet and virtual machines in the cloud.

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c20acc6a/ui/css/cloudstack3.css
----------------------------------------------------------------------
diff --git a/ui/css/cloudstack3.css b/ui/css/cloudstack3.css
old mode 100644
new mode 100755
index cb9fa35..d7ed1af
--- a/ui/css/cloudstack3.css
+++ b/ui/css/cloudstack3.css
@@ -1298,6 +1298,11 @@ div.panel div.list-view div.data-table table {
   border-left: 1px solid #CACACA;
 }
 
+.detail-view div#details-tab-zones div.list-view div.data-table table td div.disabled {
+  display: none;
+}
+
+
 div.panel div.list-view div.fixed-header {
   position: absolute;
   top: 29px;
@@ -1313,7 +1318,7 @@ div.panel div.list-view div.fixed-header {
 .detail-view div.list-view div.fixed-header {
   width: 703px !important;
   top: 49px !important;
-  left: 32px !important;
+  left: 25px !important;
   background: #FFFFFF;
 }
 

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c20acc6a/ui/dictionary.jsp
----------------------------------------------------------------------
diff --git a/ui/dictionary.jsp b/ui/dictionary.jsp
index 9cc030a..334215f 100644
--- a/ui/dictionary.jsp
+++ b/ui/dictionary.jsp
@@ -1236,6 +1236,8 @@ dictionary = {
 'label.yes': '<fmt:message key="label.yes" />',
 'label.zone.details': '<fmt:message key="label.zone.details" />',
 'label.zone': '<fmt:message key="label.zone" />',
+'label.zones': '<fmt:message key="label.zones" />',
+'label.multiplezones': '<fmt:message key="label.multiplezones" />',
 'label.zone.id': '<fmt:message key="label.zone.id" />',
 'label.zone.name': '<fmt:message key="label.zone.name" />',
 'label.zone.step.1.title': '<fmt:message key="label.zone.step.1.title" />',

http://git-wip-us.apache.org/repos/asf/cloudstack/blob/c20acc6a/ui/scripts/templates.js
----------------------------------------------------------------------
diff --git a/ui/scripts/templates.js b/ui/scripts/templates.js
index 67cc2fb..814e76b 100644
--- a/ui/scripts/templates.js
+++ b/ui/scripts/templates.js
@@ -53,7 +53,7 @@
                         name: {
                             label: 'label.name'
                         },
-                        zonename: {
+                        zones: {
                             label: 'label.zone'
                         },
                         hypervisor: {
@@ -601,9 +601,31 @@
                             data: data,
                             success: function(json) {
                                 var items = json.listtemplatesresponse.template;
+                                var itemsView = [];
+								
+                                $(items).each(function(index, item) {
+                                    var existing = $.grep(itemsView, function(it){
+                                        return it != null && it.id !=null && it.id == item.id;
+                                    });
+								
+                                    if (existing.length == 0) {
+                                        itemsView.push({
+                                            id: item.id,
+                                            name: item.name,
+                                            description: item.description,
+                                            zones: item.zonename,
+                                            zoneids: [item.zoneid]
+                                        });
+                                    }
+                                    else {
+                                        existing[0].zones = 'label.multiplezones';
+                                        existing[0].zoneids.push(item.zoneid);
+                                    }
+                                });								
+
                                 args.response.success({
                                     actionFilter: templateActionfilter,
-                                    data: items
+                                    data: itemsView
                                 });
                             }
                         });
@@ -749,91 +771,6 @@
                                 }
                             },
 
-                            copyTemplate: {
-                                label: 'label.action.copy.template',
-                                messages: {
-                                    confirm: function(args) {
-                                        return 'message.copy.template.confirm';
-                                    },
-                                    success: function(args) {
-                                        return 'message.template.copying';
-                                    },
-                                    notification: function(args) {
-                                        return 'label.action.copy.template';
-                                    }
-                                },
-                                createForm: {
-                                    title: 'label.action.copy.template',
-                                    desc: '',
-                                    fields: {
-                                        destinationZoneId: {
-                                            label: 'label.destination.zone',
-                                            docID: 'helpCopyTemplateDestination',
-                                            validation: {
-                                                required: true
-                                            },
-                                            select: function(args) {
-                                                $.ajax({
-                                                    url: createURL("listZones&available=true"),
-                                                    dataType: "json",
-                                                    async: true,
-                                                    success: function(json) {
-                                                        var zoneObjs = [];
-                                                        var items = json.listzonesresponse.zone;
-                                                        if (items != null) {
-                                                            for (var i = 0; i < items.length; i++) {
-                                                                if (items[i].id != args.context.templates[0].zoneid) { //destination zone must be different from source zone
-                                                                    zoneObjs.push({
-                                                                        id: items[i].id,
-                                                                        description: items[i].name
-                                                                    });
-                                                                }
-                                                            }
-                                                        }
-                                                        args.response.success({
-                                                            data: zoneObjs
-                                                        });
-                                                    }
-                                                });
-                                            }
-                                        }
-                                    }
-                                },
-                                action: function(args) {                                    
-                                    var data = {
-                                    	id: args.context.templates[0].id,
-                                    	destzoneid: args.data.destinationZoneId
-                                    };                                	
-                                    if (args.context.templates[0].zoneid != undefined) {
-                                        $.extend(data, {
-                                        	sourcezoneid: args.context.templates[0].zoneid
-                                        });	
-                                    }                                    
-                                    
-                                	$.ajax({
-                                        url: createURL('copyTemplate'),
-                                        data: data,                                        
-                                        success: function(json) {
-                                            var jid = json.copytemplateresponse.jobid;
-                                            args.response.success({
-                                                _custom: {
-                                                    jobId: jid,
-                                                    getUpdatedItem: function(json) {
-                                                        return {}; //nothing in this template needs to be updated
-                                                    },
-                                                    getActionFilter: function() {
-                                                        return templateActionfilter;
-                                                    }
-                                                }
-                                            });
-                                        }
-                                    });
-                                },
-                                notification: {
-                                    poll: pollAsyncJobResult
-                                }
-                            },
-
                             downloadTemplate: {
                                 label: 'label.action.download.template',
                                 messages: {
@@ -880,40 +817,6 @@
                                 }
                             },
 
-                            remove: {
-                                label: 'label.action.delete.template',
-                                messages: {
-                                    confirm: function(args) {
-                                        return 'message.action.delete.template';
-                                    },
-                                    notification: function(args) {
-                                        return 'label.action.delete.template';
-                                    }
-                                },
-                                action: function(args) {
-                                    var array1 = [];
-                                    if (args.context.templates[0].zoneid != null)
-                                        array1.push("&zoneid=" + args.context.templates[0].zoneid);
-
-                                    $.ajax({
-                                        url: createURL("deleteTemplate&id=" + args.context.templates[0].id + array1.join("")),
-                                        dataType: "json",
-                                        async: true,
-                                        success: function(json) {
-                                            var jid = json.deletetemplateresponse.jobid;
-                                            args.response.success({
-                                                _custom: {
-                                                    jobId: jid
-                                                }
-                                            });
-                                        }
-                                    });
-                                },
-                                notification: {
-                                    poll: pollAsyncJobResult
-                                }
-                            }
-
                         },
                         tabs: {
                             details: {
@@ -943,14 +846,6 @@
                                         }
                                     }
                                 }, { 
-                                	isready: {
-                                        label: 'state.ready',
-                                        converter: cloudStack.converters.toBooleanText
-                                    },
-                                    status: {
-                                        label: 'label.status'
-                                    },
-                                     
                                     hypervisor: {
                                         label: 'label.hypervisor'
                                     },
@@ -1050,9 +945,6 @@
                                         }
                                     },
 
-                                    zonename: {
-                                        label: 'label.zone.name'
-                                    },  
                                     crossZones: {
                                         label: 'label.cross.zones',
                                         converter: cloudStack.converters.toBooleanText
@@ -1082,9 +974,6 @@
                                     
                                     id: {
                                         label: 'label.id'
-                                    },
-                                    zoneid: {
-                                        label: 'label.zone.id'
                                     }
                                 }],
 
@@ -1120,6 +1009,160 @@
                                         }
                                     });
                                 }
+                            },
+
+                            zones: {
+                                title: 'label.zones',
+                                listView: {
+                                    id: 'zones',
+                                    fields: {
+                                        zonename: {
+                                            label: 'label.name'
+                                        },
+                                        status: {
+                                            label: 'label.status'
+                                        },
+                                        isready: {
+                                            label: 'state.ready',
+                                            converter: cloudStack.converters.toBooleanText
+                                        }
+                                    },
+                                    hideSearchBar: true,
+                                    actions: {
+                                        remove: {
+                                            label: 'label.action.delete.template',
+                                            messages: {
+                                                confirm: function(args) {
+                                                    return 'message.action.delete.template';
+                                                },
+                                                notification: function(args) {
+                                                    return 'label.action.delete.template';
+                                                }
+                                            },
+                                            action: function(args) {
+                                                $.ajax({
+                                                    url: createURL("deleteTemplate&id=" + args.context.templates[0].id + "&zoneid=" + args.context.zones[0].zoneid),
+                                                    dataType: "json",
+                                                    async: true,
+                                                    success: function(json) {
+                                                        var jid = json.deletetemplateresponse.jobid;
+                                                        args.response.success({
+                                                            _custom: {
+                                                                jobId: jid
+                                                            }
+                                                        });
+                                                    }
+                                                });
+                                            },
+                                            notification: {
+                                                poll: pollAsyncJobResult
+                                            }
+                                        },
+                                        copyTemplate: {
+                                            label: 'label.action.copy.template',
+                                            messages: {
+                                                confirm: function(args) {
+                                                    return 'message.copy.template.confirm';
+                                                },
+                                                success: function(args) {
+                                                    return 'message.template.copying';
+                                                },
+                                                notification: function(args) {
+                                                    return 'label.action.copy.template';
+                                                }
+                                            },
+                                            createForm: {
+                                                title: 'label.action.copy.template',
+                                                desc: '',
+                                                fields: {
+                                                    destinationZoneId: {
+                                                        label: 'label.destination.zone',
+                                                        docID: 'helpCopyTemplateDestination',
+                                                        validation: {
+                                                            required: true
+                                                        },
+                                                        select: function(args) {
+                                                            $.ajax({
+                                                                url: createURL("listZones&available=true"),
+                                                                dataType: "json",
+                                                                async: true,
+                                                                success: function(json) {
+                                                                    var zoneObjs = [];
+                                                                    var items = json.listzonesresponse.zone;
+                                                                    if (items != null) {
+                                                                        for (var i = 0; i < items.length; i++) {
+                                                                            if ($.inArray(items[i].id, args.context.templates[0].zoneids) == -1) { //destination zones should not contain zones where the template is already available 
+                                                                                zoneObjs.push({
+                                                                                    id: items[i].id,
+                                                                                    description: items[i].name
+                                                                                });
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                    args.response.success({
+                                                                        data: zoneObjs
+                                                                    });
+                                                                }
+                                                            });
+                                                        }
+                                                    }
+                                                }
+                                            },
+                                            action: function(args) {                                    
+                                                var data = {
+                                                	id: args.context.templates[0].id,
+                                                	destzoneid: args.data.destinationZoneId
+                                                };                                	
+                                                $.extend(data, {
+                                                    sourcezoneid: args.context.templates[0].zoneid
+                                                });	
+                                                
+                                    	$.ajax({
+                                            url: createURL('copyTemplate'),
+                                            data: data,                                        
+                                            success: function(json) {
+                                                var jid = json.copytemplateresponse.jobid;
+                                                args.response.success({
+                                                    _custom: {
+                                                        jobId: jid,
+                                                        getUpdatedItem: function(json) {
+                                                            return {}; //nothing in this template needs to be updated
+                                                        },
+                                                        getActionFilter: function() {
+                                                            return templateActionfilter;
+                                                        }
+                                                    }
+                                                });
+                                            }
+                                        });
+                                            },
+                                            notification: {
+                                                poll: pollAsyncJobResult
+                                            }
+                                        }
+                                    },
+
+                                    dataProvider: function(args) {		
+	                                                var jsonObj = args.context.templates[0];
+                                                        var apiCmd = "listTemplates&templatefilter=self&id=" + jsonObj.id;
+
+                                                        $.ajax({
+                                                            url: createURL(apiCmd),
+                                                            dataType: "json",
+                                                            success: function(json) {
+                                                                    var templates = json.listtemplatesresponse.template;
+                                                                    var zones = [];
+                                                                    zones = templates;
+
+                                                        args.response.success({
+                                                                    actionFilter: templateActionfilter,
+                                                                    data: zones
+                                                        });
+                                                }
+                                            });
+                                        }
+                                
+                                }			
                             }
                         }
                     }
@@ -1154,7 +1197,7 @@
                         name: {
                             label: 'label.name'
                         },
-                        zonename: {
+                        zones: {
                             label: 'label.zone'
                         }
                     },
@@ -1434,9 +1477,30 @@
                             data: data,
                             success: function(json) {
                                 var items = json.listisosresponse.iso;
+
+                                var itemsView = [];
+                                $(items).each(function(index, item) {
+                                    var existing = $.grep(itemsView, function(it){
+                                        return it != null && it.id !=null && it.id == item.id;
+                                    });
+                                    if (existing.length == 0) {
+                                        itemsView.push({
+                                            id: item.id,
+                                            name: item.name,
+                                            description: item.description,
+                                            zones: item.zonename,
+                                            zoneids: [item.zoneid]
+                                        });
+                                    }
+                                    else {
+                                        existing[0].zones = 'Multiple Zones';
+                                        existing[0].zoneids.push(item.zoneid);
+                                    }
+                                }
+);
                                 args.response.success({
                                     actionFilter: isoActionfilter,
-                                    data: items
+                                    data: itemsView
                                 });
                             }
                         });
@@ -1531,85 +1595,6 @@
                                     });
                                 }
                             },
-
-                            copyISO: {
-                                label: 'label.action.copy.ISO',
-                                messages: {
-                                    notification: function(args) {
-                                        return 'Copying ISO';
-                                    }
-                                },
-                                createForm: {
-                                    title: 'label.action.copy.ISO',
-                                    desc: 'label.action.copy.ISO',
-                                    fields: {
-                                        destinationZoneId: {
-                                            label: 'label.destination.zone',
-                                            validation: {
-                                                required: true
-                                            },
-                                            select: function(args) {
-                                                $.ajax({
-                                                    url: createURL("listZones&available=true"),
-                                                    dataType: "json",
-                                                    async: true,
-                                                    success: function(json) {
-                                                        var zoneObjs = [];
-                                                        var items = json.listzonesresponse.zone;
-                                                        if (items != null) {
-                                                            for (var i = 0; i < items.length; i++) {
-                                                                if (items[i].id != args.context.isos[0].zoneid) { //destination zone must be different from source zone
-                                                                    zoneObjs.push({
-                                                                        id: items[i].id,
-                                                                        description: items[i].name
-                                                                    });
-                                                                }
-                                                            }
-                                                        }
-                                                        args.response.success({
-                                                            data: zoneObjs
-                                                        });
-                                                    }
-                                                });
-                                            }
-                                        }
-                                    }
-                                },
-                                action: function(args) {                                    
-                                    var data = {
-                                    	id: args.context.isos[0].id,
-                                    	destzoneid: args.data.destinationZoneId
-                                    };                                	
-                                    if (args.context.isos[0].zoneid != undefined) {
-                                        $.extend(data, {
-                                        	sourcezoneid: args.context.isos[0].zoneid
-                                        });	
-                                    }                                    
-                                	
-                                	$.ajax({
-                                        url: createURL('copyIso'),
-                                        data: data,
-                                        success: function(json) {
-                                            var jid = json.copytemplateresponse.jobid;
-                                            args.response.success({
-                                                _custom: {
-                                                    jobId: jid,
-                                                    getUpdatedItem: function(json) {
-                                                        return {}; //nothing in this ISO needs to be updated
-                                                    },
-                                                    getActionFilter: function() {
-                                                        return isoActionfilter;
-                                                    }
-                                                }
-                                            });
-                                        }
-                                    });
-                                },
-                                notification: {
-                                    poll: pollAsyncJobResult
-                                }
-                            },
-
                             downloadISO: {
                                 label: 'label.action.download.ISO',
                                 messages: {
@@ -1654,42 +1639,7 @@
                                 notification: {
                                     poll: pollAsyncJobResult
                                 }
-                            },
-
-                            remove: {
-                                label: 'label.action.delete.ISO',
-                                messages: {
-                                    confirm: function(args) {
-                                        return 'message.action.delete.ISO';
-                                    },
-                                    notification: function(args) {
-                                        return 'label.action.delete.ISO';
-                                    }
-                                },
-                                action: function(args) {
-                                    var array1 = [];
-                                    if (args.context.isos[0].zoneid != null)
-                                        array1.push("&zoneid=" + args.context.isos[0].zoneid);
-
-                                    $.ajax({
-                                        url: createURL("deleteIso&id=" + args.context.isos[0].id + array1.join("")),
-                                        dataType: "json",
-                                        async: true,
-                                        success: function(json) {
-                                            var jid = json.deleteisosresponse.jobid;
-                                            args.response.success({
-                                                _custom: {
-                                                    jobId: jid
-                                                }
-                                            });
-                                        }
-                                    });
-                                },
-                                notification: {
-                                    poll: pollAsyncJobResult
-                                }
                             }
-
                         },
 
                         tabs: {
@@ -1708,12 +1658,6 @@
                                     id: {
                                         label: 'ID'
                                     },
-                                    zonename: {
-                                        label: 'label.zone.name'
-                                    },
-                                    zoneid: {
-                                        label: 'label.zone.id'
-                                    },
                                     displaytext: {
                                         label: 'label.description',
                                         isEditable: true,
@@ -1721,13 +1665,6 @@
                                             required: true
                                         }
                                     },
-                                    isready: {
-                                        label: 'state.Ready',
-                                        converter: cloudStack.converters.toBooleanText
-                                    },
-                                    status: {
-                                        label: 'label.status'
-                                    },
                                     size: {
                                         label: 'label.size',
                                         converter: function(args) {
@@ -1834,6 +1771,158 @@
                                     });
 
                                 }
+                            },
+                            zones: {
+                                title: 'label.zones',
+                                listView: {
+                                    id: 'zones',
+                                    fields: {
+                                        zonename: {
+                                            label: 'label.name'
+                                        },
+                                        status: {
+                                            label: 'label.status'
+                                        },
+                                        isready: {
+                                            label: 'state.ready',
+                                            converter: cloudStack.converters.toBooleanText
+                                        }
+                                    },
+                                    hideSearchBar: true,
+                                    actions: {
+                                        copyISO: {
+                                            label: 'label.action.copy.ISO',
+                                            messages: {
+                                                notification: function(args) {
+                                                    return 'Copying ISO';
+                                                }
+                                            },
+                                            createForm: {
+                                                title: 'label.action.copy.ISO',
+                                                desc: 'label.action.copy.ISO',
+                                                fields: {
+                                                    destinationZoneId: {
+                                                        label: 'label.destination.zone',
+                                                        validation: {
+                                                            required: true
+                                                        },
+                                                        select: function(args) {
+                                                            $.ajax({
+                                                                url: createURL("listZones&available=true"),
+                                                                dataType: "json",
+                                                                async: true,
+                                                                success: function(json) {
+                                                                    var zoneObjs = [];
+                                                                    var items = json.listzonesresponse.zone;
+                                                                    if (items != null) {
+                                                                        for (var i = 0; i < items.length; i++) {
+                                                                            if ($.inArray(items[i].id, args.context.isos[0].zoneids) == -1) { //destination zones should not contain zones where the ISO is already available
+                                                                                zoneObjs.push({
+                                                                                    id: items[i].id,
+                                                                                    description: items[i].name
+                                                                                });
+                                                                            }
+                                                                        }
+                                                                    }
+                                                                    args.response.success({
+                                                                        data: zoneObjs
+                                                                    });
+                                                                }
+                                                            });
+                                                        }
+                                                    }
+                                                }
+                                            },
+                                            action: function(args) {                                    
+                                                var data = {
+                                                	id: args.context.isos[0].id,
+                                                	destzoneid: args.data.destinationZoneId
+                                                };                                	
+                                                if (args.context.isos[0].zoneid != undefined) {
+                                                    $.extend(data, {
+                                                    	sourcezoneid: args.context.isos[0].zoneid
+                                                    });	
+                                                }                                    
+                                            	
+                                            	$.ajax({
+                                                    url: createURL('copyIso'),
+                                                    data: data,
+                                                    success: function(json) {
+                                                        var jid = json.copytemplateresponse.jobid;
+                                                        args.response.success({
+                                                            _custom: {
+                                                                jobId: jid,
+                                                                getUpdatedItem: function(json) {
+                                                                    return {}; //nothing in this ISO needs to be updated
+                                                                },
+                                                                getActionFilter: function() {
+                                                                    return isoActionfilter;
+                                                                }
+                                                            }
+                                                        });
+                                                    }
+                                                });
+                                            },
+                                            notification: {
+                                                poll: pollAsyncJobResult
+                                            }
+                                        },
+
+                                        remove: {
+                                            label: 'label.action.delete.ISO',
+                                            messages: {
+                                                confirm: function(args) {
+                                                    return 'message.action.delete.ISO';
+                                                },
+                                                notification: function(args) {
+                                                    return 'label.action.delete.ISO';
+                                                }
+                                            },
+                                            action: function(args) {
+                                                var array1 = [];
+                                                if (args.context.isos[0].zoneid != null)
+                                                    array1.push("&zoneid=" + args.context.isos[0].zoneid);
+
+                                                $.ajax({
+                                                    url: createURL("deleteIso&id=" + args.context.isos[0].id + "&zoneid=" + args.context.zones[0].zoneid),
+                                                    dataType: "json",
+                                                    async: true,
+                                                    success: function(json) {
+                                                        var jid = json.deleteisosresponse.jobid;
+                                                        args.response.success({
+                                                            _custom: {
+                                                                jobId: jid
+                                                            }
+                                                        });
+                                                    }
+                                                });
+                                            },
+                                            notification: {
+                                                poll: pollAsyncJobResult
+                                            }
+                                        }
+                                    },
+
+                                    dataProvider: function(args) {
+                                                var jsonObj = args.context.isos[0];
+                                                var apiCmd = "listIsos&isofilter=self&id=" + jsonObj.id;
+
+                                                $.ajax({
+                                                    url: createURL(apiCmd),
+                                                    dataType: "json",
+                                                    success: function(json) {
+                                                            var isos = json.listisosresponse.iso;
+                                                            var zones = [];
+                                                            zones = isos;
+
+                                                args.response.success({
+                                                            actionFilter: isoActionfilter,
+                                                            data: zones
+                                                });
+                                        }
+                                    });
+                                }
+                            }
                             }
                         }
                     }