Exemple #1
0
    def __init__(self):
        """
        Initialize RepoSyncScheduleResource.
        """

        super(RepoSyncScheduleResourceView, self).__init__()
        self.manager = manager_factory.repo_sync_schedule_manager()
Exemple #2
0
    def get(self, request, repo_id, importer_id):
        """
        Retrieve a list of all scheduled syncs for the given importer and repo.

        :param request: WSGI request object
        :type  request: django.core.handlers.wsgi.WSGIRequest
        :param repo_id: id of the repository
        :type  repo_id: str
        :param importer_id: retrieve the scheduled syncs of this importer
        :type  importer_id: str

        :return: Response containing a list of dicts, one for each scheduled sync
        :rtype : django.http.HttpResponse
        """

        manager = manager_factory.repo_sync_schedule_manager()
        schedules = manager.list(repo_id, importer_id)
        for_display = [schedule.for_display() for schedule in schedules]
        for entry in for_display:
            entry['_href'] = reverse(
                'repo_sync_schedule_resource',
                kwargs={'repo_id': repo_id, 'importer_id': importer_id, 'schedule_id': entry['_id']}
            )

        return generate_json_response(for_display)
Exemple #3
0
    def post(self, request, repo_id, importer_id):
        """
        Create a new scheduled sync.

        :param request: WSGI request object
        :type  request: django.core.handlers.wsgi.WSGIRequest
        :param repo_id: id of the repository
        :type  repo_id: str
        :param importer_id: create a new scheduled sync for this importer
        :type  importer_id: str

        :return: Response containing a serialized dict of the new  scheduled sync
        :rtype : django.http.HttpResponse
        :raises exceptions.UnsupportedValue: if there are unsupported request body params
        """

        manager = manager_factory.repo_sync_schedule_manager()
        sync_options = {'override_config': request.body_as_json.pop('override_config', {})}
        schedule = request.body_as_json.pop('schedule', None)
        failure_threshold = request.body_as_json.pop('failure_threshold', None)
        enabled = request.body_as_json.pop('enabled', True)
        if request.body_as_json:
            raise exceptions.UnsupportedValue(request.body_as_json.keys())

        scheduled_call = manager.create(repo_id, importer_id, sync_options,
                                        schedule, failure_threshold, enabled)
        display_call = scheduled_call.for_display()
        display_call['_href'] = reverse(
            'repo_sync_schedule_resource',
            kwargs={'repo_id': repo_id, 'importer_id': importer_id,
                    'schedule_id': scheduled_call['id']}
        )
        response = generate_json_response(display_call)
        return generate_redirect_response(response, display_call['_href'])
Exemple #4
0
    def __init__(self):
        """
        Initialize RepoSyncScheduleResource.
        """

        super(RepoSyncScheduleResourceView, self).__init__()
        self.manager = manager_factory.repo_sync_schedule_manager()
Exemple #5
0
    def post(self, request, repo_id, importer_id):
        """
        Create a new scheduled sync.

        :param request: WSGI request object
        :type  request: django.core.handlers.wsgi.WSGIRequest
        :param repo_id: id of the repository
        :type  repo_id: str
        :param importer_id: create a new scheduled sync for this importer
        :type  importer_id: str

        :return: Response containing a serialized dict of the new  scheduled sync
        :rtype : django.http.HttpResponse
        :raises exceptions.UnsupportedValue: if there are unsupported request body params
        """

        manager = manager_factory.repo_sync_schedule_manager()
        sync_options = {'override_config': request.body_as_json.pop('override_config', {})}
        schedule = request.body_as_json.pop('schedule', None)
        failure_threshold = request.body_as_json.pop('failure_threshold', None)
        enabled = request.body_as_json.pop('enabled', True)
        if request.body_as_json:
            raise exceptions.UnsupportedValue(request.body_as_json.keys())

        scheduled_call = manager.create(repo_id, importer_id, sync_options,
                                        schedule, failure_threshold, enabled)
        display_call = scheduled_call.for_display()
        display_call['_href'] = reverse(
            'repo_sync_schedule_resource',
            kwargs={'repo_id': repo_id, 'importer_id': importer_id,
                    'schedule_id': scheduled_call['id']}
        )
        response = generate_json_response(display_call)
        return generate_redirect_response(response, display_call['_href'])
Exemple #6
0
    def get(self, request, repo_id, importer_id):
        """
        Retrieve a list of all scheduled syncs for the given importer and repo.

        :param request: WSGI request object
        :type  request: django.core.handlers.wsgi.WSGIRequest
        :param repo_id: id of the repository
        :type  repo_id: str
        :param importer_id: retrieve the scheduled syncs of this importer
        :type  importer_id: str

        :return: Response containing a list of dicts, one for each scheduled sync
        :rtype : django.http.HttpResponse
        """

        manager = manager_factory.repo_sync_schedule_manager()
        schedules = manager.list(repo_id, importer_id)
        for_display = [schedule.for_display() for schedule in schedules]
        for entry in for_display:
            entry['_href'] = reverse(
                'repo_sync_schedule_resource',
                kwargs={'repo_id': repo_id, 'importer_id': importer_id, 'schedule_id': entry['_id']}
            )

        return generate_json_response(for_display)
Exemple #7
0
    def GET(self, repo_id, importer_id):
        manager = manager_factory.repo_sync_schedule_manager()
        schedules = manager.list(repo_id, importer_id)
        for_display = [schedule.for_display() for schedule in schedules]
        for entry in for_display:
            entry.update(serialization.link.child_link_obj(entry['_id']))

        return self.ok(for_display)
Exemple #8
0
    def GET(self, repo_id, importer_id):
        manager = manager_factory.repo_sync_schedule_manager()
        schedules = manager.list(repo_id, importer_id)
        for_display = [schedule.for_display() for schedule in schedules]
        for entry in for_display:
            entry.update(serialization.link.child_link_obj(entry['_id']))

        return self.ok(for_display)
Exemple #9
0
    def POST(self, repo_id, importer_id):
        manager = manager_factory.repo_sync_schedule_manager()

        params = self.params()
        sync_options = {"override_config": params.pop("override_config", {})}
        schedule = params.pop("schedule", None)
        failure_threshold = params.pop("failure_threshold", None)
        enabled = params.pop("enabled", True)
        if params:
            raise exceptions.UnsupportedValue(params.keys())

        scheduled_call = manager.create(repo_id, importer_id, sync_options, schedule, failure_threshold, enabled)

        ret = scheduled_call.for_display()
        ret.update(serialization.link.child_link_obj(scheduled_call.id))
        return self.created(ret["_href"], ret)
Exemple #10
0
    def POST(self, repo_id, importer_id):
        manager = manager_factory.repo_sync_schedule_manager()

        params = self.params()
        sync_options = {'override_config': params.pop('override_config', {})}
        schedule = params.pop('schedule', None)
        failure_threshold = params.pop('failure_threshold', None)
        enabled = params.pop('enabled', True)
        if params:
            raise exceptions.UnsupportedValue(params.keys())

        scheduled_call = manager.create(repo_id, importer_id, sync_options,
                                        schedule, failure_threshold, enabled)

        ret = scheduled_call.for_display()
        ret.update(serialization.link.child_link_obj(scheduled_call.id))
        return self.created(ret['_href'], ret)
Exemple #11
0
def remove_importer(repo_id):
    """
    Removes an importer from a repository.

    :param repo_id: identifies the repo
    :type  repo_id: str
    """
    repo_obj = model.Repository.objects.get_repo_or_missing_resource(repo_id)
    repo_importer = model.Importer.objects.get_or_404(repo_id=repo_id)

    # remove schedules
    sync_manager = manager_factory.repo_sync_schedule_manager()
    sync_manager.delete_by_importer_id(repo_id, repo_importer.importer_type_id)

    # Call the importer's cleanup method
    importer_instance, plugin_config = plugin_api.get_importer_by_id(repo_importer.importer_type_id)

    call_config = PluginCallConfiguration(plugin_config, repo_importer.config)
    transfer_repo = repo_obj.to_transfer_repo()
    importer_instance.importer_removed(transfer_repo, call_config)
    repo_importer.delete()
Exemple #12
0
def remove_importer(repo_id):
    """
    Removes an importer from a repository.

    :param repo_id: identifies the repo
    :type  repo_id: str
    """
    repo_obj = model.Repository.objects.get_repo_or_missing_resource(repo_id)
    repo_importer = model.Importer.objects.get_or_404(repo_id=repo_id)

    # remove schedules
    sync_manager = manager_factory.repo_sync_schedule_manager()
    sync_manager.delete_by_importer_id(repo_id, repo_importer.importer_type_id)

    # Call the importer's cleanup method
    importer_instance, plugin_config = plugin_api.get_importer_by_id(repo_importer.importer_type_id)

    call_config = PluginCallConfiguration(plugin_config, repo_importer.config)
    transfer_repo = repo_obj.to_transfer_repo()
    importer_instance.importer_removed(transfer_repo, call_config)
    repo_importer.delete()
Exemple #13
0
 def __init__(self):
     super(SyncScheduleResource, self).__init__()
     self.manager = manager_factory.repo_sync_schedule_manager()
Exemple #14
0
 def __init__(self):
     super(SyncScheduleResource, self).__init__()
     self.manager = manager_factory.repo_sync_schedule_manager()