We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The title says it. Here is an example of the rename method of the Network class:
def rename(self, new_name): """ Rename a network. :param new_name: new name of the network :type new_name: str :return: Renamed network instance :rtype: :class:`Network` """ self.client.assert_has_api_extension("network") self.client.api.networks.post(json={"name": new_name}) return Network.get(self.client, new_name)
It creates a new network instead of renaming it because it does not get the network first. A fix would be the following:
get
def rename(self, new_name): """ Rename a network. :param new_name: new name of the network :type new_name: str :return: Renamed network instance :rtype: :class:`Network` """ self.client.assert_has_api_extension("network") self.client.api.networks[self.name].post(json={"name": new_name}) return Network.get(self.client, new_name)
Notice the [self.name] in self.client.api.networks[self.name].post(json={"name": new_name}).
[self.name]
self.client.api.networks[self.name].post(json={"name": new_name})
I haven't look further if other models are like this but I can confirm that Network and Instance are.
Demo:
>>> c.networks.create(name='test',type='bridge') Network(config={"ipv4.address": "10.19.224.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:dc60:e2ee:ae00::1/64", "ipv6.nat": "true"}, description="", name="test", type="bridge") >>> c.networks.get('test').rename('test2') Network(config={"ipv4.address": "10.156.78.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:483f:d506:c1ff::1/64", "ipv6.nat": "true"}, description="", name="test2", type="bridge") >>> c.networks.get('test') Network(config={"ipv4.address": "10.19.224.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:dc60:e2ee:ae00::1/64", "ipv6.nat": "true"}, description="", name="test", type="bridge") >>> c.networks.get('test2') Network(config={"ipv4.address": "10.156.78.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:483f:d506:c1ff::1/64", "ipv6.nat": "true"}, description="", name="test2", type="bridge")
$ lxc network list local: +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+ | NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE | +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+ | test | bridge | YES | 10.19.224.1/24 | fd42:dc60:e2ee:ae00::1/64 | | 0 | CREATED | +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+ | test2 | bridge | YES | 10.156.78.1/24 | fd42:483f:d506:c1ff::1/64 | | 0 | CREATED | +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+
With the fix:
>>> c.networks.create(name='test',type='bridge') Network(config={"ipv4.address": "10.103.75.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:ede6:29ab:4797::1/64", "ipv6.nat": "true"}, description="", name="test", type="bridge") >>> c.networks.get('test').rename('test2') Network(config={"ipv4.address": "10.103.75.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:ede6:29ab:4797::1/64", "ipv6.nat": "true"}, description="", name="test2", type="bridge") >>> c.networks.get('test') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/mbergeron/Documents/gitlocal/pylxd/pylxd/models/network.py", line 114, in get response = client.api.networks[name].get() File "/home/mbergeron/Documents/gitlocal/pylxd/pylxd/client.py", line 210, in get self._assert_response( File "/home/mbergeron/Documents/gitlocal/pylxd/pylxd/client.py", line 159, in _assert_response raise exceptions.NotFound(response) pylxd.exceptions.NotFound: Network not found >>> c.networks.get('test2') Network(config={"ipv4.address": "10.103.75.1/24", "ipv4.nat": "true", "ipv6.address": "fd42:ede6:29ab:4797::1/64", "ipv6.nat": "true"}, description="", name="test2", type="bridge")
$ lxc network list local: +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+ | NAME | TYPE | MANAGED | IPV4 | IPV6 | DESCRIPTION | USED BY | STATE | +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+ | test2 | bridge | YES | 10.103.75.1/24 | fd42:ede6:29ab:4797::1/64 | | 0 | CREATED | +-----------------+----------+---------+-----------------+---------------------------+-------------+---------+---------+
I will make a pull request eventually when I find the time for it :).
The text was updated successfully, but these errors were encountered:
No branches or pull requests
The title says it. Here is an example of the rename method of the Network class:
It creates a new network instead of renaming it because it does not
get
the network first. A fix would be the following:Notice the
[self.name]
inself.client.api.networks[self.name].post(json={"name": new_name})
.I haven't look further if other models are like this but I can confirm that Network and Instance are.
Demo:
With the fix:
I will make a pull request eventually when I find the time for it :).
The text was updated successfully, but these errors were encountered: