Retry logic for SSH connection in Cloud Server resource

There is a known issue with some Rackspace Cloud Server images where
they occasionally refuse SSH connections for a few seconds just after
becoming 'ACTIVE'.  This causes the stack creation to fail.

To avoid this, keep trying to initialize the SSH connection for up to 30
TaskRunner cycles.

Closes-Bug: #1287331
Change-Id: Icf28fb3c0de21cf733c4dd0d28a7b653af1bcd0b
Resource type implementations for structured software config

StructuredConfig takes configuration as a Map property, which
results in config that is stored and returned as a parsed dict.

This will be used for defining both cfn-init and tripleo software
configuration inline in a template as strucured yaml.

StructuredSoftwareDeployment will transform the config to substitute
{"get_input": "<input_name>"} with the current input values and storing
the result in the ephemeral derived config.

partial blueprint hot-software-config

Change-Id: I8029f469dfc2a77453abdab46c1a69ba317fc7ea
Order imports in alphabetical order (6/9)

This patch is one in a series to re-enable H306 style check rule
(imports are in alphabetical order). It touches engine resources files.

Implements: blueprint reduce-flake8-ignored-rules (partial)
Change-Id: I7ab23e1df0c5c0ceba4bb6e4f3d6558e06bee2dd
Improve compatibility between Keystone V2 and V3

To improve compatibility between Keystone V2 and V3, this renames the
client @property in both of them from self.client_v2 and self.client_v3
to just self.client.

This allows both of them to be used by third party contrib plugins in a
seamless manner.

Closes-Bug: 1289528
Co-Authored-By: Richard Lee <rblee88@gmail.com>
Change-Id: I60412ecb1665232ffeeeb869fb00d368604601d2
Merge "Resource type implementations for structured software config"
Modify assert statement when comparing with None

Replace assertEqual(None, *) with assertIsNone in heat's
tests to have more clear messages in case of failure.
Also, replace assertNotEqual(None, *) with assertIsNotNone
for the same reason.

Change-Id: I34dbf9b87c7c8c6ca4949b53bd5ef763a9c2fc24
Closes-Bug: #1280522
Use stack ID to create domain project name

If the project for a given stack didn't get deleted for any reason then
launching a stack with the same name will fail as project names
are enforced to be unique.

By using the stack ID instead this issue is avoided if the project delete
didn't occur.

The resulting project name is truncated to the limit of 64.

Change-Id: Iba09cf94bdaa6a92d9520ed1743805862dc1b14d
Closes-Bug: #1288514
Fix HOT inconsistencies in resource sections

This patch fixes inconsistencies between keywords in resource
definitions in a HOT template as documented in the HOT specification
and the way they are processed by the code.

So far it was possible to use CFN like syntax or HOT syntax inside
resource definitions (e.g. both 'properties' and 'Properties' were
accepted) since the HOT processing code did tolerant processing.
Consequently, users had been able to produce CFN/HOT mixed templates.

This patch introduces strict enforcement of allowed keywords to
make HOT templates consistent with the spec by providing concrete
validation errors in case of invalid keywords.

This patch also adds a DB migration step to update existing templates
in the Heat database with potentially legacy keywords to comply with
the new strict syntax checking rules.

Change-Id: I44309acda86a930030cb70493f409e3ea4740130
Closes-Bug: #1274288
Closes-Bug: #1271008
Add space to description of stack_domain_admin

Without the space we have words being concatenated in the final
description.

Change-Id: I67dcd53bde64afccecd61af45cf7250473f3974a
Merge "Add space to description of stack_domain_admin"
Merge "Improve compatibility between Keystone V2 and V3"
Merge "Modify assert statement when comparing with None"
Merge "Retry logic for SSH connection in Cloud Server resource"
Merge "Fix HOT inconsistencies in resource sections"
Merge "Order imports in alphabetical order (6/9)"