예제 #1
0
def create_gitlab_project(
        default_has_issues, default_has_wiki, gitlab_secure_config,
        options, project, description, homepage):

    created = False
    has_issues = 'has-issues' in options or default_has_issues
    has_wiki = 'has-wiki' in options or default_has_wiki

    secure_config = ConfigParser.ConfigParser()
    secure_config.read(gitlab_secure_config)

    # Project creation doesn't work via oauth
    glab = Gitlab(secure_config.get("gitlab", "url"),
                  secure_config.get("gitlab", "key"))
    glab.auth()
    orgs = glab.Group()
    orgs_dict = dict(zip([o.name.lower() for o in orgs], orgs))

    # Find the project's repo
    project_split = project.split('/', 1)
    org_name = project_split[0]
    if len(project_split) > 1:
        repo_name = project_split[1]
    else:
        repo_name = project
        org_name = 'ustack'

    try:
        org = orgs_dict[org_name.lower()]
    except Exception:
        # we do not have control of this github org ignore the project.
        return False
    if glab.search_projects(repo_name):
        return created

    project_info = {'name': repo_name, 'namespace_id': org.id,
                    'wiki_enabled': has_wiki, 'description': description,
                    'issues_enabled': has_issues}
    glab.Project(project_info).save()
    created = True
    return created