diff --git a/nuon/api/actions/get_action_workflows.py b/nuon/api/actions/get_action_workflows.py index 8e65daa3..41f4649a 100644 --- a/nuon/api/actions/get_action_workflows.py +++ b/nuon/api/actions/get_action_workflows.py @@ -16,6 +16,7 @@ def _get_kwargs( *, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -27,6 +28,8 @@ def _get_kwargs( params["labels"] = labels + params["trigger_types"] = trigger_types + params["offset"] = offset params["limit"] = limit @@ -107,6 +110,7 @@ def sync_detailed( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -119,6 +123,7 @@ def sync_detailed( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -135,6 +140,7 @@ def sync_detailed( app_id=app_id, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -153,6 +159,7 @@ def sync( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -165,6 +172,7 @@ def sync( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -182,6 +190,7 @@ def sync( client=client, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -194,6 +203,7 @@ async def asyncio_detailed( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -206,6 +216,7 @@ async def asyncio_detailed( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -222,6 +233,7 @@ async def asyncio_detailed( app_id=app_id, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -238,6 +250,7 @@ async def asyncio( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -250,6 +263,7 @@ async def asyncio( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -268,6 +282,7 @@ async def asyncio( client=client, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, diff --git a/nuon/api/actions/get_app_actions.py b/nuon/api/actions/get_app_actions.py index 5525a27a..aed2be0f 100644 --- a/nuon/api/actions/get_app_actions.py +++ b/nuon/api/actions/get_app_actions.py @@ -16,6 +16,7 @@ def _get_kwargs( *, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -27,6 +28,8 @@ def _get_kwargs( params["labels"] = labels + params["trigger_types"] = trigger_types + params["offset"] = offset params["limit"] = limit @@ -107,6 +110,7 @@ def sync_detailed( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -119,6 +123,7 @@ def sync_detailed( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -135,6 +140,7 @@ def sync_detailed( app_id=app_id, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -153,6 +159,7 @@ def sync( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -165,6 +172,7 @@ def sync( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -182,6 +190,7 @@ def sync( client=client, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -194,6 +203,7 @@ async def asyncio_detailed( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -206,6 +216,7 @@ async def asyncio_detailed( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -222,6 +233,7 @@ async def asyncio_detailed( app_id=app_id, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, @@ -238,6 +250,7 @@ async def asyncio( client: AuthenticatedClient, q: str | Unset = UNSET, labels: str | Unset = UNSET, + trigger_types: str | Unset = UNSET, offset: int | Unset = 0, limit: int | Unset = 10, page: int | Unset = 0, @@ -250,6 +263,7 @@ async def asyncio( app_id (str): q (str | Unset): labels (str | Unset): + trigger_types (str | Unset): offset (int | Unset): Default: 0. limit (int | Unset): Default: 10. page (int | Unset): Default: 0. @@ -268,6 +282,7 @@ async def asyncio( client=client, q=q, labels=labels, + trigger_types=trigger_types, offset=offset, limit=limit, page=page, diff --git a/nuon/api/apps/delete_app_branch.py b/nuon/api/apps/delete_app_branch.py new file mode 100644 index 00000000..6ae396cc --- /dev/null +++ b/nuon/api/apps/delete_app_branch.py @@ -0,0 +1,203 @@ +from http import HTTPStatus +from typing import Any +from urllib.parse import quote + +import httpx + +from ... import errors +from ...client import AuthenticatedClient, Client +from ...models.app_empty_response import AppEmptyResponse +from ...models.stderr_err_response import StderrErrResponse +from ...types import Response + + +def _get_kwargs( + app_id: str, + app_branch_id: str, +) -> dict[str, Any]: + + _kwargs: dict[str, Any] = { + "method": "delete", + "url": "/v1/apps/{app_id}/branches/{app_branch_id}".format( + app_id=quote(str(app_id), safe=""), + app_branch_id=quote(str(app_branch_id), safe=""), + ), + } + + return _kwargs + + +def _parse_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> AppEmptyResponse | StderrErrResponse | None: + if response.status_code == 200: + response_200 = AppEmptyResponse.from_dict(response.json()) + + return response_200 + + if response.status_code == 400: + response_400 = StderrErrResponse.from_dict(response.json()) + + return response_400 + + if response.status_code == 401: + response_401 = StderrErrResponse.from_dict(response.json()) + + return response_401 + + if response.status_code == 403: + response_403 = StderrErrResponse.from_dict(response.json()) + + return response_403 + + if response.status_code == 404: + response_404 = StderrErrResponse.from_dict(response.json()) + + return response_404 + + if response.status_code == 500: + response_500 = StderrErrResponse.from_dict(response.json()) + + return response_500 + + if client.raise_on_unexpected_status: + raise errors.UnexpectedStatus(response.status_code, response.content) + else: + return None + + +def _build_response( + *, client: AuthenticatedClient | Client, response: httpx.Response +) -> Response[AppEmptyResponse | StderrErrResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + app_id: str, + app_branch_id: str, + *, + client: AuthenticatedClient, +) -> Response[AppEmptyResponse | StderrErrResponse]: + """delete an app branch + + Deletes an app branch and all associated configs, runs, and install group runs. + + Args: + app_id (str): + app_branch_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[AppEmptyResponse | StderrErrResponse] + """ + + kwargs = _get_kwargs( + app_id=app_id, + app_branch_id=app_branch_id, + ) + + response = client.get_httpx_client().request( + **kwargs, + ) + + return _build_response(client=client, response=response) + + +def sync( + app_id: str, + app_branch_id: str, + *, + client: AuthenticatedClient, +) -> AppEmptyResponse | StderrErrResponse | None: + """delete an app branch + + Deletes an app branch and all associated configs, runs, and install group runs. + + Args: + app_id (str): + app_branch_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + AppEmptyResponse | StderrErrResponse + """ + + return sync_detailed( + app_id=app_id, + app_branch_id=app_branch_id, + client=client, + ).parsed + + +async def asyncio_detailed( + app_id: str, + app_branch_id: str, + *, + client: AuthenticatedClient, +) -> Response[AppEmptyResponse | StderrErrResponse]: + """delete an app branch + + Deletes an app branch and all associated configs, runs, and install group runs. + + Args: + app_id (str): + app_branch_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[AppEmptyResponse | StderrErrResponse] + """ + + kwargs = _get_kwargs( + app_id=app_id, + app_branch_id=app_branch_id, + ) + + response = await client.get_async_httpx_client().request(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + app_id: str, + app_branch_id: str, + *, + client: AuthenticatedClient, +) -> AppEmptyResponse | StderrErrResponse | None: + """delete an app branch + + Deletes an app branch and all associated configs, runs, and install group runs. + + Args: + app_id (str): + app_branch_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + AppEmptyResponse | StderrErrResponse + """ + + return ( + await asyncio_detailed( + app_id=app_id, + app_branch_id=app_branch_id, + client=client, + ) + ).parsed diff --git a/nuon/models/__init__.py b/nuon/models/__init__.py index aab7d029..5987a450 100644 --- a/nuon/models/__init__.py +++ b/nuon/models/__init__.py @@ -235,6 +235,9 @@ from .app_slack_org_link import AppSlackOrgLink from .app_slack_org_link_status import AppSlackOrgLinkStatus from .app_stack_type import AppStackType +from .app_stack_version_run_input_diff import AppStackVersionRunInputDiff +from .app_stack_version_run_role_diff import AppStackVersionRunRoleDiff +from .app_stack_version_run_type import AppStackVersionRunType from .app_status import AppStatus from .app_terraform_lock import AppTerraformLock from .app_terraform_module_component_config import AppTerraformModuleComponentConfig @@ -950,6 +953,9 @@ "AppSlackOrgLink", "AppSlackOrgLinkStatus", "AppStackType", + "AppStackVersionRunInputDiff", + "AppStackVersionRunRoleDiff", + "AppStackVersionRunType", "AppStatus", "AppTerraformLock", "AppTerraformModuleComponentConfig", diff --git a/nuon/models/app_action_workflow_trigger_type.py b/nuon/models/app_action_workflow_trigger_type.py index 665a8201..d3ae1a3e 100644 --- a/nuon/models/app_action_workflow_trigger_type.py +++ b/nuon/models/app_action_workflow_trigger_type.py @@ -27,6 +27,8 @@ class AppActionWorkflowTriggerType(str, Enum): PRE_TEARDOWN_ALL_COMPONENTS = "pre-teardown-all-components" PRE_TEARDOWN_COMPONENT = "pre-teardown-component" PRE_UPDATE_INPUTS = "pre-update-inputs" + ROLE_DISABLED = "role-disabled" + ROLE_ENABLED = "role-enabled" def __str__(self) -> str: return str(self.value) diff --git a/nuon/models/app_component_build.py b/nuon/models/app_component_build.py index d360646d..1337a616 100644 --- a/nuon/models/app_component_build.py +++ b/nuon/models/app_component_build.py @@ -66,6 +66,7 @@ class AppComponentBuild: runner selected (e.g. "1.25.5" even if SourceRef pinned "1.25.3" with a "~1.25.0" update_policy constraint). runner_job (AppRunnerJob | Unset): + source_checksum (str | Unset): checksum of the component's source directory at build time source_digest (str | Unset): SourceDigest is the manifest list digest of the resolved source ref, e.g. "sha256:abc...". This is the canonical content address of what was pulled and is used for build dedup. @@ -105,6 +106,7 @@ class AppComponentBuild: resolved_at: str | Unset = UNSET resolved_tag: str | Unset = UNSET runner_job: AppRunnerJob | Unset = UNSET + source_checksum: str | Unset = UNSET source_digest: str | Unset = UNSET source_image: str | Unset = UNSET source_media_type: str | Unset = UNSET @@ -184,6 +186,8 @@ def to_dict(self) -> dict[str, Any]: if not isinstance(self.runner_job, Unset): runner_job = self.runner_job.to_dict() + source_checksum = self.source_checksum + source_digest = self.source_digest source_image = self.source_image @@ -251,6 +255,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["resolved_tag"] = resolved_tag if runner_job is not UNSET: field_dict["runner_job"] = runner_job + if source_checksum is not UNSET: + field_dict["source_checksum"] = source_checksum if source_digest is not UNSET: field_dict["source_digest"] = source_digest if source_image is not UNSET: @@ -374,6 +380,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: else: runner_job = AppRunnerJob.from_dict(_runner_job) + source_checksum = d.pop("source_checksum", UNSET) + source_digest = d.pop("source_digest", UNSET) source_image = d.pop("source_image", UNSET) @@ -424,6 +432,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: resolved_at=resolved_at, resolved_tag=resolved_tag, runner_job=runner_job, + source_checksum=source_checksum, source_digest=source_digest, source_image=source_image, source_media_type=source_media_type, diff --git a/nuon/models/app_helm_release.py b/nuon/models/app_helm_release.py index 9f51dcbe..e1ebfe94 100644 --- a/nuon/models/app_helm_release.py +++ b/nuon/models/app_helm_release.py @@ -20,7 +20,6 @@ class AppHelmRelease: """ Attributes: - body (str | Unset): The rspb.Release body, as a base64-encoded string created_at (str | Unset): created_by_id (str | Unset): helm_chart (AppHelmChart | Unset): @@ -40,7 +39,6 @@ class AppHelmRelease: version (int | Unset): """ - body: str | Unset = UNSET created_at: str | Unset = UNSET created_by_id: str | Unset = UNSET helm_chart: AppHelmChart | Unset = UNSET @@ -58,8 +56,6 @@ class AppHelmRelease: additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: - body = self.body - created_at = self.created_at created_by_id = self.created_by_id @@ -95,8 +91,6 @@ def to_dict(self) -> dict[str, Any]: field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({}) - if body is not UNSET: - field_dict["body"] = body if created_at is not UNSET: field_dict["created_at"] = created_at if created_by_id is not UNSET: @@ -134,8 +128,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_json_map import AppJSONMap d = dict(src_dict) - body = d.pop("body", UNSET) - created_at = d.pop("created_at", UNSET) created_by_id = d.pop("created_by_id", UNSET) @@ -175,7 +167,6 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: version = d.pop("version", UNSET) app_helm_release = cls( - body=body, created_at=created_at, created_by_id=created_by_id, helm_chart=helm_chart, diff --git a/nuon/models/app_install_stack_version.py b/nuon/models/app_install_stack_version.py index c7cb0e1b..71b345e5 100644 --- a/nuon/models/app_install_stack_version.py +++ b/nuon/models/app_install_stack_version.py @@ -11,6 +11,7 @@ if TYPE_CHECKING: from ..models.app_composite_status import AppCompositeStatus from ..models.app_install_stack_version_run import AppInstallStackVersionRun + from ..models.callback_ref import CallbackRef T = TypeVar("T", bound="AppInstallStackVersion") @@ -23,6 +24,7 @@ class AppInstallStackVersion: app_config_id (str | Unset): aws_bucket_key (str | Unset): aws_bucket_name (str | Unset): aws configuration parameters + callback_ref (CallbackRef | Unset): checksum (str | Unset): composite_status (AppCompositeStatus | Unset): contents (str | Unset): @@ -48,6 +50,7 @@ class AppInstallStackVersion: app_config_id: str | Unset = UNSET aws_bucket_key: str | Unset = UNSET aws_bucket_name: str | Unset = UNSET + callback_ref: CallbackRef | Unset = UNSET checksum: str | Unset = UNSET composite_status: AppCompositeStatus | Unset = UNSET contents: str | Unset = UNSET @@ -74,6 +77,10 @@ def to_dict(self) -> dict[str, Any]: aws_bucket_name = self.aws_bucket_name + callback_ref: dict[str, Any] | Unset = UNSET + if not isinstance(self.callback_ref, Unset): + callback_ref = self.callback_ref.to_dict() + checksum = self.checksum composite_status: dict[str, Any] | Unset = UNSET @@ -124,6 +131,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["aws_bucket_key"] = aws_bucket_key if aws_bucket_name is not UNSET: field_dict["aws_bucket_name"] = aws_bucket_name + if callback_ref is not UNSET: + field_dict["callback_ref"] = callback_ref if checksum is not UNSET: field_dict["checksum"] = checksum if composite_status is not UNSET: @@ -165,6 +174,7 @@ def to_dict(self) -> dict[str, Any]: def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_composite_status import AppCompositeStatus from ..models.app_install_stack_version_run import AppInstallStackVersionRun + from ..models.callback_ref import CallbackRef d = dict(src_dict) app_config_id = d.pop("app_config_id", UNSET) @@ -173,6 +183,13 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: aws_bucket_name = d.pop("aws_bucket_name", UNSET) + _callback_ref = d.pop("callback_ref", UNSET) + callback_ref: CallbackRef | Unset + if isinstance(_callback_ref, Unset): + callback_ref = UNSET + else: + callback_ref = CallbackRef.from_dict(_callback_ref) + checksum = d.pop("checksum", UNSET) _composite_status = d.pop("composite_status", UNSET) @@ -223,6 +240,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: app_config_id=app_config_id, aws_bucket_key=aws_bucket_key, aws_bucket_name=aws_bucket_name, + callback_ref=callback_ref, checksum=checksum, composite_status=composite_status, contents=contents, diff --git a/nuon/models/app_install_stack_version_run.py b/nuon/models/app_install_stack_version_run.py index 197efe1c..b7cc6582 100644 --- a/nuon/models/app_install_stack_version_run.py +++ b/nuon/models/app_install_stack_version_run.py @@ -6,11 +6,14 @@ from attrs import define as _attrs_define from attrs import field as _attrs_field +from ..models.app_stack_version_run_type import AppStackVersionRunType from ..types import UNSET, Unset if TYPE_CHECKING: from ..models.app_install_stack_version_run_data import AppInstallStackVersionRunData from ..models.app_install_stack_version_run_data_contents import AppInstallStackVersionRunDataContents + from ..models.app_stack_version_run_input_diff import AppStackVersionRunInputDiff + from ..models.app_stack_version_run_role_diff import AppStackVersionRunRoleDiff T = TypeVar("T", bound="AppInstallStackVersionRun") @@ -25,6 +28,9 @@ class AppInstallStackVersionRun: data (AppInstallStackVersionRunData | Unset): data_contents (AppInstallStackVersionRunDataContents | Unset): id (str | Unset): + input_diff (AppStackVersionRunInputDiff | Unset): + role_diff (AppStackVersionRunRoleDiff | Unset): + run_type (AppStackVersionRunType | Unset): updated_at (str | Unset): """ @@ -33,6 +39,9 @@ class AppInstallStackVersionRun: data: AppInstallStackVersionRunData | Unset = UNSET data_contents: AppInstallStackVersionRunDataContents | Unset = UNSET id: str | Unset = UNSET + input_diff: AppStackVersionRunInputDiff | Unset = UNSET + role_diff: AppStackVersionRunRoleDiff | Unset = UNSET + run_type: AppStackVersionRunType | Unset = UNSET updated_at: str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -51,6 +60,18 @@ def to_dict(self) -> dict[str, Any]: id = self.id + input_diff: dict[str, Any] | Unset = UNSET + if not isinstance(self.input_diff, Unset): + input_diff = self.input_diff.to_dict() + + role_diff: dict[str, Any] | Unset = UNSET + if not isinstance(self.role_diff, Unset): + role_diff = self.role_diff.to_dict() + + run_type: str | Unset = UNSET + if not isinstance(self.run_type, Unset): + run_type = self.run_type.value + updated_at = self.updated_at field_dict: dict[str, Any] = {} @@ -66,6 +87,12 @@ def to_dict(self) -> dict[str, Any]: field_dict["data_contents"] = data_contents if id is not UNSET: field_dict["id"] = id + if input_diff is not UNSET: + field_dict["input_diff"] = input_diff + if role_diff is not UNSET: + field_dict["role_diff"] = role_diff + if run_type is not UNSET: + field_dict["run_type"] = run_type if updated_at is not UNSET: field_dict["updated_at"] = updated_at @@ -75,6 +102,8 @@ def to_dict(self) -> dict[str, Any]: def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.app_install_stack_version_run_data import AppInstallStackVersionRunData from ..models.app_install_stack_version_run_data_contents import AppInstallStackVersionRunDataContents + from ..models.app_stack_version_run_input_diff import AppStackVersionRunInputDiff + from ..models.app_stack_version_run_role_diff import AppStackVersionRunRoleDiff d = dict(src_dict) created_at = d.pop("created_at", UNSET) @@ -97,6 +126,27 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: id = d.pop("id", UNSET) + _input_diff = d.pop("input_diff", UNSET) + input_diff: AppStackVersionRunInputDiff | Unset + if isinstance(_input_diff, Unset): + input_diff = UNSET + else: + input_diff = AppStackVersionRunInputDiff.from_dict(_input_diff) + + _role_diff = d.pop("role_diff", UNSET) + role_diff: AppStackVersionRunRoleDiff | Unset + if isinstance(_role_diff, Unset): + role_diff = UNSET + else: + role_diff = AppStackVersionRunRoleDiff.from_dict(_role_diff) + + _run_type = d.pop("run_type", UNSET) + run_type: AppStackVersionRunType | Unset + if isinstance(_run_type, Unset): + run_type = UNSET + else: + run_type = AppStackVersionRunType(_run_type) + updated_at = d.pop("updated_at", UNSET) app_install_stack_version_run = cls( @@ -105,6 +155,9 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: data=data, data_contents=data_contents, id=id, + input_diff=input_diff, + role_diff=role_diff, + run_type=run_type, updated_at=updated_at, ) diff --git a/nuon/models/app_stack_version_run_input_diff.py b/nuon/models/app_stack_version_run_input_diff.py new file mode 100644 index 00000000..89de1e46 --- /dev/null +++ b/nuon/models/app_stack_version_run_input_diff.py @@ -0,0 +1,85 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AppStackVersionRunInputDiff") + + +@_attrs_define +class AppStackVersionRunInputDiff: + """ + Attributes: + added (list[str] | Unset): + changed (list[str] | Unset): + removed (list[str] | Unset): + """ + + added: list[str] | Unset = UNSET + changed: list[str] | Unset = UNSET + removed: list[str] | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + added: list[str] | Unset = UNSET + if not isinstance(self.added, Unset): + added = self.added + + changed: list[str] | Unset = UNSET + if not isinstance(self.changed, Unset): + changed = self.changed + + removed: list[str] | Unset = UNSET + if not isinstance(self.removed, Unset): + removed = self.removed + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({}) + if added is not UNSET: + field_dict["added"] = added + if changed is not UNSET: + field_dict["changed"] = changed + if removed is not UNSET: + field_dict["removed"] = removed + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + added = cast(list[str], d.pop("added", UNSET)) + + changed = cast(list[str], d.pop("changed", UNSET)) + + removed = cast(list[str], d.pop("removed", UNSET)) + + app_stack_version_run_input_diff = cls( + added=added, + changed=changed, + removed=removed, + ) + + app_stack_version_run_input_diff.additional_properties = d + return app_stack_version_run_input_diff + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/nuon/models/app_stack_version_run_role_diff.py b/nuon/models/app_stack_version_run_role_diff.py new file mode 100644 index 00000000..f27a564b --- /dev/null +++ b/nuon/models/app_stack_version_run_role_diff.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="AppStackVersionRunRoleDiff") + + +@_attrs_define +class AppStackVersionRunRoleDiff: + """ + Attributes: + disabled (list[str] | Unset): + enabled (list[str] | Unset): + """ + + disabled: list[str] | Unset = UNSET + enabled: list[str] | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + disabled: list[str] | Unset = UNSET + if not isinstance(self.disabled, Unset): + disabled = self.disabled + + enabled: list[str] | Unset = UNSET + if not isinstance(self.enabled, Unset): + enabled = self.enabled + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({}) + if disabled is not UNSET: + field_dict["disabled"] = disabled + if enabled is not UNSET: + field_dict["enabled"] = enabled + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + disabled = cast(list[str], d.pop("disabled", UNSET)) + + enabled = cast(list[str], d.pop("enabled", UNSET)) + + app_stack_version_run_role_diff = cls( + disabled=disabled, + enabled=enabled, + ) + + app_stack_version_run_role_diff.additional_properties = d + return app_stack_version_run_role_diff + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/nuon/models/app_stack_version_run_type.py b/nuon/models/app_stack_version_run_type.py new file mode 100644 index 00000000..aa813102 --- /dev/null +++ b/nuon/models/app_stack_version_run_type.py @@ -0,0 +1,9 @@ +from enum import Enum + + +class AppStackVersionRunType(str, Enum): + OUT_OF_BAND_UPDATE = "out-of-band-update" + WORKFLOW_RUN = "workflow-run" + + def __str__(self) -> str: + return str(self.value) diff --git a/nuon/models/app_workflow_step_approval_type.py b/nuon/models/app_workflow_step_approval_type.py index 37331ea2..e17b2905 100644 --- a/nuon/models/app_workflow_step_approval_type.py +++ b/nuon/models/app_workflow_step_approval_type.py @@ -3,6 +3,7 @@ class AppWorkflowStepApprovalType(str, Enum): APPROVE_ALL = "approve-all" + APP_BRANCH_PLAN = "app_branch_plan" HELM_APPROVAL = "helm_approval" KUBERNETES_MANIFEST_APPROVAL = "kubernetes_manifest_approval" NOOP = "noop" diff --git a/nuon/models/service_create_install_component_deploy_request.py b/nuon/models/service_create_install_component_deploy_request.py index fa221272..46a8a99e 100644 --- a/nuon/models/service_create_install_component_deploy_request.py +++ b/nuon/models/service_create_install_component_deploy_request.py @@ -16,12 +16,14 @@ class ServiceCreateInstallComponentDeployRequest: """ Attributes: build_id (str | Unset): + deploy_dependencies (bool | Unset): deploy_dependents (bool | Unset): plan_only (bool | Unset): role (str | Unset): """ build_id: str | Unset = UNSET + deploy_dependencies: bool | Unset = UNSET deploy_dependents: bool | Unset = UNSET plan_only: bool | Unset = UNSET role: str | Unset = UNSET @@ -30,6 +32,8 @@ class ServiceCreateInstallComponentDeployRequest: def to_dict(self) -> dict[str, Any]: build_id = self.build_id + deploy_dependencies = self.deploy_dependencies + deploy_dependents = self.deploy_dependents plan_only = self.plan_only @@ -41,6 +45,8 @@ def to_dict(self) -> dict[str, Any]: field_dict.update({}) if build_id is not UNSET: field_dict["build_id"] = build_id + if deploy_dependencies is not UNSET: + field_dict["deploy_dependencies"] = deploy_dependencies if deploy_dependents is not UNSET: field_dict["deploy_dependents"] = deploy_dependents if plan_only is not UNSET: @@ -55,6 +61,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) build_id = d.pop("build_id", UNSET) + deploy_dependencies = d.pop("deploy_dependencies", UNSET) + deploy_dependents = d.pop("deploy_dependents", UNSET) plan_only = d.pop("plan_only", UNSET) @@ -63,6 +71,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: service_create_install_component_deploy_request = cls( build_id=build_id, + deploy_dependencies=deploy_dependencies, deploy_dependents=deploy_dependents, plan_only=plan_only, role=role, diff --git a/nuon/models/service_create_install_deploy_request.py b/nuon/models/service_create_install_deploy_request.py index dbbd6be5..fa7b531f 100644 --- a/nuon/models/service_create_install_deploy_request.py +++ b/nuon/models/service_create_install_deploy_request.py @@ -16,12 +16,14 @@ class ServiceCreateInstallDeployRequest: """ Attributes: build_id (str | Unset): + deploy_dependencies (bool | Unset): deploy_dependents (bool | Unset): plan_only (bool | Unset): role (str | Unset): """ build_id: str | Unset = UNSET + deploy_dependencies: bool | Unset = UNSET deploy_dependents: bool | Unset = UNSET plan_only: bool | Unset = UNSET role: str | Unset = UNSET @@ -30,6 +32,8 @@ class ServiceCreateInstallDeployRequest: def to_dict(self) -> dict[str, Any]: build_id = self.build_id + deploy_dependencies = self.deploy_dependencies + deploy_dependents = self.deploy_dependents plan_only = self.plan_only @@ -41,6 +45,8 @@ def to_dict(self) -> dict[str, Any]: field_dict.update({}) if build_id is not UNSET: field_dict["build_id"] = build_id + if deploy_dependencies is not UNSET: + field_dict["deploy_dependencies"] = deploy_dependencies if deploy_dependents is not UNSET: field_dict["deploy_dependents"] = deploy_dependents if plan_only is not UNSET: @@ -55,6 +61,8 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) build_id = d.pop("build_id", UNSET) + deploy_dependencies = d.pop("deploy_dependencies", UNSET) + deploy_dependents = d.pop("deploy_dependents", UNSET) plan_only = d.pop("plan_only", UNSET) @@ -63,6 +71,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: service_create_install_deploy_request = cls( build_id=build_id, + deploy_dependencies=deploy_dependencies, deploy_dependents=deploy_dependents, plan_only=plan_only, role=role, diff --git a/nuon/models/service_trigger_app_branch_run_request.py b/nuon/models/service_trigger_app_branch_run_request.py index ba16b353..8c40195a 100644 --- a/nuon/models/service_trigger_app_branch_run_request.py +++ b/nuon/models/service_trigger_app_branch_run_request.py @@ -15,48 +15,66 @@ class ServiceTriggerAppBranchRunRequest: """ Attributes: + app_config_id (str | Unset): optional - use pre-existing app config (skips VCS fetch + config parse) config_id (str | Unset): optional - use latest if not provided force (bool | Unset): force run even if no changes detected plan_only (bool | Unset): plan-only preview mode (no apply) + skip_builds (bool | Unset): skip builds step (e.g. rollback to existing config with existing builds) """ + app_config_id: str | Unset = UNSET config_id: str | Unset = UNSET force: bool | Unset = UNSET plan_only: bool | Unset = UNSET + skip_builds: bool | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: + app_config_id = self.app_config_id + config_id = self.config_id force = self.force plan_only = self.plan_only + skip_builds = self.skip_builds + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({}) + if app_config_id is not UNSET: + field_dict["app_config_id"] = app_config_id if config_id is not UNSET: field_dict["config_id"] = config_id if force is not UNSET: field_dict["force"] = force if plan_only is not UNSET: field_dict["plan_only"] = plan_only + if skip_builds is not UNSET: + field_dict["skip_builds"] = skip_builds return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) + app_config_id = d.pop("app_config_id", UNSET) + config_id = d.pop("config_id", UNSET) force = d.pop("force", UNSET) plan_only = d.pop("plan_only", UNSET) + skip_builds = d.pop("skip_builds", UNSET) + service_trigger_app_branch_run_request = cls( + app_config_id=app_config_id, config_id=config_id, force=force, plan_only=plan_only, + skip_builds=skip_builds, ) service_trigger_app_branch_run_request.additional_properties = d diff --git a/pyproject.toml b/pyproject.toml index 7da6a8dc..1d134a33 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "nuon" -version = "0.19.1012" +version = "0.19.1014" description = "A client library for accessing Nuon" authors = [] requires-python = ">=3.11" diff --git a/version.txt b/version.txt index 7ec53b3a..533c5cb8 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -0.19.1012 +0.19.1014