diff --git a/cinderclient/shell.py b/cinderclient/shell.py
index d948332a9..57c9d8ccb 100644
--- a/cinderclient/shell.py
+++ b/cinderclient/shell.py
@@ -135,6 +135,7 @@ class OpenStackCinderShell(object):
     def __init__(self):
         self.ks_logger = None
         self.client_logger = None
+        self.extensions = []
 
     def get_base_parser(self):
         parser = CinderClientArgumentParser(
diff --git a/cinderclient/tests/unit/v3/test_shell.py b/cinderclient/tests/unit/v3/test_shell.py
index e2026550a..74e702ed6 100644
--- a/cinderclient/tests/unit/v3/test_shell.py
+++ b/cinderclient/tests/unit/v3/test_shell.py
@@ -1442,3 +1442,121 @@ class ShellTest(utils.TestCase):
             '--os-volume-api-version 3.59 transfer-list')
         url = ('/volume-transfers/detail')
         self.assert_called('GET', url)
+
+    def test_subcommand_parser(self):
+        """Ensure that all the expected commands show up.
+
+        This test ensures that refactoring code does not somehow result in
+        a command accidentally ceasing to exist.
+
+        TODO: add a similar test for 3.59 or so
+        """
+        p = self.shell.get_subcommand_parser(api_versions.APIVersion("3.0"),
+                                             input_args=['help'], do_help=True)
+        help_text = p.format_help()
+
+        # These are v3.0 commands only
+        expected_commands = ('absolute-limits',
+                             'api-version',
+                             'availability-zone-list',
+                             'backup-create',
+                             'backup-delete',
+                             'backup-export',
+                             'backup-import',
+                             'backup-list',
+                             'backup-reset-state',
+                             'backup-restore',
+                             'backup-show',
+                             'cgsnapshot-create',
+                             'cgsnapshot-delete',
+                             'cgsnapshot-list',
+                             'cgsnapshot-show',
+                             'consisgroup-create',
+                             'consisgroup-create-from-src',
+                             'consisgroup-delete',
+                             'consisgroup-list',
+                             'consisgroup-show',
+                             'consisgroup-update',
+                             'create',
+                             'delete',
+                             'encryption-type-create',
+                             'encryption-type-delete',
+                             'encryption-type-list',
+                             'encryption-type-show',
+                             'encryption-type-update',
+                             'extend',
+                             'extra-specs-list',
+                             'failover-host',
+                             'force-delete',
+                             'freeze-host',
+                             'get-capabilities',
+                             'get-pools',
+                             'image-metadata',
+                             'image-metadata-show',
+                             'list',
+                             'manage',
+                             'metadata',
+                             'metadata-show',
+                             'metadata-update-all',
+                             'migrate',
+                             'qos-associate',
+                             'qos-create',
+                             'qos-delete',
+                             'qos-disassociate',
+                             'qos-disassociate-all',
+                             'qos-get-association',
+                             'qos-key',
+                             'qos-list',
+                             'qos-show',
+                             'quota-class-show',
+                             'quota-class-update',
+                             'quota-defaults',
+                             'quota-delete',
+                             'quota-show',
+                             'quota-update',
+                             'quota-usage',
+                             'rate-limits',
+                             'readonly-mode-update',
+                             'rename',
+                             'reset-state',
+                             'retype',
+                             'service-disable',
+                             'service-enable',
+                             'service-list',
+                             'set-bootable',
+                             'show',
+                             'snapshot-create',
+                             'snapshot-delete',
+                             'snapshot-list',
+                             'snapshot-manage',
+                             'snapshot-metadata',
+                             'snapshot-metadata-show',
+                             'snapshot-metadata-update-all',
+                             'snapshot-rename',
+                             'snapshot-reset-state',
+                             'snapshot-show',
+                             'snapshot-unmanage',
+                             'thaw-host',
+                             'transfer-accept',
+                             'transfer-create',
+                             'transfer-delete',
+                             'transfer-list',
+                             'transfer-show',
+                             'type-access-add',
+                             'type-access-list',
+                             'type-access-remove',
+                             'type-create',
+                             'type-default',
+                             'type-delete',
+                             'type-key',
+                             'type-list',
+                             'type-show',
+                             'type-update',
+                             'unmanage',
+                             'upload-to-image',
+                             'version-list',
+                             'bash-completion',
+                             'help',)
+
+        for e in expected_commands:
+            self.assertIn('    ' + e, help_text)