Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/avx/models/network/interface/__init__.py
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/avx/models/network/interface/__init__.py	(revision 8857)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/avx/models/network/interface/__init__.py	(working copy)
@@ -78,7 +78,7 @@
     rx_bytes = Uint64Field(verbose_name=_('RX Bytes'), editable=False, optional=True)
     tx_packets = Uint64Field(verbose_name=_('TX Packets'), editable=False, optional=True)
     tx_bytes = Uint64Field(verbose_name=_('TX Bytes'), editable=False, optional=True)
-
+    interface_status = CharField(verbose_name=_('Interface Status'), editable=False, optional=True)
     stats = FieldGroup(writable=False, verbose_name=_('System Interface Statistics'), level=STATS, stats_source="userland",
             fields={
             'mgmt_status':CharField(verbose_name=_('VA Network Status'), length='1..801'),
@@ -197,6 +197,7 @@
                                             {'name':'tx_packets'},
                                             {'name':'tx_bytes'},
                                             {'name':'available'},
+                                            {'name':'interface_status'},
                                         ]}
         show_im_export_button = False
 
@@ -206,7 +207,8 @@
             parser = RegexParser('(?P<interface_name>port[0-9]+?)\((?P<physical_name>[^\)]+)\):\s+flags=[^>]+>\s+mtu\s+(?P<mtu>[0-9]+)((?!ether).)*?' +
                                     '\s+ether\s+"?(?P<mac>[\w|0-9|:]+)((?!RX packets).)*?' + 
                                     '\s+RX packets\s(?P<rx_packets>[0-9]+)\s+bytes\s(?P<rx_bytes>[0-9]+).*?' + 
-                                    '(TX packets\s(?P<tx_packets>[0-9]+)\s+bytes\s(?P<tx_bytes>[0-9]+)).*?' + 
+                                    '(TX packets\s(?P<tx_packets>[0-9]+)\s+bytes\s(?P<tx_bytes>[0-9]+)).*?' +
+                                    '(status: (?P<interface_status>active|no carrier|down(Administratively down))).*?' +
                                     '(?P<model>[0-9]+ lost carrier, [0-9]+ WDT reset)', MATCHALL, reflags=re.S)
             
             parser2 = RegexParser('(?P<interface_name>port[0-9]+?)\((?P<physical_name>[^\)]+)\):\s+This port has been passed through to a VA instance\.', MATCHALL, reflags=re.S)
@@ -214,7 +216,8 @@
             parser3 = RegexParser('(?P<interface_name>port[0-9]+?):\s+flags=[^>]+>\s+mtu\s+(?P<mtu>[0-9]+)((?!ether).)*?' +
                                     '\s+ether\s+"?(?P<mac>[\w|0-9|:]+)((?!RX packets).)*?' + 
                                     '\s+RX packets\s(?P<rx_packets>[0-9]+)\s+bytes\s(?P<rx_bytes>[0-9]+).*?' + 
-                                    '(TX packets\s(?P<tx_packets>[0-9]+)\s+bytes\s(?P<tx_bytes>[0-9]+)).*?' + 
+                                    '(TX packets\s(?P<tx_packets>[0-9]+)\s+bytes\s(?P<tx_bytes>[0-9]+)).*?' +
+                                    '(status: (?P<interface_status>active|no carrier|down(Administratively down))).*?' +
                                     '(?P<model>[0-9]+ lost carrier, [0-9]+ WDT reset)', MATCHALL, reflags=re.S)
 
             result = self.cli.cmd('show interface', [parser, parser2, parser3])
@@ -235,7 +238,7 @@
                     for each in result[0]:
                         port_id = each["interface_name"].split("port")[-1]
                         each["port_id"] = int(port_id)
-
+                        each["interface_status"] = each["interface_status"].title()
                         if port_id == item["port_id"]:
                             each["domain"] = each_id
                             each["available"] = item["vf_available"] + " available port VF(s)"
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js	(revision 8857)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.controller.js	(working copy)
@@ -250,8 +250,8 @@
                         if (resourceViewModel.vaBindOrigin) {
                             var pk_list = [
                                 {
-                                    "port_name": [{"_asso_idx": 0, "interface_name": port_name}], 
-                                    "va": [{"_asso_idx": 0, "va_name": resourceViewModel.vaBindOrigin}], 
+                                    "port_name": [{"_asso_idx": 0, "interface_name": port_name}],
+                                    "va": [{"_asso_idx": 0, "va_name": resourceViewModel.vaBindOrigin}],
                                     "vf_index": 0
                                 }
                             ];
@@ -326,8 +326,8 @@
                     showProgressBar();
                     var pk_list = [
                         {
-                            "port_name": [{"_asso_idx": 0, "interface_name": port_name}], 
-                            "va": [{"_asso_idx": 0, "va_name": resourceViewModel.vaBindOrigin}], 
+                            "port_name": [{"_asso_idx": 0, "interface_name": port_name}],
+                            "va": [{"_asso_idx": 0, "va_name": resourceViewModel.vaBindOrigin}],
                             "vf_index": 0
                         }
                     ];
@@ -470,8 +470,8 @@
                 if (ipv4.$dirty || ipv4Mask.$dirty) {
                     if (!resourceViewModel.SystemInterfaceIpdata.ipv4 && !resourceViewModel.SystemInterfaceIpdata.ipv4_mask) {
                         var pk = {
-                            "interface": [{"_asso_idx": 0, "interface_name": "mgmt"}], 
-                            "ip": {"ipv4": resourceViewModel.systemIpOldValue.ipv4}, 
+                            "interface": [{"_asso_idx": 0, "interface_name": "mgmt"}],
+                            "ip": {"ipv4": resourceViewModel.systemIpOldValue.ipv4},
                             "mask_prefix": {"mask": resourceViewModel.systemIpOldValue.ipv4_mask}
                         };
                         var RequestData = {"pk": JSON.stringify(pk)};
@@ -580,8 +580,8 @@
                 if (ipv6.$dirty || ipv6Prefix.$dirty) {
                     if (!resourceViewModel.SystemInterfaceIpdata.ipv6 && !resourceViewModel.SystemInterfaceIpdata.ipv6_prefix) {
                         var pk = {
-                            "interface": [{"_asso_idx": 0, "interface_name": "mgmt"}], 
-                            "ip": {"ipv6": resourceViewModel.systemIpOldValue.ipv6}, 
+                            "interface": [{"_asso_idx": 0, "interface_name": "mgmt"}],
+                            "ip": {"ipv6": resourceViewModel.systemIpOldValue.ipv6},
                             "mask_prefix": {"prefix": parseInt(resourceViewModel.systemIpOldValue.ipv6_prefix)}
                         };
                         var RequestData = {"pk": JSON.stringify(pk)};
@@ -712,13 +712,13 @@
             };
             resourceViewModel.set_port_index = function(port_index){
                 if (resourceViewModel.port_data.length > 0) {
-                     _.each(resourceViewModel.port_data, function(data){ 
+                     _.each(resourceViewModel.port_data, function(data){
                         // the port_index is port name actually.
                         if (data.port_name === port_index) {
                             resourceViewModel.current_port_data = data;
                             return false;
-                        }                                
-                    });  
+                        }
+                    });
                 }
                 resourceViewModel.port_index = port_index ;
             };
@@ -757,8 +757,8 @@
                     showProgressBar();
                     var pk_list = [
                         {
-                            "port_name": [{"_asso_idx": 0, "interface_name": port_name}], 
-                            "va": [{"_asso_idx": 0, "va_name": resourceViewModel.oldBindVaInstanceName}], 
+                            "port_name": [{"_asso_idx": 0, "interface_name": port_name}],
+                            "va": [{"_asso_idx": 0, "va_name": resourceViewModel.oldBindVaInstanceName}],
                             "vf_index": 0
                         }
                     ];
@@ -981,7 +981,7 @@
                                                     $scope.link_aggregation[port_name] = old_bond_name;
                                                 }
                                             });
-                                    } else {                                                                                                                           
+                                    } else {
                                         //a bond => another bond
                                         //two steps:
                                         //1. old bond => null
@@ -1008,14 +1008,14 @@
                                                                     alert($filter('T')('Failed to add the traffic interface(s) to the bond interface.'));
                                                                     $scope.link_aggregation[port_name] = "";
                                                                 }
-                                                            });        
+                                                            });
                                                     }
                                                 } else {
                                                     $scope.link_aggregation[port_name] = old_bond_name;
                                                 }
                                             });
 
-                                    }                                                  
+                                    }
                                 }
                             }
                         }
@@ -1033,7 +1033,7 @@
             });
 
             // initialize fabric canvas and assign to global windows object for debug
-            var canvas = window._canvas = new fabric.Canvas(document.getElementById('netResourceCanvas'));   
+            var canvas = window._canvas = new fabric.Canvas(document.getElementById('netResourceCanvas'));
             canvas.on({
               'mouse:down': function(e) {
                 if (e.target) {
@@ -1075,33 +1075,34 @@
             });
             resourceViewModel.port_data = [];
             sysResourceService
-                .get_port_resource(['model', 'physical_name', 'domain', 'interface_name', 'mac', 'mtu', 'available'])
+                .get_port_resource(['model', 'physical_name', 'domain', 'interface_name', 'mac', 'mtu', 'available', 'interface_status'])
                 .then(function(res) {
                     if (res&&res.status === 200) {
                         if(res.data){
-                             _.each(res.data, function(data){ 
+                             _.each(res.data, function(data){
                                 var each_data = new Object();
                                 each_data.model = data.model;
                                 each_data.domain = data.domain;
                                 each_data.port_name = data.interface_name;
-                                each_data.vf_available = data.available;   
+                                each_data.interface_status = data.interface_status;
+                                each_data.vf_available = data.available;
                                 each_data.mac = data.mac;
-                                each_data.mtu = data.mtu; 
-                                each_data.physical_name = data.physical_name; 
+                                each_data.mtu = data.mtu;
+                                each_data.physical_name = data.physical_name;
                                 if (data.available.indexOf("passed through") > -1) {
                                     each_data.ptflag = true;
                                     each_data.vf_available_num = 0;
                                 } else {
                                     each_data.ptflag = false;
                                     each_data.vf_available_num = data.available.split(" available ")[0];
-                                }                           
+                                }
                                 resourceViewModel.port_data.push(each_data);
-                            }); 
+                            });
                             $scope.link_aggregation = {};
                             _.each(res.data, function(data){
                                 $scope.link_aggregation[data.interface_name] = "";
                             });
-                            resourceViewModel.get_link_aggregation_info(); 
+                            resourceViewModel.get_link_aggregation_info();
                             //here should be new fabric instance based on avx model:
                             //3600v5: 4 ports
                             //7600: 8 ports
@@ -1265,11 +1266,11 @@
                                                                         lockMovementY: true,
                                                                         evented: false
                                                                     });
-                                            canvas.add(text);  
-                                        } 
-                                        resourceViewModel.image_loading = false;                       
+                                            canvas.add(text);
+                                        }
+                                        resourceViewModel.image_loading = false;
                                     }
-                            });                          
+                            });
                         }
                     }
             });
@@ -1365,11 +1366,11 @@
                             if (node.data.id === 0) {
                                 //vf binding from va to port
                                 data['port_name'] = [{"interface_name":node.data.name, "_asso_idx":0}];
-                                data['vf_index'] = endConnectorIndex+1; 
+                                data['vf_index'] = endConnectorIndex+1;
                             } else {
                                 //vf binding from port to va
                                 data['va'] = [{"va_name":node.data.name, "_asso_idx":0}];
-                            }  
+                            }
                         }
                     }
                     //call service to bind vf on the backend
@@ -1431,7 +1432,7 @@
                     //
                     for (var connectionIndex = 0; connectionIndex < this.connections.length; ++connectionIndex) {
 
-                        var connection = this.connections[connectionIndex];             
+                        var connection = this.connections[connectionIndex];
                         if (!connection.selected() &&
                             selectedNodeIds.indexOf(connection.data.source.nodeID) === -1 &&
                             selectedNodeIds.indexOf(connection.data.dest.nodeID) === -1)
@@ -1485,7 +1486,7 @@
                                 alert($filter('T')('Failed to unassign the VF from the VA instance.'));
                             }
                         });
-                };  
+                };
                 var chartDataModel = {
                     nodes: [
                         {
@@ -1564,7 +1565,7 @@
                                                 });
                                             });
                                             var index = 0;
-                                            for (var key in result) { 
+                                            for (var key in result) {
                                                 index += 1;
                                                 var node =  {
                                                                 name: key,
@@ -1598,7 +1599,7 @@
                                             // Create the view-model for the chart and attach to the scope.
                                             //
                                             $scope.chartViewModel = new flowchart.ChartViewModel(chartDataModel);
-                                            
+
                                             //rewrite function createNewConnection() to bind a VF to a VA
                                             $scope.chartViewModel.createNewConnection = createNewConnection;
 
@@ -1668,4 +1669,4 @@
                 });
             };
         }
-    ]);
\ No newline at end of file
+    ]);
Index: /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.html
===================================================================
--- /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.html	(revision 8857)
+++ /branches/rel_avx_2_7_2/src/webui/webui/htdocs/new/src/client/app/modules/network/submenu/interface/sys_interface/sys_interface.html	(working copy)
@@ -39,6 +39,7 @@
                                 <th st-sort="port_name">{{'Interface Name'|T}}</th>
                                 <th st-sort="physical_name">{{'Physical Name'|T}}</th>
                                 <th st-sort="vf_available">{{'Available VFs'|T}}</th>
+                                <th st-sort="interface_status">{{'Interface Status'|T}}</th>
                             </tr>
                         </thead>
                         <tbody ng-show="displayedCollection.length">
@@ -48,6 +49,7 @@
                                 <td>{{row.physical_name}}</td>
                                 <td ng-if="row.ptflag">{{'This port has been passed through to a VA instance.'|T}}</td>
                                 <td ng-if="!row.ptflag">{{'{0} available port VF(s)'|T:[row.vf_available_num]}}</td>
+                                <td>{{row.interface_status}}</td>
                             </tr>
                         </tbody>
                     </table>
@@ -284,6 +286,10 @@
                                 <td>{{'Physical Name'|T}}</td>
                                 <td>{{interface.current_port_data.physical_name}}</td>
                             </tr>
+                            <tr>
+                                <td>{{'Interface Status'|T}}</td>
+                                <td>{{interface.current_port_data.interface_status}}</td>
+                            </tr>
                             <tr ng-if="!interface.work_mode">
                                 <td>{{'Type'|T}}</td>
                                 <td>{{interface.current_port_data.model}}</td>
@@ -613,19 +619,19 @@
     stroke: gray;
     stroke-width: 4;
     fill: transparent;
-}   
+}
 
 .mouseover-connection-line {
     stroke: gray;
     stroke-width: 6;
     fill: transparent;
-}   
+}
 
 .selected-connection-line {
     stroke: red;
     stroke-width: 4;
     fill: transparent;
-}   
+}
 
 .connection-endpoint {
     fill: gray;
@@ -633,7 +639,7 @@
 
 .selected-connection-endpoint {
     fill: red;
-}   
+}
 
 .mouseover-connection-endpoint {
     fill: gray;
@@ -662,7 +668,7 @@
     stroke: gray;
     stroke-width: 3;
     fill: transparent;
-}   
+}
 
 .dragging-connection-endpoint {
     fill: gray;
@@ -701,4 +707,4 @@
 .mouseover-connector-circle {
     stroke: #bcbcbc;
 }
-</style>
\ No newline at end of file
+</style>
