def _initialize_non_regional_device_session(aws_session: AwsSession, device: AwsDevice, logger: Logger) -> AwsSession: original_region = aws_session.region try: aws_session.get_device(device) return aws_session except ClientError as e: if e.response["Error"]["Code"] == "ResourceNotFoundException": if "qpu" not in device: raise ValueError( f"Simulator '{device}' not found in '{original_region}'" ) else: raise e for region in frozenset(AwsDevice.REGIONS) - {original_region}: device_session = aws_session.copy_session(region=region) try: device_session.get_device(device) logger.info( f"Changed session region from '{original_region}' to '{device_session.region}'" ) return device_session except ClientError as e: if e.response["Error"]["Code"] != "ResourceNotFoundException": raise e raise ValueError(f"QPU '{device}' not found.")
def _initialize_regional_device_session(aws_session: AwsSession, device: AwsDevice, logger: Logger) -> AwsSession: device_region = AwsDevice.get_device_region(device) current_region = aws_session.region if current_region != device_region: aws_session = aws_session.copy_session(region=device_region) logger.info( f"Changed session region from '{current_region}' to '{device_region}'" ) try: aws_session.get_device(device) return aws_session except ClientError as e: raise ValueError(f"'{device}' not found.") if e.response["Error"][ "Code"] == "ResourceNotFoundException" else e
def _populate_properties(self, session: AwsSession) -> None: metadata = session.get_device(self._arn) self._name = metadata.get("deviceName") self._status = metadata.get("deviceStatus") self._type = AwsDeviceType(metadata.get("deviceType")) self._provider_name = metadata.get("providerName") self._properties = metadata.get("deviceCapabilities")