mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-06-02 06:19:10 -07:00
[PR #7369/1bf5a44a backport][stable-7] Fix lxc plugin options (#7371)
Fix lxc plugin options (#7369) * Fixture for liblxc Add a fixture to allow testing the lxc connection plugin both with and without liblxc being present. Also change the test from unittest to pytest. * Update liblxc error message The error is not specific to python2, so remove the version. Also add a test for it. * Migrate to options Because the lxc plugin was only using PlayContext properties, using host vars like `ansible_lxc_host` didn't work. This is fixed by instead using the `get_option` method inherited from `AnsiblePlugin`. The options are not yet available in the `__init__` function, so the determination of the container name is moved to the `_connect` method, which is the first time it is actually needed. The default for the `remote_addr` option is removed, because the string `inventory_hostname` is not very useful. At all. This seams to have been spread with copy&paste and a bit of cargo culting. The variable priority already takes care of setting the value. * Add changelog fragment * Fix for Py2.7 `TypeError: super() takes at least 1 argument (0 given)` * Add plugin type to changelog fragment. * Restore untemplated default This partially reverts commit429d8c8cfb
. --------- Co-authored-by: Felix Fontein <felix@fontein.de> (cherry picked from commit1bf5a44a77
) Co-authored-by: Corubba <97832352+corubba@users.noreply.github.com>
This commit is contained in:
parent
07d0de5640
commit
d4e831f31d
3 changed files with 77 additions and 11 deletions
|
@ -60,7 +60,7 @@ class Connection(ConnectionBase):
|
|||
def __init__(self, play_context, new_stdin, *args, **kwargs):
|
||||
super(Connection, self).__init__(play_context, new_stdin, *args, **kwargs)
|
||||
|
||||
self.container_name = self._play_context.remote_addr
|
||||
self.container_name = None
|
||||
self.container = None
|
||||
|
||||
def _connect(self):
|
||||
|
@ -68,12 +68,14 @@ class Connection(ConnectionBase):
|
|||
super(Connection, self)._connect()
|
||||
|
||||
if not HAS_LIBLXC:
|
||||
msg = "lxc bindings for python2 are not installed"
|
||||
msg = "lxc python bindings are not installed"
|
||||
raise errors.AnsibleError(msg)
|
||||
|
||||
if self.container:
|
||||
return
|
||||
|
||||
self.container_name = self.get_option('remote_addr')
|
||||
|
||||
self._display.vvv("THIS IS A LOCAL LXC DIR", host=self.container_name)
|
||||
self.container = _lxc.Container(self.container_name)
|
||||
if self.container.state == "STOPPED":
|
||||
|
@ -118,7 +120,7 @@ class Connection(ConnectionBase):
|
|||
super(Connection, self).exec_command(cmd, in_data=in_data, sudoable=sudoable)
|
||||
|
||||
# python2-lxc needs bytes. python3-lxc needs text.
|
||||
executable = to_native(self._play_context.executable, errors='surrogate_or_strict')
|
||||
executable = to_native(self.get_option('executable'), errors='surrogate_or_strict')
|
||||
local_cmd = [executable, '-c', to_native(cmd, errors='surrogate_or_strict')]
|
||||
|
||||
read_stdout, write_stdout = None, None
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue