Index: /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/policy/__init__.py
===================================================================
--- /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/policy/__init__.py	(revision 38156)
+++ /branches/rel_apv_10_7/usr/click/webui/htdocs/new/src/apv/models/loadbalancing/slb/policy/__init__.py	(working copy)
@@ -85,56 +85,67 @@
         def get_config_list(self, start=0, max_num=-1, search=None, filter_list=None, sort_dict=None):
             field_list = self._model._meta.get_config_list_colums_all(False)
             field_list_all = self._model._meta.get_config_list_colums_all()
+            src_name = ""
+            match_key = "?src_name"
+            if filter_list and "src" in filter_list and filter_list["src"][0] and "service_name" in filter_list["src"][0]:
+                src_name = filter_list["src"][0]["service_name"]
+                match_key = '=' + src_name
             self.cli.set_enable()
             cmd_output = self.cli.cmd(self._shared_cmd)
             result = cli_parse(cmd_output, [
-                          EasyParser('slb policy default', ['?src_name', '?dst_name']),
-                          EasyParser('slb policy backup', ['?src_name', '?dst_name']),
+                          EasyParser('slb policy default', [match_key, '?dst_name']),
+                          EasyParser('slb policy backup', [match_key, '?dst_name']),
                           
-                          EasyParser('slb policy qos cookie', ['?name', '?src_name', '?dst_name', '?cookie_str', '?precedence']),
-                          EasyParser('slb policy rcookie', ['?name', '?src_name', '?dst_name', '?precedence']),
-                          EasyParser('slb policy icookie', ['?name', '?src_name', '?dst_name', '?precedence']),
-                          EasyParser('slb policy persistent cookie', ['?name', '?src_name', '?dst_name', '?cookie_name', '?precedence']),
+                          EasyParser('slb policy qos cookie', ['?name', match_key, '?dst_name', '?cookie_str', '?precedence']),
+                          EasyParser('slb policy rcookie', ['?name', match_key, '?dst_name', '?precedence']),
+                          EasyParser('slb policy icookie', ['?name', match_key, '?dst_name', '?precedence']),
+                          EasyParser('slb policy persistent cookie', ['?name', match_key, '?dst_name', '?cookie_name', '?precedence']),
                           
-                          EasyParser('slb policy header', ['?name', '?src_name', '?dst_name', '?header_name', '?header_pattern', '?precedence']),
-                          EasyParser('slb policy regex', ['?name', '?src_name', '?dst_name', '?regex', '?precedence']),
-                          EasyParser('slb policy persistent url', ['?name', '?src_name', '?dst_name', '?url_tag', '?precedence']),
-                          EasyParser('slb policy hashurl', ['?name', '?src_name', '?dst_name']),
-                          EasyParser('slb policy qos hostname', ['?name', '?src_name', '?dst_name', '?host_name', '?precedence']),
-                          EasyParser('slb policy qos url', ['?name', '?src_name', '?dst_name', '?qos_string', '?precedence']),
-                          EasyParser('slb policy qos body', ['?name', '?src_name', '?dst_name', '?prefix', '?delimiter', '?flag', '?precedence']),
+                          EasyParser('slb policy header', ['?name', match_key, '?dst_name', '?header_name', '?header_pattern', '?precedence']),
+                          EasyParser('slb policy regex', ['?name', match_key, '?dst_name', '?regex', '?precedence']),
+                          EasyParser('slb policy persistent url', ['?name', match_key, '?dst_name', '?url_tag', '?precedence']),
+                          EasyParser('slb policy hashurl', ['?name', match_key, '?dst_name']),
+                          EasyParser('slb policy qos hostname', ['?name', match_key, '?dst_name', '?host_name', '?precedence']),
+                          EasyParser('slb policy qos url', ['?name', match_key, '?dst_name', '?qos_string', '?precedence']),
+                          EasyParser('slb policy qos body', ['?name', match_key, '?dst_name', '?prefix', '?delimiter', '?flag', '?precedence']),
                           
-                          EasyParser('slb policy qos clientport', ['?name', '?src_name', '?dst_name', '?network_ip', '?netmask_prefix', '?low_port', '?high_port', '?precedence']),
-                          EasyParser('slb policy qos network', ['?name', '?src_name', '?dst_name', '?network_ip', '?netmask_prefix', '?precedence']),
+                          EasyParser('slb policy qos clientport', ['?name', match_key, '?dst_name', '?network_ip', '?netmask_prefix', '?low_port', '?high_port', '?precedence']),
+                          EasyParser('slb policy qos network', ['?name', match_key, '?dst_name', '?network_ip', '?netmask_prefix', '?precedence']),
             
-                          EasyParser('slb policy redirect', ['?name', '?src_name', '?dst_name', '?redirect_from_host']),
-                          EasyParser('slb policy filetype', ['?name', '?src_name', '?dst_name', '?filetype']),
-                          EasyParser('slb policy radsid', ['?name', '?src_name', '?dst_name']),
-                          EasyParser('slb policy raduname', ['?name', '?src_name', '?dst_name']),
-                          EasyParser('slb policy dnssec', ['?name', '?src_name', '?dst_name']),
-                          EasyParser('slb policy qos diameter ', ['?name', '?src_name', '?dst_name', '?string', '?precedence']),
-                          EasyParser('slb policy qos diameterappid', ['?name', '?src_name', '?dst_name', '?app_id', '?precedence']),
-                          EasyParser('slb policy qos dnsdomain', ['?name', '?src_name', '?dst_name', '?string', '?precedence']),
-                          EasyParser('slb policy qos dnsqtype', ['?name', '?src_name', '?dst_name', '?record_type', '?precedence']),
-                          EasyParser('slb policy doh', ['?src_name', '?dst_name']),
+                          EasyParser('slb policy redirect', ['?name', match_key, '?dst_name', '?redirect_from_host']),
+                          EasyParser('slb policy filetype', ['?name', match_key, '?dst_name', '?filetype']),
+                          EasyParser('slb policy radsid', ['?name', match_key, '?dst_name']),
+                          EasyParser('slb policy raduname', ['?name', match_key, '?dst_name']),
+                          EasyParser('slb policy dnssec', ['?name', match_key, '?dst_name']),
+                          EasyParser('slb policy qos diameter ', ['?name', match_key, '?dst_name', '?string', '?precedence']),
+                          EasyParser('slb policy qos diameterappid', ['?name', match_key, '?dst_name', '?app_id', '?precedence']),
+                          EasyParser('slb policy qos dnsdomain', ['?name', match_key, '?dst_name', '?string', '?precedence']),
+                          EasyParser('slb policy qos dnsqtype', ['?name', match_key, '?dst_name', '?record_type', '?precedence']),
+                          EasyParser('slb policy doh', [match_key, '?dst_name']),
             ])
             res = []
             for each in result[0]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
-                    "name": ('Default Policy of %s') % each['src_name'],
+                    "name": ('Default Policy of %s') % src_name,
                     "type": "default"
                 })
             for each in result[1]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
-                    "name": ('Backup Policy of %s') % each['src_name'],
+                    "name": ('Backup Policy of %s') % src_name,
                     "type": "backup"
                 })
 
             for each in result[2]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 try:
                     (cookie_name, cookie_value) = each['cookie_str'].split('=')
                     each['cookie_name'] = cookie_name
@@ -147,102 +158,124 @@
                     "precedence": each['precedence'],
                     "cookie_name": each['cookie_name'],
                     "cookie_value": each['cookie_value'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos cookie'
                 })
             for each in result[3]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'rcookie',
                 })
             for each in result[4]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'icookie',
                 })
             for each in result[5]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "cookie_name": each['cookie_name'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'persistent cookie',
                 })
 
             for each in result[6]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "header_name": each['header_name'],
                     "header_pattern": each['header_pattern'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'header',
                 })
             for each in result[7]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "regex": each['regex'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'regex',
                 })
             for each in result[8]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "url_tag": each['url_tag'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'persistent url',
                 })
             for each in result[9]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'hashurl',
                 })
             for each in result[10]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "host_name": each['host_name'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos hostname',
                 })
             for each in result[11]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "qos_string": each['qos_string'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos url',
                 })
             for each in result[12]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "prefix": each['prefix'],
                     "delimiter": each['delimiter'],
                     "flag": each['flag'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos body',
                 })
             
             for each in result[13]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 each['port_range'] = {'low':each['low_port'], 'high':each['high_port']}
                 if ':' in each['network_ip']:
                     each['network_ip'] = {'ipv6':each['network_ip']}
@@ -256,11 +289,13 @@
                     "network_ip": each['network_ip'],
                     "netmask_prefix": each['netmask_prefix'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos clientport',
                 })
             for each in result[14]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 if ':' in each['network_ip']:
                     each['network_ip'] = {'ipv6':each['network_ip']}
                     each['netmask_prefix'] = {'prefix':each['netmask_prefix']}
@@ -272,89 +307,109 @@
                     "network_ip": each['network_ip'],
                     "netmask_prefix": each['netmask_prefix'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'qos network',
                 })
             
             for each in result[15]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "redirect_from_host": each['redirect_from_host'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'redirect',
                 })
             for each in result[16]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "filetype": each['filetype'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'filetype',
                 })
             for each in result[17]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'radsid',
                 })
             for each in result[18]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'raduname',
                 })
             for each in result[19]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'dnssec',
                 })
             for each in result[20]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "string": each['string'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'diameter',
                 })
             for each in result[21]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "app_id": each['app_id'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'diameterappid',
                 })
             for each in result[22]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "string": each['string'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'dnsdomain',
                 })
             for each in result[23]:
+                if "src_name" in each:
+                    src_name = each['src_name']
                 res.append({
                     "name": each['name'],
                     "record_type": each['record_type'],
                     "precedence": each['precedence'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'dnsqtype',
                 })
             for each in result[24]:
-                each['name'] = ('DoH Policy of %s') % each['src_name']
+                if "src_name" in each:
+                    src_name = each['src_name']
+                each['name'] = ('DoH Policy of %s') % src_name
                 res.append({
                     "name": each['name'],
-                    "src": normalize_policy_src_dst_values(each['src_name'], 'src'),
+                    "src": normalize_policy_src_dst_values(src_name, 'src'),
                     "dst": normalize_policy_src_dst_values(each['dst_name'], 'dst'),
                     "type": 'doh',
                 })
