{"action":"created","comment":{"url":"https://api.github.com/repos/intelsdi-x/snap/pulls/comments/79826724","id":79826724,"diff_hunk":"@@ -706,3 +546,126 @@ func addStandardAndWorkflowTags(m core.Metric, allTags map[string]map[string]str\n \t}\n \treturn metric\n }\n+\n+// isTuple returns true when incoming namespace's element has been recognized as a tuple, otherwise returns false\n+// notice, that the tuple is a string which starts with `core.TuplePrefix`, ends with `core.TupleSuffix` and contains at least one `core.TupleSeparator`\n+// e.g. (host0;host1)\n+func isTuple(element string) bool {\n+\tif strings.HasPrefix(element, core.TuplePrefix) && strings.HasSuffix(element, core.TupleSuffix) && strings.Contains(element, core.TupleSeparator) {\n+\t\treturn true\n+\t}\n+\treturn false\n+}\n+\n+// containsTuple checks if a given element of namespace has a tuple; if yes, returns true and recognized tuple's items\n+func containsTuple(nsElement string) (bool, []string) {\n+\ttupleItems := []string{}\n+\tif isTuple(nsElement) {\n+\t\tif strings.ContainsAny(nsElement, \"*\") {\n+\t\t\t// an asterisk covers all tuples cases (eg. /intel/mock/(host0;host1;*)/baz)\n+\t\t\t// so to avoid retrieving the same metric more than once, return only '*' as a tuple's items\n+\t\t\ttupleItems = []string{\"*\"}\n+\t\t} else {\n+\t\t\ttuple := strings.TrimSuffix(strings.TrimPrefix(nsElement, core.TuplePrefix), core.TupleSuffix)\n+\t\t\titems := strings.Split(tuple, core.TupleSeparator)\n+\t\t\t// removing all leading and trailing white space\n+\t\t\tfor _, item := range items {\n+\t\t\t\ttupleItems = append(tupleItems, strings.TrimSpace(item))\n+\t\t\t}\n+\t\t}\n+\t\treturn true, tupleItems\n+\t}\n+\treturn false, nil\n+}\n+\n+// findTuplesMatches returns all matched combination of queried tuples in incoming namespace, where a tuple is in the form of `(host0;host1;host3)`\n+// if the incoming namespace does not contain any tuple, return the incoming namespace as the only item in output slice\n+// if the incoming namespace contains a tuple, return the copies of incoming namespace with appropriate values set to namespaces' elements","path":"control/metrics.go","position":591,"original_position":591,"commit_id":"5a3d0be30fddb5bbd11f7a31a734790a3ff5e3d5","original_commit_id":"5a3d0be30fddb5bbd11f7a31a734790a3ff5e3d5","user":{"login":"IzabellaRaulin","id":11335874,"avatar_url":"https://avatars.githubusercontent.com/u/11335874?v=3","gravatar_id":"","url":"https://api.github.com/users/IzabellaRaulin","html_url":"https://github.com/IzabellaRaulin","followers_url":"https://api.github.com/users/IzabellaRaulin/followers","following_url":"https://api.github.com/users/IzabellaRaulin/following{/other_user}","gists_url":"https://api.github.com/users/IzabellaRaulin/gists{/gist_id}","starred_url":"https://api.github.com/users/IzabellaRaulin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IzabellaRaulin/subscriptions","organizations_url":"https://api.github.com/users/IzabellaRaulin/orgs","repos_url":"https://api.github.com/users/IzabellaRaulin/repos","events_url":"https://api.github.com/users/IzabellaRaulin/events{/privacy}","received_events_url":"https://api.github.com/users/IzabellaRaulin/received_events","type":"User","site_admin":false},"body":"ok, done","created_at":"2016-09-21T12:59:53Z","updated_at":"2016-09-21T12:59:53Z","html_url":"https://github.com/intelsdi-x/snap/pull/1220#discussion_r79826724","pull_request_url":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220","_links":{"self":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/comments/79826724"},"html":{"href":"https://github.com/intelsdi-x/snap/pull/1220#discussion_r79826724"},"pull_request":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220"}}},"pull_request":{"url":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220","id":85858619,"html_url":"https://github.com/intelsdi-x/snap/pull/1220","diff_url":"https://github.com/intelsdi-x/snap/pull/1220.diff","patch_url":"https://github.com/intelsdi-x/snap/pull/1220.patch","issue_url":"https://api.github.com/repos/intelsdi-x/snap/issues/1220","number":1220,"state":"open","locked":false,"title":"Support specifying an instance of dynamic metric","user":{"login":"IzabellaRaulin","id":11335874,"avatar_url":"https://avatars.githubusercontent.com/u/11335874?v=3","gravatar_id":"","url":"https://api.github.com/users/IzabellaRaulin","html_url":"https://github.com/IzabellaRaulin","followers_url":"https://api.github.com/users/IzabellaRaulin/followers","following_url":"https://api.github.com/users/IzabellaRaulin/following{/other_user}","gists_url":"https://api.github.com/users/IzabellaRaulin/gists{/gist_id}","starred_url":"https://api.github.com/users/IzabellaRaulin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IzabellaRaulin/subscriptions","organizations_url":"https://api.github.com/users/IzabellaRaulin/orgs","repos_url":"https://api.github.com/users/IzabellaRaulin/repos","events_url":"https://api.github.com/users/IzabellaRaulin/events{/privacy}","received_events_url":"https://api.github.com/users/IzabellaRaulin/received_events","type":"User","site_admin":false},"body":"Fixes #654\r\n\r\n### Specifying an instance of dynamic metric\r\n\r\n_snap-plugin-collector-mock is used as example_\r\n\r\n#### Before:\r\n - user cannot define which of dynamic metric is interesting to be collected, so there was only the possibility of collecting metrics for all instance:\r\n```\r\n \"collect\": {\r\n            \"metrics\": {\r\n                \"/intel/mock/*/baz\": {}\r\n            },\r\n```\r\n\r\n#### After:\r\n- user can define which specified instance of dynamic metric should be collected (what helps to avoid collecting all of them even user does not need them)\r\n\r\n```\r\n \"collect\": {\r\n            \"metrics\": {\r\n                \"/intel/mock/host0/baz\": {}\r\n            },\r\n```\r\nThat is very useful for fully aware users who know which available instances - however that information can be also gained by running task with `\"/intel/*` at first and check available metrics.\r\n\r\n- tuple can be used to declared more than one specified instances to collect\r\n```\r\n \"collect\": {\r\n            \"metrics\": {\r\n                \"/intel/mock/(host0;host1)/baz\": {}\r\n            },\r\n```\r\n\r\nNotice, that tuple items are between brackets and they are separated by semicolon\r\n\r\n### How to prepare collector plugin to use that\r\nNotice, that most of our collector plugins are ready to use that feature. In plugin.CollectMetrics plugin should be prepared for incoming metric with \"*\", but also should has `else` which allows to collect specified dynamic metrics. See example:\r\n- snap-plugin-collector-cpu ([L199](https://github.com/intelsdi-x/snap-plugin-collector-cpu/blob/master/cpu/cpu.go#L199) - [L216](https://github.com/intelsdi-x/snap-plugin-collector-cpu/blob/master/cpu/cpu.go#L216))\r\n- snap-plugin-collector-interface([L158](https://github.com/intelsdi-x/snap-plugin-collector-interface/blob/master/iface/interface.go#L158) - [L172](https://github.com/intelsdi-x/snap-plugin-collector-interface/blob/master/iface/interface.go#L172))\r\n- snap-plugin-collector-disk ([L196](https://github.com/intelsdi-x/snap-plugin-collector-disk/blob/master/disk/disk.go#L196) - [L229](https://github.com/intelsdi-x/snap-plugin-collector-disk/blob/master/disk/disk.go#L229))\r\n- snap-plugin-collector-docker ([L206](https://github.com/intelsdi-x/snap-plugin-collector-docker/blob/master/docker/docker.go#L206) - [L211](https://github.com/intelsdi-x/snap-plugin-collector-docker/blob/master/docker/docker.go#L211))  \r\n_(good example how to handle dynamic elements in dynamic metric)_\r\n\r\n### Summary of changes:\r\n**a) support defining specific instance of dynamic metric in task manifest**\r\nUser might define in task manifest: \r\n- `/intel/mock/*/bar` to collect metric for all available instance\r\n- or specific dynamic metric:\r\n - `/intel/mock/host0/bar` (in that case only one metric will be collected)\r\n - `/intel/mock/(host0;host1)/bar` (that returns two metrics, works like logic AND)\r\n - `/intel/mock/host0/*` (that returns all available metrics for instance \"host0\" from mock collector)\r\n\r\nIn situation when there is no such instance of dynamic metric (e.g. for snap-plugin-collector-mock `host10` is not available), an appropriate error should be returned (the collector is responsible for that, see [snap-plugin-collector-mock1/mock/mock.go#L73](https://github.com/intelsdi-x/snap/blob/master/plugin/collector/snap-plugin-collector-mock1/mock/mock.go#L73))\r\n\r\n **b) changing the way of matching dynamic query due to allowing the specifying of dynamic metrics, but there is no change from user perspective**\r\n   - removing regexp!!!\r\n   - removing restriction of not allowed chars in metric's namespace\r\n   - now metric namespace cannot only contain wildcard at the end and tuple (low probability) \r\n\r\n**c) adding error message to trying Fetch() on empty metric catalog**\r\n   _Example:_\r\n   running `snapctl metric list` when NO PLUGIN has been already loaded \r\n  ![image](https://cloud.githubusercontent.com/assets/11335874/15146876/e286218c-16bd-11e6-880f-09854a7bf123.png)\r\n\r\n### Testing done:\r\n- small, medium, legacy tests\r\n- running [examples/tasks/mock-file_specific_instance.json](https://github.com/IzabellaRaulin/snap/blob/fixed_654/examples/tasks/mock-file_specific_instance.json) \r\n- running [examples/tasks/mock-file_tuple.json](https://github.com/IzabellaRaulin/snap/blob/fixed_654/examples/tasks/mock-file_tuple.json) \r\n- checking plugin swapping (ver1, ver2) for both of above tasks\r\n\r\n\r\n### Additional tests:\r\n**a) specified disk instance for snap-plugin-collector-disk**\r\n\r\n    Before                                             | Now\r\n    --------------                                   | ----------------\r\n    \"/intel/procfs/disk/*/ops_read\": {}, | \"/intel/procfs/disk/sda/ops_read\": {},\r\n\r\nSee [task manifest](https://github.com/IzabellaRaulin/snap-plugin-collector-disk/blob/specified_instance/examples/tasks/disk_sda-file.json)\r\n![image](https://cloud.githubusercontent.com/assets/11335874/18648938/2c8936e0-7ebd-11e6-87d8-6260c708018a.png)\r\nRelated with https://github.com/intelsdi-x/snap-plugin-collector-disk/issues/12\r\n\r\n**b) specified interface for snap-plugin-collector-interface**\r\n\r\n    Before                                                 | Now\r\n    --------------                                       | ----------------\r\n    \"/intel/procfs/iface/*/bytes_recv\": {},  | \"/intel/procfs/iface/eno1/bytes_recv\": {}, \r\n\r\nSee [task manifest for iface eno1](https://github.com/IzabellaRaulin/snap-plugin-collector-interface/blob/specific_interface/examples/task/iface_eno1-file.json)\r\n![image](https://cloud.githubusercontent.com/assets/11335874/18649246/cce31092-7ebe-11e6-9b57-1fd5f886b42d.png)\r\nRelated with https://github.com/intelsdi-x/snap-plugin-collector-interface/issues/13\r\n\r\nSee [task manifest for iface enp2s0](https://github.com/IzabellaRaulin/snap-plugin-collector-interface/blob/specific_interface/examples/task/iface_enp2s0-file.json)\r\n![image](https://cloud.githubusercontent.com/assets/11335874/18649273/e8d2ebe2-7ebe-11e6-98cd-586a1348adfd.png)\r\n\r\n**c) specified docker container ID for snap-plugin-collector-docker**\r\n\r\nBefore                                                                 | Now\r\n --------------                                                       | ----------------\r\n \"/intel/docker/\\*/stats/network/\\*/rx_bytes\": {}  | \"/intel/docker/5e06711bddc3/stats/network/eth0/rx_bytes\": {} \r\n\r\nSee [task manifest for container 5e06711bddc3](https://github.com/IzabellaRaulin/snap-plugin-collector-docker/blob/specified_instance/examples/tasks/docker_5e06711bddc3-file.json)\r\n![image](https://cloud.githubusercontent.com/assets/11335874/18649532/44bb3c60-7ec0-11e6-8344-4061bdfae209.png)\r\n\r\n","created_at":"2016-09-19T19:58:11Z","updated_at":"2016-09-21T12:59:53Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3484f2c197e4aac76123fc87150d47819cefa2d9","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220/commits","review_comments_url":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220/comments","review_comment_url":"https://api.github.com/repos/intelsdi-x/snap/pulls/comments{/number}","comments_url":"https://api.github.com/repos/intelsdi-x/snap/issues/1220/comments","statuses_url":"https://api.github.com/repos/intelsdi-x/snap/statuses/5a3d0be30fddb5bbd11f7a31a734790a3ff5e3d5","head":{"label":"IzabellaRaulin:fixed_654","ref":"fixed_654","sha":"5a3d0be30fddb5bbd11f7a31a734790a3ff5e3d5","user":{"login":"IzabellaRaulin","id":11335874,"avatar_url":"https://avatars.githubusercontent.com/u/11335874?v=3","gravatar_id":"","url":"https://api.github.com/users/IzabellaRaulin","html_url":"https://github.com/IzabellaRaulin","followers_url":"https://api.github.com/users/IzabellaRaulin/followers","following_url":"https://api.github.com/users/IzabellaRaulin/following{/other_user}","gists_url":"https://api.github.com/users/IzabellaRaulin/gists{/gist_id}","starred_url":"https://api.github.com/users/IzabellaRaulin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IzabellaRaulin/subscriptions","organizations_url":"https://api.github.com/users/IzabellaRaulin/orgs","repos_url":"https://api.github.com/users/IzabellaRaulin/repos","events_url":"https://api.github.com/users/IzabellaRaulin/events{/privacy}","received_events_url":"https://api.github.com/users/IzabellaRaulin/received_events","type":"User","site_admin":false},"repo":{"id":47624119,"name":"snap","full_name":"IzabellaRaulin/snap","owner":{"login":"IzabellaRaulin","id":11335874,"avatar_url":"https://avatars.githubusercontent.com/u/11335874?v=3","gravatar_id":"","url":"https://api.github.com/users/IzabellaRaulin","html_url":"https://github.com/IzabellaRaulin","followers_url":"https://api.github.com/users/IzabellaRaulin/followers","following_url":"https://api.github.com/users/IzabellaRaulin/following{/other_user}","gists_url":"https://api.github.com/users/IzabellaRaulin/gists{/gist_id}","starred_url":"https://api.github.com/users/IzabellaRaulin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/IzabellaRaulin/subscriptions","organizations_url":"https://api.github.com/users/IzabellaRaulin/orgs","repos_url":"https://api.github.com/users/IzabellaRaulin/repos","events_url":"https://api.github.com/users/IzabellaRaulin/events{/privacy}","received_events_url":"https://api.github.com/users/IzabellaRaulin/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/IzabellaRaulin/snap","description":"A powerful telemetry framework","fork":true,"url":"https://api.github.com/repos/IzabellaRaulin/snap","forks_url":"https://api.github.com/repos/IzabellaRaulin/snap/forks","keys_url":"https://api.github.com/repos/IzabellaRaulin/snap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/IzabellaRaulin/snap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/IzabellaRaulin/snap/teams","hooks_url":"https://api.github.com/repos/IzabellaRaulin/snap/hooks","issue_events_url":"https://api.github.com/repos/IzabellaRaulin/snap/issues/events{/number}","events_url":"https://api.github.com/repos/IzabellaRaulin/snap/events","assignees_url":"https://api.github.com/repos/IzabellaRaulin/snap/assignees{/user}","branches_url":"https://api.github.com/repos/IzabellaRaulin/snap/branches{/branch}","tags_url":"https://api.github.com/repos/IzabellaRaulin/snap/tags","blobs_url":"https://api.github.com/repos/IzabellaRaulin/snap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/IzabellaRaulin/snap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/IzabellaRaulin/snap/git/refs{/sha}","trees_url":"https://api.github.com/repos/IzabellaRaulin/snap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/IzabellaRaulin/snap/statuses/{sha}","languages_url":"https://api.github.com/repos/IzabellaRaulin/snap/languages","stargazers_url":"https://api.github.com/repos/IzabellaRaulin/snap/stargazers","contributors_url":"https://api.github.com/repos/IzabellaRaulin/snap/contributors","subscribers_url":"https://api.github.com/repos/IzabellaRaulin/snap/subscribers","subscription_url":"https://api.github.com/repos/IzabellaRaulin/snap/subscription","commits_url":"https://api.github.com/repos/IzabellaRaulin/snap/commits{/sha}","git_commits_url":"https://api.github.com/repos/IzabellaRaulin/snap/git/commits{/sha}","comments_url":"https://api.github.com/repos/IzabellaRaulin/snap/comments{/number}","issue_comment_url":"https://api.github.com/repos/IzabellaRaulin/snap/issues/comments{/number}","contents_url":"https://api.github.com/repos/IzabellaRaulin/snap/contents/{+path}","compare_url":"https://api.github.com/repos/IzabellaRaulin/snap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/IzabellaRaulin/snap/merges","archive_url":"https://api.github.com/repos/IzabellaRaulin/snap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/IzabellaRaulin/snap/downloads","issues_url":"https://api.github.com/repos/IzabellaRaulin/snap/issues{/number}","pulls_url":"https://api.github.com/repos/IzabellaRaulin/snap/pulls{/number}","milestones_url":"https://api.github.com/repos/IzabellaRaulin/snap/milestones{/number}","notifications_url":"https://api.github.com/repos/IzabellaRaulin/snap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/IzabellaRaulin/snap/labels{/name}","releases_url":"https://api.github.com/repos/IzabellaRaulin/snap/releases{/id}","deployments_url":"https://api.github.com/repos/IzabellaRaulin/snap/deployments","created_at":"2015-12-08T13:34:02Z","updated_at":"2016-01-12T12:31:42Z","pushed_at":"2016-09-20T22:23:33Z","git_url":"git://github.com/IzabellaRaulin/snap.git","ssh_url":"git@github.com:IzabellaRaulin/snap.git","clone_url":"https://github.com/IzabellaRaulin/snap.git","svn_url":"https://github.com/IzabellaRaulin/snap","homepage":"http://github.com/intelsdi-x/snap","size":10973,"stargazers_count":0,"watchers_count":0,"language":"Go","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":2,"forks":0,"open_issues":2,"watchers":0,"default_branch":"master"}},"base":{"label":"intelsdi-x:master","ref":"master","sha":"6dee889423794fe080aaf49da0d2b280a812a06a","user":{"login":"intelsdi-x","id":8398747,"avatar_url":"https://avatars.githubusercontent.com/u/8398747?v=3","gravatar_id":"","url":"https://api.github.com/users/intelsdi-x","html_url":"https://github.com/intelsdi-x","followers_url":"https://api.github.com/users/intelsdi-x/followers","following_url":"https://api.github.com/users/intelsdi-x/following{/other_user}","gists_url":"https://api.github.com/users/intelsdi-x/gists{/gist_id}","starred_url":"https://api.github.com/users/intelsdi-x/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/intelsdi-x/subscriptions","organizations_url":"https://api.github.com/users/intelsdi-x/orgs","repos_url":"https://api.github.com/users/intelsdi-x/repos","events_url":"https://api.github.com/users/intelsdi-x/events{/privacy}","received_events_url":"https://api.github.com/users/intelsdi-x/received_events","type":"Organization","site_admin":false},"repo":{"id":22931257,"name":"snap","full_name":"intelsdi-x/snap","owner":{"login":"intelsdi-x","id":8398747,"avatar_url":"https://avatars.githubusercontent.com/u/8398747?v=3","gravatar_id":"","url":"https://api.github.com/users/intelsdi-x","html_url":"https://github.com/intelsdi-x","followers_url":"https://api.github.com/users/intelsdi-x/followers","following_url":"https://api.github.com/users/intelsdi-x/following{/other_user}","gists_url":"https://api.github.com/users/intelsdi-x/gists{/gist_id}","starred_url":"https://api.github.com/users/intelsdi-x/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/intelsdi-x/subscriptions","organizations_url":"https://api.github.com/users/intelsdi-x/orgs","repos_url":"https://api.github.com/users/intelsdi-x/repos","events_url":"https://api.github.com/users/intelsdi-x/events{/privacy}","received_events_url":"https://api.github.com/users/intelsdi-x/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/intelsdi-x/snap","description":"The open telemetry framework","fork":false,"url":"https://api.github.com/repos/intelsdi-x/snap","forks_url":"https://api.github.com/repos/intelsdi-x/snap/forks","keys_url":"https://api.github.com/repos/intelsdi-x/snap/keys{/key_id}","collaborators_url":"https://api.github.com/repos/intelsdi-x/snap/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/intelsdi-x/snap/teams","hooks_url":"https://api.github.com/repos/intelsdi-x/snap/hooks","issue_events_url":"https://api.github.com/repos/intelsdi-x/snap/issues/events{/number}","events_url":"https://api.github.com/repos/intelsdi-x/snap/events","assignees_url":"https://api.github.com/repos/intelsdi-x/snap/assignees{/user}","branches_url":"https://api.github.com/repos/intelsdi-x/snap/branches{/branch}","tags_url":"https://api.github.com/repos/intelsdi-x/snap/tags","blobs_url":"https://api.github.com/repos/intelsdi-x/snap/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/intelsdi-x/snap/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/intelsdi-x/snap/git/refs{/sha}","trees_url":"https://api.github.com/repos/intelsdi-x/snap/git/trees{/sha}","statuses_url":"https://api.github.com/repos/intelsdi-x/snap/statuses/{sha}","languages_url":"https://api.github.com/repos/intelsdi-x/snap/languages","stargazers_url":"https://api.github.com/repos/intelsdi-x/snap/stargazers","contributors_url":"https://api.github.com/repos/intelsdi-x/snap/contributors","subscribers_url":"https://api.github.com/repos/intelsdi-x/snap/subscribers","subscription_url":"https://api.github.com/repos/intelsdi-x/snap/subscription","commits_url":"https://api.github.com/repos/intelsdi-x/snap/commits{/sha}","git_commits_url":"https://api.github.com/repos/intelsdi-x/snap/git/commits{/sha}","comments_url":"https://api.github.com/repos/intelsdi-x/snap/comments{/number}","issue_comment_url":"https://api.github.com/repos/intelsdi-x/snap/issues/comments{/number}","contents_url":"https://api.github.com/repos/intelsdi-x/snap/contents/{+path}","compare_url":"https://api.github.com/repos/intelsdi-x/snap/compare/{base}...{head}","merges_url":"https://api.github.com/repos/intelsdi-x/snap/merges","archive_url":"https://api.github.com/repos/intelsdi-x/snap/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/intelsdi-x/snap/downloads","issues_url":"https://api.github.com/repos/intelsdi-x/snap/issues{/number}","pulls_url":"https://api.github.com/repos/intelsdi-x/snap/pulls{/number}","milestones_url":"https://api.github.com/repos/intelsdi-x/snap/milestones{/number}","notifications_url":"https://api.github.com/repos/intelsdi-x/snap/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/intelsdi-x/snap/labels{/name}","releases_url":"https://api.github.com/repos/intelsdi-x/snap/releases{/id}","deployments_url":"https://api.github.com/repos/intelsdi-x/snap/deployments","created_at":"2014-08-13T21:04:51Z","updated_at":"2016-09-20T19:36:14Z","pushed_at":"2016-09-21T02:49:33Z","git_url":"git://github.com/intelsdi-x/snap.git","ssh_url":"git@github.com:intelsdi-x/snap.git","clone_url":"https://github.com/intelsdi-x/snap.git","svn_url":"https://github.com/intelsdi-x/snap","homepage":"http://snap-telemetry.io","size":98228,"stargazers_count":955,"watchers_count":955,"language":"Go","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":true,"forks_count":143,"mirror_url":null,"open_issues_count":120,"forks":143,"open_issues":120,"watchers":955,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220"},"html":{"href":"https://github.com/intelsdi-x/snap/pull/1220"},"issue":{"href":"https://api.github.com/repos/intelsdi-x/snap/issues/1220"},"comments":{"href":"https://api.github.com/repos/intelsdi-x/snap/issues/1220/comments"},"review_comments":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220/comments"},"review_comment":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/intelsdi-x/snap/pulls/1220/commits"},"statuses":{"href":"https://api.github.com/repos/intelsdi-x/snap/statuses/5a3d0be30fddb5bbd11f7a31a734790a3ff5e3d5"}}}}
{"actor":{"display_login":"IzabellaRaulin"}}