def github_repo(): name = "bmu-{0}".format(uuid.uuid4().hex[:7]) print("Creating GitHub repo {0} ...".format(name)) create_resp = github.sync_post('user/repos', json={'name': name}) assert create_resp.ok yield create_resp.json() print("Deleting GitHub repo {0} ...".format(name)) delete_resp = github.sync_delete("repos/bmcorser/{0}".format(name)) assert delete_resp.ok
def ssh_wrapper(github_repo): WRAPPER_TEMPLATE = '''#!/bin/bash ssh -i {0} $1 $2''' key = RSA.generate(2048) private = tempfile.NamedTemporaryFile(delete=False) os.chmod(private.name, 0600) private.write(key.exportKey('PEM')) private.file.flush() private.close() public = tempfile.NamedTemporaryFile(delete=False) public.write(key.publickey().exportKey('OpenSSH')) public.file.flush() public.close() wrapper = tempfile.NamedTemporaryFile(delete=False) wrapper.write(WRAPPER_TEMPLATE.format(private.name)) wrapper.file.flush() wrapper.close() os.chmod(wrapper.name, 0755) with open(public.name, 'r') as pubkey_file: pubkey_content = pubkey_file.read() print('Adding temp pubkey to GitHub ...') create_resp = github.sync_post( 'user/keys', json={'title': github_repo['name'], 'key': pubkey_content} ) assert create_resp.ok key_id = create_resp.json()['id'] yield wrapper.name map(os.remove, (wrapper.name, private.name, public.name)) print('Deleting temp pubkey from GitHub ...') delete_resp = github.sync_delete("user/keys/{0}".format(key_id)) assert delete_resp.ok