Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
    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
Пример #5
0
    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
Пример #6
0
    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