{"action":"created","comment":{"url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/55269357","id":55269357,"diff_hunk":"@@ -68,20 +68,39 @@ do_cib_updated(const char *event, xmlNode * msg)\n \n     crm_element_value_int(patchset, \"format\", &format);\n     if (format == 1) {\n-        if (get_xpath_object\n-            (\"//\" F_CIB_UPDATE_RESULT \"//\" XML_TAG_DIFF_ADDED \"//\" XML_CIB_TAG_CRMCONFIG, msg,\n-             LOG_TRACE) != NULL) {\n+        if ((get_xpath_object(\n+                 \"//\" F_CIB_UPDATE_RESULT \"//\" XML_TAG_DIFF_ADDED \"//\" XML_CIB_TAG_CRMCONFIG,\n+                 msg, LOG_TRACE) != NULL) ||\n+            (get_xpath_object(\n+                 \"//\" F_CIB_UPDATE_RESULT \"//\" XML_TAG_DIFF_ADDED \"//\" XML_CIB_TAG_NOTIFICATIONS,\n+                 msg, LOG_TRACE) != NULL)) {\n             mainloop_set_trigger(config_read);\n         }\n-\n     } else if (format == 2) {\n         for (change = __xml_first_child(patchset); change != NULL; change = __xml_next(change)) {\n             const char *xpath = crm_element_value(change, XML_DIFF_PATH);\n-            if (xpath != NULL\n-                && strstr(xpath, \"/\" XML_TAG_CIB \"/\" XML_CIB_TAG_CONFIGURATION \"/\" XML_CIB_TAG_CRMCONFIG \"/\")) {\n-                mainloop_set_trigger(config_read);\n-                break;\n+\n+            if (xpath == NULL) {\n+                continue;\n             }\n+\t\t\n+            /* modifying properties */\n+            if (!strstr(xpath, \"/\" XML_TAG_CIB \"/\" XML_CIB_TAG_CONFIGURATION \"/\" XML_CIB_TAG_CRMCONFIG \"/\") &&\n+                !strstr(xpath, \"/\" XML_TAG_CIB \"/\" XML_CIB_TAG_CONFIGURATION \"/\" XML_CIB_TAG_NOTIFICATIONS)) {\n+                xmlNode *section = NULL;\n+                const char *name = NULL;\n+\n+                /* adding notifications section */\n+                if ((strcmp(xpath, \"/\" XML_TAG_CIB \"/\" XML_CIB_TAG_CONFIGURATION) != 0) ||\n+                    ((section = __xml_first_child(change)) == NULL) ||\n+                    ((name = crm_element_name(section)) == NULL) ||\n+                    (strcmp(name, XML_CIB_TAG_NOTIFICATIONS) != 0)) {\n+                    continue;\n+                }\n+            } ","path":"crmd/cib.c","position":41,"original_position":41,"commit_id":"54d6110ff695b5c030b2ac3c16b20dfbf5e80d7c","original_commit_id":"54d6110ff695b5c030b2ac3c16b20dfbf5e80d7c","user":{"login":"kgaillot","id":8730570,"avatar_url":"https://avatars.githubusercontent.com/u/8730570?v=3","gravatar_id":"","url":"https://api.github.com/users/kgaillot","html_url":"https://github.com/kgaillot","followers_url":"https://api.github.com/users/kgaillot/followers","following_url":"https://api.github.com/users/kgaillot/following{/other_user}","gists_url":"https://api.github.com/users/kgaillot/gists{/gist_id}","starred_url":"https://api.github.com/users/kgaillot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgaillot/subscriptions","organizations_url":"https://api.github.com/users/kgaillot/orgs","repos_url":"https://api.github.com/users/kgaillot/repos","events_url":"https://api.github.com/users/kgaillot/events{/privacy}","received_events_url":"https://api.github.com/users/kgaillot/received_events","type":"User","site_admin":false},"body":"What's the purpose of this \"if\" block? It seems like it just negates the previous change.","created_at":"2016-03-07T20:48:34Z","updated_at":"2016-03-07T20:48:34Z","html_url":"https://github.com/ClusterLabs/pacemaker/pull/950#discussion_r55269357","pull_request_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950","_links":{"self":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments/55269357"},"html":{"href":"https://github.com/ClusterLabs/pacemaker/pull/950#discussion_r55269357"},"pull_request":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950"}}},"pull_request":{"url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950","id":61921869,"html_url":"https://github.com/ClusterLabs/pacemaker/pull/950","diff_url":"https://github.com/ClusterLabs/pacemaker/pull/950.diff","patch_url":"https://github.com/ClusterLabs/pacemaker/pull/950.patch","issue_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/950","number":950,"state":"open","locked":false,"title":"first implementation of integrated multi-agent, multi-target alarming…","user":{"login":"wenningerk","id":15136666,"avatar_url":"https://avatars.githubusercontent.com/u/15136666?v=3","gravatar_id":"","url":"https://api.github.com/users/wenningerk","html_url":"https://github.com/wenningerk","followers_url":"https://api.github.com/users/wenningerk/followers","following_url":"https://api.github.com/users/wenningerk/following{/other_user}","gists_url":"https://api.github.com/users/wenningerk/gists{/gist_id}","starred_url":"https://api.github.com/users/wenningerk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wenningerk/subscriptions","organizations_url":"https://api.github.com/users/wenningerk/orgs","repos_url":"https://api.github.com/users/wenningerk/repos","events_url":"https://api.github.com/users/wenningerk/events{/privacy}","received_events_url":"https://api.github.com/users/wenningerk/received_events","type":"User","site_admin":false},"body":"This commit basically implements the initial proposal in\r\n[http://clusterlabs.org/pipermail/developers/2015-December/000097.html](http://clusterlabs.org/pipermail/developers/2015-December/000097.html) \r\nThe feature is just renamed from notification(s) to alarm(s) to overcome the possible confusion\r\nintroduced by pacemaker using notify as well for talking to resource-agents in a completely different context.\r\n\r\ne.g.:\r\n`cibadmin --create --xml-text '<configuration> <alarms> <alarm id=\"notify_4\" path=\"/usr/share/pacemaker/tests/pcmk_alarm_sample.sh\" tstamp_format=\"%H:%M:%S.%06N\"> <recipient id=\"recipient_6\" value=\"/tmp/alarms.log\"/> </alarm> </alarms> </configuration>'`\r\n\r\nwould create the following section in the cib:\r\n\r\n```xml \r\n<configuration>\r\n    <alarms>\r\n        <alarm id=\"notify_4\" path=\"/usr/share/pacemaker/tests/pcmk_alarm_sample.sh\" tstamp_format=\"%H:%M:%S.%06N\">\r\n            <recipient id=\"recipient_4\" value=\"/tmp/alarms.log\"/>\r\n        </alarm>\r\n    </alarms>\r\n</configuration> </code>\r\n```\r\n\r\nTill now there is no high-level-tool-support for the feature.\r\nThere can be an arbitrary number of alarms and each of the alarms can have an arbitrary number of recipients.\r\nFor the full set of properties have a look at .../xml/alarms-2.5.rng\r\n\r\nIn the discussion in the mailing-list referenced above a drop-in directory for alarm-agents was suggested.\r\nDiscussion lead to a point where it turned out that the drop-in-directory approach would\r\nneed a manual synchronization trigger. (dependency to inotify is unwanted and still might\r\nsuffer from races dependent on how the files are created in the drop-in directory)\r\nSo it is as well possible to use a high-level-tool like e.g. pcs for feeding the content of a drop-in\r\ndirectory into the cib - and thus serve as kind of a trigger.\r\n\r\nIf RHEL7_COMPAT is defined the interface of the previous feature 'integrated-notifications'\r\nconfigured via the 2 cluster-properties (notification-agent & notification-recipient) is still available\r\nin parallel. (internally fed into the new mechanism)\r\n\r\nThe interface to the alarm-agents is realized as set of environment variables being set accordingly.\r\nIt is realized as backward-compatible evolution of the interfaces previously provided with ClusterMon\r\nand 'integrated-notifications'.\r\nTo preserve script-compatibility the environment-variables are still prepended CRM_notify instead \r\nof CRM_alarm although the implementation is made in a way that a 2nd set prepended CRM_alarm\r\ncan be provided in parallel without changing the code-logic. (A full set starting CRM_alarm and in\r\naddition just the variables needed for compatibility starting CRM_notify would be possible as well.)\r\nSee the full list of variables at the beginning of .../crmd/notify.c.\r\n\r\nFor the explanation of variables already available with ClusterMon see \r\n    http://clusterlabs.org/doc/en-US/Pacemaker/1.1/html/Pacemaker_Explained/s-notification-external.html.\r\nFor these which come with the 'integrated-notifications' feature see\r\n    http://blog.clusterlabs.org/blog/2015/reliable-notifications/\r\n\r\nOn top we have now:\r\n    CRM_notify_node_sequence - a per node sequence which your script might use to sort alarms\r\n    CRM_notify_timestamp - a timestamp created within crmd to bypass delay/jitter coming from process spawning & script-execution\r\n    CRM_notify_info - an arbitrary string you can either use to enhance readability of the cib or within the alarm-agent\r\n\r\nThe timestamp can be configured in a flexible way via the property-string tstamp_format holding a string as defined in the man-page of strftime (+%N as used with date, examples: %i ... seconds since epoche, %H:%M:%S.%06N ... for us accuracy, ...).\r\n \r\nThe commit is not foreseen to be pulled as is, as there are still open points regarding following issues:\r\n\r\n- renaming of functions and filenames from notify to alarm\r\n- moving the usecond-resolution & format-string time-handling to a common place (common pacemaker time-handling just has seond-resolution and is thus not suitable for the timestamp purpose here)\r\n- having enable/disable per alarm-agent (theoretically possible with ClusterMon)\r\n- having node-specific execution of alarm-agents (theoretically possible with ClusterMon)\r\n- having possibility to run an alarm-agent dependent on a resource/score (theoretically with ClusterMon) \r\n- and probably more ...\r\n\r\nI still chose to provide this commit as it is complete in regards of the cib-interface and the alarm-agent-interface so that it can be used as a basis for discussion/implementation of high-level-tools.\r\nAnd apart from that a pull-request is a good platform for discussion once there is some code available.\r\n\r\nRegards,\r\nKlaus\r\n\r\n\r\n\r\n","created_at":"2016-03-07T14:12:39Z","updated_at":"2016-03-07T20:48:34Z","closed_at":null,"merged_at":null,"merge_commit_sha":"40bae79f85b996b2e60d18d8b29a8020db532284","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950/commits","review_comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950/comments","review_comment_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments{/number}","comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/950/comments","statuses_url":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/54d6110ff695b5c030b2ac3c16b20dfbf5e80d7c","head":{"label":"wenningerk:integrated_alarms","ref":"integrated_alarms","sha":"54d6110ff695b5c030b2ac3c16b20dfbf5e80d7c","user":{"login":"wenningerk","id":15136666,"avatar_url":"https://avatars.githubusercontent.com/u/15136666?v=3","gravatar_id":"","url":"https://api.github.com/users/wenningerk","html_url":"https://github.com/wenningerk","followers_url":"https://api.github.com/users/wenningerk/followers","following_url":"https://api.github.com/users/wenningerk/following{/other_user}","gists_url":"https://api.github.com/users/wenningerk/gists{/gist_id}","starred_url":"https://api.github.com/users/wenningerk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wenningerk/subscriptions","organizations_url":"https://api.github.com/users/wenningerk/orgs","repos_url":"https://api.github.com/users/wenningerk/repos","events_url":"https://api.github.com/users/wenningerk/events{/privacy}","received_events_url":"https://api.github.com/users/wenningerk/received_events","type":"User","site_admin":false},"repo":{"id":46865420,"name":"pacemaker","full_name":"wenningerk/pacemaker","owner":{"login":"wenningerk","id":15136666,"avatar_url":"https://avatars.githubusercontent.com/u/15136666?v=3","gravatar_id":"","url":"https://api.github.com/users/wenningerk","html_url":"https://github.com/wenningerk","followers_url":"https://api.github.com/users/wenningerk/followers","following_url":"https://api.github.com/users/wenningerk/following{/other_user}","gists_url":"https://api.github.com/users/wenningerk/gists{/gist_id}","starred_url":"https://api.github.com/users/wenningerk/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wenningerk/subscriptions","organizations_url":"https://api.github.com/users/wenningerk/orgs","repos_url":"https://api.github.com/users/wenningerk/repos","events_url":"https://api.github.com/users/wenningerk/events{/privacy}","received_events_url":"https://api.github.com/users/wenningerk/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/wenningerk/pacemaker","description":"Pacemaker is an advanced, scalable High-Availability cluster resource manager","fork":true,"url":"https://api.github.com/repos/wenningerk/pacemaker","forks_url":"https://api.github.com/repos/wenningerk/pacemaker/forks","keys_url":"https://api.github.com/repos/wenningerk/pacemaker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/wenningerk/pacemaker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/wenningerk/pacemaker/teams","hooks_url":"https://api.github.com/repos/wenningerk/pacemaker/hooks","issue_events_url":"https://api.github.com/repos/wenningerk/pacemaker/issues/events{/number}","events_url":"https://api.github.com/repos/wenningerk/pacemaker/events","assignees_url":"https://api.github.com/repos/wenningerk/pacemaker/assignees{/user}","branches_url":"https://api.github.com/repos/wenningerk/pacemaker/branches{/branch}","tags_url":"https://api.github.com/repos/wenningerk/pacemaker/tags","blobs_url":"https://api.github.com/repos/wenningerk/pacemaker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/wenningerk/pacemaker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/wenningerk/pacemaker/git/refs{/sha}","trees_url":"https://api.github.com/repos/wenningerk/pacemaker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/wenningerk/pacemaker/statuses/{sha}","languages_url":"https://api.github.com/repos/wenningerk/pacemaker/languages","stargazers_url":"https://api.github.com/repos/wenningerk/pacemaker/stargazers","contributors_url":"https://api.github.com/repos/wenningerk/pacemaker/contributors","subscribers_url":"https://api.github.com/repos/wenningerk/pacemaker/subscribers","subscription_url":"https://api.github.com/repos/wenningerk/pacemaker/subscription","commits_url":"https://api.github.com/repos/wenningerk/pacemaker/commits{/sha}","git_commits_url":"https://api.github.com/repos/wenningerk/pacemaker/git/commits{/sha}","comments_url":"https://api.github.com/repos/wenningerk/pacemaker/comments{/number}","issue_comment_url":"https://api.github.com/repos/wenningerk/pacemaker/issues/comments{/number}","contents_url":"https://api.github.com/repos/wenningerk/pacemaker/contents/{+path}","compare_url":"https://api.github.com/repos/wenningerk/pacemaker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/wenningerk/pacemaker/merges","archive_url":"https://api.github.com/repos/wenningerk/pacemaker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/wenningerk/pacemaker/downloads","issues_url":"https://api.github.com/repos/wenningerk/pacemaker/issues{/number}","pulls_url":"https://api.github.com/repos/wenningerk/pacemaker/pulls{/number}","milestones_url":"https://api.github.com/repos/wenningerk/pacemaker/milestones{/number}","notifications_url":"https://api.github.com/repos/wenningerk/pacemaker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/wenningerk/pacemaker/labels{/name}","releases_url":"https://api.github.com/repos/wenningerk/pacemaker/releases{/id}","deployments_url":"https://api.github.com/repos/wenningerk/pacemaker/deployments","created_at":"2015-11-25T14:09:36Z","updated_at":"2016-01-12T12:26:06Z","pushed_at":"2016-03-07T14:37:30Z","git_url":"git://github.com/wenningerk/pacemaker.git","ssh_url":"git@github.com:wenningerk/pacemaker.git","clone_url":"https://github.com/wenningerk/pacemaker.git","svn_url":"https://github.com/wenningerk/pacemaker","homepage":"http://www.clusterlabs.org","size":40049,"stargazers_count":0,"watchers_count":0,"language":"C","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":"ClusterLabs:master","ref":"master","sha":"eb89393a82eb41ff50d041b91765ccac52e873e0","user":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?v=3","gravatar_id":"","url":"https://api.github.com/users/ClusterLabs","html_url":"https://github.com/ClusterLabs","followers_url":"https://api.github.com/users/ClusterLabs/followers","following_url":"https://api.github.com/users/ClusterLabs/following{/other_user}","gists_url":"https://api.github.com/users/ClusterLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/ClusterLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ClusterLabs/subscriptions","organizations_url":"https://api.github.com/users/ClusterLabs/orgs","repos_url":"https://api.github.com/users/ClusterLabs/repos","events_url":"https://api.github.com/users/ClusterLabs/events{/privacy}","received_events_url":"https://api.github.com/users/ClusterLabs/received_events","type":"Organization","site_admin":false},"repo":{"id":2304962,"name":"pacemaker","full_name":"ClusterLabs/pacemaker","owner":{"login":"ClusterLabs","id":574912,"avatar_url":"https://avatars.githubusercontent.com/u/574912?v=3","gravatar_id":"","url":"https://api.github.com/users/ClusterLabs","html_url":"https://github.com/ClusterLabs","followers_url":"https://api.github.com/users/ClusterLabs/followers","following_url":"https://api.github.com/users/ClusterLabs/following{/other_user}","gists_url":"https://api.github.com/users/ClusterLabs/gists{/gist_id}","starred_url":"https://api.github.com/users/ClusterLabs/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ClusterLabs/subscriptions","organizations_url":"https://api.github.com/users/ClusterLabs/orgs","repos_url":"https://api.github.com/users/ClusterLabs/repos","events_url":"https://api.github.com/users/ClusterLabs/events{/privacy}","received_events_url":"https://api.github.com/users/ClusterLabs/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/ClusterLabs/pacemaker","description":"Pacemaker is an advanced, scalable High-Availability cluster resource manager","fork":false,"url":"https://api.github.com/repos/ClusterLabs/pacemaker","forks_url":"https://api.github.com/repos/ClusterLabs/pacemaker/forks","keys_url":"https://api.github.com/repos/ClusterLabs/pacemaker/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ClusterLabs/pacemaker/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ClusterLabs/pacemaker/teams","hooks_url":"https://api.github.com/repos/ClusterLabs/pacemaker/hooks","issue_events_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/events{/number}","events_url":"https://api.github.com/repos/ClusterLabs/pacemaker/events","assignees_url":"https://api.github.com/repos/ClusterLabs/pacemaker/assignees{/user}","branches_url":"https://api.github.com/repos/ClusterLabs/pacemaker/branches{/branch}","tags_url":"https://api.github.com/repos/ClusterLabs/pacemaker/tags","blobs_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/refs{/sha}","trees_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/{sha}","languages_url":"https://api.github.com/repos/ClusterLabs/pacemaker/languages","stargazers_url":"https://api.github.com/repos/ClusterLabs/pacemaker/stargazers","contributors_url":"https://api.github.com/repos/ClusterLabs/pacemaker/contributors","subscribers_url":"https://api.github.com/repos/ClusterLabs/pacemaker/subscribers","subscription_url":"https://api.github.com/repos/ClusterLabs/pacemaker/subscription","commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/commits{/sha}","git_commits_url":"https://api.github.com/repos/ClusterLabs/pacemaker/git/commits{/sha}","comments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/comments{/number}","issue_comment_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/comments{/number}","contents_url":"https://api.github.com/repos/ClusterLabs/pacemaker/contents/{+path}","compare_url":"https://api.github.com/repos/ClusterLabs/pacemaker/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ClusterLabs/pacemaker/merges","archive_url":"https://api.github.com/repos/ClusterLabs/pacemaker/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ClusterLabs/pacemaker/downloads","issues_url":"https://api.github.com/repos/ClusterLabs/pacemaker/issues{/number}","pulls_url":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls{/number}","milestones_url":"https://api.github.com/repos/ClusterLabs/pacemaker/milestones{/number}","notifications_url":"https://api.github.com/repos/ClusterLabs/pacemaker/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ClusterLabs/pacemaker/labels{/name}","releases_url":"https://api.github.com/repos/ClusterLabs/pacemaker/releases{/id}","deployments_url":"https://api.github.com/repos/ClusterLabs/pacemaker/deployments","created_at":"2011-09-01T00:08:16Z","updated_at":"2016-03-01T10:03:23Z","pushed_at":"2016-03-07T14:37:31Z","git_url":"git://github.com/ClusterLabs/pacemaker.git","ssh_url":"git@github.com:ClusterLabs/pacemaker.git","clone_url":"https://github.com/ClusterLabs/pacemaker.git","svn_url":"https://github.com/ClusterLabs/pacemaker","homepage":"http://www.clusterlabs.org","size":61282,"stargazers_count":295,"watchers_count":295,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":146,"mirror_url":null,"open_issues_count":10,"forks":146,"open_issues":10,"watchers":295,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950"},"html":{"href":"https://github.com/ClusterLabs/pacemaker/pull/950"},"issue":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/950"},"comments":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/issues/950/comments"},"review_comments":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950/comments"},"review_comment":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/pulls/950/commits"},"statuses":{"href":"https://api.github.com/repos/ClusterLabs/pacemaker/statuses/54d6110ff695b5c030b2ac3c16b20dfbf5e80d7c"}}}}