def __init__(self): """ Initialize RepoSyncScheduleResource. """ super(RepoSyncScheduleResourceView, self).__init__() self.manager = manager_factory.repo_sync_schedule_manager()
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)
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'])
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)
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)
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)
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()
def __init__(self): super(SyncScheduleResource, self).__init__() self.manager = manager_factory.repo_sync_schedule_manager()