Secure Key Management

This patchset implements the Secure Key Management feature
as described in Gerrit 1429, enabling support for native charms
deployed to machines provisioned by the Resource Orchestrator.

- Implement GetPublicKey, which will provide the public key to be
injected into new machines
- Support machine placement, to provision an existing machine for use
with juju
- Automatically create a SSH keypair to be used for provisioning
- Add method to check if a charm is deployed (CI)
- Update integration tests to use new ssh key workflow

Signed-off-by: Adam Israel <adam.israel@canonical.com>
Change-Id: Iacd2f02800484fd90945f9b9c1ac2d8951115a76
diff --git a/tests/test_ssh_keygen.py b/tests/test_ssh_keygen.py
new file mode 100644
index 0000000..3a129a3
--- /dev/null
+++ b/tests/test_ssh_keygen.py
@@ -0,0 +1,18 @@
+"""
+Test N2VC's ssh key generation
+"""
+import os
+import pytest
+from . import base
+import tempfile
+
+
+@pytest.mark.asyncio
+async def test_ssh_keygen(monkeypatch):
+    with tempfile.TemporaryDirectory() as tmpdirname:
+        monkeypatch.setitem(os.environ, "HOME", tmpdirname)
+
+        client = base.get_n2vc()
+
+        public_key = await client.GetPublicKey()
+        assert len(public_key)