X-Git-Url: https://osm.etsi.org/gitweb/?p=osm%2FN2VC.git;a=blobdiff_plain;f=modules%2Flibjuju%2Fjuju%2Fprovisioner.py;h=d937cad41d9fb41323c576e8016a7c4df6d8502d;hp=2886574c77d009ca1f330aa04e968a7dbf2ed06b;hb=d4ec83bbe1d74a7432ea472dfe5b748d1611bde4;hpb=caf6efba68120623038efc361cf46e1f60de452b diff --git a/modules/libjuju/juju/provisioner.py b/modules/libjuju/juju/provisioner.py index 2886574..d937cad 100644 --- a/modules/libjuju/juju/provisioner.py +++ b/modules/libjuju/juju/provisioner.py @@ -1,15 +1,26 @@ -from .client import client - -import paramiko +# Copyright 2019 Canonical Ltd. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. import os import re -import tempfile import shlex -from subprocess import ( - CalledProcessError, -) +import tempfile import uuid +from subprocess import CalledProcessError +import paramiko + +from .client import client arches = [ [re.compile(r"amd64|x86_64"), "amd64"], @@ -18,6 +29,7 @@ arches = [ [re.compile(r"aarch64"), "arm64"], [re.compile(r"ppc64|ppc64el|ppc64le"), "ppc64el"], [re.compile(r"s390x?"), "s390x"], + ] @@ -154,29 +166,21 @@ class SSHProvisioner: if the authentication fails """ - # TODO: Test this on an image without the ubuntu user setup. - - auth_user = self.user ssh = None try: # Run w/o allocating a pty, so we fail if sudo prompts for a passwd ssh = self._get_ssh_client( self.host, - "ubuntu", + self.user, self.private_key_path, ) - stdout, stderr = self._run_command(ssh, "sudo -n true", pty=False) except paramiko.ssh_exception.AuthenticationException as e: raise e - else: - auth_user = "ubuntu" finally: if ssh: ssh.close() - # if the above fails, run the init script as the authenticated user - # Infer the public key public_key = None public_key_path = "{}.pub".format(self.private_key_path) @@ -194,7 +198,7 @@ class SSHProvisioner: try: ssh = self._get_ssh_client( self.host, - auth_user, + self.user, self.private_key_path, ) @@ -317,10 +321,10 @@ class SSHProvisioner: client_facade = client.ClientFacade.from_connection(connection) results = await client_facade.ProvisioningScript( - data_dir, - disable_package_commands, - machine_id, - nonce, + data_dir=data_dir, + disable_package_commands=disable_package_commands, + machine_id=machine_id, + nonce=nonce, ) self._run_configure_script(results.script)