Example #1
0
    def __init__(self, provider_def):
        """
        Initialize object

        :param provider_def: provider definition dict

        :returns: `geomet_data_registry.layer.base.BaseLayer`
        """

        # list of dictionaries
        self.items = []
        self.model_run_list = []

        self.receive_datetime = get_today_and_now()
        self.identify_datetime = None
        self.register_datetime = None
        self.filepath = None
        self.url = None
        self.dimensions = None
        self.model = None
        self.model_run = None
        self.geomet_layers = None
        self.wx_variable = None
        self.date_ = None
        self.file_dict = None
        self.new_key_store = False

        self.name = provider_def['name']
        self.store = load_plugin('store', STORE_PROVIDER_DEF)
        self.tileindex = load_plugin('tileindex', TILEINDEX_PROVIDER_DEF)
    def handle(self):
        """
        handle incoming file

        :returns: `bool` of status result
        """

        LOGGER.debug('Detecting filename pattern')
        for key in DATASET_HANDLERS.keys():
            if key in self.filepath:
                plugin_def = {
                    'type': DATASET_HANDLERS[key],
                }
                LOGGER.debug('Loading plugin {}'.format(plugin_def))
                self.layer_plugin = load_plugin('layer', plugin_def)

        if self.layer_plugin is None:
            msg = 'Plugin not found'
            LOGGER.error(msg)
            raise RuntimeError(msg)

        LOGGER.debug('Identifying file')
        identify_status = self.layer_plugin.identify(self.filepath)

        if identify_status:
            self.layer_plugin.identify_datetime = get_today_and_now()
            LOGGER.debug('Registering file')
            self.layer_plugin.register()
            if self.layer_plugin.new_key_store:
                self.layer_plugin.add_time_key()
        return True