Exemplo n.º 1
0
def restore_snippets(project, entry):
    """
    Restore a single snippet
    """
    if not entry.get('visibility_level'):
        entry['visibility_level'] = VISIBILITY_PRIVATE

    if not entry.get('file_name'):
        entry['file_name'] = quote(entry['title']).replace(" ", "_").replace("'", "") + ".txt"

        snippet_content = os.path.join(args.backup_dir, "snippet_" + str(entry.get('id')) + "_content.dump")
        entry['code'] = gitlab_lib.parse_json(snippet_content)

        if entry['code']:
            gitlab_lib.debug("RESTORE ENTRY\n\tcomponent %s\n\turl %s\n\tproject %s\n\tentry %s\n" % (entry['component'],
                                                                                                      gitlab_lib.PROJECT_COMPONENTS[entry['component']],
                                                                                                      project['id'],
                                                                                                      gitlab_lib.prepare_restore_data(project, entry)))

            gitlab_lib.rest_api_call(gitlab_lib.PROJECT_COMPONENTS["snippets"] % (gitlab_lib.API_URL, project['id']),
                                     gitlab_lib.prepare_restore_data(project, entry))

            restore_notes(gitlab_lib.NOTES_FOR_SNIPPET % (gitlab_lib.API_URL, project['id'], str(entry.get('id'))),
                          project,
                          entry)
        else:
            gitlab_lib.error("Content file of snippet " + str(entry.get('id')) + " cannot be found. Won't restore snippet!")
Exemplo n.º 2
0
def restore_notes(api_url, project, entry):
    """
    Restore the notes to a component like snippets or issues
    """
    notes_file = os.path.join(args.backup_dir, entry['component'] + "_" + str(entry.get('id')) + "_notes.dump")

    if os.path.exists(notes_file):
        notes = gitlab_lib.parse_json(notes_file)

        for note in notes:
            note[entry['component'] + '_id'] = str(entry.get('id'))

            gitlab_lib.rest_api_call(api_url,
                                     gitlab_lib.prepare_restore_data(project, note))
Exemplo n.º 3
0
def fill_restore_queue(project, component):
    """
    Fill queue with restore data
    project is project metadata dictionary
    component is the name of the component like the keys in PROJECT_COMPONENTS
    """
    restore_file = os.path.join(args.backup_dir, component + ".json")
    backup = gitlab_lib.parse_json(restore_file)

    if backup:
        for entry in backup:
            entry['component'] = component
            queue.put(entry)
    else:
        gitlab_lib.log("Nothing to do for " + component)
Exemplo n.º 4
0
def fill_restore_queue(project, component):
    """
    Fill queue with restore data
    project is project metadata dictionary
    component is the name of the component like the keys in PROJECT_COMPONENTS
    """
    restore_file = os.path.join(args.backup_dir, component + ".json")
    iid_counter = 1

    if os.path.isfile(restore_file):
        backup = gitlab_lib.parse_json(restore_file)

        if backup:
            for entry in backup:
                entry['component'] = component
                entry['project_id'] = project['id']

                if entry.get('iid'):
                    entry['iid'] = iid_counter
                    iid_counter = iid_counter + 1

                work_queue.put(entry)
        else:
            gitlab_lib.log("Nothing to do for " + component)