def create_or_update_datamanager(self, channel_name, instance, datamanager, key): # create instance if does not exist if not instance: instance, created = DataManager.objects.update_or_create( key=key, name=datamanager['name'], validated=True) if not instance.data_opener: url = datamanager['opener']['storage_address'] content = get_remote_asset(channel_name, url, datamanager['owner'], datamanager['opener']['checksum']) f = tempfile.TemporaryFile() f.write(content) # save/update data_opener in local db for later use instance.data_opener.save('opener.py', f) # do the same for description if not instance.description: url = datamanager['description']['storage_address'] content = get_remote_asset(channel_name, url, datamanager['owner'], datamanager['description']['checksum']) f = tempfile.TemporaryFile() f.write(content) # save/update description in local db for later use instance.description.save('description.md', f) return instance
def create_or_update_objective(self, objective, pk): # get description from remote node url = objective['description']['storageAddress'] content = get_remote_asset(url, objective['owner'], pk) # write objective with description in local db for later use tmp_description = tempfile.TemporaryFile() tmp_description.write(content) instance, created = Objective.objects.update_or_create(pkhash=pk, validated=True) instance.description.save('description.md', tmp_description) return instance
def create_or_update_algo(self, algo, pk): # get algo description from remote node url = algo['description']['storageAddress'] content = get_remote_asset(url, algo['owner'], algo['description']['hash']) f = tempfile.TemporaryFile() f.write(content) # save/update objective in local db for later use instance, created = Algo.objects.update_or_create(pkhash=pk, validated=True) instance.description.save('description.md', f) return instance
def create_or_update_objective(self, channel_name, objective, key): # get description from remote node url = objective['description']['storage_address'] checksum = objective['description']['checksum'] content = get_remote_asset(channel_name, url, objective['owner'], checksum) # write objective with description in local db for later use tmp_description = tempfile.TemporaryFile() tmp_description.write(content) instance, created = Objective.objects.update_or_create(key=key, validated=True) instance.description.save('description.md', tmp_description) return instance
def create_or_update_algo(self, channel_name, algo, key): # get algo description from remote node url = algo['description']['storage_address'] content = get_remote_asset(channel_name, url, algo['owner'], algo['description']['checksum']) f = tempfile.TemporaryFile() f.write(content) # save/update objective in local db for later use instance, created = Algo.objects.update_or_create(key=key, validated=True) instance.description.save('description.md', f) return instance
def create_or_update_model(self, channel_name, traintuple, key): if traintuple['out_model'] is None: raise Exception(f'This traintuple related to this model key {key} does not have a out_model') # get model from remote node url = traintuple['out_model']['storage_address'] content = get_remote_asset(channel_name, url, traintuple['creator'], traintuple['key']) # write model in local db for later use tmp_model = tempfile.TemporaryFile() tmp_model.write(content) instance, created = Model.objects.update_or_create(key=key, validated=True) instance.file.save('model', tmp_model) return instance