Reimplement DHCPAgent as net's property

We implemented Neutron's DHCPAgent resource as Heat's NetDHCPAgent resource at
once.

  https://review.openstack.org/#/c/59626/

However, we discussed appropriate way of how to implement L3Agent in the
following review:

  https://review.openstack.org/#/c/69303/

The conclusion is to implement Neutron's L3Agent as router's property.
We should refactor NetDHCPAgent in the same way as RouterL3Agent.

Change-Id: I7a0118ed4445b31186e24c545d4529867ce78c6c
Closes-bug: #1294965
Fix stack-show failed with a name in uuid format

We should get the information by stack_name after got 'None' queried by
stack_id, because heat support the stack_name in uuid format.

Change-Id: I1cf8abe2f8091e056cc621ad5c3f80a8a1da656a
Closes-Bug: #1296606
Document software config classes

These doc descriptions are used in the generated reference for
the template guide.

Change-Id: I2dcd3c53b274777d172ed0464ad09befd85f8426
Partial-Bug: #1294086
Store stack domain credentials for deployments

In order to allow stack domain credentials to be used for
deployment API operations, the stack_user_project_id needs to
be passed when a deployment resource is created and stored in the
database.

stack_user_project_id can then be used to compare to the context
tenant_id, just as for stack_get.

This change is needed since the blueprint hot-software-config and
blueprint instance-users landed at the same time. Some stack
operations can now be performed with credentials which are scoped
to a single resource. It would be very useful to allow these
credentials to be used for that polling for deployment metadata
too.

Closes-Bug: #1293234
Change-Id: Iea9d8bfe216d17fa2d3a9e9251102292be48486d
Error and NotFound inherit HeatException class

In a previous commit, Error and NotFound were copied from
oslo.common.exception and then oslo.common.exception was
deleted.  the NotFound exception class was used throughout
the code base.  A more correct solution would have been to use
the correct HeatException base class for user errors.

Bug: 1287445
Change-Id: I2926cd70d60dbc4f04e18881b0be3fbcd9a0c407
Properly encode heat.common.exception in rpc

Several types of exceptions can be raised inside heat.engine.service.
This patch ignores those which are in the heat.common.exception.py
file and encodes them into user errors.  Prior to this patch, only
some exceptions were properly encoded.  This patch assumes all
exceptions in heat.common.exception should be encoded in this way
in line with how oslo.messaging allows exmods to be specified.

Closes-Bug: 1287445

Change-Id: Ifb1901fbc32d574439e648643f49ae509d139aa7
Merge "Fix stack-show failed with a name in uuid format"
heat is enabled by default in devstack now

update documentation accordingly, as the previous first line is
no longer needed.

Change-Id: I9ececc394e05bc57f011b3508208f074908c7761
Merge "Document software config classes"
Add subnets as a dependency for router

Because router's external gateway depends on at least one external subnet,
so add subnets as an implicit dependency for the router.

Change-Id: Ib34636b440b3eee3993cd1030dab23312824510d
Closes-Bug:1279645
Merge "Error and NotFound inherit HeatException class"
Merge "Properly encode heat.common.exception in rpc"
Merge "heat is enabled by default in devstack now"
Merge "Reimplement DHCPAgent as net's property"
Don't create cloud-init user unless specified

When the the instance_user value from heat.conf is set to empty string/None and
the user doesn't specify Server's admin_user property, Heat will not create a
custom cloud-init user.

The instance_user config option and admin_user property are deprecated and will
be removed in Juno where this behaviour becomes the default.

AWS::EC2::Instance will still create a cloud-init user for CloudFormation
compatibility. In the absence of the instance_user config option, 'ec2-user'
will be used.

Closes-Bug: #1257410
Change-Id: I42dda36045f79be079b2030669284e9db71463d7
Merge "Store stack domain credentials for deployments"
Merge "Don't create cloud-init user unless specified"
Merge "Add subnets as a dependency for router"