Moves keypair_info from cloud to proxy object

This makes keypair_info compatible with new sdk version

Change-Id: I09c75717a620272904b023179c726a19c4bca000
This commit is contained in:
anbanerj
2022-02-01 17:43:52 +05:30
parent 86b573883a
commit 595f7d1093
3 changed files with 85 additions and 64 deletions

View File

@@ -1 +1,11 @@
keypair_name: shade_keypair keypair_name: shade_keypair
expected_fields:
- created_at
- fingerprint
- id
- is_deleted
- name
- private_key
- public_key
- type
- user_id

View File

@@ -1,13 +1,17 @@
--- ---
- name: Create keypair (non-existing) - name: Create keypair (non-existing)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
state: present state: present
register: register: keypair
keypair
- name: Get list of keypairs - name: Get list of all keypairs
openstack.cloud.keypair_info:
cloud: "{{ cloud }}"
register: keypairs_all
- name: Get list of keypairs with filter
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
@@ -16,19 +20,37 @@
- name: Ensure that list of keypairs contains single element - name: Ensure that list of keypairs contains single element
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 1 - keypairs['keypairs']|length == 1
- name: Assert fields
assert:
that:
- item in keypairs.keypairs.0.keys()
loop: "{{ expected_fields }}"
# This assert verifies that Ansible is capable serializing data returned by SDK # This assert verifies that Ansible is capable serializing data returned by SDK
- name: Ensure private key is returned - name: Ensure public key is returned
assert: assert:
that: that:
- keypair.key.public_key is defined and keypair.key.public_key - keypair.key.public_key is defined and keypair.key.public_key
- name: Create another keypair
openstack.cloud.keypair:
cloud: "{{ cloud }}"
name: "{{ keypair_name }}-2"
state: present
- name: Delete keypair (non-existing) - name: Delete keypair (non-existing)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "non-existing"
state: absent state: absent
- name: Delete keypair
openstack.cloud.keypair:
cloud: "{{ cloud }}"
name: "{{ keypair_name }}"
state: absent
- name: Get list of keypairs - name: Get list of keypairs
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
@@ -39,20 +61,26 @@
- name: Ensure that list of keypairs is empty - name: Ensure that list of keypairs is empty
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 0 - keypairs['keypairs']|length == 0
- name: Delete another keypair
openstack.cloud.keypair:
cloud: "{{ cloud }}"
name: "{{ keypair_name }}-2"
state: absent
- name: Generate test key file - name: Generate test key file
user: user:
name: "{{ ansible_env.USER }}" name: "{{ ansible_env.USER }}"
generate_ssh_key: yes generate_ssh_key: yes
ssh_key_file: .ssh/shade_id_rsa ssh_key_file: .ssh/shade_id_rsa
- name: Create keypair (file) - name: Create keypair (file)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
state: present state: present
public_key_file: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa.pub" public_key_file: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa.pub"
- name: Get list of keypairs - name: Get list of keypairs
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
@@ -63,13 +91,13 @@
- name: Ensure that list of keypairs contains single element - name: Ensure that list of keypairs contains single element
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 1 - keypairs['keypairs']|length == 1
- name: Delete keypair (file) - name: Delete keypair (file)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
state: absent state: absent
- name: Get list of keypairs - name: Get list of keypairs
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
@@ -80,14 +108,14 @@
- name: Ensure that list of keypairs is empty - name: Ensure that list of keypairs is empty
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 0 - keypairs['keypairs']|length == 0
- name: Create keypair (key) - name: Create keypair (key)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
state: present state: present
public_key: "{{ lookup('file', '~/.ssh/shade_id_rsa.pub') }}" public_key: "{{ lookup('file', '~/.ssh/shade_id_rsa.pub') }}"
- name: Get list of keypairs - name: Get list of keypairs
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
@@ -98,13 +126,13 @@
- name: Ensure that list of keypairs contains single element - name: Ensure that list of keypairs contains single element
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 1 - keypairs['keypairs']|length == 1
- name: Delete keypair (key) - name: Delete keypair (key)
openstack.cloud.keypair: openstack.cloud.keypair:
cloud: "{{ cloud }}" cloud: "{{ cloud }}"
name: "{{ keypair_name }}" name: "{{ keypair_name }}"
state: absent state: absent
- name: Get list of keypairs - name: Get list of keypairs
openstack.cloud.keypair_info: openstack.cloud.keypair_info:
@@ -115,14 +143,14 @@
- name: Ensure that list of keypairs is empty - name: Ensure that list of keypairs is empty
assert: assert:
that: that:
- keypairs['openstack_keypairs']|length == 0 - keypairs['keypairs']|length == 0
- name: Delete test key pub file - name: Delete test key pub file
file: file:
name: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa.pub" name: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa.pub"
state: absent state: absent
- name: Delete test key pvt file - name: Delete test key pvt file
file: file:
name: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa" name: "{{ ansible_env.HOME }}/.ssh/shade_id_rsa"
state: absent state: absent

View File

@@ -51,10 +51,11 @@ EXAMPLES = '''
''' '''
RETURN = ''' RETURN = '''
openstack_keypairs: keypairs:
description: description:
- Lists keypairs that are associated with the account. - Lists keypairs that are associated with the account.
type: complex type: list
elements: dict
returned: always returned: always
contains: contains:
created_at: created_at:
@@ -120,31 +121,13 @@ class KeyPairInfoModule(OpenStackModule):
) )
def run(self): def run(self):
name = self.params['name'] filters = {k: self.params[k] for k in
user_id = self.params['user_id'] ['user_id', 'name', 'limit', 'marker']
limit = self.params['limit'] if self.params[k] is not None}
marker = self.params['marker'] keypairs = self.conn.search_keypairs(name_or_id=self.params['name'],
filters=filters)
filters = {} result = [raw.to_dict(computed=False) for raw in keypairs]
data = [] self.exit(changed=False, keypairs=result)
if user_id:
filters['user_id'] = user_id
if limit:
filters['limit'] = limit
if marker:
filters['marker'] = marker
result = self.conn.search_keypairs(name_or_id=name,
filters=filters)
raws = [raw if isinstance(raw, dict) else raw.to_dict()
for raw in result]
for raw in raws:
raw.pop('location')
data.append(raw)
self.exit(changed=False, openstack_keypairs=data)
def main(): def main():