diff --git a/openstackclient/tests/fakes.py b/openstackclient/tests/fakes.py
index 9fdcc7e923..f0cebb06d3 100644
--- a/openstackclient/tests/fakes.py
+++ b/openstackclient/tests/fakes.py
@@ -183,6 +183,9 @@ class FakeResource(object):
         info = ", ".join("%s=%s" % (k, getattr(self, k)) for k in reprkeys)
         return "<%s %s>" % (self.__class__.__name__, info)
 
+    def keys(self):
+        return self._info.keys()
+
 
 class FakeResponse(requests.Response):
 
diff --git a/openstackclient/tests/network/v2/fakes.py b/openstackclient/tests/network/v2/fakes.py
index 7f89ef7a97..815e677daf 100644
--- a/openstackclient/tests/network/v2/fakes.py
+++ b/openstackclient/tests/network/v2/fakes.py
@@ -75,13 +75,11 @@ class FakeAvailabilityZone(object):
     """Fake one or more network availability zones (AZs)."""
 
     @staticmethod
-    def create_one_availability_zone(attrs={}, methods={}):
+    def create_one_availability_zone(attrs={}):
         """Create a fake AZ.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object with name, state, etc.
         """
@@ -97,18 +95,15 @@ class FakeAvailabilityZone(object):
 
         availability_zone = fakes.FakeResource(
             info=copy.deepcopy(availability_zone),
-            methods=methods,
             loaded=True)
         return availability_zone
 
     @staticmethod
-    def create_availability_zones(attrs={}, methods={}, count=2):
+    def create_availability_zones(attrs={}, count=2):
         """Create multiple fake AZs.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of AZs to fake
         :return:
@@ -117,8 +112,7 @@ class FakeAvailabilityZone(object):
         availability_zones = []
         for i in range(0, count):
             availability_zone = \
-                FakeAvailabilityZone.create_one_availability_zone(
-                    attrs, methods)
+                FakeAvailabilityZone.create_one_availability_zone(attrs)
             availability_zones.append(availability_zone)
 
         return availability_zones
@@ -128,13 +122,11 @@ class FakeNetwork(object):
     """Fake one or more networks."""
 
     @staticmethod
-    def create_one_network(attrs={}, methods={}):
+    def create_one_network(attrs={}):
         """Create a fake network.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object, with id, name, admin_state_up,
             router_external, status, subnets, tenant_id
@@ -158,18 +150,7 @@ class FakeNetwork(object):
         # Overwrite default attributes.
         network_attrs.update(attrs)
 
-        # Set default methods.
-        network_methods = {
-            'keys': ['id', 'name', 'admin_state_up', 'router_external',
-                     'status', 'subnets', 'tenant_id', 'availability_zones',
-                     'availability_zone_hints', 'is_default'],
-        }
-
-        # Overwrite default methods.
-        network_methods.update(methods)
-
         network = fakes.FakeResource(info=copy.deepcopy(network_attrs),
-                                     methods=copy.deepcopy(network_methods),
                                      loaded=True)
 
         # Set attributes with special mapping in OpenStack SDK.
@@ -178,13 +159,11 @@ class FakeNetwork(object):
         return network
 
     @staticmethod
-    def create_networks(attrs={}, methods={}, count=2):
+    def create_networks(attrs={}, count=2):
         """Create multiple fake networks.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of networks to fake
         :return:
@@ -192,7 +171,7 @@ class FakeNetwork(object):
         """
         networks = []
         for i in range(0, count):
-            networks.append(FakeNetwork.create_one_network(attrs, methods))
+            networks.append(FakeNetwork.create_one_network(attrs))
 
         return networks
 
@@ -220,7 +199,7 @@ class FakePort(object):
     """Fake one or more ports."""
 
     @staticmethod
-    def create_one_port(attrs={}, methods={}):
+    def create_one_port(attrs={}):
         """Create a fake port.
 
         :param Dictionary attrs:
@@ -258,23 +237,7 @@ class FakePort(object):
         # Overwrite default attributes.
         port_attrs.update(attrs)
 
-        # Set default methods.
-        port_methods = {
-            'keys': ['admin_state_up', 'allowed_address_pairs',
-                     'binding:host_id', 'binding:profile',
-                     'binding:vif_details', 'binding:vif_type',
-                     'binding:vnic_type', 'device_id', 'device_owner',
-                     'dns_assignment', 'dns_name', 'extra_dhcp_opts',
-                     'fixed_ips', 'id', 'mac_address', 'name',
-                     'network_id', 'port_security_enabled',
-                     'security_groups', 'status', 'tenant_id'],
-        }
-
-        # Overwrite default methods.
-        port_methods.update(methods)
-
         port = fakes.FakeResource(info=copy.deepcopy(port_attrs),
-                                  methods=copy.deepcopy(port_methods),
                                   loaded=True)
 
         # Set attributes with special mappings in OpenStack SDK.
@@ -288,13 +251,11 @@ class FakePort(object):
         return port
 
     @staticmethod
-    def create_ports(attrs={}, methods={}, count=2):
+    def create_ports(attrs={}, count=2):
         """Create multiple fake ports.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of ports to fake
         :return:
@@ -302,7 +263,7 @@ class FakePort(object):
         """
         ports = []
         for i in range(0, count):
-            ports.append(FakePort.create_one_port(attrs, methods))
+            ports.append(FakePort.create_one_port(attrs))
 
         return ports
 
@@ -330,13 +291,11 @@ class FakeRouter(object):
     """Fake one or more routers."""
 
     @staticmethod
-    def create_one_router(attrs={}, methods={}):
+    def create_one_router(attrs={}):
         """Create a fake router.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object, with id, name, admin_state_up,
             status, tenant_id
@@ -359,17 +318,7 @@ class FakeRouter(object):
         # Overwrite default attributes.
         router_attrs.update(attrs)
 
-        # Set default methods.
-        router_methods = {
-            'keys': ['id', 'name', 'admin_state_up', 'distributed', 'ha',
-                     'tenant_id'],
-        }
-
-        # Overwrite default methods.
-        router_methods.update(methods)
-
         router = fakes.FakeResource(info=copy.deepcopy(router_attrs),
-                                    methods=copy.deepcopy(router_methods),
                                     loaded=True)
 
         # Set attributes with special mapping in OpenStack SDK.
@@ -378,13 +327,11 @@ class FakeRouter(object):
         return router
 
     @staticmethod
-    def create_routers(attrs={}, methods={}, count=2):
+    def create_routers(attrs={}, count=2):
         """Create multiple fake routers.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of routers to fake
         :return:
@@ -392,7 +339,7 @@ class FakeRouter(object):
         """
         routers = []
         for i in range(0, count):
-            routers.append(FakeRouter.create_one_router(attrs, methods))
+            routers.append(FakeRouter.create_one_router(attrs))
 
         return routers
 
@@ -420,20 +367,16 @@ class FakeSecurityGroup(object):
     """Fake one or more security groups."""
 
     @staticmethod
-    def create_one_security_group(attrs=None, methods=None):
+    def create_one_security_group(attrs=None):
         """Create a fake security group.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object, with id, name, etc.
         """
         if attrs is None:
             attrs = {}
-        if methods is None:
-            methods = {}
 
         # Set default attributes.
         security_group_attrs = {
@@ -447,18 +390,8 @@ class FakeSecurityGroup(object):
         # Overwrite default attributes.
         security_group_attrs.update(attrs)
 
-        # Set default methods.
-        security_group_methods = {
-            'keys': ['id', 'name', 'description', 'tenant_id',
-                     'security_group_rules'],
-        }
-
-        # Overwrite default methods.
-        security_group_methods.update(methods)
-
         security_group = fakes.FakeResource(
             info=copy.deepcopy(security_group_attrs),
-            methods=copy.deepcopy(security_group_methods),
             loaded=True)
 
         # Set attributes with special mapping in OpenStack SDK.
@@ -467,13 +400,11 @@ class FakeSecurityGroup(object):
         return security_group
 
     @staticmethod
-    def create_security_groups(attrs=None, methods=None, count=2):
+    def create_security_groups(attrs=None, count=2):
         """Create multiple fake security groups.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of security groups to fake
         :return:
@@ -482,7 +413,7 @@ class FakeSecurityGroup(object):
         security_groups = []
         for i in range(0, count):
             security_groups.append(
-                FakeSecurityGroup.create_one_security_group(attrs, methods))
+                FakeSecurityGroup.create_one_security_group(attrs))
 
         return security_groups
 
@@ -491,20 +422,16 @@ class FakeSecurityGroupRule(object):
     """Fake one or more security group rules."""
 
     @staticmethod
-    def create_one_security_group_rule(attrs=None, methods=None):
+    def create_one_security_group_rule(attrs=None):
         """Create a fake security group rule.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object, with id, etc.
         """
         if attrs is None:
             attrs = {}
-        if methods is None:
-            methods = {}
 
         # Set default attributes.
         security_group_rule_attrs = {
@@ -523,19 +450,8 @@ class FakeSecurityGroupRule(object):
         # Overwrite default attributes.
         security_group_rule_attrs.update(attrs)
 
-        # Set default methods.
-        security_group_rule_methods = {
-            'keys': ['direction', 'ethertype', 'id', 'port_range_max',
-                     'port_range_min', 'protocol', 'remote_group_id',
-                     'remote_ip_prefix', 'security_group_id', 'tenant_id'],
-        }
-
-        # Overwrite default methods.
-        security_group_rule_methods.update(methods)
-
         security_group_rule = fakes.FakeResource(
             info=copy.deepcopy(security_group_rule_attrs),
-            methods=copy.deepcopy(security_group_rule_methods),
             loaded=True)
 
         # Set attributes with special mapping in OpenStack SDK.
@@ -544,13 +460,11 @@ class FakeSecurityGroupRule(object):
         return security_group_rule
 
     @staticmethod
-    def create_security_group_rules(attrs=None, methods=None, count=2):
+    def create_security_group_rules(attrs=None, count=2):
         """Create multiple fake security group rules.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of security group rules to fake
         :return:
@@ -559,8 +473,7 @@ class FakeSecurityGroupRule(object):
         security_group_rules = []
         for i in range(0, count):
             security_group_rules.append(
-                FakeSecurityGroupRule.create_one_security_group_rule(
-                    attrs, methods))
+                FakeSecurityGroupRule.create_one_security_group_rule(attrs))
 
         return security_group_rules
 
@@ -569,13 +482,11 @@ class FakeSubnet(object):
     """Fake one or more subnets."""
 
     @staticmethod
-    def create_one_subnet(attrs={}, methods={}):
+    def create_one_subnet(attrs={}):
         """Create a fake subnet.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object faking the subnet
         """
@@ -601,19 +512,7 @@ class FakeSubnet(object):
         # Overwrite default attributes.
         subnet_attrs.update(attrs)
 
-        # Set default methods.
-        subnet_methods = {
-            'keys': ['id', 'name', 'network_id', 'cidr', 'enable_dhcp',
-                     'allocation_pools', 'dns_nameservers', 'gateway_ip',
-                     'host_routes', 'ip_version', 'tenant_id',
-                     'ipv6_address_mode', 'ipv6_ra_mode', 'subnetpool_id']
-        }
-
-        # Overwrite default methods.
-        subnet_methods.update(methods)
-
         subnet = fakes.FakeResource(info=copy.deepcopy(subnet_attrs),
-                                    methods=copy.deepcopy(subnet_methods),
                                     loaded=True)
         # Set attributes with special mappings in OpenStack SDK.
         subnet.project_id = subnet_attrs['tenant_id']
@@ -621,13 +520,11 @@ class FakeSubnet(object):
         return subnet
 
     @staticmethod
-    def create_subnets(attrs={}, methods={}, count=2):
+    def create_subnets(attrs={}, count=2):
         """Create multiple fake subnets.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of subnets to fake
         :return:
@@ -635,7 +532,7 @@ class FakeSubnet(object):
         """
         subnets = []
         for i in range(0, count):
-            subnets.append(FakeSubnet.create_one_subnet(attrs, methods))
+            subnets.append(FakeSubnet.create_one_subnet(attrs))
 
         return subnets
 
@@ -644,13 +541,11 @@ class FakeFloatingIP(object):
     """Fake one or more floating ip."""
 
     @staticmethod
-    def create_one_floating_ip(attrs={}, methods={}):
+    def create_one_floating_ip(attrs={}):
         """Create a fake floating ip.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object, with id, ip, and so on
         """
@@ -671,19 +566,8 @@ class FakeFloatingIP(object):
         # Overwrite default attributes.
         floating_ip_attrs.update(attrs)
 
-        # Set default methods.
-        floating_ip_methods = {
-            'keys': ['id', 'floating_ip_address', 'fixed_ip_address',
-                     'dns_domain', 'dns_name', 'status', 'router_id',
-                     'floating_network_id', 'port_id', 'tenant_id']
-        }
-
-        # Overwrite default methods.
-        floating_ip_methods.update(methods)
-
         floating_ip = fakes.FakeResource(
             info=copy.deepcopy(floating_ip_attrs),
-            methods=copy.deepcopy(floating_ip_methods),
             loaded=True
         )
 
@@ -693,13 +577,11 @@ class FakeFloatingIP(object):
         return floating_ip
 
     @staticmethod
-    def create_floating_ips(attrs={}, methods={}, count=2):
+    def create_floating_ips(attrs={}, count=2):
         """Create multiple fake floating ips.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of floating ips to fake
         :return:
@@ -707,10 +589,7 @@ class FakeFloatingIP(object):
         """
         floating_ips = []
         for i in range(0, count):
-            floating_ips.append(FakeFloatingIP.create_one_floating_ip(
-                attrs,
-                methods
-            ))
+            floating_ips.append(FakeFloatingIP.create_one_floating_ip(attrs))
         return floating_ips
 
     @staticmethod
@@ -737,13 +616,11 @@ class FakeSubnetPool(object):
     """Fake one or more subnet pools."""
 
     @staticmethod
-    def create_one_subnet_pool(attrs={}, methods={}):
+    def create_one_subnet_pool(attrs={}):
         """Create a fake subnet pool.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :return:
             A FakeResource object faking the subnet pool
         """
@@ -766,20 +643,8 @@ class FakeSubnetPool(object):
         # Overwrite default attributes.
         subnet_pool_attrs.update(attrs)
 
-        # Set default methods.
-        subnet_pool_methods = {
-            'keys': ['id', 'name', 'prefixes', 'default_prefixlen',
-                     'address_scope_id', 'tenant_id', 'is_default',
-                     'shared', 'max_prefixlen', 'min_prefixlen',
-                     'default_quota', 'ip_version']
-        }
-
-        # Overwrite default methods.
-        subnet_pool_methods.update(methods)
-
         subnet_pool = fakes.FakeResource(
             info=copy.deepcopy(subnet_pool_attrs),
-            methods=copy.deepcopy(subnet_pool_methods),
             loaded=True
         )
 
@@ -789,13 +654,11 @@ class FakeSubnetPool(object):
         return subnet_pool
 
     @staticmethod
-    def create_subnet_pools(attrs={}, methods={}, count=2):
+    def create_subnet_pools(attrs={}, count=2):
         """Create multiple fake subnet pools.
 
         :param Dictionary attrs:
             A dictionary with all attributes
-        :param Dictionary methods:
-            A dictionary with all methods
         :param int count:
             The number of subnet pools to fake
         :return:
@@ -804,7 +667,7 @@ class FakeSubnetPool(object):
         subnet_pools = []
         for i in range(0, count):
             subnet_pools.append(
-                FakeSubnetPool.create_one_subnet_pool(attrs, methods)
+                FakeSubnetPool.create_one_subnet_pool(attrs)
             )
 
         return subnet_pools
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py
index 0dec0e2ff8..8a75101b5c 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/network/v2/test_network.py
@@ -54,7 +54,9 @@ class TestCreateNetworkIdentityV3(TestNetwork):
         'is_default',
         'name',
         'project_id',
+        'provider_network_type',
         'router_external',
+        'shared',
         'status',
         'subnets',
     )
@@ -67,7 +69,9 @@ class TestCreateNetworkIdentityV3(TestNetwork):
         _network.is_default,
         _network.name,
         _network.project_id,
+        _network.provider_network_type,
         network._format_router_external(_network.router_external),
+        _network.shared,
         _network.status,
         utils.format_list(_network.subnets),
     )
@@ -219,7 +223,9 @@ class TestCreateNetworkIdentityV2(TestNetwork):
         'is_default',
         'name',
         'project_id',
+        'provider_network_type',
         'router_external',
+        'shared',
         'status',
         'subnets',
     )
@@ -232,7 +238,9 @@ class TestCreateNetworkIdentityV2(TestNetwork):
         _network.is_default,
         _network.name,
         _network.project_id,
+        _network.provider_network_type,
         network._format_router_external(_network.router_external),
+        _network.shared,
         _network.status,
         utils.format_list(_network.subnets),
     )
@@ -539,7 +547,9 @@ class TestShowNetwork(TestNetwork):
         'is_default',
         'name',
         'project_id',
+        'provider_network_type',
         'router_external',
+        'shared',
         'status',
         'subnets',
     )
@@ -552,7 +562,9 @@ class TestShowNetwork(TestNetwork):
         _network.is_default,
         _network.name,
         _network.project_id,
+        _network.provider_network_type,
         network._format_router_external(_network.router_external),
+        _network.shared,
         _network.status,
         utils.format_list(_network.subnets),
     )
diff --git a/openstackclient/tests/network/v2/test_router.py b/openstackclient/tests/network/v2/test_router.py
index cf94bfd097..e804149867 100644
--- a/openstackclient/tests/network/v2/test_router.py
+++ b/openstackclient/tests/network/v2/test_router.py
@@ -117,19 +117,29 @@ class TestCreateRouter(TestRouter):
 
     columns = (
         'admin_state_up',
+        'availability_zone_hints',
+        'availability_zones',
         'distributed',
+        'external_gateway_info',
         'ha',
         'id',
         'name',
         'project_id',
+        'routes',
+        'status',
     )
     data = (
         router._format_admin_state(new_router.admin_state_up),
+        osc_utils.format_list(new_router.availability_zone_hints),
+        osc_utils.format_list(new_router.availability_zones),
         new_router.distributed,
+        router._format_external_gateway_info(new_router.external_gateway_info),
         new_router.ha,
         new_router.id,
         new_router.name,
         new_router.tenant_id,
+        new_router.routes,
+        new_router.status,
     )
 
     def setUp(self):
@@ -541,20 +551,29 @@ class TestShowRouter(TestRouter):
 
     columns = (
         'admin_state_up',
+        'availability_zone_hints',
+        'availability_zones',
         'distributed',
+        'external_gateway_info',
         'ha',
         'id',
         'name',
         'project_id',
+        'routes',
+        'status',
     )
-
     data = (
         router._format_admin_state(_router.admin_state_up),
+        osc_utils.format_list(_router.availability_zone_hints),
+        osc_utils.format_list(_router.availability_zones),
         _router.distributed,
+        router._format_external_gateway_info(_router.external_gateway_info),
         _router.ha,
         _router.id,
         _router.name,
-        _router.project_id,
+        _router.tenant_id,
+        _router.routes,
+        _router.status,
     )
 
     def setUp(self):