From d37455e88a4066d3abcdddae8434bba2c494cfb2 Mon Sep 17 00:00:00 2001 From: Doug Hellmann Date: Fri, 28 Apr 2017 21:53:16 +0000 Subject: [PATCH] add support for ssh keypairs Change-Id: Idf34efddd04862b9a840ce4fa3023f1126779215 Signed-off-by: Doug Hellmann --- demo/tiny-resources.yml | 2 ++ downpour/export.py | 4 ++++ downpour/resolver.py | 16 ++++++++++++++++ 3 files changed, 22 insertions(+) diff --git a/demo/tiny-resources.yml b/demo/tiny-resources.yml index 4ecba30..fac418c 100644 --- a/demo/tiny-resources.yml +++ b/demo/tiny-resources.yml @@ -1,3 +1,5 @@ # Resource file for downpour using the instance created in tiny.yml. servers: - name: downpour-demo-tiny +keypairs: + - name: downpour-demo \ No newline at end of file diff --git a/downpour/export.py b/downpour/export.py index b344db6..67ca6c1 100644 --- a/downpour/export.py +++ b/downpour/export.py @@ -42,6 +42,10 @@ def export_data(cloud, config, args): # automatically. to_export = resources.load(args.resource_file) + for keypair_info in to_export.keypairs: + keypair = cloud.get_keypair(keypair_info.name) + tasks.extend(res.keypair(keypair)) + for image_info in to_export.images: image = cloud.get_image(image_info.name) tasks.extend(res.image(image)) diff --git a/downpour/resolver.py b/downpour/resolver.py index c8526e7..9d21335 100644 --- a/downpour/resolver.py +++ b/downpour/resolver.py @@ -61,6 +61,22 @@ class Resolver: }, } + def keypair(self, keypair): + if ('keypair', keypair.name) in self._memo: + return + self._memo.add(('keypair', keypair.name)) + yield { + 'name': 'Add public key {}'.format(keypair.name), + 'os_keypair': { + 'name': keypair.name, + 'public_key': keypair.public_key, + }, + 'register': self._mk_var_name('key'), + } + yield self._map_uuids( + 'keypair', keypair.name, keypair.id, 'key.id', + ) + def security_group(self, group): if ('security_group', group.id) in self._memo: return