Skip to content

Instantly share code, notes, and snippets.

@brijrajsingh
Last active December 27, 2015 13:09
Show Gist options
  • Save brijrajsingh/7331478 to your computer and use it in GitHub Desktop.
Save brijrajsingh/7331478 to your computer and use it in GitHub Desktop.
Create project at gitlab along with giving access to developers, QAs and Artists, this python script creates 5 copies of a project and gives access to diff groups as need be, feel free to temper it to your need. I am new to python so I wrote it quite monolithic style. Developer list is separated by colon, and so does Artist and QA list, the file…
#Company - The perfect future technologies pvt. ltd.
#website - www.theperfectfuture.com
#Author - brijraj singh
#email - brijraj.singh@theperfectfuture.com
#Date - 06/11/2013
import urllib2,urllib
import sys,traceback
import csv
import json
with open('test-sample.csv', 'rb') as csvfile:
linereader = csv.reader(csvfile,delimiter=',',quotechar='|')
rownum = 0
for row in linereader:
# Save header row.
if rownum == 0:
header = row
else:
colnum = 0
projectname = ''
developers = ''
artists = ''
qas = ''
platform = ''
for col in row:
#print '%-8s: %s' % (header[colnum], col)
if(colnum == 0):
projectname = col
elif(colnum == 1):
developers = col
elif(colnum == 2):
artists = col
elif(colnum == 3):
qas = col
elif(colnum == 4):
platform = col
print "project is " + str(projectname)
print "developers " + str(developers)
print "artists " + str(artists)
print "qas " + str(qas)
print "platform is " + str(platform)
colnum += 1
#creating a project and getting its id
projaddparams = {}
projaddparams['name'] = str("src_" + platform + "_" +projectname)
try:
#create src project
projaddparams = urllib.urlencode(projaddparams)
target = 'http://192.168.1.91/gitlab/api/v3/projects'
req = urllib2.Request(target)
req.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
req.add_data(projaddparams)
resp = urllib2.urlopen(req)
projectjsonResponse = resp.read()
print "project created with json "+ projectjsonResponse
projectdata = json.loads(str(projectjsonResponse))
srcprojectid = projectdata['id']
#create Artist project folder
artprojaddparams = {}
artprojaddparams['name'] = str("art_" + platform + "_" +projectname)
artreq = urllib2.Request(target)
artreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
artprojaddparams = urllib.urlencode(artprojaddparams)
artreq.add_data(artprojaddparams)
artresp = urllib2.urlopen(artreq)
artprojectjsonResponse = artresp.read()
print "project created with json "+ artprojectjsonResponse
artprojectdata = json.loads(str(artprojectjsonResponse))
artprojectid = artprojectdata['id']
#create Assets project folder
astprojaddparams = {}
astprojaddparams['name'] = str("ast_" + platform + "_" +projectname)
astreq = urllib2.Request(target)
astreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
astprojaddparams = urllib.urlencode(astprojaddparams)
astreq.add_data(astprojaddparams)
astresp = urllib2.urlopen(astreq)
astprojectjsonResponse = astresp.read()
print "project created with json "+ astprojectjsonResponse
astprojectdata = json.loads(str(astprojectjsonResponse))
astprojectid = astprojectdata['id']
#create Builds project folder
bldprojaddparams = {}
bldprojaddparams['name'] = str("bld_" + platform + "_" +projectname)
bldreq = urllib2.Request(target)
bldreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
bldprojaddparams = urllib.urlencode(bldprojaddparams)
bldreq.add_data(bldprojaddparams)
bldresp = urllib2.urlopen(bldreq)
bldprojectjsonResponse = bldresp.read()
print "project created with json "+ bldprojectjsonResponse
bldprojectdata = json.loads(str(bldprojectjsonResponse))
bldprojectid = bldprojectdata['id']
#create Marketing project folder
mktprojaddparams = {}
mktprojaddparams['name'] = str("mkt_" + platform + "_" +projectname)
mktreq = urllib2.Request(target)
mktreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
mktprojaddparams = urllib.urlencode(mktprojaddparams)
mktreq.add_data(mktprojaddparams)
mktresp = urllib2.urlopen(mktreq)
mktprojectjsonResponse = mktresp.read()
print "project created with json "+ mktprojectjsonResponse
mktprojectdata = json.loads(str(mktprojectjsonResponse))
mktprojectid = mktprojectdata['id']
#get the developers, split by semicolon if have to and add them as members
print str(developers)
listdevelopers = str(developers).split(':')
for eachdeveloper in listdevelopers:
print "this developer : " + eachdeveloper + " is for project " + str(projectname)
usersjson_data=open('users_git.json').read()
gitusersdata = json.loads(usersjson_data)
for eachgituser in gitusersdata:
if (eachgituser['username'] == eachdeveloper):
print "id of " + eachdeveloper + " is : " + str(eachgituser['id'])
#add this developer as the member of the project - src project - R/W
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(srcprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '30'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#add this developer as the read only
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(astprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '20'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#get the artists, split by semicolon if have to and add them as members
print str(artists)
listartists = str(artists).split(':')
for eachartist in listartists:
print "this artist : " + eachartist + " is for project " + str(projectname)
usersjson_data=open('users_git.json').read()
gitusersdata = json.loads(usersjson_data)
for eachgituser in gitusersdata:
if (eachgituser['username'] == eachartist):
print "id of " + eachartist + " is : " + str(eachgituser['id'])
#add this developer as the member of the project - art,ast,mkt project - R/W
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(artprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '30'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#add this developer as the R/W at assets
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(astprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '30'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#add this developer as the R/W at Marketing
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(mktprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '30'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#get the qas, split by semicolon if have to and add them as members
print str(qas)
listqas = str(qas).split(':')
for eachqa in listqas:
print "this Qa : " + eachqa + " is for project " + str(projectname)
usersjson_data=open('users_git.json').read()
gitusersdata = json.loads(usersjson_data)
for eachgituser in gitusersdata:
if (eachgituser['username'] == eachqa):
print "id of " + eachqa + " is : " + str(eachgituser['id'])
#add this developer as the member of the project - art,ast,mkt project - R/W
#curl --header "PRIVATE-TOKEN: 216324ghqv4vq3hvh" --data "id=85&user_id=3&access_level=30" http://192.168.1.91/gitlab/api/v3/projects/85/members
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(bldprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '20'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
#add this developer as the R/W at assets
addmemmbertarget = 'http://192.168.1.91/gitlab/api/v3/projects/' + str(mktprojectid) + '/members'
devmemberaddparams = {}
devmemberaddparams['user_id'] = str(eachgituser['id'])
devmemberaddparams['access_level'] = '30'
devmemberreq = urllib2.Request(addmemmbertarget)
devmemberreq.add_header('PRIVATE-TOKEN','216324ghqv4vq3hvh')
devmemberaddparams = urllib.urlencode(devmemberaddparams)
devmemberreq.add_data(devmemberaddparams)
devmemberresp = urllib2.urlopen(devmemberreq)
devmemberjsonResponse = devmemberresp.read()
except:
traceback.print_exc(file=sys.stdout)
rownum += 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment