{"action":"created","comment":{"url":"https://api.github.com/repos/xcat2/xcat-core/pulls/comments/111890073","pull_request_review_id":33162577,"id":111890073,"diff_hunk":"@@ -0,0 +1,298 @@\n+start:encrypted_passwd_md5_diskfull\n+description: this case is to test when  cryptmethod=md5 in passwd table, the password is encryped with the md5 method. When compute node is diskfull provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=md5\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:grep '\\$1\\$' /install/autoinst/$$CN\n+check:rc==0 \n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod\n+end\n+\n+start:encrypted_passwd_md5_diskless\n+description: this case is to test when  cryptmethod=md5 in passwd table, the password is encryped with the md5 method. When compute node is diskless provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=md5\n+check:rc==0\n+#config CN to do diskless provision\n+cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN  xcatmaster=$$MN\n+check:rc==0\n+cmd:makedns -n\n+check:rc==0\n+cmd:makeconservercf $$CN\n+check:rc==0\n+cmd:cat /etc/conserver.cf | grep $$CN\n+check:output=~$$CN\n+cmd:sleep 20\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then getmacs -D $$CN; fi\n+check:rc==0\n+cmd:makedhcp -n\n+check:rc==0\n+cmd:makedhcp -a\n+check:rc==0\n+cmd:a=0;while true; do [ $a -eq 100 ] && exit 1;output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;a=$[$a+1];sleep 1;done\n+check:rc==0\n+cmd:copycds $$ISO\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir ]; then mv $rootimgdir $rootimgdir.regbak -f;fi\n+check:rc==0\n+cmd:genimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then rnetboot $$CN;elif [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"x86_64\" ]];then rpower $$CN boot; fi\n+check:rc==0\n+cmd:sleep 900\n+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 60 ];then break;fi done\n+cmd:ping $$CN -c 3\n+check:rc==0\n+check:output=~64 bytes from $$CN\n+cmd:lsdef -l $$CN | grep status\n+check:rc==0\n+check:output=~booted\n+cmd:scp $$CN:/etc/shadow /tmp\n+check:rc==0\n+cmd:grep 'root:\\$1\\$' /tmp/shadow\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir.regbak ]; then rm -rf $rootimgdir; mv $rootimgdir.regbak $rootimgdir; fi\n+check:rc==0\n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod /tmp/shadow\n+end\n+\n+start:encrypted_passwd_sha256_diskfull\n+description: this case is to test when  cryptmethod=sha256 in passwd table, the password is encryped with the sha256 method. When compute node is diskfull provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=sha256\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:grep '\\$5\\$' /install/autoinst/$$CN\n+check:rc==0\n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod\n+end\n+\n+start:encrypted_passwd_sha256_diskless\n+description: this case is to test when  cryptmethod=sha256 in passwd table, the password is encryped with the sha256 method. When compute node is diskless provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=sha256\n+check:rc==0\n+#config CN to do diskless provision\n+cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN  xcatmaster=$$MN\n+check:rc==0\n+cmd:makedns -n\n+check:rc==0\n+cmd:makeconservercf $$CN\n+check:rc==0\n+cmd:cat /etc/conserver.cf | grep $$CN\n+check:output=~$$CN\n+cmd:sleep 20\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then getmacs -D $$CN; fi\n+check:rc==0\n+cmd:makedhcp -n\n+check:rc==0\n+cmd:makedhcp -a\n+check:rc==0\n+cmd:a=0;while true; do [ $a -eq 100 ] && exit 1;output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;a=$[$a+1];sleep 1;done\n+check:rc==0\n+cmd:copycds $$ISO\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir ]; then mv $rootimgdir $rootimgdir.regbak -f;fi\n+check:rc==0\n+cmd:genimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then rnetboot $$CN;elif [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"x86_64\" ]];then rpower $$CN boot; fi\n+check:rc==0\n+cmd:sleep 900\n+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 60 ];then break;fi done\n+cmd:ping $$CN -c 3\n+check:rc==0\n+check:output=~64 bytes from $$CN\n+cmd:lsdef -l $$CN | grep status\n+check:rc==0\n+check:output=~booted\n+cmd:scp $$CN:/etc/shadow /tmp\n+check:rc==0\n+cmd:grep 'root:\\$5\\$' /tmp/shadow\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir.regbak ]; then rm -rf $rootimgdir; mv $rootimgdir.regbak $rootimgdir; fi\n+check:rc==0\n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod /tmp/shadow\n+end\n+\n+start:encrypted_passwd_sha512_diskfull\n+description: this case is to test when  cryptmethod=sha512 in passwd table, the password is encryped with the sha512 method. When compute node is diskfull provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=sha512\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:grep '\\$6\\$' /install/autoinst/$$CN\n+check:rc==0\n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod\n+end\n+\n+start:encrypted_passwd_sha512_diskless\n+description: this case is to test when  cryptmethod=sha512 in passwd table, the password is encryped with the sha512 method. When compute node is diskless provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:chtab key=system passwd.cryptmethod=sha512\n+check:rc==0\n+#config CN to do diskless provision\n+cmd:chdef -t node -o $$CN servicenode= monserver=$$MN nfsserver=$$MN tftpserver=$$MN  xcatmaster=$$MN\n+check:rc==0\n+cmd:makedns -n\n+check:rc==0\n+cmd:makeconservercf $$CN\n+check:rc==0\n+cmd:cat /etc/conserver.cf | grep $$CN\n+check:output=~$$CN\n+cmd:sleep 20\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then getmacs -D $$CN; fi\n+check:rc==0\n+cmd:makedhcp -n\n+check:rc==0\n+cmd:makedhcp -a\n+check:rc==0\n+cmd:a=0;while true; do [ $a -eq 100 ] && exit 1;output=$(makedhcp -q $$CN);[ $? -ne 0 ] && exit 1;echo $output|grep $$CN 2>/dev/null && exit 0;a=$[$a+1];sleep 1;done\n+check:rc==0\n+cmd:copycds $$ISO\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir ]; then mv $rootimgdir $rootimgdir.regbak -f;fi\n+check:rc==0\n+cmd:genimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:packimage __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute\n+check:rc==0\n+cmd:if [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"ppc64\" ]]; then rnetboot $$CN;elif [[ \"__GETNODEATTR($$CN,arch)__\" =~ \"x86_64\" ]];then rpower $$CN boot; fi\n+check:rc==0\n+cmd:sleep 900\n+cmd:a=0;while ! `lsdef -l $$CN|grep status|grep booted >/dev/null`; do sleep 10;((a++));if [ $a -gt 60 ];then break;fi done\n+cmd:ping $$CN -c 3\n+check:rc==0\n+check:output=~64 bytes from $$CN\n+cmd:lsdef -l $$CN | grep status\n+check:rc==0\n+check:output=~booted\n+cmd:scp $$CN:/etc/shadow /tmp\n+check:rc==0\n+cmd:grep 'root:\\$6\\$' /tmp/shadow\n+check:rc==0\n+cmd:rootimgdir=`lsdef -t osimage  __GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-netboot-compute|grep rootimgdir|awk -F'=' '{print $2}'`; if [ -d $rootimgdir.regbak ]; then rm -rf $rootimgdir; mv $rootimgdir.regbak $rootimgdir; fi\n+check:rc==0\n+cmd:oldcryptmethod=`cat /tmp/tmpcryptmethod |sed 's/\\\"//g'`;chtab key=system passwd.cryptmethod=$oldcryptmethod\n+check:rc==0\n+cmd:rm -rf /tmp/tmpcryptmethod /tmp/shadow\n+end\n+\n+\n+start:encrypted_passwd_openssl_diskfull\n+description: this case is to test when password is encrypted with openssl, the password is encryped in password table. When compute node is diskfull provisioned, users can login node with correct password. This case should be run when node is correctly defined.\n+cmd:gettab key=system passwd.cryptmethod > /tmp/tmpcryptmethod\n+check:rc==0\n+cmd:gettab key=system passwd.password > /tmp/tmppassword\n+check:rc==0\n+cmd:chtab key=system passwd.username=root passwd.password=`openssl passwd -1 abc123`\n+check:rc==0\n+cmd:gettab key=system passwd.password > /tmp/tmpcryptedpasswd \n+check:rc==0\n+cmd:nodeset $$CN osimage=__GETNODEATTR($$CN,os)__-__GETNODEATTR($$CN,arch)__-install-compute\n+check:rc==0\n+cmd:grep '\\$1\\$' /install/autoinst/$$CN |awk -F \" \" '{print $3}' > /tmp/instcryptedpasswd\n+check:rc==0\n+cmd:diff /tmp/tmpcryptedpasswd /tmp/instcryptedpasswd","path":"xCAT-test/autotest/testcase/passwd/case0","position":232,"original_position":232,"commit_id":"a19114cf407a825477d2f4f2ba486a70dffe4eb6","original_commit_id":"a19114cf407a825477d2f4f2ba486a70dffe4eb6","user":{"login":"chenglch","id":7165199,"avatar_url":"https://avatars2.githubusercontent.com/u/7165199?v=3","gravatar_id":"","url":"https://api.github.com/users/chenglch","html_url":"https://github.com/chenglch","followers_url":"https://api.github.com/users/chenglch/followers","following_url":"https://api.github.com/users/chenglch/following{/other_user}","gists_url":"https://api.github.com/users/chenglch/gists{/gist_id}","starred_url":"https://api.github.com/users/chenglch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenglch/subscriptions","organizations_url":"https://api.github.com/users/chenglch/orgs","repos_url":"https://api.github.com/users/chenglch/repos","events_url":"https://api.github.com/users/chenglch/events{/privacy}","received_events_url":"https://api.github.com/users/chenglch/received_events","type":"User","site_admin":false},"body":"I have little concern about this way to compare the string, but it works.","created_at":"2017-04-18T07:51:17Z","updated_at":"2017-04-18T07:52:51Z","html_url":"https://github.com/xcat2/xcat-core/pull/2855#discussion_r111890073","pull_request_url":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855","_links":{"self":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/comments/111890073"},"html":{"href":"https://github.com/xcat2/xcat-core/pull/2855#discussion_r111890073"},"pull_request":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855"}}},"pull_request":{"url":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855","id":115494570,"html_url":"https://github.com/xcat2/xcat-core/pull/2855","diff_url":"https://github.com/xcat2/xcat-core/pull/2855.diff","patch_url":"https://github.com/xcat2/xcat-core/pull/2855.patch","issue_url":"https://api.github.com/repos/xcat2/xcat-core/issues/2855","number":2855,"state":"open","locked":false,"title":"add test cases for #2558: Support for encrypted passwords in the passwd table is broken","user":{"login":"tingtli","id":12440603,"avatar_url":"https://avatars1.githubusercontent.com/u/12440603?v=3","gravatar_id":"","url":"https://api.github.com/users/tingtli","html_url":"https://github.com/tingtli","followers_url":"https://api.github.com/users/tingtli/followers","following_url":"https://api.github.com/users/tingtli/following{/other_user}","gists_url":"https://api.github.com/users/tingtli/gists{/gist_id}","starred_url":"https://api.github.com/users/tingtli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tingtli/subscriptions","organizations_url":"https://api.github.com/users/tingtli/orgs","repos_url":"https://api.github.com/users/tingtli/repos","events_url":"https://api.github.com/users/tingtli/events{/privacy}","received_events_url":"https://api.github.com/users/tingtli/received_events","type":"User","site_admin":false},"body":"@chenglch  This is to add test cases for  bug #2558. Please help review. Thanks!\r\nWe have 8 test cases. These cases is to test when we use encryped method in password table, we have correct encrypted password to do provision. \r\nencrypted_passwd_md5_diskfull\r\necrypted_passwd_md5_diskless\r\nencrypted_passwd_sha256_diskfull\r\nencrypted_passwd_sha256_diskless\r\nencrypted_passwd_sha512_diskfull\r\nencrypted_passwd_sha512_diskless\r\nencrypted_passwd_openssl_diskfull\r\nencrypted_passwd_openssl_diskless\r\n\r\nWe will put encrypted_passwd_sha512_diskfull, encrypted_passwd_sha512_diskless and encrypted_passwd_openssl_diskfull in our daily run bucket.","created_at":"2017-04-12T09:02:58Z","updated_at":"2017-04-18T07:52:51Z","closed_at":null,"merged_at":null,"merge_commit_sha":"9c690b80b350339d07653e1d8f314d5abd22a2d9","assignee":{"login":"chenglch","id":7165199,"avatar_url":"https://avatars2.githubusercontent.com/u/7165199?v=3","gravatar_id":"","url":"https://api.github.com/users/chenglch","html_url":"https://github.com/chenglch","followers_url":"https://api.github.com/users/chenglch/followers","following_url":"https://api.github.com/users/chenglch/following{/other_user}","gists_url":"https://api.github.com/users/chenglch/gists{/gist_id}","starred_url":"https://api.github.com/users/chenglch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenglch/subscriptions","organizations_url":"https://api.github.com/users/chenglch/orgs","repos_url":"https://api.github.com/users/chenglch/repos","events_url":"https://api.github.com/users/chenglch/events{/privacy}","received_events_url":"https://api.github.com/users/chenglch/received_events","type":"User","site_admin":false},"assignees":[{"login":"chenglch","id":7165199,"avatar_url":"https://avatars2.githubusercontent.com/u/7165199?v=3","gravatar_id":"","url":"https://api.github.com/users/chenglch","html_url":"https://github.com/chenglch","followers_url":"https://api.github.com/users/chenglch/followers","following_url":"https://api.github.com/users/chenglch/following{/other_user}","gists_url":"https://api.github.com/users/chenglch/gists{/gist_id}","starred_url":"https://api.github.com/users/chenglch/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chenglch/subscriptions","organizations_url":"https://api.github.com/users/chenglch/orgs","repos_url":"https://api.github.com/users/chenglch/repos","events_url":"https://api.github.com/users/chenglch/events{/privacy}","received_events_url":"https://api.github.com/users/chenglch/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/xcat2/xcat-core/milestones/27","html_url":"https://github.com/xcat2/xcat-core/milestone/27","labels_url":"https://api.github.com/repos/xcat2/xcat-core/milestones/27/labels","id":2381922,"number":27,"title":"2.13.4","description":"","creator":{"login":"whowutwut","id":10049070,"avatar_url":"https://avatars3.githubusercontent.com/u/10049070?v=3","gravatar_id":"","url":"https://api.github.com/users/whowutwut","html_url":"https://github.com/whowutwut","followers_url":"https://api.github.com/users/whowutwut/followers","following_url":"https://api.github.com/users/whowutwut/following{/other_user}","gists_url":"https://api.github.com/users/whowutwut/gists{/gist_id}","starred_url":"https://api.github.com/users/whowutwut/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/whowutwut/subscriptions","organizations_url":"https://api.github.com/users/whowutwut/orgs","repos_url":"https://api.github.com/users/whowutwut/repos","events_url":"https://api.github.com/users/whowutwut/events{/privacy}","received_events_url":"https://api.github.com/users/whowutwut/received_events","type":"User","site_admin":false},"open_issues":93,"closed_issues":10,"state":"open","created_at":"2017-03-13T13:27:05Z","updated_at":"2017-04-18T06:29:19Z","due_on":"2017-05-19T07:00:00Z","closed_at":null},"commits_url":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855/commits","review_comments_url":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855/comments","review_comment_url":"https://api.github.com/repos/xcat2/xcat-core/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xcat2/xcat-core/issues/2855/comments","statuses_url":"https://api.github.com/repos/xcat2/xcat-core/statuses/a19114cf407a825477d2f4f2ba486a70dffe4eb6","head":{"label":"tingtli:encryptedpasswd","ref":"encryptedpasswd","sha":"a19114cf407a825477d2f4f2ba486a70dffe4eb6","user":{"login":"tingtli","id":12440603,"avatar_url":"https://avatars1.githubusercontent.com/u/12440603?v=3","gravatar_id":"","url":"https://api.github.com/users/tingtli","html_url":"https://github.com/tingtli","followers_url":"https://api.github.com/users/tingtli/followers","following_url":"https://api.github.com/users/tingtli/following{/other_user}","gists_url":"https://api.github.com/users/tingtli/gists{/gist_id}","starred_url":"https://api.github.com/users/tingtli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tingtli/subscriptions","organizations_url":"https://api.github.com/users/tingtli/orgs","repos_url":"https://api.github.com/users/tingtli/repos","events_url":"https://api.github.com/users/tingtli/events{/privacy}","received_events_url":"https://api.github.com/users/tingtli/received_events","type":"User","site_admin":false},"repo":{"id":40871337,"name":"xcat-core","full_name":"tingtli/xcat-core","owner":{"login":"tingtli","id":12440603,"avatar_url":"https://avatars1.githubusercontent.com/u/12440603?v=3","gravatar_id":"","url":"https://api.github.com/users/tingtli","html_url":"https://github.com/tingtli","followers_url":"https://api.github.com/users/tingtli/followers","following_url":"https://api.github.com/users/tingtli/following{/other_user}","gists_url":"https://api.github.com/users/tingtli/gists{/gist_id}","starred_url":"https://api.github.com/users/tingtli/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tingtli/subscriptions","organizations_url":"https://api.github.com/users/tingtli/orgs","repos_url":"https://api.github.com/users/tingtli/repos","events_url":"https://api.github.com/users/tingtli/events{/privacy}","received_events_url":"https://api.github.com/users/tingtli/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/tingtli/xcat-core","description":"Code repo for xCAT core packages","fork":true,"url":"https://api.github.com/repos/tingtli/xcat-core","forks_url":"https://api.github.com/repos/tingtli/xcat-core/forks","keys_url":"https://api.github.com/repos/tingtli/xcat-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/tingtli/xcat-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/tingtli/xcat-core/teams","hooks_url":"https://api.github.com/repos/tingtli/xcat-core/hooks","issue_events_url":"https://api.github.com/repos/tingtli/xcat-core/issues/events{/number}","events_url":"https://api.github.com/repos/tingtli/xcat-core/events","assignees_url":"https://api.github.com/repos/tingtli/xcat-core/assignees{/user}","branches_url":"https://api.github.com/repos/tingtli/xcat-core/branches{/branch}","tags_url":"https://api.github.com/repos/tingtli/xcat-core/tags","blobs_url":"https://api.github.com/repos/tingtli/xcat-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/tingtli/xcat-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/tingtli/xcat-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/tingtli/xcat-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/tingtli/xcat-core/statuses/{sha}","languages_url":"https://api.github.com/repos/tingtli/xcat-core/languages","stargazers_url":"https://api.github.com/repos/tingtli/xcat-core/stargazers","contributors_url":"https://api.github.com/repos/tingtli/xcat-core/contributors","subscribers_url":"https://api.github.com/repos/tingtli/xcat-core/subscribers","subscription_url":"https://api.github.com/repos/tingtli/xcat-core/subscription","commits_url":"https://api.github.com/repos/tingtli/xcat-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/tingtli/xcat-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/tingtli/xcat-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/tingtli/xcat-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/tingtli/xcat-core/contents/{+path}","compare_url":"https://api.github.com/repos/tingtli/xcat-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/tingtli/xcat-core/merges","archive_url":"https://api.github.com/repos/tingtli/xcat-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/tingtli/xcat-core/downloads","issues_url":"https://api.github.com/repos/tingtli/xcat-core/issues{/number}","pulls_url":"https://api.github.com/repos/tingtli/xcat-core/pulls{/number}","milestones_url":"https://api.github.com/repos/tingtli/xcat-core/milestones{/number}","notifications_url":"https://api.github.com/repos/tingtli/xcat-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/tingtli/xcat-core/labels{/name}","releases_url":"https://api.github.com/repos/tingtli/xcat-core/releases{/id}","deployments_url":"https://api.github.com/repos/tingtli/xcat-core/deployments","created_at":"2015-08-17T06:50:04Z","updated_at":"2016-02-17T03:23:53Z","pushed_at":"2017-04-18T06:46:50Z","git_url":"git://github.com/tingtli/xcat-core.git","ssh_url":"git@github.com:tingtli/xcat-core.git","clone_url":"https://github.com/tingtli/xcat-core.git","svn_url":"https://github.com/tingtli/xcat-core","homepage":null,"size":189717,"stargazers_count":0,"watchers_count":0,"language":"Perl","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"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":"xcat2:master","ref":"master","sha":"cf06123a0aa361eb4914dcb03fec3fba8e348980","user":{"login":"xcat2","id":10124414,"avatar_url":"https://avatars0.githubusercontent.com/u/10124414?v=3","gravatar_id":"","url":"https://api.github.com/users/xcat2","html_url":"https://github.com/xcat2","followers_url":"https://api.github.com/users/xcat2/followers","following_url":"https://api.github.com/users/xcat2/following{/other_user}","gists_url":"https://api.github.com/users/xcat2/gists{/gist_id}","starred_url":"https://api.github.com/users/xcat2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcat2/subscriptions","organizations_url":"https://api.github.com/users/xcat2/orgs","repos_url":"https://api.github.com/users/xcat2/repos","events_url":"https://api.github.com/users/xcat2/events{/privacy}","received_events_url":"https://api.github.com/users/xcat2/received_events","type":"Organization","site_admin":false},"repo":{"id":27747508,"name":"xcat-core","full_name":"xcat2/xcat-core","owner":{"login":"xcat2","id":10124414,"avatar_url":"https://avatars0.githubusercontent.com/u/10124414?v=3","gravatar_id":"","url":"https://api.github.com/users/xcat2","html_url":"https://github.com/xcat2","followers_url":"https://api.github.com/users/xcat2/followers","following_url":"https://api.github.com/users/xcat2/following{/other_user}","gists_url":"https://api.github.com/users/xcat2/gists{/gist_id}","starred_url":"https://api.github.com/users/xcat2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xcat2/subscriptions","organizations_url":"https://api.github.com/users/xcat2/orgs","repos_url":"https://api.github.com/users/xcat2/repos","events_url":"https://api.github.com/users/xcat2/events{/privacy}","received_events_url":"https://api.github.com/users/xcat2/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xcat2/xcat-core","description":"Code repo for xCAT core packages","fork":false,"url":"https://api.github.com/repos/xcat2/xcat-core","forks_url":"https://api.github.com/repos/xcat2/xcat-core/forks","keys_url":"https://api.github.com/repos/xcat2/xcat-core/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xcat2/xcat-core/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xcat2/xcat-core/teams","hooks_url":"https://api.github.com/repos/xcat2/xcat-core/hooks","issue_events_url":"https://api.github.com/repos/xcat2/xcat-core/issues/events{/number}","events_url":"https://api.github.com/repos/xcat2/xcat-core/events","assignees_url":"https://api.github.com/repos/xcat2/xcat-core/assignees{/user}","branches_url":"https://api.github.com/repos/xcat2/xcat-core/branches{/branch}","tags_url":"https://api.github.com/repos/xcat2/xcat-core/tags","blobs_url":"https://api.github.com/repos/xcat2/xcat-core/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xcat2/xcat-core/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xcat2/xcat-core/git/refs{/sha}","trees_url":"https://api.github.com/repos/xcat2/xcat-core/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xcat2/xcat-core/statuses/{sha}","languages_url":"https://api.github.com/repos/xcat2/xcat-core/languages","stargazers_url":"https://api.github.com/repos/xcat2/xcat-core/stargazers","contributors_url":"https://api.github.com/repos/xcat2/xcat-core/contributors","subscribers_url":"https://api.github.com/repos/xcat2/xcat-core/subscribers","subscription_url":"https://api.github.com/repos/xcat2/xcat-core/subscription","commits_url":"https://api.github.com/repos/xcat2/xcat-core/commits{/sha}","git_commits_url":"https://api.github.com/repos/xcat2/xcat-core/git/commits{/sha}","comments_url":"https://api.github.com/repos/xcat2/xcat-core/comments{/number}","issue_comment_url":"https://api.github.com/repos/xcat2/xcat-core/issues/comments{/number}","contents_url":"https://api.github.com/repos/xcat2/xcat-core/contents/{+path}","compare_url":"https://api.github.com/repos/xcat2/xcat-core/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xcat2/xcat-core/merges","archive_url":"https://api.github.com/repos/xcat2/xcat-core/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xcat2/xcat-core/downloads","issues_url":"https://api.github.com/repos/xcat2/xcat-core/issues{/number}","pulls_url":"https://api.github.com/repos/xcat2/xcat-core/pulls{/number}","milestones_url":"https://api.github.com/repos/xcat2/xcat-core/milestones{/number}","notifications_url":"https://api.github.com/repos/xcat2/xcat-core/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xcat2/xcat-core/labels{/name}","releases_url":"https://api.github.com/repos/xcat2/xcat-core/releases{/id}","deployments_url":"https://api.github.com/repos/xcat2/xcat-core/deployments","created_at":"2014-12-09T03:21:50Z","updated_at":"2017-04-17T09:34:32Z","pushed_at":"2017-04-18T06:46:52Z","git_url":"git://github.com/xcat2/xcat-core.git","ssh_url":"git@github.com:xcat2/xcat-core.git","clone_url":"https://github.com/xcat2/xcat-core.git","svn_url":"https://github.com/xcat2/xcat-core","homepage":null,"size":189777,"stargazers_count":86,"watchers_count":86,"language":"Perl","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":83,"mirror_url":null,"open_issues_count":184,"forks":83,"open_issues":184,"watchers":86,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855"},"html":{"href":"https://github.com/xcat2/xcat-core/pull/2855"},"issue":{"href":"https://api.github.com/repos/xcat2/xcat-core/issues/2855"},"comments":{"href":"https://api.github.com/repos/xcat2/xcat-core/issues/2855/comments"},"review_comments":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855/comments"},"review_comment":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xcat2/xcat-core/pulls/2855/commits"},"statuses":{"href":"https://api.github.com/repos/xcat2/xcat-core/statuses/a19114cf407a825477d2f4f2ba486a70dffe4eb6"}}}}
{"actor":{"display_login":"chenglch"}}