Skip to content

Commit

Permalink
RunCommandv1: uninstall extension before installing it
Browse files Browse the repository at this point in the history
  • Loading branch information
LiliDeng committed Nov 27, 2024
1 parent edf74a7 commit 6bcccad
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 36 deletions.
38 changes: 29 additions & 9 deletions lisa/sut_orchestrator/azure/features.py
Original file line number Diff line number Diff line change
Expand Up @@ -3091,18 +3091,38 @@ def delete(
self,
name: str = "",
timeout: int = 60 * 25,
) -> None:
ignore_not_found: bool = False,
) -> bool:
platform: AzurePlatform = self._platform # type: ignore
compute_client = get_compute_client(platform)
self._log.debug(f"uninstall extension: {name}")

operation = compute_client.virtual_machine_extensions.begin_delete(
resource_group_name=self._resource_group_name,
vm_name=self._vm_name,
vm_extension_name=name,
)
# no return for this operation
wait_operation(operation, timeout)
try:
operation = compute_client.virtual_machine_extensions.begin_delete(
resource_group_name=self._resource_group_name,
vm_name=self._vm_name,
vm_extension_name=name,
)
# no return for this operation
wait_operation(operation, timeout)
return True
except HttpResponseError as identifier:
error_message = str(identifier)
if "was not found" in error_message:
if ignore_not_found:
self._log.info(
f"Extension '{name}' not installed, ignoring deletion."
)
return False
else:
raise LisaException(
f"Extension '{name}' not found. Cannot delete "
"non-existent extension."
) from identifier
else:
raise LisaException(
"Unexpected error occurred while deleting extension "
f"'{name}': {error_message}"
) from identifier

def list_all(self) -> Any:
platform: AzurePlatform = self._platform # type: ignore
Expand Down
19 changes: 5 additions & 14 deletions microsoft/testsuites/vm_extensions/AzureMonitorAgentLinux.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
from typing import Any

from assertpy import assert_that
from azure.core.exceptions import HttpResponseError

from lisa import (
Logger,
Expand All @@ -23,7 +22,7 @@
Ubuntu,
)
from lisa.sut_orchestrator.azure.features import AzureExtension
from lisa.util import LisaException, SkippedException
from lisa.util import SkippedException


@TestSuiteMetadata(
Expand Down Expand Up @@ -53,18 +52,10 @@ def verify_azuremonitoragent_linux(self, log: Logger, node: Node) -> None:
# Run VM Extension
extension = node.features[AzureExtension]
extension_name = "Microsoft.Azure.Monitor.AzureMonitorLinuxAgent"
try:
# Delete VM Extension if already present
extension.delete(extension_name)
is_extension_present = True
except HttpResponseError as identifier:
if any(s in str(identifier) for s in ["was not found"]):
log.info("AzureMonitorLinuxAgent is not already installed")
else:
raise LisaException(
f"unexpected exception happened {identifier} during delete"
f" extension {extension_name}"
) from identifier
is_extension_present = False
is_extension_present = extension.delete(
name=extension_name, ignore_not_found=True
)

extension_result = extension.create_or_update(
name=extension_name,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
from lisa.sut_orchestrator import AZURE
from lisa.sut_orchestrator.azure.features import AzureExtension
from lisa.sut_orchestrator.azure.tools import Waagent
from lisa.util import LisaException
from microsoft.testsuites.vm_extensions.runtime_extensions.common import (
check_waagent_version_supported,
execute_command,
Expand All @@ -40,17 +39,7 @@ def _create_and_verify_extension_run(
) -> None:
extension = node.features[AzureExtension]
extension_name = "CustomScript"
try:
# Delete VM Extension if already present
extension.delete(extension_name)
except HttpResponseError as identifier:
if any(s in str(identifier) for s in ["was not found"]):
node.log.info(f"{extension_name} is not installed")
else:
raise LisaException(
f"unexpected exception happened {identifier} during delete"
f" extension {extension_name}"
) from identifier
extension.delete(name=extension_name, ignore_not_found=True)

def enable_extension() -> Any:
result = extension.create_or_update(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,12 @@ def _create_and_verify_extension_run(
assert_exception: Optional[Any] = None,
) -> None:
extension = node.features[AzureExtension]
extension_name = "RunCommandv1"
extension.delete(name=extension_name, ignore_not_found=True)

def enable_extension() -> Any:
result = extension.create_or_update(
name="RunCommandv1",
name=extension_name,
publisher="Microsoft.CPlat.Core",
type_="RunCommandLinux",
type_handler_version="1.0",
Expand Down

0 comments on commit 6bcccad

Please sign in to comment.