From 1ddca81e7e1863b0a7d45d1b9b9d5cabccd4e628 Mon Sep 17 00:00:00 2001 From: Adam Israel Date: Fri, 14 Sep 2018 11:32:35 -0400 Subject: [PATCH] Full charm support This work adds the ability to deploy charms directly to an externally instantiated VM, which is expected to have N2VC's public key injected into it, by using the VCA's manual provisioning function. This allows the VCA to ssh to the target machine and provision it. The charm will then be deployed directly to that machine, allowing the charm to fully manage the VNF lifecycle. Change-Id: I935e432fbd60a9a6bc10a499ae1b8e07c1e70c14 Signed-off-by: Adam Israel --- n2vc/vnf.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/n2vc/vnf.py b/n2vc/vnf.py index a1fcfe3..9f04405 100644 --- a/n2vc/vnf.py +++ b/n2vc/vnf.py @@ -335,14 +335,23 @@ class N2VC: ######################################################## to = "" if machine_spec.keys(): - if all(k in machine_spec for k in ['host', 'user']): - # Enlist an existing machine as a Juju unit - machine = await model.add_machine(spec='ssh:{}@{}:{}'.format( - machine_spec['user'], - machine_spec['host'], - self.GetPrivateKeyPath(), - )) + if all(k in machine_spec for k in ['hostname', 'username']): + # Get the path to the previously generated ssh private key. + # Machines we're manually provisioned must have N2VC's public + # key injected, so if we don't have a keypair, raise an error. + private_key_path = "" + + # Enlist the existing machine in Juju + machine = await self.model.add_machine( + spec='ssh:{}@{}:{}'.format( + specs['host'], + specs['user'], + private_key_path, + ) + ) + # Set the machine id that the deploy below will use. to = machine.id + pass ####################################### # Get the initial charm configuration # -- 2.25.1