import json import urllib from moto.core.responses import BaseResponse from .models import PanoramaBackend, panorama_backends class PanoramaResponse(BaseResponse): def __init__(self) -> None: super().__init__(service_name="panorama") @property def panorama_backend(self) -> PanoramaBackend: return panorama_backends[self.current_account][self.region] def provision_device(self) -> str: description = self._get_param("Description") name = self._get_param("Name") networking_configuration = self._get_param("NetworkingConfiguration") tags = self._get_param("Tags") device = self.panorama_backend.provision_device( description=description, name=name, networking_configuration=networking_configuration, tags=tags, ) return json.dumps(device.response_provision) def describe_device(self) -> str: device_id = urllib.parse.unquote(self._get_param("DeviceId")) device = self.panorama_backend.describe_device(device_id=device_id) return json.dumps(device.response_object()) def list_devices( self, ) -> str: device_aggregated_status_filter = self._get_param( "DeviceAggregatedStatusFilter" ) max_results = self._get_int_param("MaxResults") name_filter = self._get_param("NameFilter") next_token = self._get_param("NextToken") sort_by = self._get_param("SortBy") sort_order = self._get_param("SortOrder") list_devices, next_token = self.panorama_backend.list_devices( device_aggregated_status_filter=device_aggregated_status_filter, max_results=max_results, name_filter=name_filter, next_token=next_token, sort_by=sort_by, sort_order=sort_order, ) return json.dumps( { "Devices": [device.response_listed() for device in list_devices], "NextToken": next_token, } ) def update_device_metadata(self) -> str: device_id = urllib.parse.unquote(self._get_param("DeviceId")) description = self._get_param("Description") device = self.panorama_backend.update_device_metadata( device_id=device_id, description=description ) return json.dumps(device.response_updated) def delete_device(self) -> str: device_id = urllib.parse.unquote(self._get_param("DeviceId")) device = self.panorama_backend.delete_device(device_id=device_id) return json.dumps(device.response_deleted) def create_node_from_template_job(self) -> str: job_tags = self._get_param("JobTags") node_description = self._get_param("NodeDescription") node_name = self._get_param("NodeName") output_package_name = self._get_param("OutputPackageName") output_package_version = self._get_param("OutputPackageVersion") template_parameters = self._get_param("TemplateParameters") template_type = self._get_param("TemplateType") node = self.panorama_backend.create_node_from_template_job( job_tags=job_tags, node_description=node_description, node_name=node_name, output_package_name=output_package_name, output_package_version=output_package_version, template_parameters=template_parameters, template_type=template_type, ) return json.dumps(node.response_created()) def describe_node_from_template_job(self) -> str: job_id = self._get_param("JobId") node = self.panorama_backend.describe_node_from_template_job(job_id=job_id) return json.dumps(node.response_described()) def list_nodes(self) -> str: category = self._get_param("category") max_results = self._get_int_param("maxResults") next_token = self._get_param("nextToken") list_nodes, next_token = self.panorama_backend.list_nodes( category=category, max_results=max_results, next_token=next_token ) return json.dumps( { "Nodes": [node.response_listed() for node in list_nodes], "NextToken": next_token, } ) def create_application_instance(self) -> str: application_instance_id_to_replace = self._get_param( "ApplicationInstanceIdToReplace" ) default_runtime_context_device = self._get_param("DefaultRuntimeContextDevice") description = self._get_param("Description") manifest_overrides_payload = self._get_param("ManifestOverridesPayload") manifest_payload = self._get_param("ManifestPayload") name = self._get_param("Name") runtime_role_arn = self._get_param("RuntimeRoleArn") tags = self._get_param("Tags") application_instance = self.panorama_backend.create_application_instance( application_instance_id_to_replace=application_instance_id_to_replace, default_runtime_context_device=default_runtime_context_device, description=description, manifest_overrides_payload=manifest_overrides_payload, manifest_payload=manifest_payload, name=name, runtime_role_arn=runtime_role_arn, tags=tags, ) return json.dumps(application_instance.response_created()) def describe_application_instance(self) -> str: application_instance_id = self._get_param("ApplicationInstanceId") application_instance = self.panorama_backend.describe_application_instance( application_instance_id=application_instance_id ) return json.dumps(application_instance.response_describe()) def describe_application_instance_details(self) -> str: return self.describe_application_instance() def list_application_instances(self) -> str: device_id = self._get_param("deviceId") max_results = self._get_int_param("maxResults") status_filter = self._get_param("statusFilter") next_token = self._get_param("nextToken") list_application_instances, next_token = ( self.panorama_backend.list_application_instances( device_id=device_id, max_results=max_results, status_filter=status_filter, next_token=next_token, ) ) return json.dumps( { "ApplicationInstances": [ application_instance.response_describe() for application_instance in list_application_instances ], "NextToken": next_token, } )
Memory