pycloudlib 1!7.7.0__tar.gz → 1!7.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pycloudlib-1!7.7.0/pycloudlib.egg-info → pycloudlib-1!7.7.2}/PKG-INFO +1 -1
- pycloudlib-1!7.7.2/VERSION +1 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/gce/cloud.py +2 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/instance.py +3 -1
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2/pycloudlib.egg-info}/PKG-INFO +1 -1
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib.egg-info/SOURCES.txt +2 -0
- pycloudlib-1!7.7.2/tests/integration_tests/gce/__init__.py +0 -0
- pycloudlib-1!7.7.2/tests/integration_tests/gce/test_launch.py +25 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/test_instance.py +16 -2
- pycloudlib-1!7.7.0/VERSION +0 -1
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/LICENSE +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/MANIFEST.in +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/README.md +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/azure/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/azure/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/azure/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/azure/security_types.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/azure/util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/config.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/constants.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ec2/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ec2/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ec2/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ec2/util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ec2/vpc.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/gce/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/gce/errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/gce/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/gce/util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm/_util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm/errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm_classic/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm_classic/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm_classic/errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/ibm_classic/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/key.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/lxd/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/lxd/_images.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/lxd/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/lxd/defaults.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/lxd/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/oci/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/oci/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/oci/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/oci/utils.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/openstack/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/openstack/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/openstack/errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/openstack/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/py.typed +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/qemu/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/qemu/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/qemu/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/qemu/util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/result.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/vmware/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/vmware/cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib/vmware/instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib.egg-info/dependency_links.txt +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib.egg-info/requires.txt +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib.egg-info/top_level.txt +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pycloudlib.egg-info/zip-safe +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/pyproject.toml +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/requirements.txt +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/setup.cfg +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/setup.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/test-requirements.txt +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/conftest.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/integration_tests/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/integration_tests/test_public_api.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/integration_tests/test_qemu.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/azure/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/azure/test_cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/azure/test_security_types.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/gce/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/gce/test_cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/ibm/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/ibm/test_util.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/ibm_classic/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/ibm_classic/test_cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/lxd/__init__.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/lxd/test_cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/lxd/test_defaults.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/lxd/test_images.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/lxd/test_instance.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/test_cloud.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/test_config.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tests/unit_tests/test_errors.py +0 -0
- {pycloudlib-1!7.7.0 → pycloudlib-1!7.7.2}/tox.ini +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
1!7.7.2
|
|
@@ -505,10 +505,12 @@ class BaseInstance(ABC):
|
|
|
505
505
|
start = time.time()
|
|
506
506
|
end = start + timeout * 60
|
|
507
507
|
while time.time() < end:
|
|
508
|
-
|
|
508
|
+
try:
|
|
509
509
|
boot_id = self.get_boot_id()
|
|
510
510
|
if not old_boot_id or boot_id != old_boot_id:
|
|
511
511
|
return
|
|
512
|
+
except (SSHException, OSError) as e:
|
|
513
|
+
self._log.debug("Failed to obtain new boot id: %s", e)
|
|
512
514
|
time.sleep(1)
|
|
513
515
|
|
|
514
516
|
raise PycloudlibTimeoutError(
|
|
@@ -73,6 +73,8 @@ tests/conftest.py
|
|
|
73
73
|
tests/integration_tests/__init__.py
|
|
74
74
|
tests/integration_tests/test_public_api.py
|
|
75
75
|
tests/integration_tests/test_qemu.py
|
|
76
|
+
tests/integration_tests/gce/__init__.py
|
|
77
|
+
tests/integration_tests/gce/test_launch.py
|
|
76
78
|
tests/unit_tests/__init__.py
|
|
77
79
|
tests/unit_tests/test_cloud.py
|
|
78
80
|
tests/unit_tests/test_config.py
|
|
File without changes
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import pytest
|
|
2
|
+
from pycloudlib.gce.cloud import GCE
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
@pytest.fixture
|
|
6
|
+
def gce_instance():
|
|
7
|
+
with GCE(tag="test-launch") as gce:
|
|
8
|
+
yield gce
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def test_gce_launch_updates_config(gce_instance: GCE):
|
|
12
|
+
"""Test that the launch method updates the config."""
|
|
13
|
+
daily = gce_instance.daily_image("noble", arch="x86_64")
|
|
14
|
+
description = "Test description for kwarg verification."
|
|
15
|
+
with gce_instance.launch(daily, description=description) as inst:
|
|
16
|
+
result = (
|
|
17
|
+
gce_instance.compute.instances()
|
|
18
|
+
.get(
|
|
19
|
+
project=gce_instance.project,
|
|
20
|
+
zone=gce_instance.zone,
|
|
21
|
+
instance=inst.name,
|
|
22
|
+
)
|
|
23
|
+
.execute()
|
|
24
|
+
)
|
|
25
|
+
assert result["description"] == description
|
|
@@ -47,13 +47,25 @@ class TestWait:
|
|
|
47
47
|
|
|
48
48
|
@pytest.mark.parametrize(
|
|
49
49
|
"execute_effect",
|
|
50
|
-
[
|
|
50
|
+
[
|
|
51
|
+
pytest.param(
|
|
52
|
+
lambda *args, **kwargs: Result("", "", 1), id="nonzero"
|
|
53
|
+
),
|
|
54
|
+
pytest.param(SSHException, id="exception"),
|
|
55
|
+
],
|
|
51
56
|
)
|
|
52
57
|
@mock.patch.object(BaseInstance, "execute")
|
|
53
58
|
@mock.patch("pycloudlib.instance.time.sleep")
|
|
54
59
|
@mock.patch("pycloudlib.instance.time.time")
|
|
60
|
+
@mock.patch("logging.Logger.debug")
|
|
55
61
|
def test_wait_execute_failure(
|
|
56
|
-
self,
|
|
62
|
+
self,
|
|
63
|
+
m_debug,
|
|
64
|
+
m_time,
|
|
65
|
+
m_sleep,
|
|
66
|
+
m_execute,
|
|
67
|
+
execute_effect,
|
|
68
|
+
concrete_instance_cls,
|
|
57
69
|
):
|
|
58
70
|
"""Test wait calls when execute command fails."""
|
|
59
71
|
instance = concrete_instance_cls(key_pair=None)
|
|
@@ -176,8 +188,10 @@ class TestWaitForRestart:
|
|
|
176
188
|
@mock.patch.object(BaseInstance, "execute")
|
|
177
189
|
@mock.patch("pycloudlib.instance.time.sleep")
|
|
178
190
|
@mock.patch("pycloudlib.instance.time.time")
|
|
191
|
+
@mock.patch("logging.Logger.debug")
|
|
179
192
|
def test_boot_id_failure(
|
|
180
193
|
self,
|
|
194
|
+
m_debug,
|
|
181
195
|
m_time,
|
|
182
196
|
m_sleep,
|
|
183
197
|
m_execute,
|
pycloudlib-1!7.7.0/VERSION
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
1!7.7.0
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|