{"action":"created","comment":{"url":"https://api.github.com/repos/CESNET/perun-services/pulls/comments/58844963","id":58844963,"diff_hunk":"@@ -1,131 +1,12 @@\n #!/bin/bash\n \n # Script for managing user membership in VOs\n-# Return values:\n-# 0 ... OK\n-# 1 ... Single user issue\n-# 2 ... VO-wide issue\n-# 3 ... VO-availability issue (VO does not exist or is inaccessible)\n \n-PROTOCOL_VERSION='3.0.0'\n-\n-function log_both {\n-\tlogger Perun:$@\n-\techo $@ 1>&2\n-}\n+PROTOCOL_VERSION='3.1.0'\n \n function process {\n-\t### Status codes\n-\tI_CHANGED=(0 \"${DST_FILE} updated\")\n-\tI_NOT_CHANGED=(0 \"${DST_FILE} has not changed\")\n-\n-\t### Error codes ###\n-\tE_VOMS_DELETE=(50 'Error during VOMS delete-user operation')\n-\tE_VOMS_CREATE=(50 'Error during VOMS create-user operation')\n-\n-\tFROM_PERUN=\"${WORK_DIR}/voms\"\n-\n-\tRETVAL=0\n-\n-\tcreate_lock\n-\n-\tVO_USERS=`mktemp`\n-\tCURRENT_VO_USERS=`mktemp`\n-\tCURRENT_VO_RAW_USERS=`mktemp`\n-\tCAS=`mktemp`\n-\tUSER_RESPONSE=`mktemp`\n-\tCONTACTFAIL=\"\"\n-\tCAFAIL=\"\"\n-\n-\t# Get list of VOs\n-\tVOS=`cat ${FROM_PERUN} | sed 's/^\\([[:alnum:]_.-]*\\)\\t.*/\\1/' | uniq`\n-\n-\t# Iterate through every VO and check which user will be added or removed\n-\tfor VO in `echo -e $VOS`; do\n-\t\t# Get users from the VO, VOMS doesn't accept emailAddress in the DN, it must be converted to Email\n-\t\tcat ${FROM_PERUN} | grep -P \"^${VO}\\t.*\" | sed 's/emailAddress/Email/' | sort > ${VO_USERS}\n-\n-\t\t# Get current users stored in VOMS and convert lines into PERUN format. VOMS also doesn't accept emailAddress in the DN, it must be converted to Email\n-\t\tvoms-admin --vo \"${VO}\" list-users > ${CURRENT_VO_RAW_USERS}\n-\t\tif [ $? -ne 0 ]; then\n-\t\t\tlog_both \"VO \\\"${VO}\\\" does not exist or is inactive. Original message from voms-admin: \\\"`cat ${CURRENT_VO_RAW_USERS}`\\\"\"\n-\t\t\tCONTACTFAIL=\"${CONTACTFAIL} ${VO}\"\n-\t\t\tRETVAL=3\n-\t\t\tcontinue\n-\t\tfi\n-\n-\t\tcat ${CURRENT_VO_RAW_USERS} | sed \"s/\\(.*\\),\\(.*\\),\\(.*\\)/${VO}\\t\\1\\t\\2\\t\\3/\" | sed 's/emailAddress/Email/' | sort > ${CURRENT_VO_USERS}\n-\n-\t\t# Get list of accepted CAs\n-\t\tvoms-admin --vo \"${VO}\" list-cas > ${CAS}\n-\t\tif [ $? -ne 0 ]; then\n-\t\t\tlog_both \"Failed getting accepted CAs for VO \\\"${VO}\\\". Original message from voms-admin: \\\"`cat ${CAS}`\\\"\"\n-\t\t\tCAFAIL=\"${CAFAIL} ${VO}\"\n-\t\t\tif [ $RETVAL -lt 2 ]; then RETVAL=2; fi\n-\t\t\tcontinue\n-\t\tfi\n-\n-\t\t# Check who should be deleted\n-\t\twhile read CURRENT_VO_USER; do\n-\t\t\tif [ `grep -c \"$CURRENT_VO_USER\" $VO_USERS` -eq 0 ]; then\n-\t\t\t\t# User is not in VO anymore, so remove him\n-\t\t\t\twhile IFS=`echo -ne \"\\t\"` read VO_SHORTNAME USER_DN CA_DN USER_EMAIL; do\n-\t\t\t\t\t# Check if the user's certificate was issued by accepted CA\n-\t\t\t\t\tif [ `grep -c \"$CA_DN\" $CAS` -gt 0 ]; then\n-\t\t\t\t\t\tvoms-admin --nousercert --vo \"${VO_SHORTNAME}\" delete-user \"$USER_DN\" \"$CA_DN\" > ${USER_RESPONSE}\n-\t\t\t\t\t\tif [ $? -ne 0 ]; then\n-\t\t\t\t\t\t\tlog_both \"Failed removing user from VO \\\"${VO}\\\". Original message from voms-admin: \\\"`cat ${USER_RESPONSE}`\\\"\"\n-\t\t\t\t\t\t\tif [ $RETVAL -lt 1 ]; then RETVAL=1; fi\n-\t\t\t\t\t\t\tcontinue\n-\t\t\t\t\t\tfi\n-\t\t\t\t\t\techo VOMS user $USER_DN - $CA_DN removed from ${VO_SHORTNAME}\n-\t\t\t\t\tfi\n-\t\t\t\tdone <<<\"`echo -e \"$CURRENT_VO_USER\"`\"\n-\n-\t\t\tfi\n-\t\tdone <${CURRENT_VO_USERS}\n-\n-\t\t####\n-\t\t# Check who should be added\n-\t\twhile read VO_USER; do\n-\t\t\tif  [ `grep -c \"$VO_USER\" $CURRENT_VO_USERS` -eq 0 ]; then\n-\t\t\t\t# New user comming, so add him to the VO\n-\t\t\t\techo -e \"$VO_USER\" | while IFS=`echo -ne \"\\t\"` read VO_SHORTNAME USER_DN CA_DN USER_EMAIL; do\n-\t\t\t\t\t# Check if the user's certificate was issued by accepted CA\n-\t\t\t\t\tif [ `grep -c \"$CA_DN\" $CAS` -gt 0 ]; then\n-\t\t\t\t\t\tUSER_CN=`echo $USER_DN | sed 's|^.*\\/CN=\\([^/]*\\).*|\\1|'`\n-\t\t\t\t\t\tvoms-admin --nousercert --vo \"${VO_SHORTNAME}\" create-user \"$USER_DN\" \"$CA_DN\" \"$USER_CN\" \"$USER_EMAIL\" > ${USER_RESPONSE}\n-\t\t\t\t\t\tif [ $? -ne 0 ]; then\n-\t\t\t\t\t\t\tlog_both \"Failed adding user to VO \\\"${VO}\\\". Original message from voms-admin: \\\"`cat ${USER_RESPONSE}`\\\"\"\n-\t\t\t\t\t\t\tif [ $RETVAL -lt 1 ]; then RETVAL=1; fi\n-\t\t\t\t\t\t\tcontinue\n-\t\t\t\t\t\tfi\n-\t\t\t\t\t\techo VOMS user $USER_DN - $CA_DN added to ${VO_SHORTNAME}\n-\t\t\t\t\tfi\n-\t\t\t\tdone\n-\t\t\tfi\n-\t\tdone <${VO_USERS}\n-\tdone\n-\n-\trm -f $VO_USERS\n-\trm -f $CURRENT_VO_USERS\n-\trm -f $CURRENT_VO_RAW_USERS\n-\trm -f $CAS\n-\trm -f $USER_RESPONSE\n \n-\tif [ $RETVAL -gt 0 ]; then\n-\t\tE_VO_FAIL=(503 \"VOMS slave failed contacting VO ${CONTACTFAIL}\")\n-\t\tE_VO_AC_FAIL=(502 \"VOMS slave failed checking CAs for VO ${CAFAIL}\")\n-\t\tE_VOMEMBER_FAIL=(501 'VOMS slave failed managing VO members')\n-\t\tcase $RETVAL in\n-\t\t\t1)\n-\t\t\t\tlog_msg E_VOMEMBER_FAIL;;\n-\t\t\t2)\n-\t\t\t\tlog_msg E_VO_AC_FAIL;;\n-\t\t\t3)\n-\t\t\t\tlog_msg E_VO_FAIL;;\n-\t\tesac\n-\tfi\n+\tEXECSCRIPT=\"${LIB_DIR}/${SERVICE}/process-voms.pl\"\n \n-\texit $RETVAL\n+\t$EXECSCRIPT -","path":"slave-new/process-voms/bin/process-voms.sh","position":133,"original_position":133,"commit_id":"51839a73899572e2255cb9e714d7d45366bde272","original_commit_id":"51839a73899572e2255cb9e714d7d45366bde272","user":{"login":"sustr4","id":1583737,"avatar_url":"https://avatars.githubusercontent.com/u/1583737?v=3","gravatar_id":"","url":"https://api.github.com/users/sustr4","html_url":"https://github.com/sustr4","followers_url":"https://api.github.com/users/sustr4/followers","following_url":"https://api.github.com/users/sustr4/following{/other_user}","gists_url":"https://api.github.com/users/sustr4/gists{/gist_id}","starred_url":"https://api.github.com/users/sustr4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sustr4/subscriptions","organizations_url":"https://api.github.com/users/sustr4/orgs","repos_url":"https://api.github.com/users/sustr4/repos","events_url":"https://api.github.com/users/sustr4/events{/privacy}","received_events_url":"https://api.github.com/users/sustr4/received_events","type":"User","site_admin":false},"body":"What do you suggest instead? I tried several options I though should work.","created_at":"2016-04-07T09:41:42Z","updated_at":"2016-04-07T09:41:42Z","html_url":"https://github.com/CESNET/perun-services/pull/70#discussion_r58844963","pull_request_url":"https://api.github.com/repos/CESNET/perun-services/pulls/70","_links":{"self":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/comments/58844963"},"html":{"href":"https://github.com/CESNET/perun-services/pull/70#discussion_r58844963"},"pull_request":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/70"}}},"pull_request":{"url":"https://api.github.com/repos/CESNET/perun-services/pulls/70","id":65580650,"html_url":"https://github.com/CESNET/perun-services/pull/70","diff_url":"https://github.com/CESNET/perun-services/pull/70.diff","patch_url":"https://github.com/CESNET/perun-services/pull/70.patch","issue_url":"https://api.github.com/repos/CESNET/perun-services/issues/70","number":70,"state":"open","locked":false,"title":"New version of VOMS slave script","user":{"login":"sustr4","id":1583737,"avatar_url":"https://avatars.githubusercontent.com/u/1583737?v=3","gravatar_id":"","url":"https://api.github.com/users/sustr4","html_url":"https://github.com/sustr4","followers_url":"https://api.github.com/users/sustr4/followers","following_url":"https://api.github.com/users/sustr4/following{/other_user}","gists_url":"https://api.github.com/users/sustr4/gists{/gist_id}","starred_url":"https://api.github.com/users/sustr4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sustr4/subscriptions","organizations_url":"https://api.github.com/users/sustr4/orgs","repos_url":"https://api.github.com/users/sustr4/repos","events_url":"https://api.github.com/users/sustr4/events{/privacy}","received_events_url":"https://api.github.com/users/sustr4/received_events","type":"User","site_admin":false},"body":"- reimplemented in Perl\r\n- supports VOMS Roles and Group membership\r\n- requires new (XML) version of input data\r\n\r\nThis is a squashed version of commits already present in Pull Request #55. That one can be closed and this one merged instead.","created_at":"2016-04-07T06:38:52Z","updated_at":"2016-04-07T09:41:42Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8bbdebc4870a3a77a1b18fab9eb30eb53e05be7e","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/CESNET/perun-services/pulls/70/commits","review_comments_url":"https://api.github.com/repos/CESNET/perun-services/pulls/70/comments","review_comment_url":"https://api.github.com/repos/CESNET/perun-services/pulls/comments{/number}","comments_url":"https://api.github.com/repos/CESNET/perun-services/issues/70/comments","statuses_url":"https://api.github.com/repos/CESNET/perun-services/statuses/51839a73899572e2255cb9e714d7d45366bde272","head":{"label":"sustr4:voms-reimplement-squash","ref":"voms-reimplement-squash","sha":"51839a73899572e2255cb9e714d7d45366bde272","user":{"login":"sustr4","id":1583737,"avatar_url":"https://avatars.githubusercontent.com/u/1583737?v=3","gravatar_id":"","url":"https://api.github.com/users/sustr4","html_url":"https://github.com/sustr4","followers_url":"https://api.github.com/users/sustr4/followers","following_url":"https://api.github.com/users/sustr4/following{/other_user}","gists_url":"https://api.github.com/users/sustr4/gists{/gist_id}","starred_url":"https://api.github.com/users/sustr4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sustr4/subscriptions","organizations_url":"https://api.github.com/users/sustr4/orgs","repos_url":"https://api.github.com/users/sustr4/repos","events_url":"https://api.github.com/users/sustr4/events{/privacy}","received_events_url":"https://api.github.com/users/sustr4/received_events","type":"User","site_admin":false},"repo":{"id":39189610,"name":"perun-services","full_name":"sustr4/perun-services","owner":{"login":"sustr4","id":1583737,"avatar_url":"https://avatars.githubusercontent.com/u/1583737?v=3","gravatar_id":"","url":"https://api.github.com/users/sustr4","html_url":"https://github.com/sustr4","followers_url":"https://api.github.com/users/sustr4/followers","following_url":"https://api.github.com/users/sustr4/following{/other_user}","gists_url":"https://api.github.com/users/sustr4/gists{/gist_id}","starred_url":"https://api.github.com/users/sustr4/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sustr4/subscriptions","organizations_url":"https://api.github.com/users/sustr4/orgs","repos_url":"https://api.github.com/users/sustr4/repos","events_url":"https://api.github.com/users/sustr4/events{/privacy}","received_events_url":"https://api.github.com/users/sustr4/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/sustr4/perun-services","description":"","fork":true,"url":"https://api.github.com/repos/sustr4/perun-services","forks_url":"https://api.github.com/repos/sustr4/perun-services/forks","keys_url":"https://api.github.com/repos/sustr4/perun-services/keys{/key_id}","collaborators_url":"https://api.github.com/repos/sustr4/perun-services/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/sustr4/perun-services/teams","hooks_url":"https://api.github.com/repos/sustr4/perun-services/hooks","issue_events_url":"https://api.github.com/repos/sustr4/perun-services/issues/events{/number}","events_url":"https://api.github.com/repos/sustr4/perun-services/events","assignees_url":"https://api.github.com/repos/sustr4/perun-services/assignees{/user}","branches_url":"https://api.github.com/repos/sustr4/perun-services/branches{/branch}","tags_url":"https://api.github.com/repos/sustr4/perun-services/tags","blobs_url":"https://api.github.com/repos/sustr4/perun-services/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/sustr4/perun-services/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/sustr4/perun-services/git/refs{/sha}","trees_url":"https://api.github.com/repos/sustr4/perun-services/git/trees{/sha}","statuses_url":"https://api.github.com/repos/sustr4/perun-services/statuses/{sha}","languages_url":"https://api.github.com/repos/sustr4/perun-services/languages","stargazers_url":"https://api.github.com/repos/sustr4/perun-services/stargazers","contributors_url":"https://api.github.com/repos/sustr4/perun-services/contributors","subscribers_url":"https://api.github.com/repos/sustr4/perun-services/subscribers","subscription_url":"https://api.github.com/repos/sustr4/perun-services/subscription","commits_url":"https://api.github.com/repos/sustr4/perun-services/commits{/sha}","git_commits_url":"https://api.github.com/repos/sustr4/perun-services/git/commits{/sha}","comments_url":"https://api.github.com/repos/sustr4/perun-services/comments{/number}","issue_comment_url":"https://api.github.com/repos/sustr4/perun-services/issues/comments{/number}","contents_url":"https://api.github.com/repos/sustr4/perun-services/contents/{+path}","compare_url":"https://api.github.com/repos/sustr4/perun-services/compare/{base}...{head}","merges_url":"https://api.github.com/repos/sustr4/perun-services/merges","archive_url":"https://api.github.com/repos/sustr4/perun-services/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/sustr4/perun-services/downloads","issues_url":"https://api.github.com/repos/sustr4/perun-services/issues{/number}","pulls_url":"https://api.github.com/repos/sustr4/perun-services/pulls{/number}","milestones_url":"https://api.github.com/repos/sustr4/perun-services/milestones{/number}","notifications_url":"https://api.github.com/repos/sustr4/perun-services/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/sustr4/perun-services/labels{/name}","releases_url":"https://api.github.com/repos/sustr4/perun-services/releases{/id}","deployments_url":"https://api.github.com/repos/sustr4/perun-services/deployments","created_at":"2015-07-16T09:54:56Z","updated_at":"2016-04-06T14:55:43Z","pushed_at":"2016-04-07T06:35:34Z","git_url":"git://github.com/sustr4/perun-services.git","ssh_url":"git@github.com:sustr4/perun-services.git","clone_url":"https://github.com/sustr4/perun-services.git","svn_url":"https://github.com/sustr4/perun-services","homepage":null,"size":319,"stargazers_count":0,"watchers_count":0,"language":"Perl","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"CESNET:master","ref":"master","sha":"583bb04ae3a9d64ec865ce6ba4881fbf8a55f0b0","user":{"login":"CESNET","id":1116469,"avatar_url":"https://avatars.githubusercontent.com/u/1116469?v=3","gravatar_id":"","url":"https://api.github.com/users/CESNET","html_url":"https://github.com/CESNET","followers_url":"https://api.github.com/users/CESNET/followers","following_url":"https://api.github.com/users/CESNET/following{/other_user}","gists_url":"https://api.github.com/users/CESNET/gists{/gist_id}","starred_url":"https://api.github.com/users/CESNET/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CESNET/subscriptions","organizations_url":"https://api.github.com/users/CESNET/orgs","repos_url":"https://api.github.com/users/CESNET/repos","events_url":"https://api.github.com/users/CESNET/events{/privacy}","received_events_url":"https://api.github.com/users/CESNET/received_events","type":"Organization","site_admin":false},"repo":{"id":36226500,"name":"perun-services","full_name":"CESNET/perun-services","owner":{"login":"CESNET","id":1116469,"avatar_url":"https://avatars.githubusercontent.com/u/1116469?v=3","gravatar_id":"","url":"https://api.github.com/users/CESNET","html_url":"https://github.com/CESNET","followers_url":"https://api.github.com/users/CESNET/followers","following_url":"https://api.github.com/users/CESNET/following{/other_user}","gists_url":"https://api.github.com/users/CESNET/gists{/gist_id}","starred_url":"https://api.github.com/users/CESNET/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/CESNET/subscriptions","organizations_url":"https://api.github.com/users/CESNET/orgs","repos_url":"https://api.github.com/users/CESNET/repos","events_url":"https://api.github.com/users/CESNET/events{/privacy}","received_events_url":"https://api.github.com/users/CESNET/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/CESNET/perun-services","description":"","fork":false,"url":"https://api.github.com/repos/CESNET/perun-services","forks_url":"https://api.github.com/repos/CESNET/perun-services/forks","keys_url":"https://api.github.com/repos/CESNET/perun-services/keys{/key_id}","collaborators_url":"https://api.github.com/repos/CESNET/perun-services/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/CESNET/perun-services/teams","hooks_url":"https://api.github.com/repos/CESNET/perun-services/hooks","issue_events_url":"https://api.github.com/repos/CESNET/perun-services/issues/events{/number}","events_url":"https://api.github.com/repos/CESNET/perun-services/events","assignees_url":"https://api.github.com/repos/CESNET/perun-services/assignees{/user}","branches_url":"https://api.github.com/repos/CESNET/perun-services/branches{/branch}","tags_url":"https://api.github.com/repos/CESNET/perun-services/tags","blobs_url":"https://api.github.com/repos/CESNET/perun-services/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/CESNET/perun-services/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/CESNET/perun-services/git/refs{/sha}","trees_url":"https://api.github.com/repos/CESNET/perun-services/git/trees{/sha}","statuses_url":"https://api.github.com/repos/CESNET/perun-services/statuses/{sha}","languages_url":"https://api.github.com/repos/CESNET/perun-services/languages","stargazers_url":"https://api.github.com/repos/CESNET/perun-services/stargazers","contributors_url":"https://api.github.com/repos/CESNET/perun-services/contributors","subscribers_url":"https://api.github.com/repos/CESNET/perun-services/subscribers","subscription_url":"https://api.github.com/repos/CESNET/perun-services/subscription","commits_url":"https://api.github.com/repos/CESNET/perun-services/commits{/sha}","git_commits_url":"https://api.github.com/repos/CESNET/perun-services/git/commits{/sha}","comments_url":"https://api.github.com/repos/CESNET/perun-services/comments{/number}","issue_comment_url":"https://api.github.com/repos/CESNET/perun-services/issues/comments{/number}","contents_url":"https://api.github.com/repos/CESNET/perun-services/contents/{+path}","compare_url":"https://api.github.com/repos/CESNET/perun-services/compare/{base}...{head}","merges_url":"https://api.github.com/repos/CESNET/perun-services/merges","archive_url":"https://api.github.com/repos/CESNET/perun-services/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/CESNET/perun-services/downloads","issues_url":"https://api.github.com/repos/CESNET/perun-services/issues{/number}","pulls_url":"https://api.github.com/repos/CESNET/perun-services/pulls{/number}","milestones_url":"https://api.github.com/repos/CESNET/perun-services/milestones{/number}","notifications_url":"https://api.github.com/repos/CESNET/perun-services/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/CESNET/perun-services/labels{/name}","releases_url":"https://api.github.com/repos/CESNET/perun-services/releases{/id}","deployments_url":"https://api.github.com/repos/CESNET/perun-services/deployments","created_at":"2015-05-25T11:06:27Z","updated_at":"2016-01-18T12:05:58Z","pushed_at":"2016-04-07T08:37:44Z","git_url":"git://github.com/CESNET/perun-services.git","ssh_url":"git@github.com:CESNET/perun-services.git","clone_url":"https://github.com/CESNET/perun-services.git","svn_url":"https://github.com/CESNET/perun-services","homepage":null,"size":341,"stargazers_count":2,"watchers_count":2,"language":"Perl","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":10,"mirror_url":null,"open_issues_count":10,"forks":10,"open_issues":10,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/70"},"html":{"href":"https://github.com/CESNET/perun-services/pull/70"},"issue":{"href":"https://api.github.com/repos/CESNET/perun-services/issues/70"},"comments":{"href":"https://api.github.com/repos/CESNET/perun-services/issues/70/comments"},"review_comments":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/70/comments"},"review_comment":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/CESNET/perun-services/pulls/70/commits"},"statuses":{"href":"https://api.github.com/repos/CESNET/perun-services/statuses/51839a73899572e2255cb9e714d7d45366bde272"}}}}