From 36edaaa6eaae92e63b0c2c90082ad06ae7ec8024 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Mon, 25 Mar 2024 18:43:14 +0100 Subject: [PATCH] Revert "[PR #7980/74c15c12 backport][stable-7] Updates `lxd_container` to support new LXD API (#8045)" This reverts commit 8b2e658fc0747ff82153c7fbaff2b22cb9f14cdf. (Considering this again, this looks a lot more like a feature than a bugfix. I shouldn't have backported it.) --- .../lxd-instances-api-endpoint-added.yml | 2 -- plugins/modules/lxd_container.py | 25 +++++++------------ 2 files changed, 9 insertions(+), 18 deletions(-) delete mode 100644 changelogs/fragments/lxd-instances-api-endpoint-added.yml diff --git a/changelogs/fragments/lxd-instances-api-endpoint-added.yml b/changelogs/fragments/lxd-instances-api-endpoint-added.yml deleted file mode 100644 index 3e7aa3b50e..0000000000 --- a/changelogs/fragments/lxd-instances-api-endpoint-added.yml +++ /dev/null @@ -1,2 +0,0 @@ -minor_changes: - - "lxd_container - uses ``/1.0/instances`` API endpoint, if available. Falls back to ``/1.0/containers`` or ``/1.0/virtual-machines``. Fixes issue when using Incus or LXD 5.19 due to migrating to ``/1.0/instances`` endpoint (https://github.com/ansible-collections/community.general/pull/7980)." diff --git a/plugins/modules/lxd_container.py b/plugins/modules/lxd_container.py index 9fd1b183be..36af214c43 100644 --- a/plugins/modules/lxd_container.py +++ b/plugins/modules/lxd_container.py @@ -436,12 +436,12 @@ ANSIBLE_LXD_DEFAULT_URL = 'unix:/var/lib/lxd/unix.socket' # CONFIG_PARAMS is a list of config attribute names. CONFIG_PARAMS = [ - 'architecture', 'config', 'devices', 'ephemeral', 'profiles', 'source', 'type' + 'architecture', 'config', 'devices', 'ephemeral', 'profiles', 'source' ] # CONFIG_CREATION_PARAMS is a list of attribute names that are only applied # on instance creation. -CONFIG_CREATION_PARAMS = ['source', 'type'] +CONFIG_CREATION_PARAMS = ['source'] class LXDContainerManagement(object): @@ -467,6 +467,13 @@ class LXDContainerManagement(object): self.type = self.module.params['type'] + # LXD Rest API provides additional endpoints for creating containers and virtual-machines. + self.api_endpoint = None + if self.type == 'container': + self.api_endpoint = '/1.0/containers' + elif self.type == 'virtual-machine': + self.api_endpoint = '/1.0/virtual-machines' + self.key_file = self.module.params.get('client_key') if self.key_file is None: self.key_file = '{0}/.config/lxc/client.key'.format(os.environ['HOME']) @@ -492,18 +499,6 @@ class LXDContainerManagement(object): ) except LXDClientException as e: self.module.fail_json(msg=e.msg) - - # LXD (3.19) Rest API provides instances endpoint, failback to containers and virtual-machines - # https://documentation.ubuntu.com/lxd/en/latest/rest-api/#instances-containers-and-virtual-machines - self.api_endpoint = '/1.0/instances' - check_api_endpoint = self.client.do('GET', '{0}?project='.format(self.api_endpoint), ok_error_codes=[404]) - - if check_api_endpoint['error_code'] == 404: - if self.type == 'container': - self.api_endpoint = '/1.0/containers' - elif self.type == 'virtual-machine': - self.api_endpoint = '/1.0/virtual-machines' - self.trust_password = self.module.params.get('trust_password', None) self.actions = [] self.diff = {'before': {}, 'after': {}} @@ -556,8 +551,6 @@ class LXDContainerManagement(object): url = '{0}?{1}'.format(url, urlencode(url_params)) config = self.config.copy() config['name'] = self.name - if self.type not in self.api_endpoint: - config['type'] = self.type if not self.module.check_mode: self.client.do('POST', url, config, wait_for_container=self.wait_for_container) self.actions.append('create')