Index: /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/models/va/instance/__init__.py
===================================================================
--- /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/models/va/instance/__init__.py	(revision 9030)
+++ /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/models/va/instance/__init__.py	(working copy)
@@ -774,14 +774,24 @@
             result = self.cli.cmd('show va port',
                             EasyParser('va port', 
                                      ['?va_name', '?port', '?vf_index']))
-            return QuerySet(self._model, result)
+            output = []
+            for each in result:
+                if "vf_index" not in each or not each["vf_index"]:
+                    continue
+                output.append(each)
+            return QuerySet(self._model, output)
 
         def _filter(self, pk_dict):
             self.cli.set_enable()
             result = self.cli.cmd('show va port "%s"' % pk_dict["va_name"],
                                   EasyParser('va port', 
                                              ['?va_name', '?port', '?vf_index']))
-            return QuerySet(self._model, result)
+            output = []
+            for each in result:
+                if "vf_index" not in each or not each["vf_index"]:
+                    continue
+                output.append(each)
+            return QuerySet(self._model, output)
 
 class ShowAttachedDisk(ANModel):
     disk_name = CharField(verbose_name=_("Disk Name"), primary_key=True, optional=True)
@@ -796,41 +806,52 @@
     class Manager(CLIManager):
         def _get_query_set(self):
             self.cli.set_enable()
-            result = self.cli.cmd('show va disk',
-                            RegexParser('(?P<va_name>\S+):\n(?P<disk_name>([\S]+\s*?[\S]*?\s*?[\S]*?\s*?[\S]*?\n)+)\n', MATCHALL, reflags=re.S))
-            res = []
-            for each in result:
-                disks = each["disk_name"].split("\n")
-                del disks[0]
-                for item in disks:
-                    if item and item.split()[0] != "reserved":
-                        each_disk = {
-                            "disk_name": item.split()[0],
-                            "va_name": each["va_name"],
-                            "disk_size": item.split()[-2].split("(")[0],
-                            "bus_type": item.split()[-1]
-                        }
-                        res.append(each_disk)
+            result = self.cli.cmd('show va disk')
+            res = self._handle_output(result)
             return QuerySet(self._model, res)
 
         def _filter(self, pk_dict):
             self.cli.set_enable()
-            result = self.cli.cmd('show va disk "%s"' % pk_dict["va_name"],
-                                  RegexParser('(?P<va_name>\S+):\n(?P<disk_name>([\S]+\s*?[\S]*?\s*?[\S]*?\s*?[\S]*?\n)+)\n', MATCHALL, reflags=re.S))
-            disks = result[0]["disk_name"].split("\n") if result else []
-            del disks[0]
-            res = []
-            for each in disks:
-                if each and each.split()[0] != "reserved":
-                    each_disk = {
-                        "disk_name": each.split()[0],
-                        "va_name": result[0]["va_name"],
-                        "disk_size": each.split()[-2].split("(")[0],
-                        "bus_type": each.split()[-1]
-                    }
-                    res.append(each_disk)
+            result = self.cli.cmd('show va disk "%s"' % pk_dict["va_name"])
+            res = self._handle_output(result)
             return QuerySet(self._model, res)
 
+        def _handle_output(self, result):
+            mapping = {}
+            split = result.split("\n")
+            va_name = ""
+            for ind in range(len(split)):
+                each = split[ind]
+                if not each:
+                    continue
+                if "libvirt:  error : internal error: could not initialize domain event timer" in each:
+                    continue
+                if ":" in each:
+                    va_name = each.split(":")[0]
+                    if va_name not in mapping:
+                        mapping[va_name] = []
+                    continue
+                if "Disk" in each and "Size" in each and "Bus type" in each:
+                    # skip title row
+                    continue
+                row = each.split()
+                if va_name:
+                    mapping[va_name] = row
+            res = []
+            for va_name, each in mapping.items():
+                if len(each) < 3:
+                    continue
+                if each[0] == "reserved":
+                    continue
+                each_disk = {
+                    "disk_name": each[0],
+                    "va_name": va_name,
+                    "disk_size": each[1],
+                    "bus_type": each[2],
+                }
+                res.append(each_disk)
+            return res
+
 class ShowVASSL(ANModel):
     ssl = CharField(verbose_name=_("Show VA SSL"), primary_key=True)
     vf_index = IntegerField(verbose_name=_("VF Index"), primary_key=True)
@@ -1170,15 +1191,15 @@
     class Manager(CLIManager):
         def _filter(self, pk_dict):
             self.cli.set_config()
-            output = result = self.cli.cmd('va run "%s" "show restapi"' % pk_dict["va_name"])
-            if output.find('RESTful API is ON') != -1:
+            output = result = self.cli.cmd('va run "%s" "show restapi settings"' % pk_dict["va_name"])
+            if output.find('RestfulAPI on') != -1:
                 result = cli_parse(output,
-                                       RegexParser('RESTful API is (?P<enable_restapi>ON|OFF) using (?P<restapi_type>http|https), port (?P<restapi_port>[0-9]+)\n', MATCHONE, reflags=re.S))
+                                       RegexParser('RestfulAPI (?P<enable_restapi>on|off) (?P<restapi_type>http|https) (?P<restapi_port>[0-9]+)\n', MATCHONE, reflags=re.S))
             else:
                 result = cli_parse(output,
-                                       RegexParser('RESTful API is (?P<enable_restapi>ON|OFF)\n', MATCHONE, reflags=re.S))
+                                       RegexParser('RestfulAPI (?P<enable_restapi>on|off)\n', MATCHONE, reflags=re.S))
             data = {
-                        'enable_restapi':True if result['enable_restapi'] == 'ON' else False,
+                        'enable_restapi':True if result['enable_restapi'] == 'on' else False,
                         'restapi_type': result['restapi_type'] if 'restapi_type' in result else 'https',
                         'restapi_port': result['restapi_port'] if 'restapi_port' in result else 9997,
                     }
@@ -1320,4 +1341,4 @@
         #     for each in result:
         #         each['cpu_usage'] = float(each['cpu_usage'])
 
-        #     return QuerySet(self._model, result)
\ No newline at end of file
+        #     return QuerySet(self._model, result)
Index: /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/router.py
===================================================================
--- /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/router.py	(revision 9030)
+++ /branches/rel_avx_2_7_4/src/webui/webui/htdocs/new/src/avx/router.py	(working copy)
@@ -465,18 +465,18 @@
 def get_va_restapi_config(va_name):
     sess = get_current_session()
     sess.cli.set_config()
-    restapi = sess.cli.cmd('va run "%s" "show restapi"'%va_name)
+    restapi = sess.cli.cmd('va run "%s" "show restapi settings"'%va_name)
     sess.cli.quit()
     config=restapi.split('\n')[0]
-    if config.find('RESTful API is OFF') != -1:
+    if config.find('RestfulAPI off') != -1:
         result=[3, None]
         return result
-    elif config.find('RESTful API is ON') != -1:
+    elif config.find('RestfulAPI on') != -1:
         tmp_data = config.split(' ')
-        port = int(tmp_data[7])
-        if len(tmp_data[5]) == 6:
+        port = int(tmp_data[3])
+        if len(tmp_data[2]) == 'https':
             proto = 'https'
-        elif len(tmp_data[5]) == 5:
+        elif len(tmp_data[2]) == 'http':
             proto = 'http'
         else:
             result=[-1, 'Parser RESTful API configuration failed.']
@@ -2263,4 +2263,4 @@
             key = "%s-%s" % (each_res[0][0]['domain_id'], "ssl" + each["ssl_id"])
             card_type_list[key] = each["card_type"]
     
-    return card_type_list
\ No newline at end of file
+    return card_type_list
Index: /branches/rel_avx_2_7_4/tools/company/infosec/router.py
===================================================================
--- /branches/rel_avx_2_7_4/tools/company/infosec/router.py	(revision 9030)
+++ /branches/rel_avx_2_7_4/tools/company/infosec/router.py	(working copy)
@@ -485,18 +485,18 @@
 def get_va_restapi_config(va_name):
     sess = get_current_session()
     sess.cli.set_config()
-    restapi = sess.cli.cmd('va run "%s" "show restapi"'%va_name)
+    restapi = sess.cli.cmd('va run "%s" "show restapi settings"'%va_name)
     sess.cli.quit()
     config=restapi.split('\n')[0]
-    if config.find('RESTful API is OFF') != -1:
+    if config.find('RestfulAPI off') != -1:
         result=[3, None]
         return result
-    elif config.find('RESTful API is ON') != -1:
+    elif config.find('RestfulAPI on') != -1:
         tmp_data = config.split(' ')
-        port = int(tmp_data[7])
-        if len(tmp_data[5]) == 6:
+        port = int(tmp_data[3])
+        if len(tmp_data[2]) == 'https':
             proto = 'https'
-        elif len(tmp_data[5]) == 5:
+        elif len(tmp_data[2]) == 'http':
             proto = 'http'
         else:
             result=[-1, 'Parser RESTful API configuration failed.']
@@ -2296,4 +2296,4 @@
             key = "%s-%s" % (each_res[0][0]['domain_id'], "ssl" + each["ssl_id"])
             card_type_list[key] = each["card_type"]
     
-    return card_type_list
\ No newline at end of file
+    return card_type_list
