Skip to content

Commit 6a39176

Browse files
Fix sapha counting
1 parent 8890677 commit 6a39176

3 files changed

Lines changed: 79 additions & 23 deletions

File tree

ocw/lib/azure.py

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,9 @@ def delete_resource(self, resource_id: str) -> None:
112112
def list_images(self):
113113
return self.list_resource(filters="resourceType eq 'Microsoft.Compute/images'")
114114

115+
def report_list_images(self):
116+
return self.unscoped_list_resource(filters="resourceType eq 'Microsoft.Compute/images'")
117+
115118
def list_disks(self):
116119
return self.list_resource(filters="resourceType eq 'Microsoft.Compute/disks'")
117120

@@ -227,11 +230,25 @@ def cleanup_gallery_img_versions(self) -> None:
227230

228231
def get_img_versions_count(self) -> int:
229232
self.log_dbg("Call get_img_versions_count")
230-
gallery = self.compute_mgmt_client().galleries.get(self.__resource_group, self.__gallery)
231-
all_img_versions = 0
232-
for image_definition in self.compute_mgmt_client().gallery_images.list_by_gallery(self.__resource_group, gallery.name):
233-
img_versions = len(list(self.compute_mgmt_client().gallery_image_versions.list_by_gallery_image(
234-
self.__resource_group, gallery.name, image_definition.name)))
235-
self.log_dbg(f"{image_definition.name} has {img_versions} versions")
236-
all_img_versions += img_versions
237-
return all_img_versions
233+
234+
compute_client = self.compute_mgmt_client()
235+
resource_client = self.resource_mgmt_client() # You need to have this method or client setup
236+
237+
total_versions = 0
238+
239+
for rg in resource_client.resource_groups.list():
240+
rg_name = rg.name
241+
try:
242+
galleries = compute_client.galleries.list_by_resource_group(rg_name)
243+
for gallery in galleries:
244+
images = compute_client.gallery_images.list_by_gallery(rg_name, gallery.name)
245+
for image in images:
246+
versions = list(compute_client.gallery_image_versions.list_by_gallery_image(
247+
rg_name, gallery.name, image.name
248+
))
249+
version_count = len(versions)
250+
total_versions += version_count
251+
except Exception as e:
252+
self.log_dbg(f"Skipping resource group {rg_name} due to error: {e}")
253+
254+
return total_versions

ocw/lib/dump_state.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ def dump_state():
3333
ProviderChoice.AZURE.value,
3434
Influx.IMAGES_QUANTITY,
3535
namespace,
36-
Azure(namespace).list_images,
36+
Azure(namespace).report_list_images,
3737
)
3838
Influx().dump_resource(
3939
ProviderChoice.AZURE.value,

tests/test_azure.py

Lines changed: 53 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,27 +47,66 @@ def bs_client_one_pcw_ignore(monkeypatch):
4747
monkeypatch.setattr(Azure, 'bs_client', lambda *args, **kwargs: fakeblobserviceclient)
4848

4949

50+
class FakeResourceGroup:
51+
def __init__(self, name):
52+
self.name = name
53+
54+
55+
class FakeGallery:
56+
def __init__(self, name):
57+
self.name = name
58+
59+
60+
class FakeImage:
61+
def __init__(self, name):
62+
self.name = name
63+
64+
65+
class FakeVersion:
66+
def __init__(self, name):
67+
self.name = name
68+
69+
5070
@pytest.fixture
5171
def mock_compute_mgmt_client(monkeypatch):
52-
5372
global deleted_images
54-
# to make sure that we not failing due to other test left dirty env.
5573
deleted_images = list()
5674

57-
def mock_compute_mgmt_client(self):
58-
def compute_mgmt_client():
75+
def compute_mgmt_client(self):
76+
def client():
5977
pass
60-
compute_mgmt_client.images = lambda: None
61-
compute_mgmt_client.galleries = lambda: None
62-
compute_mgmt_client.gallery_images = lambda: None
63-
compute_mgmt_client.gallery_image_versions = lambda: None
64-
compute_mgmt_client.galleries.get = lambda rg, name: FakeGalleryAndImageDefinition()
65-
compute_mgmt_client.gallery_images.list_by_gallery = lambda rg, name: [FakeGalleryAndImageDefinition()]
66-
compute_mgmt_client.gallery_image_versions.list_by_gallery_image = lambda rg, gallery, definitionname: [1, 2, 3, 4, 5]
67-
compute_mgmt_client.images.begin_delete = lambda rg, name: deleted_images.append(name)
68-
return compute_mgmt_client
78+
client.images = lambda: None
79+
client.galleries = lambda: None
80+
client.gallery_images = lambda: None
81+
client.gallery_image_versions = lambda: None
82+
83+
client.galleries.list_by_resource_group = lambda rg: [
84+
FakeGallery("gallery1"),
85+
FakeGallery("gallery2")
86+
]
87+
88+
client.gallery_images.list_by_gallery = lambda rg, gallery: {
89+
"gallery1": [FakeImage("image1")],
90+
"gallery2": [FakeImage("image2")]
91+
}[gallery]
92+
93+
client.gallery_image_versions.list_by_gallery_image = lambda rg, gallery, image: {
94+
("rg1", "gallery1", "image1"): [FakeVersion("v1"), FakeVersion("v2"), FakeVersion("v3")],
95+
("rg1", "gallery2", "image2"): [FakeVersion("v1"), FakeVersion("v2")]
96+
}[(rg, gallery, image)]
97+
98+
client.images.begin_delete = lambda rg, name: deleted_images.append(name)
99+
return client
100+
101+
def resource_mgmt_client(self):
102+
def client():
103+
pass
104+
client.resource_groups = lambda: None
105+
client.resource_groups.list = lambda: [FakeResourceGroup("rg1")]
106+
return client
69107

70-
monkeypatch.setattr(Azure, 'compute_mgmt_client', mock_compute_mgmt_client)
108+
monkeypatch.setattr(Azure, 'compute_mgmt_client', compute_mgmt_client)
109+
monkeypatch.setattr(Azure, 'resource_mgmt_client', resource_mgmt_client)
71110

72111

73112
# This class is faking two unrelated entities:

0 commit comments

Comments
 (0)