diff --git a/openstackclient/network/v2/network.py b/openstackclient/network/v2/network.py
index 074b27543d..42648e4558 100644
--- a/openstackclient/network/v2/network.py
+++ b/openstackclient/network/v2/network.py
@@ -52,10 +52,14 @@ def _get_attrs(client_manager, parsed_args):
     attrs = {}
     if parsed_args.name is not None:
         attrs['name'] = str(parsed_args.name)
-    if parsed_args.admin_state is not None:
-        attrs['admin_state_up'] = parsed_args.admin_state
-    if parsed_args.shared is not None:
-        attrs['shared'] = parsed_args.shared
+    if parsed_args.enable:
+        attrs['admin_state_up'] = True
+    if parsed_args.disable:
+        attrs['admin_state_up'] = False
+    if parsed_args.share:
+        attrs['shared'] = True
+    if parsed_args.no_share:
+        attrs['shared'] = False
 
     # "network set" command doesn't support setting project.
     if 'project' in parsed_args and parsed_args.project is not None:
@@ -79,8 +83,10 @@ def _get_attrs_compute(client_manager, parsed_args):
     attrs = {}
     if parsed_args.name is not None:
         attrs['label'] = str(parsed_args.name)
-    if parsed_args.shared is not None:
-        attrs['share_address'] = parsed_args.shared
+    if parsed_args.share:
+        attrs['share_address'] = True
+    if parsed_args.no_share:
+        attrs['share_address'] = False
     if parsed_args.subnet is not None:
         attrs['cidr'] = parsed_args.subnet
 
@@ -99,15 +105,13 @@ class CreateNetwork(common.NetworkAndComputeShowOne):
         share_group = parser.add_mutually_exclusive_group()
         share_group.add_argument(
             '--share',
-            dest='shared',
             action='store_true',
             default=None,
             help='Share the network between projects',
         )
         share_group.add_argument(
             '--no-share',
-            dest='shared',
-            action='store_false',
+            action='store_true',
             help='Do not share the network between projects',
         )
         return parser
@@ -116,15 +120,13 @@ class CreateNetwork(common.NetworkAndComputeShowOne):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state',
             action='store_true',
             default=True,
             help='Enable network (default)',
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state',
-            action='store_false',
+            action='store_true',
             help='Disable network',
         )
         parser.add_argument(
@@ -301,29 +303,25 @@ class SetNetwork(command.Command):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state',
             action='store_true',
             default=None,
             help='Enable network',
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state',
-            action='store_false',
+            action='store_true',
             help='Disable network',
         )
         share_group = parser.add_mutually_exclusive_group()
         share_group.add_argument(
             '--share',
-            dest='shared',
             action='store_true',
             default=None,
             help='Share the network between projects',
         )
         share_group.add_argument(
             '--no-share',
-            dest='shared',
-            action='store_false',
+            action='store_true',
             help='Do not share the network between projects',
         )
         return parser
diff --git a/openstackclient/network/v2/port.py b/openstackclient/network/v2/port.py
index 23350cf85e..45ad1c72ba 100644
--- a/openstackclient/network/v2/port.py
+++ b/openstackclient/network/v2/port.py
@@ -86,8 +86,10 @@ def _get_attrs(client_manager, parsed_args):
         attrs['device_id'] = parsed_args.device
     if parsed_args.device_owner is not None:
         attrs['device_owner'] = parsed_args.device_owner
-    if parsed_args.admin_state is not None:
-        attrs['admin_state_up'] = parsed_args.admin_state
+    if parsed_args.enable:
+        attrs['admin_state_up'] = True
+    if parsed_args.disable:
+        attrs['admin_state_up'] = False
     if parsed_args.binding_profile is not None:
         attrs['binding:profile'] = parsed_args.binding_profile
     if parsed_args.vnic_type is not None:
@@ -217,15 +219,13 @@ class CreatePort(command.ShowOne):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state',
             action='store_true',
             default=True,
             help='Enable port (default)',
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state',
-            action='store_false',
+            action='store_true',
             help='Disable port',
         )
         parser.add_argument(
@@ -333,15 +333,13 @@ class SetPort(command.Command):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state',
             action='store_true',
             default=None,
             help='Enable port',
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state',
-            action='store_false',
+            action='store_true',
             help='Disable port',
         )
         parser.add_argument(
diff --git a/openstackclient/network/v2/router.py b/openstackclient/network/v2/router.py
index 394311112e..6819733b6b 100644
--- a/openstackclient/network/v2/router.py
+++ b/openstackclient/network/v2/router.py
@@ -53,10 +53,15 @@ def _get_attrs(client_manager, parsed_args):
     attrs = {}
     if parsed_args.name is not None:
         attrs['name'] = str(parsed_args.name)
-    if parsed_args.admin_state_up is not None:
-        attrs['admin_state_up'] = parsed_args.admin_state_up
-    if parsed_args.distributed is not None:
-        attrs['distributed'] = parsed_args.distributed
+    if parsed_args.enable:
+        attrs['admin_state_up'] = True
+    if parsed_args.disable:
+        attrs['admin_state_up'] = False
+    # centralized is available only for SetRouter and not for CreateRouter
+    if 'centralized' in parsed_args and parsed_args.centralized:
+        attrs['distributed'] = False
+    if parsed_args.distributed:
+        attrs['distributed'] = True
     if ('availability_zone_hints' in parsed_args
             and parsed_args.availability_zone_hints is not None):
         attrs['availability_zone_hints'] = parsed_args.availability_zone_hints
@@ -95,15 +100,13 @@ class CreateRouter(command.ShowOne):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state_up',
             action='store_true',
             default=True,
             help="Enable router (default)",
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state_up',
-            action='store_false',
+            action='store_true',
             help="Disable router",
         )
         parser.add_argument(
@@ -235,29 +238,24 @@ class SetRouter(command.Command):
         admin_group = parser.add_mutually_exclusive_group()
         admin_group.add_argument(
             '--enable',
-            dest='admin_state_up',
             action='store_true',
             default=None,
             help='Enable router',
         )
         admin_group.add_argument(
             '--disable',
-            dest='admin_state_up',
-            action='store_false',
+            action='store_true',
             help='Disable router',
         )
         distribute_group = parser.add_mutually_exclusive_group()
         distribute_group.add_argument(
             '--distributed',
-            dest='distributed',
             action='store_true',
-            default=None,
             help="Set router to distributed mode (disabled router only)",
         )
         distribute_group.add_argument(
             '--centralized',
-            dest='distributed',
-            action='store_false',
+            action='store_true',
             help="Set router to centralized mode (disabled router only)",
         )
         routes_group = parser.add_mutually_exclusive_group()
@@ -275,7 +273,6 @@ class SetRouter(command.Command):
         )
         routes_group.add_argument(
             '--clear-routes',
-            dest='clear_routes',
             action='store_true',
             help="Clear routes associated with the router",
         )
diff --git a/openstackclient/tests/network/v2/test_network.py b/openstackclient/tests/network/v2/test_network.py
index 884a6e8181..26b98f7727 100644
--- a/openstackclient/tests/network/v2/test_network.py
+++ b/openstackclient/tests/network/v2/test_network.py
@@ -116,8 +116,8 @@ class TestCreateNetworkIdentityV3(TestNetwork):
         ]
         verifylist = [
             ('name', self._network.name),
-            ('admin_state', True),
-            ('shared', None),
+            ('enable', True),
+            ('share', None),
             ('project', None),
         ]
 
@@ -141,8 +141,8 @@ class TestCreateNetworkIdentityV3(TestNetwork):
             self._network.name,
         ]
         verifylist = [
-            ('admin_state', False),
-            ('shared', True),
+            ('disable', True),
+            ('share', True),
             ('project', identity_fakes_v3.project_name),
             ('project_domain', identity_fakes_v3.domain_name),
             ('availability_zone_hints', ["nova"]),
@@ -169,8 +169,8 @@ class TestCreateNetworkIdentityV3(TestNetwork):
             self._network.name,
         ]
         verifylist = [
-            ('admin_state', True),
-            ('shared', False),
+            ('enable', True),
+            ('no_share', True),
             ('name', self._network.name),
         ]
 
@@ -249,8 +249,8 @@ class TestCreateNetworkIdentityV2(TestNetwork):
             self._network.name,
         ]
         verifylist = [
-            ('admin_state', True),
-            ('shared', None),
+            ('enable', True),
+            ('share', None),
             ('name', self._network.name),
             ('project', identity_fakes_v2.project_name),
         ]
@@ -273,8 +273,8 @@ class TestCreateNetworkIdentityV2(TestNetwork):
             self._network.name,
         ]
         verifylist = [
-            ('admin_state', True),
-            ('shared', None),
+            ('enable', True),
+            ('share', None),
             ('project', identity_fakes_v3.project_name),
             ('project_domain', identity_fakes_v3.domain_name),
             ('name', self._network.name),
@@ -455,9 +455,9 @@ class TestSetNetwork(TestNetwork):
         ]
         verifylist = [
             ('network', self._network.name),
-            ('admin_state', True),
+            ('enable', True),
             ('name', 'noob'),
-            ('shared', True),
+            ('share', True),
         ]
 
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -480,8 +480,8 @@ class TestSetNetwork(TestNetwork):
         ]
         verifylist = [
             ('network', self._network.name),
-            ('admin_state', False),
-            ('shared', False),
+            ('disable', True),
+            ('no_share', True),
         ]
 
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
diff --git a/openstackclient/tests/network/v2/test_port.py b/openstackclient/tests/network/v2/test_port.py
index cdbc699a6e..cb1af2b86e 100644
--- a/openstackclient/tests/network/v2/test_port.py
+++ b/openstackclient/tests/network/v2/test_port.py
@@ -103,7 +103,7 @@ class TestCreatePort(TestPort):
         ]
         verifylist = [
             ('network', self._port.network_id,),
-            ('admin_state', True),
+            ('enable', True),
             ('name', 'test-port'),
         ]
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -143,7 +143,7 @@ class TestCreatePort(TestPort):
             ),
             ('device', 'deviceid'),
             ('device_owner', 'fakeowner'),
-            ('admin_state', False),
+            ('disable', True),
             ('vnic_type', 'macvtap'),
             ('binding_profile', {'foo': 'bar', 'foo2': 'bar2'}),
             ('network', self._port.network_id),
@@ -301,7 +301,7 @@ class TestSetPort(TestPort):
             self._port.name,
         ]
         verifylist = [
-            ('admin_state', False),
+            ('disable', True),
         ]
 
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -322,7 +322,7 @@ class TestSetPort(TestPort):
             self._port.name,
         ]
         verifylist = [
-            ('admin_state', True),
+            ('enable', True),
             ('vnic_type', 'macvtap'),
             ('binding_profile', {'foo': 'bar'}),
             ('host', 'binding-host-id-xxxx'),
diff --git a/openstackclient/tests/network/v2/test_router.py b/openstackclient/tests/network/v2/test_router.py
index f3bf363d2a..4aaa68e4f9 100644
--- a/openstackclient/tests/network/v2/test_router.py
+++ b/openstackclient/tests/network/v2/test_router.py
@@ -73,7 +73,7 @@ class TestCreateRouter(TestRouter):
         ]
         verifylist = [
             ('name', self.new_router.name),
-            ('admin_state_up', True),
+            ('enable', True),
             ('distributed', False),
         ]
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -83,7 +83,6 @@ class TestCreateRouter(TestRouter):
         self.network.create_router.assert_called_once_with(**{
             'admin_state_up': True,
             'name': self.new_router.name,
-            'distributed': False,
         })
         self.assertEqual(self.columns, columns)
         self.assertEqual(self.data, data)
@@ -97,7 +96,7 @@ class TestCreateRouter(TestRouter):
         verifylist = [
             ('name', self.new_router.name),
             ('availability_zone_hints', ['fake-az', 'fake-az2']),
-            ('admin_state_up', True),
+            ('enable', True),
             ('distributed', False),
         ]
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)
@@ -106,7 +105,6 @@ class TestCreateRouter(TestRouter):
         self.network.create_router.assert_called_once_with(**{
             'admin_state_up': True,
             'name': self.new_router.name,
-            'distributed': False,
             'availability_zone_hints': ['fake-az', 'fake-az2'],
         })
 
@@ -252,7 +250,7 @@ class TestSetRouter(TestRouter):
         ]
         verifylist = [
             ('router', self._router.name),
-            ('admin_state_up', True),
+            ('enable', True),
             ('distributed', True),
             ('name', 'noob'),
         ]
@@ -277,8 +275,8 @@ class TestSetRouter(TestRouter):
         ]
         verifylist = [
             ('router', self._router.name),
-            ('admin_state_up', False),
-            ('distributed', False),
+            ('disable', True),
+            ('centralized', True),
         ]
 
         parsed_args = self.check_parser(self.cmd, arglist, verifylist)