Add new option to exclude key pairs from template
When option used, nova key pairs will not be exported as resources in generated template. Change-Id: I763f0ab151a7740144240fdae750c7c31cd24cd0
This commit is contained in:
parent
3de772dbd6
commit
154afdee8c
|
@ -52,6 +52,7 @@ Usage
|
|||
option should be used with caution.
|
||||
--exclude-servers Do not export in template server resources
|
||||
--exclude-volumes Do not export in template volume resources
|
||||
--exclude-keypairs Do not export in template key pair resources
|
||||
--generate-stack-data
|
||||
In addition to template, generate Heat stack data
|
||||
file.
|
||||
|
|
|
@ -69,6 +69,9 @@ def main(args=None):
|
|||
parser.add_argument('--exclude-volumes', action='store_true',
|
||||
default=False,
|
||||
help="Do not export in template volume resources")
|
||||
parser.add_argument('--exclude-keypairs', action='store_true',
|
||||
default=False,
|
||||
help="Do not export in template key pair resources")
|
||||
parser.add_argument('--generate-stack-data', action='store_true',
|
||||
default=False,
|
||||
help="In addition to template, generate Heat "
|
||||
|
@ -81,7 +84,9 @@ def main(args=None):
|
|||
endpoint_type=args.endpoint_type,
|
||||
region_name=args.region)
|
||||
template = flame.template_generator
|
||||
template.extract_vm_details(args.exclude_servers, args.exclude_volumes,
|
||||
template.extract_vm_details(args.exclude_servers,
|
||||
args.exclude_volumes,
|
||||
args.exclude_keypairs,
|
||||
args.generate_stack_data)
|
||||
template.extract_data()
|
||||
print("### Heat Template ###")
|
||||
|
|
|
@ -135,9 +135,10 @@ class TemplateGenerator(object):
|
|||
region_name=region_name)
|
||||
|
||||
def extract_vm_details(self, exclude_servers, exclude_volumes,
|
||||
generate_data):
|
||||
exclude_keypairs, generate_data):
|
||||
self.exclude_servers = exclude_servers
|
||||
self.exclude_volumes = exclude_volumes
|
||||
self.exclude_keypairs = exclude_keypairs
|
||||
self.generate_data = generate_data
|
||||
|
||||
self.subnets = self.build_data(self.neutron.subnet_list())
|
||||
|
@ -148,6 +149,7 @@ class TemplateGenerator(object):
|
|||
self.ports = self.build_data(self.neutron.port_list())
|
||||
self.external_networks = []
|
||||
|
||||
if not exclude_keypairs:
|
||||
self.keys = dict(
|
||||
(key.name, (index, key))
|
||||
for index, key in enumerate(self.nova.keypair_list()))
|
||||
|
@ -404,7 +406,16 @@ class TemplateGenerator(object):
|
|||
properties['image'] = {'get_param': image_parameter_name}
|
||||
|
||||
# Keypair
|
||||
if server.key_name and server.key_name in self.keys:
|
||||
if server.key_name:
|
||||
if self.exclude_keypairs or server.key_name not in self.keys:
|
||||
key_parameter_name = "%s_key" % resource_name
|
||||
description = ("Key for server %s" % resource_name)
|
||||
constraints = [{'custom_constraint': "nova.keypair"}]
|
||||
resource.add_parameter(key_parameter_name, description,
|
||||
default=server.key_name,
|
||||
constraints=constraints)
|
||||
properties['key_name'] = {'get_param': key_parameter_name}
|
||||
else:
|
||||
resource_key = "key_%d" % self.keys[server.key_name][0]
|
||||
properties['key_name'] = {'get_resource': resource_key}
|
||||
|
||||
|
@ -535,8 +546,9 @@ class TemplateGenerator(object):
|
|||
resources += self._extract_subnets()
|
||||
resources += self._extract_secgroups()
|
||||
resources += self._extract_floating()
|
||||
resources += self._extract_keys()
|
||||
|
||||
if not self.exclude_keypairs:
|
||||
resources += self._extract_keys()
|
||||
if not self.exclude_servers:
|
||||
resources += self._extract_servers()
|
||||
if not self.exclude_volumes:
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue