Deny updates to AWS::EC2::VolumeAttachment

In accordance with AWS docs [1] AWS VolumeAttachment does not support
updates of any of its properties.

[1] http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-ebs-volumeattachment.html

Change-Id: I6d79536c68bed60d9b86c662147e35a9b2da6c1c
Closes-Bug: #1340096
Don't import Properties class directly

Import the module, as required by H302:
http://docs.openstack.org/developer/hacking/#imports

Change-Id: I9dd15d2404bed0206442724c9b681b7f17ebea60
Error class can accept message with format characters

Since the Error class is designed to simply accept any message string,
treating the message text as a format string causes errors if the
error message has format characters. This changes Error to have its
own format string that just echos the passed in message.

Change-Id: I1161d5e177dff860e180f845405d536e18222b23
Closes-Bug: 1361471
Improve docker resource deletion

handle_delete and check_delete_complete were not handling NotFound
exceptions

Change-Id: I6e8100ff37157f6a06837307cea31af66a3403af
Closes-Bug: #1296758
Implements stack lifecycle plugpoints

Stack lifecycle plugpoints have been proposed in
http://summit.openstack.org/cfp/details/86
and
https://etherpad.openstack.org/p/juno-summit-heat-callbacks

Implements: blueprint stack-lifecycle-plugpoint
Change-Id: I8c7b5d0113392e54fe0f35933c2c10da277fd90b
ResourceGroup build from list of resource names

This changes ResourceGroup internal implementation to be driven by
a list of resource names rather than a count of resources.

This maintains the current behaviour of sequential number resource
names, while allowing subclasses to choose a completely different
resource name scheme.

Change-Id: I17d046155f8d830ced789ede6a969ac4f125576d
Partial-Blueprint: deployment-multiple-servers
ResourceGroup make do_prop_replace class method

This refactor allows subclasses to override _do_prop_replace so
that properties can be populated by the specific needs of the subclass.

Change-Id: I1ebe382b8efd010e128fa9c452d5ddb580237c1e
Partial-Blueprint: deployment-multiple-servers
Provide access to outputs from OS::Heat::ResourceGroup

To align with the related OS::Heat::AutoScalingGroup change:
Ib9e830e0c54602ac456d64179e1df30f0778906d

This adds an 'attributes' attribute to the OS::Heat::ResourceGroup resource
so that the following:
  {'get_attr': ['my_asg', 'attributes', 'networks', '<network_name>', 0]}
returns a mapping from resource names to the corresponding IP addresses.

There is no need for an outputs_list attribute since the following already
returns a list:
  {'get_attr': ['my_rg', 'networks', '<network_name>', 0]}

To align ResourceGroup with OS::Heat::AutoScalingGroup, there will
be a proposed change to OS::Heat::AutoScalingGroup to rename the
following attributes:
- outputs -> attributes
- outputs_list -> attributes_list

Change-Id: Id51f23533ae75ca5d883a4f67e75ac9513a67264
Implement OS::Heat::SoftwareDeployments

This is a resource which subclasses ResourceGroup to deploy a group
of OS::Heat::SoftwareDeployment resources

The main difference in properties between this resource and
OS::Heat::SoftwareDeployment is that it has a 'servers' property
instead of 'server'. The servers property expects a map of
resource-name/nova-uuid pairs. The resource name is used as the
deployment resource name inside the group, and the nova-uuid is used
as the server to deploy to.

The attributes deploy_stdouts, deploy_stderrs, deploy_status_codes
each return a map where the key is the server name and the value
is the respective attribute from the deployment resource.

Change-Id: Ide1e8fb57d45062e5d459b484135a5cad6d2c7dc
Partial-Blueprint: deployment-multiple-servers
Implement OS::Heat::StructuredDeployments

This is a resource which subclasses SoftwareDeployments to deploy a group
of OS::Heat::StructuredDeployment resources

Change-Id: I5f9603c68bb7cd81ef60a6b2ba965e5b8e93887a
Implements-Blueprint: deployment-multiple-servers
Import oslo.i18n and port heat bins to use oslo.i18n

Import oslo.i18n and port heat bins to use oslo.i18n

blueprint oslo-i18n

Change-Id: If30df87d7d2b8047225f0c413d338ace975062b1
Switch heat api to oslo i18n

Switch files in heat/api directory to oslo i18n.

blueprint oslo-i18n

Change-Id: Ic0b63bcf8a2ae22ff075d362cc027d01986cf8e2
Implement OS::Sahara::Cluster resource

* This patch implements resource for Hadoop cluster provisioned by
  Sahara based on Sahara's cluster template.
* Heat template for stack based on this resource should have minimal set
  of fields needed to provision cluster.
* To successfully provision cluster the following steps should be done:
  - Sahara enabled and working in your env
  - Sahara contains valid cluster template [1]
  - Sahara's image registry contains registered image with preinstalled
    Hadoop components [2]

[1] http://docs.openstack.org/developer/sahara/restapi/rest_api_v1.0.html#create-cluster-template
[2] http://docs.openstack.org/developer/sahara/devref/quickstart.html#upload-image-to-glance

Co-Authored-By: Pavlo Shchelokovskyy <pshchelokovskyy@mirantis.com>

Implements: blueprint sahara-as-heat-resource

Change-Id: If470511cbb88349f47a61a35b1a19ba7c68efd83
Add validate function for AWS::EC2::EIPAssociation

This is second part of blueprint implement-ec2eip-updatable to
add validate function for AWS::EC2::EIPAssociation

Implements blueprint implement-ec2eip-updatable

Change-Id: I907eddef943a4ecf5c64f2358b6fd6a7e152497c
Modify the way to get 'network_id' of the port

This patch change to get 'network_id' from port info, instead of
from subnet info.

Implements blueprint implement-ec2eip-updatable

Change-Id: I51ed7e71af4c7223df9e399e189389fd655a9746
Fix delete failed because association creation failed

Modify if the eip association is not created successful,
don't try to delete it.

Implements blueprint implement-ec2eip-updatable

Change-Id: Ifa883c31214c4cc367751766efcb6b775d1b4ffe
Refactor functions in eip.py

Refactor functions in eip.py for some similar codes.

Implements blueprint implement-ec2eip-updatable

Change-Id: I44d49fd1cc126b5cc318b9ccbe317623f6170ccf
Implement BlockDeviceMappings for LaunchConfiguration

We should support the BlockDeviceMappings for
AWS::AutoScaling::LaunchConfiguration resource to be
compatible with AWSCloudFormation, thus we can take
BlockDeviceMappings for instances in AutoScalingGroup
and InstanceGroup.

Implements blueprint implement-launchconfiguration-bdm

Change-Id: I26b13b8e98190fa4bb4223b5eed9970648d7ee35
Fix a wrong argument name at Heat keystoneclient plugin

After this fix, the Heat keystoneclient plugin should pick up
the right region to authenticate.

Change-Id: I9bb5fe5fd767997b4118cf674a17de9f8be503fe
Closes-Bug: #1213291
Merge "Implements stack lifecycle plugpoints"