{"action":"created","comment":{"url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/comments/125402533","pull_request_review_id":47785191,"id":125402533,"diff_hunk":"@@ -0,0 +1,462 @@\n+---\n+title: Link Layer Discovery Protocol (LLDP) Support\n+category: feature\n+authors: Dominik Holler\n+wiki_category: Feature\n+wiki_title: Link Layer Discovery Protocol (LLDP) Support\n+wiki_revision_count: 1\n+wiki_last_updated: 2016-06-27\n+feature_name: Link Layer Discovery Protocol (LLDP) Support\n+feature_modules: engine,network,vdsm,rest-api\n+feature_status: In Development\n+---\n+\n+# Link Layer Discovery Protocol (LLDP) Support\n+\n+## Summary\n+\n+The [Link Layer Discovery Protocol (LLDP)][1] is a vendor-neutral networking\n+protocol, used by network devices, especially switches, for advertising their\n+identity, capabilities and management addresses on an IEEE 802 local area\n+network (LAN).\n+\n+The feature will enable oVirt hosts to gather information from their networking\n+interfaces and let oVirt Engine use this information in a beneficial way.\n+\n+## Owner\n+\n+*   Name: [Dominik Holler](https://github.com/dominikholler)\n+\n+*   Email: <dholler@redhat.com>\n+\n+## Detailed Description\n+\n+To support the integration of oVirt with other software, the information gathered\n+by LLDP on each host will be provided by oVirt Engine's REST-API.\n+\n+Some of the information, like the number of the switch port a network interface\n+of the host is connected to, might be helpful for the user and will be shown in\n+the graphical user interface.\n+\n+At this point in time we do not intend to expose information by LLDP to the\n+switch.\n+\n+## Prerequisites\n+\n+LLDP has to be enabled on the switch connected to the relevant oVirt hosts.\n+\n+## Limitations\n+\n+* There is a delay from receiving the LLDP data on the oVirt host, propagating\n+  the data to the oVirt Engine and presenting the data to the user.\n+  Whatever value we present over REST may be out of date.\n+\n+## Benefit to oVirt\n+\n+Information from LLDP provided by oVirt engine's REST-API will support the\n+integration of oVirt in other software.\n+\n+Information from LLDP provided by the UI might help the user to avoid and\n+locate manual host network configuration errors caused by a mismatch of switch\n+port configuration.\n+\n+## Requirements\n+\n+* The following TLVs have to be available in oVirt Engine's REST API:\n+  * Chassis ID TLV (Type = 1)\n+  * Port ID TLV (Type = 2)\n+  * Port Description TLV (Type = 4), with a value of up to 2000 chars\n+  * System Name TLV (Type = 5)\n+  * System Description TLV (Type = 6)\n+  * Management Address TLV (Type = 8)\n+  * Port VLAN Id ( Type = 127, Oui = 0x0080c2 (802.1), Subtype = 1)\n+  * VLAN name (Type = 127, Oui = 0x0080c2 (802.1), Subtype = 3)\n+\n+## Open Questions\n+\n+* How is a Port Description with a length than more than 512 chars represented\n+  in LLDP?\n+* Should oVirt Engine provide the age of the data?\n+* Should oVirt Engine hide expired data?\n+* Is there an upper limit of the acceptable age of the data?\n+\n+## Approach\n+\n+Steps to present the LLDP information:\n+\n+1. [Receive LLDP information on the Ethernet cable on the host](#vdsm-implementation-options)\n+2. [Cache the LLDP information on the host](#vdsm-implementation-options)\n+3. [Transport the LLDP information to oVirt Engine](#communication-of-vdsm-and-ovirt-engine)\n+4. Present LLDP information:\n+  * [On REST-API](#rest-api)\n+  * [On Web-UI](#follow-up-features)\n+  * [For oVirt Engine internal use](#follow-up-features)\n+\n+If the LLDP information is used internally in oVirt Engine or in Web-UI, it\n+would be useful to cache the information in the data base.\n+\n+To meet the requirements of this feature, there is no need to store the\n+information in the data base, because the information could be queried when a\n+REST request is processed processed. This way the age of the information is\n+kept as minimal as possible.\n+\n+Thus we opt to avoid the DB completely. When Engine is asked about LLDP data of\n+a host, it would contact the specific host synchronously in order to provide an\n+answer.\n+\n+## Gathering the LLDP data from the hosts\n+\n+There are multiple alternatives for oVirt Engine to gather the LLDP data from\n+the hosts:\n+\n+* Extend VDSM to provide the LLDP data\n+\n+* Use [Ansible's lldp module][3]\n+\n+Because the Ansible module is flagged as preview and requires lldpd, which is\n+in only in EPEL repository for RHEL, VDSM has to be extended.\n+\n+## VDSM implementation options\n+\n+to be imported from [EdDev/ovirt-devwiki](https://github.com/EdDev/ovirt-devwiki/blob/master/design/network/lldp/lldp.md)\n+\n+## Communication of VDSM and oVirt Engine\n+If the LLDP information is cached in the data base, it would be useful\n+to update the LLDP information together with the other information about the\n+network cards on the host by `Host.getCapabilities`.\n+\n+However, at the moment, LLDP information is only required, if requested via the\n+REST-API. To avoid triggering the extensive `Host.getCapabilities`, if only the\n+LLDP information are needed, the new verb `Host.getLldp` is introduced.\n+\n+```yaml\n+types:\n+  Lldp: &Lldp\n+    added: '4.2'\n+    description: LLDP Information\n+    name: Lldp\n+    properties:\n+    - description: Gathering LLDP information is enabled on the NIC\n+      name: enabled\n+      type: string\n+      datatype: boolean\n+\n+    - description: Structured information of the TLV\n+      name: properties\n+      type: \n+      - *Tlv\n+\n+  Tlv: &Tlv\n+    added: '4.2'\n+    description: LLDP Information \n+    name: Tlv\n+    properties:\n+    - description: Human readable string to describe what the value is about.\n+      name: name\n+      type: string\n+\n+    - description: Structured information of the TLV\n+      name: properties\n+      type: *StringMap\n+\n+    - description: TLV type of IEEE 802.1AB.\n+      name: type\n+      type: string\n+      datatype: uint\n+\n+    - description: organizationally unique identifier\n+      name: oui\n+      type: string\n+      datatype: uint\n+\n+    - description: organizationally defined subtype\n+      name: subtype\n+      type: string\n+      datatype: uint\n+\n+Host.getLldp:\n+  added: '4.2'\n+  description: Get lldp information of a NIC\n+  params:\n+    defaultvalue: no-default\n+    description: Device name to query for lldp information\n+    name: devicename\n+    type: string\n+  return:\n+    description: Lldp information of a NIC\n+    type: Lldp\n+```\n+\n+\n+## Entity Description\n+\n+The initial LLDP information is encoded as a list of type, length, value (TLV) tuples.\n+To express multiple values, e.g. to list the allowed VLANs on a switch port,\n+the TLV is sent multiple times.\n+The value may contain structured data.\n+This way the LLDP data is non-uniform.\n+This non-uniform LLDP data will be mapped to the following uniform entities.\n+\n+The entity `Tlv` represents the TLV received physically by the oVirt host's NIC.\n+A `Tlv` is associated to a `VdsNetworkInterface`, called\n+[`HostNic` in REST-API](http://ovirt.github.io/ovirt-engine-api-model/4.2/#types/host_nic),\n+has a `name`, a `type`, a list of `properties` and optional an `oui` and a\n+`subtype`.\n+\n+![Class diagramm of Tlv](../../../../images/wiki/EntityTlv.png  \"Class diagramm of Tlv\")\n+\n+The `name` is a human readable string to describe what the value is about and\n+may not be unique. The name is redundant, because it could be created from\n+`type` and the optional `oui` and `subtype`. The purpose of `name` is\n+to simplify the reading of the TLV.\n+The `name` of a property is exactly the same string which is used in\n+[IEEE 802.1AB][1] chapter 8.\n+\n+The `type` is the TLV type of [IEEE 802.1AB][1].\n+\n+Organizationally Specific `Tlv`s have the `type` of `127` and the attributes\n+`oui` and `subtype`.\n+The `oui` holds the organizationally unique identifier, and the `subtype` the\n+organizationally defined subtype.\n+\n+The `properties` are used to represent structured information transported by the\n+TLV.\n+\n+The entity `lldp` has a list of all `Tlv`s of s an interface and shows, if the\n+gathering of the LLDP information is `enabled` on the interface. If it is \n+not `enabled`, there is a problem gathering the LLDP information on the host.\n+\n+## CRUD\n+\n+The CRUD operations are not needed, because the implementation does not use the\n+data base.\n+\n+## User Experience\n+\n+### REST-API\n+\n+The LLDP information are read-only. They could be read by a request like\n+\n+```\n+GET https://ovirtexampleengine/ovirt-engine/api/hosts/123/nics/321/linklayerdiscoveryprotocolinformationelements\n+```\n+\n+The response in XML for the [SampleCaptures from Wireshark's wiki][5] will look like this\n+\n+```xml\n+<link_layer_discovery_protocol_elements>\n+  <link_layer_discovery_protocol_element>\n+    <name>Chassis ID</name>\n+    <properties>\n+      <property>\n+        <name>chassis ID subtype</name>\n+        <value>MAC address</value>\n+      </property>\n+      <property>\n+        <name>chassis ID</name>\n+        <value>00:01:30:f9:ad:a0</value>\n+      </property>\n+    </properties>\n+    <type>1</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Port ID</name>\n+    <properties>\n+      <property>\n+        <name>port ID subtype</name>\n+        <value>Interface Name</value>\n+      </property>\n+      <property>\n+        <name>port ID</name>\n+        <value>1/1</value>\n+      </property>\n+    </properties>\n+    <type>2</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Time to Live</name>\n+    <properties>\n+      <property>\n+        <name>TTL</name>\n+        <value>120</value>\n+      </property>\n+    </properties>\n+    <type>3</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Port Description</name>\n+    <properties>\n+      <property>\n+        <name>port description</name>\n+        <value>Summit300-48-Port 1001</value>\n+      </property>\n+    </properties>\n+    <type>4</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>System Name</name>\n+    <properties>\n+      <property>\n+        <name>system name</name>\n+        <value>Summit300-48</value>\n+      </property>\n+    </properties>\n+    <type>5</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>System Description</name>\n+    <properties>\n+      <property>\n+        <name>system description</name>\n+        <value>Summit300-48 - Version 7.4e.1 (Build 5) by Release_Master 05/27/05 04:53:11</value>\n+      </property>\n+    </properties>\n+    <type>6</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>System Capabilities</name>\n+    <properties>\n+      <property>\n+        <name>system capabilities</name>\n+        <value>Bridge, Router</value>\n+      </property>\n+      <property>\n+        <name>enabled capabilities</name>\n+        <value>Bridge, Router</value>\n+      </property>\n+    </properties>\n+    <type>7</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Management Address</name>\n+    <properties>\n+      <property>\n+        <name>management address subtype</name>\n+        <value>AFI 802</value>\n+      </property>\n+      <property>\n+        <name>management address</name>\n+        <value>00:01:30:f9:ad:a0</value>\n+      </property>\n+    </properties>\n+    <type>7</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Port VLAN Id</name>\n+    <oui>32962</oui>\n+    <properties>\n+      <property>\n+        <name>port vlan id</name>\n+        <value>488</value>\n+      </property>\n+    </properties>\n+    <subtype>1</subtype>\n+    <type>127</type>\n+  </link_layer_discovery_protocol_element>\n+  <link_layer_discovery_protocol_element>\n+    <name>Port VLAN Id</name>\n+    <oui>32962</oui>\n+    <properties>\n+      <property>\n+        <name>vlan id</name>\n+        <value>488</value>\n+      </property>\n+      <property>\n+        <name>vlan name</name>\n+        <value>v2-0488-03-0505</value>\n+      </property>\n+    </properties>\n+    <subtype>3</subtype>\n+    <type>127</type>\n+  </link_layer_discovery_protocol_element>\n+</link_layer_discovery_protocol_elements>\n+```\n+\n+### Graphical User Interface\n+\n+Graphical User Interface is a [folow-up feature](#follow-up-features)\n+\n+## Installation/Upgrade\n+\n+The VDSM package would require the package lldpad and ask the service lldpad to","path":"source/develop/release-management/features/network/lldp.html.md","position":381,"original_position":381,"commit_id":"0e1c324be3969f7996b8a63bf0151a138d0f36dc","original_commit_id":"0e1c324be3969f7996b8a63bf0151a138d0f36dc","user":{"login":"mykaul","id":4655593,"avatar_url":"https://avatars1.githubusercontent.com/u/4655593?v=3","gravatar_id":"","url":"https://api.github.com/users/mykaul","html_url":"https://github.com/mykaul","followers_url":"https://api.github.com/users/mykaul/followers","following_url":"https://api.github.com/users/mykaul/following{/other_user}","gists_url":"https://api.github.com/users/mykaul/gists{/gist_id}","starred_url":"https://api.github.com/users/mykaul/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mykaul/subscriptions","organizations_url":"https://api.github.com/users/mykaul/orgs","repos_url":"https://api.github.com/users/mykaul/repos","events_url":"https://api.github.com/users/mykaul/events{/privacy}","received_events_url":"https://api.github.com/users/mykaul/received_events","type":"User","site_admin":false},"body":"Will we be using lldpd or lldpad?","created_at":"2017-07-04T07:11:44Z","updated_at":"2017-07-04T07:40:29Z","html_url":"https://github.com/oVirt/ovirt-site/pull/1027#discussion_r125402533","pull_request_url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027","_links":{"self":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/comments/125402533"},"html":{"href":"https://github.com/oVirt/ovirt-site/pull/1027#discussion_r125402533"},"pull_request":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027"}}},"pull_request":{"url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027","id":126561642,"html_url":"https://github.com/oVirt/ovirt-site/pull/1027","diff_url":"https://github.com/oVirt/ovirt-site/pull/1027.diff","patch_url":"https://github.com/oVirt/ovirt-site/pull/1027.patch","issue_url":"https://api.github.com/repos/oVirt/ovirt-site/issues/1027","number":1027,"state":"open","locked":false,"title":"Create feature page for lldp","user":{"login":"dominikholler","id":3316529,"avatar_url":"https://avatars3.githubusercontent.com/u/3316529?v=3","gravatar_id":"","url":"https://api.github.com/users/dominikholler","html_url":"https://github.com/dominikholler","followers_url":"https://api.github.com/users/dominikholler/followers","following_url":"https://api.github.com/users/dominikholler/following{/other_user}","gists_url":"https://api.github.com/users/dominikholler/gists{/gist_id}","starred_url":"https://api.github.com/users/dominikholler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominikholler/subscriptions","organizations_url":"https://api.github.com/users/dominikholler/orgs","repos_url":"https://api.github.com/users/dominikholler/repos","events_url":"https://api.github.com/users/dominikholler/events{/privacy}","received_events_url":"https://api.github.com/users/dominikholler/received_events","type":"User","site_admin":false},"body":"Changes proposed in this pull request:\r\n\r\n- Create feature page for lldp\r\n\r\n-\r\n\r\n-\r\n\r\nI confirm that this pull request was submitted according to the [contribution guidelines](/CONTRIBUTING.md): @dominikholler\r\nThis pull request needs review by: @EdDev @dankenigsberg \r\n","created_at":"2017-06-20T15:24:55Z","updated_at":"2017-07-04T07:40:29Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b1c52f50c8569f93553cc7d8e3ab1f59dba7530d","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027/commits","review_comments_url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027/comments","review_comment_url":"https://api.github.com/repos/oVirt/ovirt-site/pulls/comments{/number}","comments_url":"https://api.github.com/repos/oVirt/ovirt-site/issues/1027/comments","statuses_url":"https://api.github.com/repos/oVirt/ovirt-site/statuses/0e1c324be3969f7996b8a63bf0151a138d0f36dc","head":{"label":"dominikholler:lldp","ref":"lldp","sha":"0e1c324be3969f7996b8a63bf0151a138d0f36dc","user":{"login":"dominikholler","id":3316529,"avatar_url":"https://avatars3.githubusercontent.com/u/3316529?v=3","gravatar_id":"","url":"https://api.github.com/users/dominikholler","html_url":"https://github.com/dominikholler","followers_url":"https://api.github.com/users/dominikholler/followers","following_url":"https://api.github.com/users/dominikholler/following{/other_user}","gists_url":"https://api.github.com/users/dominikholler/gists{/gist_id}","starred_url":"https://api.github.com/users/dominikholler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominikholler/subscriptions","organizations_url":"https://api.github.com/users/dominikholler/orgs","repos_url":"https://api.github.com/users/dominikholler/repos","events_url":"https://api.github.com/users/dominikholler/events{/privacy}","received_events_url":"https://api.github.com/users/dominikholler/received_events","type":"User","site_admin":false},"repo":{"id":80132696,"name":"ovirt-site","full_name":"dominikholler/ovirt-site","owner":{"login":"dominikholler","id":3316529,"avatar_url":"https://avatars3.githubusercontent.com/u/3316529?v=3","gravatar_id":"","url":"https://api.github.com/users/dominikholler","html_url":"https://github.com/dominikholler","followers_url":"https://api.github.com/users/dominikholler/followers","following_url":"https://api.github.com/users/dominikholler/following{/other_user}","gists_url":"https://api.github.com/users/dominikholler/gists{/gist_id}","starred_url":"https://api.github.com/users/dominikholler/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dominikholler/subscriptions","organizations_url":"https://api.github.com/users/dominikholler/orgs","repos_url":"https://api.github.com/users/dominikholler/repos","events_url":"https://api.github.com/users/dominikholler/events{/privacy}","received_events_url":"https://api.github.com/users/dominikholler/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/dominikholler/ovirt-site","description":"oVirt website","fork":true,"url":"https://api.github.com/repos/dominikholler/ovirt-site","forks_url":"https://api.github.com/repos/dominikholler/ovirt-site/forks","keys_url":"https://api.github.com/repos/dominikholler/ovirt-site/keys{/key_id}","collaborators_url":"https://api.github.com/repos/dominikholler/ovirt-site/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/dominikholler/ovirt-site/teams","hooks_url":"https://api.github.com/repos/dominikholler/ovirt-site/hooks","issue_events_url":"https://api.github.com/repos/dominikholler/ovirt-site/issues/events{/number}","events_url":"https://api.github.com/repos/dominikholler/ovirt-site/events","assignees_url":"https://api.github.com/repos/dominikholler/ovirt-site/assignees{/user}","branches_url":"https://api.github.com/repos/dominikholler/ovirt-site/branches{/branch}","tags_url":"https://api.github.com/repos/dominikholler/ovirt-site/tags","blobs_url":"https://api.github.com/repos/dominikholler/ovirt-site/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/dominikholler/ovirt-site/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/dominikholler/ovirt-site/git/refs{/sha}","trees_url":"https://api.github.com/repos/dominikholler/ovirt-site/git/trees{/sha}","statuses_url":"https://api.github.com/repos/dominikholler/ovirt-site/statuses/{sha}","languages_url":"https://api.github.com/repos/dominikholler/ovirt-site/languages","stargazers_url":"https://api.github.com/repos/dominikholler/ovirt-site/stargazers","contributors_url":"https://api.github.com/repos/dominikholler/ovirt-site/contributors","subscribers_url":"https://api.github.com/repos/dominikholler/ovirt-site/subscribers","subscription_url":"https://api.github.com/repos/dominikholler/ovirt-site/subscription","commits_url":"https://api.github.com/repos/dominikholler/ovirt-site/commits{/sha}","git_commits_url":"https://api.github.com/repos/dominikholler/ovirt-site/git/commits{/sha}","comments_url":"https://api.github.com/repos/dominikholler/ovirt-site/comments{/number}","issue_comment_url":"https://api.github.com/repos/dominikholler/ovirt-site/issues/comments{/number}","contents_url":"https://api.github.com/repos/dominikholler/ovirt-site/contents/{+path}","compare_url":"https://api.github.com/repos/dominikholler/ovirt-site/compare/{base}...{head}","merges_url":"https://api.github.com/repos/dominikholler/ovirt-site/merges","archive_url":"https://api.github.com/repos/dominikholler/ovirt-site/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/dominikholler/ovirt-site/downloads","issues_url":"https://api.github.com/repos/dominikholler/ovirt-site/issues{/number}","pulls_url":"https://api.github.com/repos/dominikholler/ovirt-site/pulls{/number}","milestones_url":"https://api.github.com/repos/dominikholler/ovirt-site/milestones{/number}","notifications_url":"https://api.github.com/repos/dominikholler/ovirt-site/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/dominikholler/ovirt-site/labels{/name}","releases_url":"https://api.github.com/repos/dominikholler/ovirt-site/releases{/id}","deployments_url":"https://api.github.com/repos/dominikholler/ovirt-site/deployments","created_at":"2017-01-26T16:35:57Z","updated_at":"2017-01-26T16:36:03Z","pushed_at":"2017-07-04T06:33:42Z","git_url":"git://github.com/dominikholler/ovirt-site.git","ssh_url":"git@github.com:dominikholler/ovirt-site.git","clone_url":"https://github.com/dominikholler/ovirt-site.git","svn_url":"https://github.com/dominikholler/ovirt-site","homepage":"http://www.ovirt.org/","size":174713,"stargazers_count":0,"watchers_count":0,"language":"HTML","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":"oVirt:master","ref":"master","sha":"3d5cb461c55176782d54fd0b0046d10d4d13351f","user":{"login":"oVirt","id":1318634,"avatar_url":"https://avatars1.githubusercontent.com/u/1318634?v=3","gravatar_id":"","url":"https://api.github.com/users/oVirt","html_url":"https://github.com/oVirt","followers_url":"https://api.github.com/users/oVirt/followers","following_url":"https://api.github.com/users/oVirt/following{/other_user}","gists_url":"https://api.github.com/users/oVirt/gists{/gist_id}","starred_url":"https://api.github.com/users/oVirt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oVirt/subscriptions","organizations_url":"https://api.github.com/users/oVirt/orgs","repos_url":"https://api.github.com/users/oVirt/repos","events_url":"https://api.github.com/users/oVirt/events{/privacy}","received_events_url":"https://api.github.com/users/oVirt/received_events","type":"Organization","site_admin":false},"repo":{"id":47401658,"name":"ovirt-site","full_name":"oVirt/ovirt-site","owner":{"login":"oVirt","id":1318634,"avatar_url":"https://avatars1.githubusercontent.com/u/1318634?v=3","gravatar_id":"","url":"https://api.github.com/users/oVirt","html_url":"https://github.com/oVirt","followers_url":"https://api.github.com/users/oVirt/followers","following_url":"https://api.github.com/users/oVirt/following{/other_user}","gists_url":"https://api.github.com/users/oVirt/gists{/gist_id}","starred_url":"https://api.github.com/users/oVirt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oVirt/subscriptions","organizations_url":"https://api.github.com/users/oVirt/orgs","repos_url":"https://api.github.com/users/oVirt/repos","events_url":"https://api.github.com/users/oVirt/events{/privacy}","received_events_url":"https://api.github.com/users/oVirt/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/oVirt/ovirt-site","description":"oVirt website","fork":false,"url":"https://api.github.com/repos/oVirt/ovirt-site","forks_url":"https://api.github.com/repos/oVirt/ovirt-site/forks","keys_url":"https://api.github.com/repos/oVirt/ovirt-site/keys{/key_id}","collaborators_url":"https://api.github.com/repos/oVirt/ovirt-site/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/oVirt/ovirt-site/teams","hooks_url":"https://api.github.com/repos/oVirt/ovirt-site/hooks","issue_events_url":"https://api.github.com/repos/oVirt/ovirt-site/issues/events{/number}","events_url":"https://api.github.com/repos/oVirt/ovirt-site/events","assignees_url":"https://api.github.com/repos/oVirt/ovirt-site/assignees{/user}","branches_url":"https://api.github.com/repos/oVirt/ovirt-site/branches{/branch}","tags_url":"https://api.github.com/repos/oVirt/ovirt-site/tags","blobs_url":"https://api.github.com/repos/oVirt/ovirt-site/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/oVirt/ovirt-site/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/oVirt/ovirt-site/git/refs{/sha}","trees_url":"https://api.github.com/repos/oVirt/ovirt-site/git/trees{/sha}","statuses_url":"https://api.github.com/repos/oVirt/ovirt-site/statuses/{sha}","languages_url":"https://api.github.com/repos/oVirt/ovirt-site/languages","stargazers_url":"https://api.github.com/repos/oVirt/ovirt-site/stargazers","contributors_url":"https://api.github.com/repos/oVirt/ovirt-site/contributors","subscribers_url":"https://api.github.com/repos/oVirt/ovirt-site/subscribers","subscription_url":"https://api.github.com/repos/oVirt/ovirt-site/subscription","commits_url":"https://api.github.com/repos/oVirt/ovirt-site/commits{/sha}","git_commits_url":"https://api.github.com/repos/oVirt/ovirt-site/git/commits{/sha}","comments_url":"https://api.github.com/repos/oVirt/ovirt-site/comments{/number}","issue_comment_url":"https://api.github.com/repos/oVirt/ovirt-site/issues/comments{/number}","contents_url":"https://api.github.com/repos/oVirt/ovirt-site/contents/{+path}","compare_url":"https://api.github.com/repos/oVirt/ovirt-site/compare/{base}...{head}","merges_url":"https://api.github.com/repos/oVirt/ovirt-site/merges","archive_url":"https://api.github.com/repos/oVirt/ovirt-site/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/oVirt/ovirt-site/downloads","issues_url":"https://api.github.com/repos/oVirt/ovirt-site/issues{/number}","pulls_url":"https://api.github.com/repos/oVirt/ovirt-site/pulls{/number}","milestones_url":"https://api.github.com/repos/oVirt/ovirt-site/milestones{/number}","notifications_url":"https://api.github.com/repos/oVirt/ovirt-site/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/oVirt/ovirt-site/labels{/name}","releases_url":"https://api.github.com/repos/oVirt/ovirt-site/releases{/id}","deployments_url":"https://api.github.com/repos/oVirt/ovirt-site/deployments","created_at":"2015-12-04T12:05:58Z","updated_at":"2017-06-09T23:41:55Z","pushed_at":"2017-07-04T06:33:44Z","git_url":"git://github.com/oVirt/ovirt-site.git","ssh_url":"git@github.com:oVirt/ovirt-site.git","clone_url":"https://github.com/oVirt/ovirt-site.git","svn_url":"https://github.com/oVirt/ovirt-site","homepage":"http://www.ovirt.org/","size":174960,"stargazers_count":27,"watchers_count":27,"language":"HTML","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":151,"mirror_url":null,"open_issues_count":104,"forks":151,"open_issues":104,"watchers":27,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027"},"html":{"href":"https://github.com/oVirt/ovirt-site/pull/1027"},"issue":{"href":"https://api.github.com/repos/oVirt/ovirt-site/issues/1027"},"comments":{"href":"https://api.github.com/repos/oVirt/ovirt-site/issues/1027/comments"},"review_comments":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027/comments"},"review_comment":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/oVirt/ovirt-site/pulls/1027/commits"},"statuses":{"href":"https://api.github.com/repos/oVirt/ovirt-site/statuses/0e1c324be3969f7996b8a63bf0151a138d0f36dc"}}}}
{"actor":{"display_login":"mykaul"}}