blob: 8292d483054afef23b4ae1a94d6aa27d367cf5d1 [file] [log] [blame]
#!/usr/bin/env python
# encoding: utf-8
from base64 import b64decode
from ec2stack.providers import cloudstack
from ec2stack import helpers
from ec2stack.providers.cloudstack import requester
from ec2stack import errors
@helpers.authentication_required
def create_keypair():
helpers.require_parameters(['KeyName'])
response = _create_keypair_request()
return _create_keypair_response(response)
def _create_keypair_request():
args = {'command': 'createSSHKeyPair', 'name': helpers.get('KeyName')}
response = requester.make_request(args)
response = response['createsshkeypairresponse']
return response
def _create_keypair_response(response):
if 'errortext' in response:
errors.duplicate_keypair_name()
else:
response = response['keypair']
return {
'template_name_or_list': 'create_keypair.xml',
'response_type': 'CreateKeyPairResponse',
'response': response
}
@helpers.authentication_required
def delete_keypair():
helpers.require_parameters(['KeyName'])
_delete_keypair_request()
return _delete_keypair_response()
def _delete_keypair_request():
args = {'command': 'deleteSSHKeyPair', 'name': helpers.get('KeyName')}
response = requester.make_request(args)
return response
def _delete_keypair_response():
return {
'template_name_or_list': 'status.xml',
'response_type': 'DeleteKeyPairResponse',
'return': 'true'
}
@helpers.authentication_required
def describe_keypairs():
args = {'command': 'listSSHKeyPairs'}
response = cloudstack.describe_item(
args, 'sshkeypair', errors.invalid_keypair_name, 'KeyName'
)
return _describe_keypair_response(
response
)
def _describe_keypair_response(response):
return {
'template_name_or_list': 'keypairs.xml',
'response_type': 'DescribeKeyPairsResponse',
'response': response
}
@helpers.authentication_required
def import_keypair():
helpers.require_parameters(['KeyName', 'PublicKeyMaterial'])
response = _import_keypair_request()
return _import_keypair_response(response)
def _import_keypair_request():
args = {'command': 'registerSSHKeyPair', 'name': helpers.get('KeyName'),
'publickey': b64decode(helpers.get('PublicKeyMaterial'))}
response = requester.make_request(args)
response = response['registersshkeypairresponse']
return response
def _import_keypair_response(response):
if 'errortext' in response:
errors.duplicate_keypair_name()
else:
response = response['keypair']
return {
'template_name_or_list': 'create_keypair.xml',
'response_type': 'ImportKeyPairResponse',
'response': response
}