def test_import_key_pair(self): name = 'cb-kpimport-{0}'.format(helpers.get_uuid()) public_key, _ = cb_helpers.generate_key_pair() kp = self.provider.security.key_pairs.create( name=name, public_key_material=public_key) with helpers.cleanup_action(lambda: kp.delete()): self.assertIsNone(kp.material, "Private KeyPair material should" " be None when key is imported.")
def create(self, name, public_key_material=None): log.debug("Creating Key Pair Service %s", name) AWSKeyPair.assert_valid_resource_name(name) private_key = None if not public_key_material: public_key_material, private_key = cb_helpers.generate_key_pair() try: kp = self.svc.create('import_key_pair', KeyName=name, PublicKeyMaterial=public_key_material) kp.material = private_key return kp except ClientError as e: if e.response['Error']['Code'] == 'InvalidKeyPair.Duplicate': raise DuplicateResourceException( 'Keypair already exists with name {0}'.format(name)) else: raise e
def create(self, name, public_key_material=None): log.debug("Creating a new key pair with the name: %s", name) OpenStackKeyPair.assert_valid_resource_name(name) existing_kp = self.find(name=name) if existing_kp: raise DuplicateResourceException( 'Keypair already exists with name {0}'.format(name)) private_key = None if not public_key_material: public_key_material, private_key = cb_helpers.generate_key_pair() kp = self.provider.nova.keypairs.create(name, public_key=public_key_material) cb_kp = OpenStackKeyPair(self.provider, kp) cb_kp.material = private_key return cb_kp
def create(self, name, public_key_material=None): GCEKeyPair.assert_valid_resource_name(name) private_key = None if not public_key_material: public_key_material, private_key = cb_helpers.generate_key_pair() # TODO: Add support for other formats not assume ssh-rsa elif "ssh-rsa" not in public_key_material: public_key_material = "ssh-rsa {}".format(public_key_material) kp_info = GCEKeyPair.GCEKeyInfo(name, public_key_material) metadata_value = json.dumps(kp_info._asdict()) try: helpers.add_metadata_item(self.provider, GCEKeyPair.KP_TAG_PREFIX + name, metadata_value) return GCEKeyPair(self.provider, kp_info, private_key) except googleapiclient.errors.HttpError as err: if err.resp.get('content-type', '').startswith('application/json'): message = (json.loads(err.content).get('error', {}).get( 'errors', [{}])[0].get('message')) if "duplicate keys" in message: raise DuplicateResourceException( 'A KeyPair with name {0} already exists'.format(name)) raise
def create(self, name, public_key_material=None): AzureKeyPair.assert_valid_resource_name(name) key_pair = self.get(name) if key_pair: raise DuplicateResourceException( 'Keypair already exists with name {0}'.format(name)) private_key = None if not public_key_material: public_key_material, private_key = cb_helpers.generate_key_pair() entity = { 'PartitionKey': AzureKeyPairService.PARTITION_KEY, 'RowKey': str(uuid.uuid4()), 'Name': name, 'Key': public_key_material } self.provider.azure_client.create_public_key(entity) key_pair = self.get(name) key_pair.material = private_key return key_pair