Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/aem/HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

Release History
===============
1.0.1
+++++
* Remove DATA_COSMOS_TABLE and DATA_STORAGE references

1.0.0
+++++
* Remove msrestazure dependency
Expand Down
29 changes: 16 additions & 13 deletions src/aem/azext_aem/custom.py
Original file line number Diff line number Diff line change
Expand Up @@ -463,7 +463,7 @@ def _verify_old(self, skip_storage_check, wait_time_in_minutes, aem_ext):
else:
logger.warning("\t\tStorage Metrics configuration check for '%s'...", storage_account_name)
storage_client = self._get_storage_client(storage_account_name, disk['key'])
service_properties = storage_client.get_blob_service_properties()
service_properties = storage_client.get_service_properties()
storage_cfg_ok = EnhancedMonitoring._check_storage_analytics(service_properties)
if storage_cfg_ok:
logger.warning('\t\tStorage Metrics configuration check: %s', succ_word)
Expand Down Expand Up @@ -731,44 +731,47 @@ def _get_disk_info(self):
return disks_info

def _get_blob_size(self, storage_account_name, container, blob, key):
storage_client = self._get_storage_client(storage_account_name, key)
blob_service_client = self._get_storage_client(storage_account_name, key)
blob_client = blob_service_client.get_blob_client(container, blob)
# convert to GB
return int(storage_client.get_blob_properties(container, blob).properties.content_length / (1 << 30))
return int(blob_client.properties.size / (1 << 30))
Copy link

Copilot AI Aug 29, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This code assumes blob_client.properties exists without first calling get_blob_properties(). The properties may not be populated until explicitly retrieved. Consider calling blob_properties = blob_client.get_blob_properties() and then accessing blob_properties.size.

Suggested change
return int(blob_client.properties.size / (1 << 30))
blob_properties = blob_client.get_blob_properties()
return int(blob_properties.size / (1 << 30))

Copilot uses AI. Check for mistakes.

def _get_storage_client(self, storage_account_name, key):
BlockBlobService = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_STORAGE,
'blob.blockblobservice#BlockBlobService')
BlobServiceClient = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_STORAGE_BLOB,
'_blob_service_client#BlobServiceClient')
return get_data_service_client(
self._cmd.cli_ctx,
BlockBlobService,
BlobServiceClient,
storage_account_name,
key,
endpoint_suffix=self._cmd.cli_ctx.cloud.suffixes.storage_endpoint) # pylint: disable=no-member

def _enable_storage_analytics(self, storage_account_name, key):
storage_client = self._get_storage_client(storage_account_name, key)
service_properties = storage_client.get_blob_service_properties()
service_properties = storage_client.get_service_properties()
if not EnhancedMonitoring._check_storage_analytics(service_properties):
t_logging, t_retention_policy, t_metrics = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_STORAGE, 'Logging',
'RetentionPolicy', 'Metrics', mod='common.models')
t_logging, t_retention_policy, t_metrics = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_STORAGE_BLOB,
'BlobAnalyticsLogging', 'RetentionPolicy', 'Metrics',
mod='_models')
retention_policy = t_retention_policy(enabled=True, days=13)
logging = t_logging(delete=True, read=True, write=True, retention_policy=retention_policy)
minute_metrics = t_metrics(enabled=True, include_apis=True, retention_policy=retention_policy)
if getattr(service_properties, 'hour_metrics', None):
service_properties.hour_metrics.retention_policy.days = 13
storage_client.set_blob_service_properties(logging, minute_metrics=minute_metrics,
hour_metrics=service_properties.hour_metrics)
storage_client.set_service_properties(analytics_logging=logging, minute_metrics=minute_metrics,
hour_metrics=service_properties.hour_metrics)

@staticmethod
def _check_storage_analytics(service_properties):
return (service_properties and service_properties.logging and
return (service_properties and service_properties.analytics_logging and
service_properties.minute_metrics and service_properties.minute_metrics.include_apis and
service_properties.minute_metrics.retention_policy.days)

def _check_table_and_content(self, storage_account_name, key, table_name,
filter_string, timeout_in_minutes):
sleep_period = 15
TableService = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_COSMOS_TABLE, 'table#TableService')
TableService = get_sdk(self._cmd.cli_ctx, ResourceType.DATA_STORAGE_TABLE,
'_table_service_client#TableServiceClient')
table_client = get_data_service_client(
self._cmd.cli_ctx,
TableService,
Expand Down
4,054 changes: 2,168 additions & 1,886 deletions src/aem/azext_aem/tests/latest/recordings/test_ExtensionDowngrade.yaml

Large diffs are not rendered by default.

4,009 changes: 2,177 additions & 1,832 deletions src/aem/azext_aem/tests/latest/recordings/test_ExtensionReinstall.yaml

Large diffs are not rendered by default.

Loading
Loading