Tempest test for anaconda deploy

Provides a test and substrate changes to support integration
testing of the anaconda deployment interface from a "standalone"
perspect.

This is present in two forms, a "with stage2 ramdisk" and
"without stage2" test which is enabled, or not depening
on the underlying configuration.

This test also has two modes of operation, the first and
default being primarily a "did anaconda start and can I
ping the machine?" test mode. The second attempts to wait
for the node to reach an active state, although it is not
the default because an anaconda deployment, depending on
mode of use, even with a default configuration can take
a substantial amount of itme. The anaconda deployment
interface is also modeled for highly tuned configurations,
so the prime aspect is "does it boot? does anaconda start?"

Also:
* Removes the explicit requirement that test classes explicitly
  declare support for wholedisk_image or not.

Change-Id: I42933d26268b55737fa2508265643c1cd14651ea
diff --git a/ironic_tempest_plugin/config.py b/ironic_tempest_plugin/config.py
index d844af1..6b05402 100644
--- a/ironic_tempest_plugin/config.py
+++ b/ironic_tempest_plugin/config.py
@@ -89,6 +89,10 @@
     cfg.IntOpt('active_timeout',
                default=300,
                help="Timeout for Ironic node to completely provision"),
+    cfg.IntOpt('anaconda_active_timeout',
+               default=3600,
+               help="Timeout for Ironic node to completely provision "
+                    "when using the anaconda deployment interface."),
     cfg.IntOpt('association_timeout',
                default=30,
                help="Timeout for association of Nova instance and Ironic "
@@ -146,6 +150,28 @@
     cfg.StrOpt('rollback_import_location',
                help="Rollback import config location for configuration "
                     "molds. Optional. If not provided, rollback is skipped."),
+    # TODO(TheJulia): For now, anaconda can be url based and we can move in
+    # to being tested with glance as soon as we get a public stage2 image.
+    cfg.StrOpt('anaconda_image_ref',
+               help="URL of an anaconda repository to set as image_source"),
+    cfg.StrOpt('anaconda_kernel_ref',
+               help="URL of the kernel to utilize for anaconda deploys."),
+    cfg.StrOpt('anaconda_initial_ramdisk_ref',
+               help="URL of the initial ramdisk to utilize for anaconda "
+                    "deploy operations."),
+    cfg.StrOpt('anaconda_stage2_ramdisk_ref',
+               help="URL of the anaconda second stage ramdisk. Presence of "
+                    "this setting will also determine if a stage2 specific "
+                    "anaconda test is run, or not."),
+    cfg.StrOpt('anaconda_exit_test_at',
+               default='heartbeat',
+               choices=['heartbeat', 'active'],
+               help='When to end the anaconda test job at. Due to '
+                    'the use model of the anaconda driver, as well '
+                    'as the performance profile, the anaconda test is '
+                    'normally only executed until we observe a heartbeat '
+                    'operation indicating that anaconda *has* booted and '
+                    'successfully parsed the URL.'),
     cfg.ListOpt('enabled_drivers',
                 default=['fake', 'pxe_ipmitool', 'agent_ipmitool'],
                 help="List of Ironic enabled drivers."),