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.
|
option should be used with caution.
|
||||||
--exclude-servers Do not export in template server resources
|
--exclude-servers Do not export in template server resources
|
||||||
--exclude-volumes Do not export in template volume resources
|
--exclude-volumes Do not export in template volume resources
|
||||||
|
--exclude-keypairs Do not export in template key pair resources
|
||||||
--generate-stack-data
|
--generate-stack-data
|
||||||
In addition to template, generate Heat stack data
|
In addition to template, generate Heat stack data
|
||||||
file.
|
file.
|
||||||
|
|
|
@ -69,6 +69,9 @@ def main(args=None):
|
||||||
parser.add_argument('--exclude-volumes', action='store_true',
|
parser.add_argument('--exclude-volumes', action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help="Do not export in template volume resources")
|
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',
|
parser.add_argument('--generate-stack-data', action='store_true',
|
||||||
default=False,
|
default=False,
|
||||||
help="In addition to template, generate Heat "
|
help="In addition to template, generate Heat "
|
||||||
|
@ -81,7 +84,9 @@ def main(args=None):
|
||||||
endpoint_type=args.endpoint_type,
|
endpoint_type=args.endpoint_type,
|
||||||
region_name=args.region)
|
region_name=args.region)
|
||||||
template = flame.template_generator
|
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)
|
args.generate_stack_data)
|
||||||
template.extract_data()
|
template.extract_data()
|
||||||
print("### Heat Template ###")
|
print("### Heat Template ###")
|
||||||
|
|
|
@ -135,9 +135,10 @@ class TemplateGenerator(object):
|
||||||
region_name=region_name)
|
region_name=region_name)
|
||||||
|
|
||||||
def extract_vm_details(self, exclude_servers, exclude_volumes,
|
def extract_vm_details(self, exclude_servers, exclude_volumes,
|
||||||
generate_data):
|
exclude_keypairs, generate_data):
|
||||||
self.exclude_servers = exclude_servers
|
self.exclude_servers = exclude_servers
|
||||||
self.exclude_volumes = exclude_volumes
|
self.exclude_volumes = exclude_volumes
|
||||||
|
self.exclude_keypairs = exclude_keypairs
|
||||||
self.generate_data = generate_data
|
self.generate_data = generate_data
|
||||||
|
|
||||||
self.subnets = self.build_data(self.neutron.subnet_list())
|
self.subnets = self.build_data(self.neutron.subnet_list())
|
||||||
|
@ -148,9 +149,10 @@ class TemplateGenerator(object):
|
||||||
self.ports = self.build_data(self.neutron.port_list())
|
self.ports = self.build_data(self.neutron.port_list())
|
||||||
self.external_networks = []
|
self.external_networks = []
|
||||||
|
|
||||||
self.keys = dict(
|
if not exclude_keypairs:
|
||||||
(key.name, (index, key))
|
self.keys = dict(
|
||||||
for index, key in enumerate(self.nova.keypair_list()))
|
(key.name, (index, key))
|
||||||
|
for index, key in enumerate(self.nova.keypair_list()))
|
||||||
|
|
||||||
if not exclude_servers:
|
if not exclude_servers:
|
||||||
self.flavors = self.build_data(self.nova.flavor_list())
|
self.flavors = self.build_data(self.nova.flavor_list())
|
||||||
|
@ -404,9 +406,18 @@ class TemplateGenerator(object):
|
||||||
properties['image'] = {'get_param': image_parameter_name}
|
properties['image'] = {'get_param': image_parameter_name}
|
||||||
|
|
||||||
# Keypair
|
# Keypair
|
||||||
if server.key_name and server.key_name in self.keys:
|
if server.key_name:
|
||||||
resource_key = "key_%d" % self.keys[server.key_name][0]
|
if self.exclude_keypairs or server.key_name not in self.keys:
|
||||||
properties['key_name'] = {'get_resource': resource_key}
|
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}
|
||||||
|
|
||||||
security_groups = self.build_secgroups(resource, server)
|
security_groups = self.build_secgroups(resource, server)
|
||||||
if security_groups:
|
if security_groups:
|
||||||
|
@ -535,8 +546,9 @@ class TemplateGenerator(object):
|
||||||
resources += self._extract_subnets()
|
resources += self._extract_subnets()
|
||||||
resources += self._extract_secgroups()
|
resources += self._extract_secgroups()
|
||||||
resources += self._extract_floating()
|
resources += self._extract_floating()
|
||||||
resources += self._extract_keys()
|
|
||||||
|
|
||||||
|
if not self.exclude_keypairs:
|
||||||
|
resources += self._extract_keys()
|
||||||
if not self.exclude_servers:
|
if not self.exclude_servers:
|
||||||
resources += self._extract_servers()
|
resources += self._extract_servers()
|
||||||
if not self.exclude_volumes:
|
if not self.exclude_volumes:
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue