68 lines
3.0 KiB
Python
68 lines
3.0 KiB
Python
from pyinfra.file_descriptor_builder import FileDescriptorBuilder
|
|
|
|
|
|
class FileDescriptorManager:
|
|
"""Decorates a file descriptor builder with additional convenience functionality and this way provides a
|
|
comprehensive interface for all file descriptor related operations, while the concrete descriptor logic is
|
|
implemented in a file descriptor builder.
|
|
|
|
TODO: This is supposed to be fully decoupled from the concrete file descriptor builder implementation, however some
|
|
bad coupling is still left.
|
|
"""
|
|
|
|
def __init__(self, bucket_name, file_descriptor_builder: FileDescriptorBuilder):
|
|
self.bucket_name = bucket_name
|
|
self.operation_file_descriptor_builder = file_descriptor_builder
|
|
|
|
def get_input_object_name(self, queue_item_body: dict):
|
|
return self.get_object_name(queue_item_body, end="input")
|
|
|
|
def get_output_object_name(self, queue_item_body: dict):
|
|
return self.get_object_name(queue_item_body, end="output")
|
|
|
|
def get_object_name(self, queue_item_body: dict, end):
|
|
file_descriptor = self.build_file_descriptor(queue_item_body, end=end)
|
|
object_name = self.__build_matcher(file_descriptor)
|
|
|
|
return object_name
|
|
|
|
def build_file_descriptor(self, queue_item_body, end="input"):
|
|
return self.operation_file_descriptor_builder.build_file_descriptor(queue_item_body, end=end)
|
|
|
|
def build_input_matcher(self, queue_item_body):
|
|
return self.build_matcher(queue_item_body, end="input")
|
|
|
|
def build_output_matcher(self, queue_item_body):
|
|
return self.build_matcher(queue_item_body, end="output")
|
|
|
|
def build_matcher(self, queue_item_body, end):
|
|
file_descriptor = self.build_file_descriptor(queue_item_body, end=end)
|
|
return self.__build_matcher(file_descriptor)
|
|
|
|
def __build_matcher(self, file_descriptor):
|
|
return self.operation_file_descriptor_builder.build_matcher(file_descriptor)
|
|
|
|
def get_input_object_descriptor(self, queue_item_body):
|
|
return self.get_object_descriptor(queue_item_body, end="input")
|
|
|
|
def get_output_object_descriptor(self, storage_upload_info):
|
|
print(1111111111111111111111111111111111111111111)
|
|
r = self.get_object_descriptor(storage_upload_info, end="output")
|
|
print(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", r)
|
|
return r
|
|
|
|
def get_object_descriptor(self, queue_item_body, end):
|
|
print(22222222222222222222222222222222222222222, end, queue_item_body)
|
|
# TODO: this is complected with the Storage class API
|
|
# FIXME: bad coupling
|
|
return {
|
|
"bucket_name": self.bucket_name,
|
|
"object_name": self.get_object_name(queue_item_body, end=end),
|
|
}
|
|
|
|
def build_storage_upload_info(self, analysis_payload, request_metadata):
|
|
return self.operation_file_descriptor_builder.build_storage_upload_info(analysis_payload, request_metadata)
|
|
|
|
def get_path_prefix(self, queue_item_body):
|
|
return self.operation_file_descriptor_builder.get_path_prefix(queue_item_body)
|