Skip to content
Closed
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
1 change: 1 addition & 0 deletions armis_sdk/clients/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Required by mkdocs
10 changes: 1 addition & 9 deletions armis_sdk/clients/assets_client.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import datetime
from typing import AsyncIterator
from typing import Literal
from typing import Optional
from typing import Type
from typing import Union
Expand All @@ -15,14 +14,7 @@
from armis_sdk.entities.asset import Asset
from armis_sdk.entities.asset import AssetT
from armis_sdk.entities.device import Device

AssetIdSource = Literal[
"ASSET_ID",
"IPV4_ADDRESS",
"IPV6_ADDRESS",
"MAC_ADDRESS",
"SERIAL_NUMBER",
]
from armis_sdk.types.asset_id_source import AssetIdSource


@universalasync.wrap
Expand Down
10 changes: 4 additions & 6 deletions armis_sdk/clients/collectors_client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
from armis_sdk.core.base_entity_client import BaseEntityClient
from armis_sdk.entities.collector_image import CollectorImage
from armis_sdk.entities.download_progress import DownloadProgress
from armis_sdk.enums.collector_image_type import CollectorImageType
from armis_sdk.types.collector_image_type import CollectorImageType


@universalasync.wrap
Expand All @@ -26,7 +26,7 @@ class CollectorsClient(BaseEntityClient):
async def download_image(
self,
destination: Union[str, IO[bytes]],
image_type: CollectorImageType = CollectorImageType.OVA,
image_type: CollectorImageType = "OVA",
) -> AsyncIterator[DownloadProgress]:
"""Download a collector image to a specified destination path / file.

Expand Down Expand Up @@ -77,9 +77,7 @@ async def main():
file.write(chunk)
yield DownloadProgress(downloaded=file.tell(), total=total_size)

async def get_image(
self, image_type: CollectorImageType = CollectorImageType.OVA
) -> CollectorImage:
async def get_image(self, image_type: CollectorImageType = "OVA") -> CollectorImage:
"""Get collector image information including download URL and credentials.

Args:
Expand Down Expand Up @@ -108,7 +106,7 @@ async def main():
"""
async with self._armis_client.client() as client:
response = await client.get(
"/v3/collectors/_image", params={"image_type": image_type.value}
"/v3/collectors/_image", params={"image_type": image_type}
)
data = response_utils.get_data_dict(response)
return CollectorImage.model_validate(data)
Expand Down
1 change: 1 addition & 0 deletions armis_sdk/core/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Required by mkdocs
1 change: 1 addition & 0 deletions armis_sdk/entities/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Required by mkdocs
4 changes: 2 additions & 2 deletions armis_sdk/entities/collector_image.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
from pydantic import Field

from armis_sdk.core.base_entity import BaseEntity
from armis_sdk.enums.collector_image_type import CollectorImageType
from armis_sdk.types.collector_image_type import CollectorImageType


class CollectorImage(BaseEntity):
"""
An entity that represents the details required to download and run a collector image.
"""

image_type: CollectorImageType = Field(strict=False)
image_type: CollectorImageType
"""The type of the image."""

image_password: str
Expand Down
1 change: 1 addition & 0 deletions armis_sdk/entities/data_export/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Required by mkdocs
36 changes: 0 additions & 36 deletions armis_sdk/enums/collector_image_type.py

This file was deleted.

1 change: 1 addition & 0 deletions armis_sdk/types/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Required by mkdocs
9 changes: 9 additions & 0 deletions armis_sdk/types/asset_id_source.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from typing import Literal

AssetIdSource = Literal[
"ASSET_ID",
"IPV4_ADDRESS",
"IPV6_ADDRESS",
"MAC_ADDRESS",
"SERIAL_NUMBER",
]
15 changes: 15 additions & 0 deletions armis_sdk/types/collector_image_type.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
from typing import Literal

CollectorImageType = Literal[
"DARWIN_AMD64_BROKER",
"DARWIN_ARM64_BROKER",
"DEB",
"LINUX_AMD64_BROKER",
"LINUX_ARM64_BROKER",
"OVA",
"QCOW2",
"RPM",
"VHD",
"VHDX",
"WINDOWS_BROKER",
]
1 change: 1 addition & 0 deletions docs/clients/assets_client/AssetIdSource.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: armis_sdk.types.asset_id_source.AssetIdSource
File renamed without changes.
1 change: 0 additions & 1 deletion docs/entities/AsqRule.md

This file was deleted.

1 change: 0 additions & 1 deletion docs/entities/Site.md

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
1 change: 1 addition & 0 deletions docs/entities/collector_image/CollectorImageType.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
::: armis_sdk.types.collector_image_type.CollectorImageType
File renamed without changes.
1 change: 0 additions & 1 deletion docs/enums/CollectorImageType.md

This file was deleted.

40 changes: 23 additions & 17 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,38 @@ repo_url: https://github.com/ArmisSecurity/armis-sdk-python
nav:
- Getting started: index.md
- Entities:
- Asset: entities/Asset.md
- AsqRule: entities/AsqRule.md
- Asset:
- entities/asset/index.md
- Device:
- entities/asset/device/index.md
- entities/asset/device/Boundary.md
- entities/asset/device/NetworkInterface.md
- DataExport:
- entities/data_export/index.md
- Application: entities/data_export/Application.md
- DataExport: entities/data_export/DataExport.md
- RiskFactor: entities/data_export/RiskFactor.md
- Vulnerability: entities/data_export/Vulnerability.md
- Boundary: entities/Boundary.md
- CollectorImage: entities/CollectorImage.md
- Device: entities/Device.md
- CollectorImage:
- entities/collector_image/index.md
- entities/collector_image/CollectorImageType.md
- DeviceCustomProperty: entities/DeviceCustomProperty.md
- DownloadProgress: entities/DownloadProgress.md
- NetworkInterface: entities/NetworkInterface.md
- Site: entities/Site.md
- Site:
- entities/site/index.md
- entities/site/AsqRule.md
- Clients:
- AssetsClient: clients/AssetsClient.md
- CollectorsClient: clients/CollectorsClient.md
- AssetsClient:
- clients/assets_client/index.md
- clients/assets_client/AssetIdSource.md
- CollectorsClient:
- clients/collectors_client/index.md
- clients/collectors_client/DownloadProgress.md
- DataExportClient: clients/DataExportClient.md
- DeviceCustomPropertiesClient: clients/DeviceCustomPropertiesClient.md
- SitesClient: clients/SitesClient.md
- Core:
- ArmisClient: core/ArmisClient.md
- ArmisSdk: core/ArmisSdk.md
- Errors: core/errors.md
- Enums:
- CollectorImageType: enums/CollectorImageType.md
- About Armis: about.md

theme:
Expand All @@ -39,10 +45,10 @@ theme:
logo: images/logo.png
palette:
primary: custom
theme:
features:
- content.code.annotate
- content.code.copy
features:
- content.code.annotate
- content.code.copy
- navigation.indexes

plugins:
- mkdocstrings:
Expand Down
1 change: 1 addition & 0 deletions pylintrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ ignore-paths=
.venv

disable=
contextmanager-generator-missing-cleanup,
duplicate-code,
missing-class-docstring,
missing-module-docstring,
Expand Down
9 changes: 3 additions & 6 deletions tests/armis_sdk/clients/collectors_client_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from armis_sdk.clients.collectors_client import CollectorsClient
from armis_sdk.entities.collector_image import CollectorImage
from armis_sdk.entities.download_progress import DownloadProgress
from armis_sdk.enums.collector_image_type import CollectorImageType

pytest_plugins = ["tests.plugins.auto_setup_plugin"]

Expand All @@ -26,7 +25,7 @@ async def test_get_image(httpx_mock: pytest_httpx.HTTPXMock):
collector_image = await collectors_client.get_image()

assert collector_image == CollectorImage(
image_type=CollectorImageType.OVA,
image_type="OVA",
image_password="test_password",
url="https://example.com/collector.ova",
url_expiration_date=datetime.datetime(2025, 12, 10),
Expand All @@ -45,12 +44,10 @@ async def test_get_with_explicit_image_type(httpx_mock: pytest_httpx.HTTPXMock):
)

collectors_client = CollectorsClient()
collector_image = await collectors_client.get_image(
image_type=CollectorImageType.QCOW2
)
collector_image = await collectors_client.get_image(image_type="QCOW2")

assert collector_image == CollectorImage(
image_type=CollectorImageType.QCOW2,
image_type="QCOW2",
image_password="test_password_qcow2",
url="https://example.com/collector.qcow2",
url_expiration_date=datetime.datetime(2025, 12, 11),
Expand Down