Merge "Add Tempest gate job for stable/ussuri"
diff --git a/.zuul.yaml b/.zuul.yaml
index 4a200c5..09a5897 100644
--- a/.zuul.yaml
+++ b/.zuul.yaml
@@ -462,12 +462,6 @@
     override-checkout: stable/stein
 
 - job:
-    name: tempest-full-rocky-py3
-    parent: tempest-full-py3
-    nodeset: openstack-single-node-xenial
-    override-checkout: stable/rocky
-
-- job:
     name: tempest-tox-plugin-sanity-check
     parent: tox
     description: |
@@ -537,11 +531,11 @@
       run on neutron gate only.
     check:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-networking
     gate:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-networking
 
 - project-template:
@@ -553,11 +547,11 @@
       run on Nova gate only.
     check:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-compute
     gate:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-compute
 
 - project-template:
@@ -569,11 +563,11 @@
       run on Placement gate only.
     check:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-placement
     gate:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-placement
 
 - project-template:
@@ -585,11 +579,11 @@
       run on Cinder and Glance gate only.
     check:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-storage
     gate:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-storage
 
 - project-template:
@@ -601,11 +595,11 @@
       run on swift gate only.
     check:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-object-storage
     gate:
       jobs:
-        - grenade-py3
+        - grenade
         - tempest-integrated-object-storage
 
 - project:
@@ -655,8 +649,6 @@
             irrelevant-files: *tempest-irrelevant-files
         - tempest-full-stein-py3:
             irrelevant-files: *tempest-irrelevant-files
-        - tempest-full-rocky-py3:
-            irrelevant-files: *tempest-irrelevant-files
         - tempest-multinode-full-py3:
             irrelevant-files: *tempest-irrelevant-files
         - tempest-tox-plugin-sanity-check:
@@ -685,7 +677,7 @@
             irrelevant-files: *tempest-irrelevant-files
         - neutron-grenade-multinode:
             irrelevant-files: *tempest-irrelevant-files
-        - grenade-py3:
+        - grenade:
             irrelevant-files: *tempest-irrelevant-files
         - puppet-openstack-integration-4-scenario001-tempest-centos-7:
             voting: false
@@ -719,7 +711,7 @@
             irrelevant-files: *tempest-irrelevant-files
         - tempest-full-py3:
             irrelevant-files: *tempest-irrelevant-files
-        - grenade-py3:
+        - grenade:
             irrelevant-files: *tempest-irrelevant-files
         - tempest-ipv6-only:
             irrelevant-files: *tempest-irrelevant-files-2
@@ -746,7 +738,6 @@
         - tempest-full-ussuri-py3
         - tempest-full-train-py3
         - tempest-full-stein-py3
-        - tempest-full-rocky-py3
     periodic:
       jobs:
         - tempest-all
diff --git a/doc/source/supported_version.rst b/doc/source/supported_version.rst
index 4f65fd4..62faa1f 100644
--- a/doc/source/supported_version.rst
+++ b/doc/source/supported_version.rst
@@ -11,7 +11,6 @@
 
 * Train
 * Stein
-* Rocky
 
 For older OpenStack Release:
 
diff --git a/releasenotes/notes/account_generator-6eb03f664a448c35.yaml b/releasenotes/notes/account_generator-6eb03f664a448c35.yaml
new file mode 100644
index 0000000..ade632f
--- /dev/null
+++ b/releasenotes/notes/account_generator-6eb03f664a448c35.yaml
@@ -0,0 +1,7 @@
+---
+upgrade:
+  - |
+    Remove the deprecated CLI ``tempest-account-generator`` in favor of
+    ``tempest account-generator`` command.
+    You can use ``tempest account-generator`` CLI to generate the accounts
+    yaml file.
diff --git a/setup.cfg b/setup.cfg
index 04511e1..f57a805 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -28,7 +28,6 @@
 
 [entry_points]
 console_scripts =
-    tempest-account-generator = tempest.cmd.account_generator:main
     tempest = tempest.cmd.main:main
     skip-tracker = tempest.lib.cmd.skip_tracker:main
     check-uuid = tempest.lib.cmd.check_uuid:run
diff --git a/tempest/cmd/account_generator.py b/tempest/cmd/account_generator.py
index 1535786..b230615 100755
--- a/tempest/cmd/account_generator.py
+++ b/tempest/cmd/account_generator.py
@@ -96,7 +96,7 @@
 To see help on specific argument, please do: ``tempest account-generator
 [OPTIONS] <accounts_file.yaml> -h``.
 """
-import argparse
+
 import os
 import traceback
 
@@ -248,21 +248,6 @@
                         help='Output accounts yaml file')
 
 
-def get_options():
-    usage_string = ('tempest account-generator [-h] <ARG> ...\n\n'
-                    'To see help on specific argument, do:\n'
-                    'tempest account-generator <ARG> -h')
-    parser = argparse.ArgumentParser(
-        description=DESCRIPTION,
-        formatter_class=argparse.ArgumentDefaultsHelpFormatter,
-        usage=usage_string
-    )
-
-    _parser_add_args(parser)
-    opts = parser.parse_args()
-    return opts
-
-
 class TempestAccountGenerator(command.Command):
 
     def get_parser(self, prog_name):
@@ -272,7 +257,19 @@
 
     def take_action(self, parsed_args):
         try:
-            main(parsed_args)
+            if parsed_args.config_file:
+                config.CONF.set_config_path(parsed_args.config_file)
+            setup_logging()
+            resources = []
+            for count in range(parsed_args.concurrency):
+                # Use N different cred_providers to obtain different
+                # sets of creds
+                cred_provider = get_credential_provider(parsed_args)
+                resources.extend(generate_resources(cred_provider,
+                                                    parsed_args.admin))
+            dump_accounts(resources, parsed_args.identity_version,
+                          parsed_args.accounts)
+
         except Exception:
             LOG.exception("Failure generating test accounts.")
             traceback.print_exc()
@@ -280,26 +277,3 @@
 
     def get_description(self):
         return DESCRIPTION
-
-
-def main(opts=None):
-    log_warning = False
-    if not opts:
-        log_warning = True
-        opts = get_options()
-    if opts.config_file:
-        config.CONF.set_config_path(opts.config_file)
-    setup_logging()
-    if log_warning:
-        LOG.warning("Use of: 'tempest-account-generator' is deprecated, "
-                    "please use: 'tempest account-generator'")
-    resources = []
-    for count in range(opts.concurrency):
-        # Use N different cred_providers to obtain different sets of creds
-        cred_provider = get_credential_provider(opts)
-        resources.extend(generate_resources(cred_provider, opts.admin))
-    dump_accounts(resources, opts.identity_version, opts.accounts)
-
-
-if __name__ == "__main__":
-    main()
diff --git a/tempest/config.py b/tempest/config.py
index 1699c7d..204d977 100644
--- a/tempest/config.py
+++ b/tempest/config.py
@@ -833,7 +833,8 @@
                help="User name used to authenticate to an instance."),
     cfg.StrOpt('image_ssh_password',
                default="password",
-               help="Password used to authenticate to an instance."),
+               help="Password used to authenticate to an instance.",
+               secret=True),
     cfg.StrOpt('ssh_shell_prologue',
                default="set -eu -o pipefail; PATH=$$PATH:/sbin:/usr/sbin;",
                help="Shell fragments to use before executing a command "