Changeset View
Changeset View
Standalone View
Standalone View
swh/storage/in_memory.py
Show First 20 Lines • Show All 1,459 Lines • ▼ Show 20 Lines | def origin_metadata_get_by(self, origin_id, provider_type=None, db=None, | ||||
- provider_url (str) | - provider_url (str) | ||||
""" | """ | ||||
metadata = [] | metadata = [] | ||||
for item in self._origin_metadata[origin_id]: | for item in self._origin_metadata[origin_id]: | ||||
item = copy.deepcopy(item) | item = copy.deepcopy(item) | ||||
provider = self.metadata_provider_get(item['provider_id']) | provider = self.metadata_provider_get(item['provider_id']) | ||||
for attr in ('name', 'type', 'url'): | for attr in ('name', 'type', 'url'): | ||||
item['provider_' + attr] = provider[attr] | item['provider_' + attr] = provider['provider_' + attr] | ||||
metadata.append(item) | metadata.append(item) | ||||
return metadata | return metadata | ||||
def tool_add(self, tools): | def tool_add(self, tools): | ||||
"""Add new tools to the storage. | """Add new tools to the storage. | ||||
Args: | Args: | ||||
tools (iterable of :class:`dict`): Tool information to add to | tools (iterable of :class:`dict`): Tool information to add to | ||||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | def metadata_provider_add(self, provider_name, provider_type, provider_url, | ||||
provider_type (str): Its type | provider_type (str): Its type | ||||
provider_url (str): Its URL | provider_url (str): Its URL | ||||
metadata: JSON-encodable object | metadata: JSON-encodable object | ||||
Returns: | Returns: | ||||
an identifier of the provider | an identifier of the provider | ||||
""" | """ | ||||
provider = { | provider = { | ||||
'name': provider_name, | 'provider_name': provider_name, | ||||
'type': provider_type, | 'provider_type': provider_type, | ||||
'url': provider_url, | 'provider_url': provider_url, | ||||
'metadata': metadata, | 'metadata': metadata, | ||||
} | } | ||||
key = self._metadata_provider_key(provider) | key = self._metadata_provider_key(provider) | ||||
provider['id'] = key | provider['id'] = key | ||||
self._metadata_providers[key] = provider | self._metadata_providers[key] = provider | ||||
return key | return key | ||||
def metadata_provider_get(self, provider_id, db=None, cur=None): | def metadata_provider_get(self, provider_id, db=None, cur=None): | ||||
Show All 14 Lines | def metadata_provider_get_by(self, provider, db=None, cur=None): | ||||
Args: | Args: | ||||
provider_name: Its name | provider_name: Its name | ||||
provider_url: Its URL | provider_url: Its URL | ||||
Returns: | Returns: | ||||
dict: same as `metadata_provider_add`; | dict: same as `metadata_provider_add`; | ||||
or None if it does not exist. | or None if it does not exist. | ||||
""" | """ | ||||
key = self._metadata_provider_key({ | key = self._metadata_provider_key(provider) | ||||
'name': provider['provider_name'], | |||||
'url': provider['provider_url']}) | |||||
return self._metadata_providers.get(key) | return self._metadata_providers.get(key) | ||||
def _origin_id(self, origin): | def _origin_id(self, origin): | ||||
origin_id = None | origin_id = None | ||||
for stored_origin in self._origins: | for stored_origin in self._origins: | ||||
if stored_origin['url'] == origin['url'] \ | if stored_origin['url'] == origin['url'] \ | ||||
and ('type' not in origin | and ('type' not in origin | ||||
or stored_origin['type'] == origin['type']): | or stored_origin['type'] == origin['type']): | ||||
Show All 28 Lines | |||||
@staticmethod | @staticmethod | ||||
def _tool_key(tool): | def _tool_key(tool): | ||||
return '%r %r %r' % (tool['name'], tool['version'], | return '%r %r %r' % (tool['name'], tool['version'], | ||||
tuple(sorted(tool['configuration'].items()))) | tuple(sorted(tool['configuration'].items()))) | ||||
@staticmethod | @staticmethod | ||||
def _metadata_provider_key(provider): | def _metadata_provider_key(provider): | ||||
return '%r %r' % (provider['name'], provider['url']) | return '%r %r' % (provider['provider_name'], provider['provider_url']) |