{"action":"created","comment":{"url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/comments/238829400","pull_request_review_id":181468084,"id":238829400,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIzODgyOTQwMA==","diff_hunk":"@@ -1,3 +1,166 @@\n # Cluster Node Tuning Operator\n \n-The Cluster Node Tuning Operator manages cluster node-level tuning for [OpenShift](https://openshift.io/).\n+The Cluster Node Tuning Operator manages cluster node-level tuning for\n+[OpenShift](https://openshift.io/).\n+\n+The majority of high-performance applications require some\n+level of kernel tuning.  The operator provides a unified\n+management interface to users of node-level sysctls and more\n+flexibility to add [custom tuning](#custom-tuning-specification)\n+specified by user needs.  The operator manages containerized\n+[tuned](https://github.com/redhat-performance/tuned/)\n+daemon for [OpenShift](https://openshift.io/) as\n+a Kubernetes DaemonSet.  It ensures [custom tuning\n+specification](#custom-tuning-specification) is passed to all\n+[containerized tuned](https://github.com/openshift/openshift-tuned)\n+daemons running in the cluster in the format they understand.\n+The daemons run on all nodes in the cluster, one per node.\n+\n+\n+## Deploying the node tuning operator\n+\n+The operator is deployed by applying the manifests in the operator's\n+`/manifests` directory.  It tries to be useful out of the box by\n+creating a default deployment and configuration\n+([CR](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/))\n+for the tuned daemons.  The following shows the default CR created\n+by the operator on a cluster with the operator installed.\n+\n+```\n+$ oc get Tuned\n+NAME      AGE\n+default   1h\n+```\n+\n+## Custom tuning specification\n+\n+For an example of a tuning specification, please refer to\n+`/assets/tuned/07-cr-tuned.yaml` in the operator's directory or to\n+the resource created in a live cluster by:\n+\n+```\n+oc get Tuned/default -o yaml\n+```\n+\n+The custom resource for the operator has two major sections.  The first\n+section `profile:` is a list of tuned profiles and their names, the second\n+`recommend:` defines the profile selection logic.\n+\n+Multiple custom tuning specifications can co-exist as multiple CRs\n+in the operator's namespace.  The existence of new or deletion of\n+old CRs is detected by the operator and all existing custom tuning\n+specifications are merged and appropriate objects for the containerized\n+tuned daemons updated.\n+\n+### Profile data\n+\n+The `profile:` section lists tuned profiles and their names.\n+\n+```\n+  profile:\n+  - name: tuned_profile_1\n+    data: |\n+      # Tuned profile specification\n+      [main]\n+      summary=Description of tuned_profile_1 profile\n+\n+      [sysctl]\n+      net.ipv4.ip_forward=1\n+      # ... other sysctl's or other tuned daemon plugins supported by the containerized tuned\n+\n+  # ...\n+\n+  - name: tuned_profile_n\n+    data: |\n+      # Tuned profile specification\n+      [main]\n+      summary=Description of tuned_profile_n profile\n+\n+      # tuned_profile_n profile settings\n+```\n+\n+\n+### Recommended profiles\n+\n+The profile selection logic is defined by the `recommend:` section of the CR.\n+\n+```\n+  recommend:\n+  - match:                              # optional; if omitted, profile match is assumed unless a profile with a higher matches first\n+    <match>                             # an optional array\n+    priority: <priority>                # profile ordering priority, lower numbers mean higher priority (0 is the highest priority)\n+    profile: <tuned_profile_name>       # e.g. tuned_profile_1\n+\n+  # ...\n+\n+  - match:\n+    <match>\n+    priority: <priority>\n+    profile: <tuned_profile_name>       # e.g. tuned_profile_n\n+```\n+\n+If `<match>` is omitted, a profile match (i.e. _true_) is assumed.\n+\n+`<match>` is an optional array recursively defined as follows:\n+\n+```\n+    - label: <label_name>     # node or pod label name\n+      value: <label_value>    # optional node or pod label value; if omitted, the presence of <label_name> is enough to match\n+      type: <label_type>      # optional node or pod type (\"node\" or \"pod\"); if omitted, \"node\" is assumed\n+      <match>                 # an optional <match> array\n+```\n+\n+If `<match>` is not omitted all nested `<match>` sections must also\n+evaluate to _true_, otherwise _false_ is assumed and the profile with\n+the respective `<match>` section will not be applied/recommended.\n+Therefore the nesting (child `<match>` sections) works as logical\n+AND operator.  Conversely, if any item of the `<match>` array matches,\n+the entire `<match>` array evaluates to _true_, therefore the array\n+acts as logical OR operator.\n+\n+#### Example\n+\n+```\n+  - match:\n+    - label: tuned.openshift.io/elasticsearch\n+      match:\n+      - label: node-role.kubernetes.io/master\n+      - label: node-role.kubernetes.io/infra\n+      type: pod\n+    priority: 10\n+    profile: openshift-control-plane-es\n+  - match:\n+    - label: node-role.kubernetes.io/master\n+    - label: node-role.kubernetes.io/infra\n+    priority: 20\n+    profile: openshift-control-plane\n+  - priority: 30\n+    profile: openshift-node\n+```\n+\n+The CR above is translated for the containerized tuned daemon into\n+its recommend.conf file based on the profile priorities.  The profile\n+with the highest priority (10) is openshift-control-plane-es and\n+therefore it is considered first.  The containerized tuned daemon\n+running on a given node looks to see if there is a pod running on the\n+same node with tuned.openshift.io/elasticsearch label set.  If not,\n+the entire `<match>` section evaluates as _false_.  If there is such a\n+pod with the label, in order for the `<match>` section to evaluate to\n+_true_ the node label also needs to be node-role.kubernetes.io/master\n+OR node-role.kubernetes.io/infra.\n+\n+If the labels for the profile with priority 10 matched,\n+openshift-control-plane-es profile is applied and no other profile is \n+considered.  In case the node/pod label combination did not match, \n+the second highest priority profile (openshift-control-plane) is considered.\n+This profile is applied if the containerized tuned pod runs on a node with \n+labels node-role.kubernetes.io/master OR node-role.kubernetes.io/infra.\n+\n+Finally, the profile `openshift-node` has the lowest priority of 30.\n+It lacks the `<match>` section and therefore will always match and","path":"README.md","position":161,"original_position":161,"commit_id":"15ca8a4ac99c8bbe18b6ba5c1b041551c0499ab1","original_commit_id":"15ca8a4ac99c8bbe18b6ba5c1b041551c0499ab1","user":{"login":"ahardin-rh","id":16197393,"node_id":"MDQ6VXNlcjE2MTk3Mzkz","avatar_url":"https://avatars1.githubusercontent.com/u/16197393?v=4","gravatar_id":"","url":"https://api.github.com/users/ahardin-rh","html_url":"https://github.com/ahardin-rh","followers_url":"https://api.github.com/users/ahardin-rh/followers","following_url":"https://api.github.com/users/ahardin-rh/following{/other_user}","gists_url":"https://api.github.com/users/ahardin-rh/gists{/gist_id}","starred_url":"https://api.github.com/users/ahardin-rh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ahardin-rh/subscriptions","organizations_url":"https://api.github.com/users/ahardin-rh/orgs","repos_url":"https://api.github.com/users/ahardin-rh/repos","events_url":"https://api.github.com/users/ahardin-rh/events{/privacy}","received_events_url":"https://api.github.com/users/ahardin-rh/received_events","type":"User","site_admin":false},"body":"@jmencak Okay, that makes more sense. Thanks!","created_at":"2018-12-04T20:39:29Z","updated_at":"2018-12-04T20:39:29Z","html_url":"https://github.com/openshift/cluster-node-tuning-operator/pull/24#discussion_r238829400","pull_request_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/comments/238829400"},"html":{"href":"https://github.com/openshift/cluster-node-tuning-operator/pull/24#discussion_r238829400"},"pull_request":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24"}},"in_reply_to_id":238819646},"pull_request":{"url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24","id":235807586,"node_id":"MDExOlB1bGxSZXF1ZXN0MjM1ODA3NTg2","html_url":"https://github.com/openshift/cluster-node-tuning-operator/pull/24","diff_url":"https://github.com/openshift/cluster-node-tuning-operator/pull/24.diff","patch_url":"https://github.com/openshift/cluster-node-tuning-operator/pull/24.patch","issue_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/24","number":24,"state":"open","locked":false,"title":"Adding docs to README.md","user":{"login":"jmencak","id":19186575,"node_id":"MDQ6VXNlcjE5MTg2NTc1","avatar_url":"https://avatars0.githubusercontent.com/u/19186575?v=4","gravatar_id":"","url":"https://api.github.com/users/jmencak","html_url":"https://github.com/jmencak","followers_url":"https://api.github.com/users/jmencak/followers","following_url":"https://api.github.com/users/jmencak/following{/other_user}","gists_url":"https://api.github.com/users/jmencak/gists{/gist_id}","starred_url":"https://api.github.com/users/jmencak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmencak/subscriptions","organizations_url":"https://api.github.com/users/jmencak/orgs","repos_url":"https://api.github.com/users/jmencak/repos","events_url":"https://api.github.com/users/jmencak/events{/privacy}","received_events_url":"https://api.github.com/users/jmencak/received_events","type":"User","site_admin":false},"body":"","created_at":"2018-12-04T13:25:51Z","updated_at":"2018-12-04T20:39:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"31424922941fcb5e23c73e38a55a67cd94273209","assignee":null,"assignees":[],"requested_reviewers":[{"login":"sjug","id":7550641,"node_id":"MDQ6VXNlcjc1NTA2NDE=","avatar_url":"https://avatars3.githubusercontent.com/u/7550641?v=4","gravatar_id":"","url":"https://api.github.com/users/sjug","html_url":"https://github.com/sjug","followers_url":"https://api.github.com/users/sjug/followers","following_url":"https://api.github.com/users/sjug/following{/other_user}","gists_url":"https://api.github.com/users/sjug/gists{/gist_id}","starred_url":"https://api.github.com/users/sjug/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sjug/subscriptions","organizations_url":"https://api.github.com/users/sjug/orgs","repos_url":"https://api.github.com/users/sjug/repos","events_url":"https://api.github.com/users/sjug/events{/privacy}","received_events_url":"https://api.github.com/users/sjug/received_events","type":"User","site_admin":false}],"requested_teams":[],"labels":[{"id":1079786422,"node_id":"MDU6TGFiZWwxMDc5Nzg2NDIy","url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/labels/approved","name":"approved","color":"0ffa16","default":false},{"id":1079787775,"node_id":"MDU6TGFiZWwxMDc5Nzg3Nzc1","url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/labels/size/L","name":"size/L","color":"ee9900","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24/commits","review_comments_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24/comments","review_comment_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/comments{/number}","comments_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/24/comments","statuses_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/statuses/15ca8a4ac99c8bbe18b6ba5c1b041551c0499ab1","head":{"label":"jmencak:docs","ref":"docs","sha":"15ca8a4ac99c8bbe18b6ba5c1b041551c0499ab1","user":{"login":"jmencak","id":19186575,"node_id":"MDQ6VXNlcjE5MTg2NTc1","avatar_url":"https://avatars0.githubusercontent.com/u/19186575?v=4","gravatar_id":"","url":"https://api.github.com/users/jmencak","html_url":"https://github.com/jmencak","followers_url":"https://api.github.com/users/jmencak/followers","following_url":"https://api.github.com/users/jmencak/following{/other_user}","gists_url":"https://api.github.com/users/jmencak/gists{/gist_id}","starred_url":"https://api.github.com/users/jmencak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmencak/subscriptions","organizations_url":"https://api.github.com/users/jmencak/orgs","repos_url":"https://api.github.com/users/jmencak/repos","events_url":"https://api.github.com/users/jmencak/events{/privacy}","received_events_url":"https://api.github.com/users/jmencak/received_events","type":"User","site_admin":false},"repo":{"id":151124015,"node_id":"MDEwOlJlcG9zaXRvcnkxNTExMjQwMTU=","name":"cluster-node-tuning-operator","full_name":"jmencak/cluster-node-tuning-operator","private":false,"owner":{"login":"jmencak","id":19186575,"node_id":"MDQ6VXNlcjE5MTg2NTc1","avatar_url":"https://avatars0.githubusercontent.com/u/19186575?v=4","gravatar_id":"","url":"https://api.github.com/users/jmencak","html_url":"https://github.com/jmencak","followers_url":"https://api.github.com/users/jmencak/followers","following_url":"https://api.github.com/users/jmencak/following{/other_user}","gists_url":"https://api.github.com/users/jmencak/gists{/gist_id}","starred_url":"https://api.github.com/users/jmencak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jmencak/subscriptions","organizations_url":"https://api.github.com/users/jmencak/orgs","repos_url":"https://api.github.com/users/jmencak/repos","events_url":"https://api.github.com/users/jmencak/events{/privacy}","received_events_url":"https://api.github.com/users/jmencak/received_events","type":"User","site_admin":false},"html_url":"https://github.com/jmencak/cluster-node-tuning-operator","description":"Manage node-level tuning by orchestrating the tuned daemon.","fork":true,"url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator","forks_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/forks","keys_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/teams","hooks_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/hooks","issue_events_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/issues/events{/number}","events_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/events","assignees_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/assignees{/user}","branches_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/branches{/branch}","tags_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/tags","blobs_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/git/refs{/sha}","trees_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/statuses/{sha}","languages_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/languages","stargazers_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/stargazers","contributors_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/contributors","subscribers_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/subscribers","subscription_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/subscription","commits_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/commits{/sha}","git_commits_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/git/commits{/sha}","comments_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/comments{/number}","issue_comment_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/issues/comments{/number}","contents_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/contents/{+path}","compare_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/merges","archive_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/downloads","issues_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/issues{/number}","pulls_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/pulls{/number}","milestones_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/milestones{/number}","notifications_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/labels{/name}","releases_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/releases{/id}","deployments_url":"https://api.github.com/repos/jmencak/cluster-node-tuning-operator/deployments","created_at":"2018-10-01T16:55:08Z","updated_at":"2018-10-01T16:55:11Z","pushed_at":"2018-12-04T19:35:39Z","git_url":"git://github.com/jmencak/cluster-node-tuning-operator.git","ssh_url":"git@github.com:jmencak/cluster-node-tuning-operator.git","clone_url":"https://github.com/jmencak/cluster-node-tuning-operator.git","svn_url":"https://github.com/jmencak/cluster-node-tuning-operator","homepage":null,"size":14821,"stargazers_count":0,"watchers_count":0,"language":null,"has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"openshift:master","ref":"master","sha":"cd26ebdb4a90790aafa44c2afb2679b2b4f9a589","user":{"login":"openshift","id":792337,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc5MjMzNw==","avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"repo":{"id":150154353,"node_id":"MDEwOlJlcG9zaXRvcnkxNTAxNTQzNTM=","name":"cluster-node-tuning-operator","full_name":"openshift/cluster-node-tuning-operator","private":false,"owner":{"login":"openshift","id":792337,"node_id":"MDEyOk9yZ2FuaXphdGlvbjc5MjMzNw==","avatar_url":"https://avatars3.githubusercontent.com/u/792337?v=4","gravatar_id":"","url":"https://api.github.com/users/openshift","html_url":"https://github.com/openshift","followers_url":"https://api.github.com/users/openshift/followers","following_url":"https://api.github.com/users/openshift/following{/other_user}","gists_url":"https://api.github.com/users/openshift/gists{/gist_id}","starred_url":"https://api.github.com/users/openshift/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/openshift/subscriptions","organizations_url":"https://api.github.com/users/openshift/orgs","repos_url":"https://api.github.com/users/openshift/repos","events_url":"https://api.github.com/users/openshift/events{/privacy}","received_events_url":"https://api.github.com/users/openshift/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/openshift/cluster-node-tuning-operator","description":"Manage node-level tuning by orchestrating the tuned daemon.","fork":false,"url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator","forks_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/forks","keys_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/keys{/key_id}","collaborators_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/teams","hooks_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/hooks","issue_events_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/events{/number}","events_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/events","assignees_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/assignees{/user}","branches_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/branches{/branch}","tags_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/tags","blobs_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/git/refs{/sha}","trees_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/git/trees{/sha}","statuses_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/statuses/{sha}","languages_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/languages","stargazers_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/stargazers","contributors_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/contributors","subscribers_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/subscribers","subscription_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/subscription","commits_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/commits{/sha}","git_commits_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/git/commits{/sha}","comments_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/comments{/number}","issue_comment_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/comments{/number}","contents_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/contents/{+path}","compare_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/compare/{base}...{head}","merges_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/merges","archive_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/downloads","issues_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues{/number}","pulls_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls{/number}","milestones_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/milestones{/number}","notifications_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/labels{/name}","releases_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/releases{/id}","deployments_url":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/deployments","created_at":"2018-09-24T19:05:32Z","updated_at":"2018-12-04T00:36:17Z","pushed_at":"2018-12-04T19:35:41Z","git_url":"git://github.com/openshift/cluster-node-tuning-operator.git","ssh_url":"git@github.com:openshift/cluster-node-tuning-operator.git","clone_url":"https://github.com/openshift/cluster-node-tuning-operator.git","svn_url":"https://github.com/openshift/cluster-node-tuning-operator","homepage":null,"size":14816,"stargazers_count":1,"watchers_count":1,"language":"Go","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":5,"mirror_url":null,"archived":false,"open_issues_count":3,"license":{"key":"apache-2.0","name":"Apache License 2.0","spdx_id":"Apache-2.0","url":"https://api.github.com/licenses/apache-2.0","node_id":"MDc6TGljZW5zZTI="},"forks":5,"open_issues":3,"watchers":1,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24"},"html":{"href":"https://github.com/openshift/cluster-node-tuning-operator/pull/24"},"issue":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/24"},"comments":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/issues/24/comments"},"review_comments":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24/comments"},"review_comment":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/pulls/24/commits"},"statuses":{"href":"https://api.github.com/repos/openshift/cluster-node-tuning-operator/statuses/15ca8a4ac99c8bbe18b6ba5c1b041551c0499ab1"}},"author_association":"COLLABORATOR"}}
{"actor":{"display_login":"ahardin-rh"}}