Skip to content
Snippets Groups Projects
Commit 06fc9640 authored by Sam Gleske's avatar Sam Gleske
Browse files

Working create project if doesn't exist

in gitlab
parent b98bfdea
No related branches found
No related tags found
No related merge requests found
...@@ -4,5 +4,5 @@ ...@@ -4,5 +4,5 @@
. "$(dirname $0)/config.sh" . "$(dirname $0)/config.sh"
cd $(dirname $0) cd $(dirname $0)
export token_secret gitlab_url gitlab_namespace export token_secret gitlab_url gitlab_namespace gitlab_user
python lib/create_gitlab_project.py test2 python lib/create_gitlab_project.py test3
...@@ -6,3 +6,4 @@ token_secret="$(head -n1 /home/gitmirror/private_token)" ...@@ -6,3 +6,4 @@ token_secret="$(head -n1 /home/gitmirror/private_token)"
#This group will contain all code mirrors #This group will contain all code mirrors
gitlab_namespace="Mirrors" gitlab_namespace="Mirrors"
gitlab_url="https://comet.irt.drexel.edu" gitlab_url="https://comet.irt.drexel.edu"
gitlab_user="gitmirror"
#!/usr/bin/env python #!/usr/bin/env python
from sys import argv,exit from sys import argv,exit,stderr
import os import os
import gitlab import gitlab
...@@ -9,6 +9,7 @@ try: ...@@ -9,6 +9,7 @@ try:
token_secret=os.environ['token_secret'] token_secret=os.environ['token_secret']
gitlab_url=os.environ['gitlab_url'] gitlab_url=os.environ['gitlab_url']
gitlab_namespace=os.environ['gitlab_namespace'] gitlab_namespace=os.environ['gitlab_namespace']
gitlab_user=os.environ['gitlab_user']
except KeyError: except KeyError:
print "Environment config missing. Do not run this script standalone." print "Environment config missing. Do not run this script standalone."
exit(1) exit(1)
...@@ -18,25 +19,42 @@ except IndexError: ...@@ -18,25 +19,42 @@ except IndexError:
git=gitlab.Gitlab(gitlab_url,token_secret) git=gitlab.Gitlab(gitlab_url,token_secret)
#Locate the group def findgroup(gname):
found_group=False #Locate the group
for group in git.getGroups(): found_group=False
if group['name'] == gitlab_namespace: for group in git.getGroups():
found_group=group if group['name'] == gname:
break return group
else: else:
if not found_group: if not found_group:
print "Project namespace (user or group) not found or user does not have permission of existing group." print >> stderr, "Project namespace (user or group) not found or user does not have permission of existing group."
exit(1) exit(1)
def findproject(gname,pname):
for project in git.getProjects():
if project['namespace']['name'] == gname and project['name'] == pname:
return project
else:
return False
def createproject(pname):
description="Public mirror of %s." % project_name
new_project=git.createProject(pname,description=description,issues_enabled=False,wall_enabled=False,merge_requests_enabled=False,wiki_enabled=False,snippets_enabled=False)
new_project=findproject(gitlab_user,pname)
new_project=git.moveProject(found_group['id'],new_project['id'])
if findproject(gitlab_namespace,pname):
return findproject(gitlab_namespace,pname)
else:
return False
found_group=findgroup(gitlab_namespace)
found_project=findproject(gitlab_namespace,project_name)
#Locate existing repository, if it doesn't exist then create it in gitlab
found_project=False
for project in git.getProjects():
if project['namespace']['name'] == gitlab_namespace and project['name'] == project_name:
found_project=project
break
if not found_project: if not found_project:
print "not found" found_project=createproject(project_name)
pass if not found_project:
#print >> stderr, "There was a problem creating %s/%s. Did you give %s user Admin rights in gitlab?" % {gitlab_namespace,project_name,gitlab_user}
print >> stderr, "There was a problem creating {group}/{project}. Did you give {user} user Admin rights in gitlab?".format(group=gitlab_namespace,project=project_name,user=gitlab_user)
exit(1)
print found_project['http_url_to_repo'] print found_project['http_url_to_repo']
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment