diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index f6d96d03bb..d30197cc41 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -281,13 +281,20 @@ class ListRouter(command.Lister):
             columns = columns + (
                 'routes',
                 'external_gateway_info',
-                'availability_zones'
             )
             column_headers = column_headers + (
                 'Routes',
                 'External gateway info',
-                'Availability zones'
             )
+            # availability zone will be available only when
+            # router_availability_zone extension is enabled
+            if client.find_extension("router_availability_zone"):
+                columns = columns + (
+                    'availability_zones',
+                )
+                column_headers = column_headers + (
+                    'Availability zones',
+                )
 
         data = client.routers()
         return (column_headers,
diff --git a/openstackclient/tests/unit/network/v2/test_router.py b/openstackclient/tests/unit/network/v2/test_router.py
index de070eb25d..6898a046bf 100644
--- a/openstackclient/tests/unit/network/v2/test_router.py
+++ b/openstackclient/tests/unit/network/v2/test_router.py
@@ -285,6 +285,7 @@ class TestListRouter(TestRouter):
 
     # The routers going to be listed up.
     routers = network_fakes.FakeRouter.create_routers(count=3)
+    _extensions = network_fakes.FakeExtension.create_one_extension()
 
     columns = (
         'ID',
@@ -300,6 +301,10 @@ class TestListRouter(TestRouter):
         'External gateway info',
         'Availability zones'
     )
+    columns_long_no_az = columns + (
+        'Routes',
+        'External gateway info',
+    )
 
     data = []
     for r in routers:
@@ -322,6 +327,15 @@ class TestListRouter(TestRouter):
                 osc_utils.format_list(r.availability_zones),
             )
         )
+    data_long_no_az = []
+    for i in range(0, len(routers)):
+        r = routers[i]
+        data_long_no_az.append(
+            data[i] + (
+                router._format_routes(r.routes),
+                router._format_external_gateway_info(r.external_gateway_info),
+            )
+        )
 
     def setUp(self):
         super(TestListRouter, self).setUp()
@@ -330,6 +344,7 @@ class TestListRouter(TestRouter):
         self.cmd = router.ListRouter(self.app, self.namespace)
 
         self.network.routers = mock.Mock(return_value=self.routers)
+        self.network.find_extension = mock.Mock(return_value=self._extensions)
 
     def test_router_list_no_options(self):
         arglist = []
@@ -365,6 +380,27 @@ class TestListRouter(TestRouter):
         self.assertEqual(self.columns_long, columns)
         self.assertEqual(self.data_long, list(data))
 
+    def test_router_list_long_no_az(self):
+        arglist = [
+            '--long',
+        ]
+        verifylist = [
+            ('long', True),
+        ]
+        parsed_args = self.check_parser(self.cmd, arglist, verifylist)
+
+        # to mock, that no availability zone
+        self.network.find_extension = mock.Mock(return_value=None)
+
+        # In base command class Lister in cliff, abstract method take_action()
+        # returns a tuple containing the column names and an iterable
+        # containing the data to be listed.
+        columns, data = self.cmd.take_action(parsed_args)
+
+        self.network.routers.assert_called_once_with()
+        self.assertEqual(self.columns_long_no_az, columns)
+        self.assertEqual(self.data_long_no_az, list(data))
+
 
 class TestRemovePortFromRouter(TestRouter):
     '''Remove port from a Router '''