Make sure NetworkInterfaces and SubnetId updatable

We should make the properties 'NetworkInterfaces' and 'SubnetId'
updatable for AWS::EC2::Instance resource, so we can update the networks
for an instance.

Change-Id: I4a475fee6416696558807c189473a90d7517cfc0
Closes-Bug: #1280151
Allow complex scheduler hints for AWS Instance

Nova supports providing several values for the same scheduler hint,
in which case the hint value is formed as a list. This functionality was
missing in AWS::EC2::Instance resource.

Change-Id: Id05e4f2ebe89871c1f27f8d97441f3b6cf469dd3
Closes-Bug: #1297667
Fix status reason in events for deployment signals

When a signal is received and processed by a Resource, there could be an
event generated automatically. For such an event, Heat is supposed to
provide some useful message (including status_reason).  But currently,
the resource code can only process ceilometer alarms and watch rules,
for signals sent for a SoftwareDeployment resource, the signal is only
providing an string 'Unknown' as the status change reason.  This is
confusing when a user performs 'heat event-list stack'.

This patch adds an additional check (guess) whether the signal comes
from a SoftwareDeployment.  If that is the case, fill in the status
reason as 'deployment succeeded', or 'deployment failed (n)', where n is
the deploy_status_code that comes with the signal.

Closes-Bug: #1300679
Change-Id: Ic970a5dac923fffdcdd365983df58f4d338de849
Refined schema for VPCZoneIdentifier

The schema now says it is a list of strings. Also upgraded the
description.  Also clarified the name of
test_invalid_vpc_zone_identifier.

Change-Id: I4b17dbd146965df3df3f4205dddafc0b65061294
Closes-Bug: #1294717
Order imports in alphabetical order (5/9)

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

Implements: blueprint reduce-flake8-ignored-rules (partial)
Change-Id: Ifd36fc49199c48af891bd8e7cc2d2262a53032eb
Add link to a resource's nested stack

When viewing a resource, it's valuable to know whether the resource is a
nested stack with additional resources attached to it.  This change
provides a new 'nested' link in the links section of a resource, which
points to the nested stack.

Co-Authored-By: Richard Lee <rblee88@gmail.com>
Implements: blueprint nested-stack-link
Change-Id: Ibc8768d2be8f1dae9a60d3818ae9f56c27bbdc9b
Update status section to indicate HOT is supported

This updates the status section of hot_spec.rst to indicate
Icehouse is supported and reliable, and indicate that future
versions will allow versioning of the template language.

Change-Id: I70455f71362babcea746831dd730f8c33ef51745
Closes-bug: #1304145
Expounded on global environments.

Explained that the effective environment used for a stack is the
combination of the user-supplied environment and the provider-supplied
"global" environment.

Change-Id: I0e005dad6efb80a76ecff6337454e2e891e692ca
Partial-Bug: #1297060
Sort requirement files in alphabetical order

This makes code more readable, and can check whether specific library
in the requirement files easily. We also enforce the check in pep8.

Change-Id: I032c3c3d29522ce85f64b21d6428d975e46cc701
Closes-Bug: #1285478
Fix missed whitespace in attribute description

Change-Id: I763800de395331ce24b8e7d8442ac0f9644aa9f3
Remove unused variable for UpdateReplace exception

Base class Exception have not attribute "_message" and variable
"message" has default value in init method, so attribute "_message"
could be removed.

Change-Id: I304e13d1923ef043f04f03477b94f88cea4bc52f
Remove testscenarios load_tests

A load_tests call sneaked in test_provider_template, but it's become
useless since we switch to a base heat test class that provides what's
needed.

Change-Id: Ie5665cbbafb46a7ed63ada37a3f4aa5c74cdb8b6
Allow filtering of stacks by action

Currently users can already filter by status.  Since status and action
are so closely tied, it is valuable to be able to filter by action as
well.  As a result, users can filter stacks in a more meaningful way.
For example, /stacks?action=CREATE&status=IN_PROGRESS

Implements: blueprint filter-by-action
Change-Id: I58bf53373e0a9231d198d8fb62e76b1373587b87
Allow NotFound to be created without args

It appears that the serialization used to wrap RPC exceptions
requires that the class be instantiated without any arguments.

Since the NotFound exception required a msg_fmt it could not be
deserialized in heat-api, which lead to no mapping in the FaultWrapper
so a 500 was raised instead of a 404.

This change adds a default value for msg_fmt for the NotFound exception.

The classes Error and ResourceFailure likely have this issue too, but it
is not as serious since they will raise a 500 error anyway.

Config/deployment API tests now check that NotFound can be deserialized by
calling to_remote_error, and checks that FaultWrapper converts that to
HTTPNotFound.

Change-Id: Ieb8de26465cb26aa015f15c134f80a06ebcae95c
Closes-Bug: #1301657
Related-Bug: #1304743
Add documentation for creating a resource plug-in

Change-Id: I229316c6f4c634c18fc33b0f5ffd3ce5d194b383
More specific exceptions when validating params

In addition to the example cited in the bug, this updates a few other
exception messages to indicate the name of the parameter that is failing
validation.

Change-Id: I1b7729305988444dc15abd6e5d958f443efc091d
Closes-Bug: #1294295
Validate user_data_format for server with deployment

Validation error will be raised if user_data_format is not set
correctly.

Partial-Bug: #1295536
Change-Id: I0509c9c3a71d09fa8e2113710d561ffd3289d814
Merge "Update status section to indicate HOT is supported"
Add missing test coverage for XMLResponseSerializer

Currently we have no direct coverage of this, so add some tests
prior to refactoring in a subsequent patch.

Change-Id: I20242e60b84f9265cdc7afef2deabee8235e287c
Related-Bug: #1291079
Refactor to separate serializers from wsgi controller

Remove the serializers from heat.common.wsgi, so we break the
circular import which happens if you want to import
heat.api.aws.exceptions to do a determination based on exception
type, which is required to avoid the faultwrap exception disguise
which is not applicable to the CFN API.

Partial-Bug: #1291079

Change-Id: I7498d78f8ec6098b28fb183eaaa04aa81fced3eb