Skip to content
Snippets Groups Projects
Unverified Commit 05246993 authored by Ravi Tripathi's avatar Ravi Tripathi Committed by GitHub
Browse files

Merge pull request #21 from diedpigs/feat-git-commit-agent

Feat git commit agent
parents 8d63ca44 d75c72d8
No related branches found
No related tags found
5 merge requests!147Merge previous default branch feat-cod-rmq into main,!85kill nginx process running under user from login node,!51Fix acct create wait,!39WIP:Feat cod rmq,!38WIP: Feat cod rmq
#!/usr/bin/env python
import os
import sh
import sys
import json
import rc_util
from rc_rmq import RCRMQ
task = 'git_commit'
# Instantiate rabbitmq object
rc_rmq = RCRMQ({'exchange': 'RegUsr', 'exchange_type': 'topic'})
# Define some location
repo_location = os.path.expanduser('~/git/rc-users')
users_dir = repo_location + '/users'
groups_dir = repo_location + '/groups'
args = rc_util.get_args()
logger = rc_util.get_logger(args)
if not args.dry_run:
git = sh.git.bake('-C', repo_location)
ldapsearch = sh.Command('ldapsearch')
else:
git = sh.echo.bake('git', '-C', repo_location)
ldapsearch = sh.echo.bake('ldapsearch')
def git_commit(ch, method, properties, body):
msg = json.loads(body)
username = msg['username']
ticketnum = msg.get('ticketnum', 'add-users-' + username.lower())
msg['task'] = task
msg['success'] = False
branch_name = 'issue-' + ticketnum
user_ldif = users_dir + f'/{username}.ldif'
group_ldif = groups_dir + f'/{username}.ldif'
logger.info("Received: %s", msg)
logger.debug("ticketnum: %s", ticketnum)
logger.debug("branch_name: %s", branch_name)
try:
logger.debug('git checkout master')
git.checkout('master')
logger.debug('git pull')
git.pull()
logger.debug('git checkout -b %s', branch_name)
git.checkout('-b', branch_name)
logger.debug("open(%s, 'w'), open(%s, 'w')", user_ldif, group_ldif)
with open(user_ldif, 'w') as ldif_u,\
open(group_ldif, 'w') as ldif_g:
logger.debug(f"ldapsearch -LLL -x -h ldapserver -b 'dc=cm,dc=cluster' uid={username} > {user_ldif}")
ldapsearch('-LLL', '-x', '-h', 'ldapserver', '-b', "dc=cm,dc=cluster", f"uid={username}", _out=ldif_u)
logger.debug(f"ldapsearch -LLL -x -h ldapserver -b 'ou=Group,dc=cm,dc=cluster' cn={username} > {group_ldif}")
ldapsearch('-LLL', '-x', '-h', 'ldapserver', '-b', "ou=Group,dc=cm,dc=cluster", f"cn={username}", _out=ldif_g)
logger.info('user ldif files generated.')
logger.debug('git add %s', user_ldif)
git.add(user_ldif)
logger.debug('git add %s', group_ldif)
git.add(group_ldif)
logger.debug("git commit -m 'Added new cheaha user: %s'", username)
git.commit(m="Added new cheaha user: " + username)
logger.debug('git checkout master')
git.checkout('master')
logger.debug('git merge %s --no-ff --no-edit', branch_name)
git.merge(branch_name, '--no-ff', '--no-edit')
logger.debug('git push origin master')
git.push('origin', 'master')
# merge with gitlab api
logger.info('Added ldif files and committed to git repo')
msg['success'] = True
except Exception as exception:
logger.error('', exc_info=True)
# Send confirm message
logger.debug('rc_rmq.publish_msge()')
rc_rmq.publish_msg({
'routing_key': 'confirm.' + username,
'msg': msg
})
logger.info('confirmation sent')
# Acknowledge message
logger.debug('ch.basic_ack()')
ch.basic_ack(delivery_tag=method.delivery_tag)
logger.info("Start listening to queue: %s", task)
rc_rmq.start_consume({
'queue': task,
'routing_key': "verify.*",
'cb': git_commit
})
logger.info("Disconnected")
rc_rmq.disconnect()
pika==1.1.0 pika==1.1.0
sh==1.12.14
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