Skip to content

Commit

Permalink
Add ability to combine roles into one role.
Browse files Browse the repository at this point in the history
  • Loading branch information
SpamapS committed Jun 6, 2013
1 parent 621a4dd commit d5e511f
Show file tree
Hide file tree
Showing 6 changed files with 31 additions and 3 deletions.
1 change: 1 addition & 0 deletions glance.yaml
Expand Up @@ -48,6 +48,7 @@ Resources:
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
Metadata:
OpenStack::Role: stateless
OpenStack::ImageBuilder::Elements: [ glance ]
heat:
access_key_id:
Expand Down
1 change: 0 additions & 1 deletion heat.yaml
Expand Up @@ -83,7 +83,6 @@ Resources:
{Ref: HeatApiImage}
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
UserData: "#!/bin/bash\ntouch /tmp/userdata-finished\necho Userdata finished $(date)\n"
HeatAPI:
Type: OS::Heat::InstanceGroup
Properties:
Expand Down
1 change: 1 addition & 0 deletions keystone.yaml
Expand Up @@ -38,6 +38,7 @@ Resources:
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
Metadata:
OpenStack::Role: stateless
OpenStack::ImageBuilder::Elements: [ keystone ]
heat:
access_key_id:
Expand Down
29 changes: 28 additions & 1 deletion merge.py
@@ -1,7 +1,33 @@
import sys
import yaml
import argparse

templates = list(sys.argv[1:])
parser = argparse.ArgumentParser()
parser.add_argument('templates', nargs='+')
parser.add_argument('--master-role', nargs='?',
help='Translate slave_roles to this')
parser.add_argument('--slave-roles', nargs='*',
help='Translate all of these to master_role')

args = parser.parse_args()

templates = args.templates

def _translate_role(role):
global args
if not args.master_role:
return role
if role == args.master_role:
return role
if role not in args.slave_roles:
return role
return args.master_role

def translate_role(role):
r = _translate_role(role)
if not isinstance(r, basestring):
raise Exception('%s -> %r' % (role, r))
return r

errors = []
end_template={'HeatTemplateFormatVersion': '2012-12-12',
Expand Down Expand Up @@ -39,6 +65,7 @@
# XXX Assuming ImageId is always a Ref
del end_template['Parameters'][rbody['Properties']['ImageId']['Ref']]
role = rbody.get('Metadata', {}).get('OpenStack::Role', r)
role = translate_role(role)
if role != r:
resource_changes.append((r, role))
if role in end_template.get('Resources', {}):
Expand Down
1 change: 1 addition & 0 deletions quantum.yaml
Expand Up @@ -51,6 +51,7 @@ Resources:
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
Metadata:
OpenStack::Role: networking
OpenStack::ImageBuilder::Elements: [ quantum ]
heat:
access_key_id:
Expand Down
1 change: 0 additions & 1 deletion rabbitmq.yaml
Expand Up @@ -24,7 +24,6 @@ Resources:
{Ref: RabbitMQImage}
InstanceType: {Ref: InstanceType}
KeyName: {Ref: KeyName}
UserData: "#!/bin/bash\ntouch /tmp/userdata-finished\necho Userdata finished $(date)\n"
RabbitMQPasswordHandle:
Type: AWS::CloudFormation::WaitConditionHandle
RabbitMQPassword:
Expand Down

0 comments on commit d5e511f

Please sign in to comment.