{"action":"created","comment":{"url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/comments/244674849","pull_request_review_id":188596982,"id":244674849,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDI0NDY3NDg0OQ==","diff_hunk":"@@ -1720,6 +1720,147 @@ def images_define_by_params(self, name, image_params, media=None,\n                                                    \"bus_extra_params\"),\n                                                image_params.get(\"force_drive_format\"))\n \n+    def serials_define_by_variables(self, serial_id, serial_type, backend,\n+                                    port_type=None, file_name=None, serial_name=None,\n+                                    bus=None, nr=None, reg=None, **kwargs):\n+        \"\"\"\n+        Creates related devices by variables\n+\n+        :param serial_id: the id of the serial device\n+        :param serial_type: the type of the serial device\n+        :param backend: the backend type of chardev device\n+        :param port_type: port type of the serial device(optional, virtio only)\n+        :param path: the path option of chardev device(optional)\n+        :param name: the name option of serial device(optional)\n+        :param bus: the busid of parent bus(optional, virtio only)\n+        :param nr: the nr(port) of the parent bus(optional, virtio only)\n+        :param reg: reg option of isa-serial(optional)\n+        :keyword chardev options per backend\n+        :return: the device list that construct the serial device\n+        \"\"\"\n+        if (not self.has_option('chardev') or\n+                not self.has_device(serial_type)):\n+            cmd = \" -serial unix:'%s',server,nowait\" % file_name\n+            return qdevices.StrDev('SER-%s' % serial_id, cmdline=cmd)\n+\n+        devices = []\n+\n+        # for tcp_socket and unix_socket, both form to 'socket'\n+        _backend = 'socket' if 'socket' in backend else backend\n+        # Generate -chardev device\n+        devices.append(qdevices.CharDevice({'backend': _backend}, serial_id))\n+        chardev_id = 'chardev_%s' % serial_id\n+        devices[-1].set_param('id', chardev_id)\n+        for option, value in kwargs.items():\n+            devices[-1].set_param(option, value)\n+        devices[-1].format_params(devices[-1].params)\n+\n+        # For virtio serial devices, generate controller and create the port device\n+        if serial_type.startswith('virtio'):\n+            if not bus:\n+                if serial_type == 'virtio-serial-device':\n+                    pci_bus = {'type': 'virtio-bus'}\n+                else:\n+                    pci_bus = {'aobject': 'pci.0'}\n+                bus = self.get_first_free_bus(\n+                    {'type': 'SERIAL', 'atype': serial_type}, [None, nr])\n+                if bus is None:\n+                    _hba = serial_type.replace('-', '_') + '%s'\n+                    bus = self.idx_of_next_named_bus(_hba)\n+                    bus = self.list_missing_named_buses(_hba, 'SERIAL', bus + 1)[-1]\n+                    logging.debug(\"list missing named bus: %s\", bus)\n+                    devices.append(\n+                        qdevices.QDevice(serial_type,\n+                                         {\"id\": bus},\n+                                         bus,\n+                                         pci_bus,\n+                                         qdevices.QSerialBus(bus, serial_type, bus)))\n+                else:\n+                    bus = bus.busid\n+            devices.append(\n+                qdevices.QDevice(port_type,\n+                                 {\"id\": serial_id},\n+                                 parent_bus={'busid': bus}))\n+            devices[-1].set_param('name', serial_name)\n+        else:  # none virtio type, generate serial device directly\n+            devices.append(qdevices.QDevice(serial_type, {\"id\": serial_id}))\n+            devices[-1].set_param(\"reg\", reg)\n+        devices[-1].set_param('chardev', chardev_id)\n+\n+        return devices\n+\n+    def serials_define_by_params(self, serial_id, serial_params,\n+                                 file_name=None, index=None):\n+        \"\"\"\n+        Wrapper for creating serial device from serial params.\n+\n+        :param serial_id: id of serial object\n+        :param serial_params: serial params\n+        :param file_name: the file path of the serial device (optional)\n+        :param index: the index of the serial device (optional)\n+        :return: the device list that construct the serial device\n+        \"\"\"\n+        serial_type = serial_params['serial_type']\n+        virtio_port_type = serial_params.get('virtio_port_type')\n+        machine = serial_params.get('machine_type')\n+        if virtio_port_type:\n+            if \"-mmio\" in machine:\n+                controller_suffix = 'device'\n+            elif machine.startswith(\"s390\"):\n+                controller_suffix = 'ccw'\n+            else:\n+                controller_suffix = 'pci'\n+            serial_type = '%s-%s' % (serial_type, controller_suffix)\n+            virtio_port_type = \"virt%s\" % virtio_port_type\n+\n+        prefix = serial_params.get('virtio_port_name_prefix')\n+        name = serial_id\n+        name = prefix + name if prefix else name\n+        serial_params['name'] = name\n+\n+        chardev_args = {'logfile': serial_params.get('chardev_logfile'),\n+                        'logappend': serial_params.get('chardev_logappend')}\n+        backend = serial_params.get('chardev_backend', 'unix_socket')\n+        if backend not in ['socket', 'vc', 'ringbuf',\n+                           'spiceport', 'spicevmc']:\n+            chardev_args.update({'mux': serial_params.get('chardev_mux')})\n+        if backend in ['file', 'pipe', 'serial',\n+                       'tty', 'parallel', 'parport']:\n+            chardev_args.update({'path': file_name})\n+        elif backend in ['spicevmc', 'spiceport']:\n+            chardev_args.update({'debug': serial_params.get('chardev_debug'),\n+                                 'name': name})\n+        elif backend in ['stdio']:\n+            chardev_args.update({'signal': serial_params.get('chardev_signal')})\n+        elif 'unix' in backend:  # unix_socket\n+            chardev_args.update({'path': file_name})\n+        elif 'tcp' in backend or backend in ['udp']:  # tcp_socket & udp\n+            chardev_args.update({'host': serial_params.get('chardev_host'),\n+                                 'port': serial_params.get('chardev_port'),\n+                                 'ipv4': serial_params.get('chardev_ipv4'),\n+                                 'ipv6': serial_params.get('chardev_ipv6')})\n+            if backend in ['udp']:\n+                chardev_args.update(\n+                    {'localaddr': serial_params.get('chardev_localaddr'),\n+                     'localport': serial_params.get('chardev_localport')})\n+            else:\n+                chardev_args.update({'to': serial_params.get('chardev_to'),\n+                                     'nodelay': serial_params.get('chardev_nodelay')})\n+        if 'socket' in backend:  # tcp_socket & unix_socket\n+            chardev_args.update({'server': serial_params.get('chardev_server', 'yes'),\n+                                 'nowait': serial_params.get('chardev_nowait', 'yes'),\n+                                 'reconnect': serial_params.get('chardev_reconnect')})","path":"virttest/qemu_devices/qcontainer.py","position":133,"original_position":133,"commit_id":"b6ebcacb3155a456b97243272dfc39af46920a30","original_commit_id":"b6ebcacb3155a456b97243272dfc39af46920a30","user":{"login":"yanan-fu","id":14147258,"node_id":"MDQ6VXNlcjE0MTQ3MjU4","avatar_url":"https://avatars1.githubusercontent.com/u/14147258?v=4","gravatar_id":"","url":"https://api.github.com/users/yanan-fu","html_url":"https://github.com/yanan-fu","followers_url":"https://api.github.com/users/yanan-fu/followers","following_url":"https://api.github.com/users/yanan-fu/following{/other_user}","gists_url":"https://api.github.com/users/yanan-fu/gists{/gist_id}","starred_url":"https://api.github.com/users/yanan-fu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yanan-fu/subscriptions","organizations_url":"https://api.github.com/users/yanan-fu/orgs","repos_url":"https://api.github.com/users/yanan-fu/repos","events_url":"https://api.github.com/users/yanan-fu/events{/privacy}","received_events_url":"https://api.github.com/users/yanan-fu/received_events","type":"User","site_admin":false},"body":"New design: param name is `chardev_$option_name`.\r\nWhy don't use class CharDevice directly to generate chardev_args ?  (improve it to match the new request)\r\nIn this way,  param name should be same with option name.\r\n```\r\n1012         options = self.get_supported_options(backend)                           \r\n1013         params = params.copy_from_keys(options)  \r\n```","created_at":"2019-01-02T07:52:08Z","updated_at":"2019-01-02T07:57:25Z","html_url":"https://github.com/avocado-framework/avocado-vt/pull/1639#discussion_r244674849","pull_request_url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/comments/244674849"},"html":{"href":"https://github.com/avocado-framework/avocado-vt/pull/1639#discussion_r244674849"},"pull_request":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639"}}},"pull_request":{"url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639","id":197962160,"node_id":"MDExOlB1bGxSZXF1ZXN0MTk3OTYyMTYw","html_url":"https://github.com/avocado-framework/avocado-vt/pull/1639","diff_url":"https://github.com/avocado-framework/avocado-vt/pull/1639.diff","patch_url":"https://github.com/avocado-framework/avocado-vt/pull/1639.patch","issue_url":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/1639","number":1639,"state":"open","locked":false,"title":"Chardev: refactor chardev creation, for better multiple backend support","user":{"login":"vivianQizhu","id":15028109,"node_id":"MDQ6VXNlcjE1MDI4MTA5","avatar_url":"https://avatars3.githubusercontent.com/u/15028109?v=4","gravatar_id":"","url":"https://api.github.com/users/vivianQizhu","html_url":"https://github.com/vivianQizhu","followers_url":"https://api.github.com/users/vivianQizhu/followers","following_url":"https://api.github.com/users/vivianQizhu/following{/other_user}","gists_url":"https://api.github.com/users/vivianQizhu/gists{/gist_id}","starred_url":"https://api.github.com/users/vivianQizhu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vivianQizhu/subscriptions","organizations_url":"https://api.github.com/users/vivianQizhu/orgs","repos_url":"https://api.github.com/users/vivianQizhu/repos","events_url":"https://api.github.com/users/vivianQizhu/events{/privacy}","received_events_url":"https://api.github.com/users/vivianQizhu/received_events","type":"User","site_admin":false},"body":"1. qdevices: Add Serial Bus representation\r\n2. qcontainer: Add a wrapper for serial device creation\r\n\r\nid: 1588423\r\nSigned-off-by: qizhu <qizhu@redhat.com>","created_at":"2018-06-28T09:02:06Z","updated_at":"2019-01-02T07:57:25Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cc5069dacd3788c3b7b34cf11603c505a1ac3fd3","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639/commits","review_comments_url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639/comments","review_comment_url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/comments{/number}","comments_url":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/1639/comments","statuses_url":"https://api.github.com/repos/avocado-framework/avocado-vt/statuses/b6ebcacb3155a456b97243272dfc39af46920a30","head":{"label":"vivianQizhu:chardev","ref":"chardev","sha":"b6ebcacb3155a456b97243272dfc39af46920a30","user":{"login":"vivianQizhu","id":15028109,"node_id":"MDQ6VXNlcjE1MDI4MTA5","avatar_url":"https://avatars3.githubusercontent.com/u/15028109?v=4","gravatar_id":"","url":"https://api.github.com/users/vivianQizhu","html_url":"https://github.com/vivianQizhu","followers_url":"https://api.github.com/users/vivianQizhu/followers","following_url":"https://api.github.com/users/vivianQizhu/following{/other_user}","gists_url":"https://api.github.com/users/vivianQizhu/gists{/gist_id}","starred_url":"https://api.github.com/users/vivianQizhu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vivianQizhu/subscriptions","organizations_url":"https://api.github.com/users/vivianQizhu/orgs","repos_url":"https://api.github.com/users/vivianQizhu/repos","events_url":"https://api.github.com/users/vivianQizhu/events{/privacy}","received_events_url":"https://api.github.com/users/vivianQizhu/received_events","type":"User","site_admin":false},"repo":{"id":55027565,"node_id":"MDEwOlJlcG9zaXRvcnk1NTAyNzU2NQ==","name":"avocado-vt","full_name":"vivianQizhu/avocado-vt","private":false,"owner":{"login":"vivianQizhu","id":15028109,"node_id":"MDQ6VXNlcjE1MDI4MTA5","avatar_url":"https://avatars3.githubusercontent.com/u/15028109?v=4","gravatar_id":"","url":"https://api.github.com/users/vivianQizhu","html_url":"https://github.com/vivianQizhu","followers_url":"https://api.github.com/users/vivianQizhu/followers","following_url":"https://api.github.com/users/vivianQizhu/following{/other_user}","gists_url":"https://api.github.com/users/vivianQizhu/gists{/gist_id}","starred_url":"https://api.github.com/users/vivianQizhu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vivianQizhu/subscriptions","organizations_url":"https://api.github.com/users/vivianQizhu/orgs","repos_url":"https://api.github.com/users/vivianQizhu/repos","events_url":"https://api.github.com/users/vivianQizhu/events{/privacy}","received_events_url":"https://api.github.com/users/vivianQizhu/received_events","type":"User","site_admin":false},"html_url":"https://github.com/vivianQizhu/avocado-vt","description":"Avocado VT Plugin","fork":true,"url":"https://api.github.com/repos/vivianQizhu/avocado-vt","forks_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/forks","keys_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/teams","hooks_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/hooks","issue_events_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/issues/events{/number}","events_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/events","assignees_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/assignees{/user}","branches_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/branches{/branch}","tags_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/tags","blobs_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/git/refs{/sha}","trees_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/statuses/{sha}","languages_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/languages","stargazers_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/stargazers","contributors_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/contributors","subscribers_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/subscribers","subscription_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/subscription","commits_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/commits{/sha}","git_commits_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/git/commits{/sha}","comments_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/comments{/number}","issue_comment_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/issues/comments{/number}","contents_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/contents/{+path}","compare_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/merges","archive_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/downloads","issues_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/issues{/number}","pulls_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/pulls{/number}","milestones_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/milestones{/number}","notifications_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/labels{/name}","releases_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/releases{/id}","deployments_url":"https://api.github.com/repos/vivianQizhu/avocado-vt/deployments","created_at":"2016-03-30T02:55:55Z","updated_at":"2018-12-26T05:56:40Z","pushed_at":"2018-12-26T07:18:06Z","git_url":"git://github.com/vivianQizhu/avocado-vt.git","ssh_url":"git@github.com:vivianQizhu/avocado-vt.git","clone_url":"https://github.com/vivianQizhu/avocado-vt.git","svn_url":"https://github.com/vivianQizhu/avocado-vt","homepage":"http://avocado-vt.readthedocs.org/","size":28921,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"avocado-framework:master","ref":"master","sha":"6db09cd9d79b7c6baa2e9a4425e04c31d7eca112","user":{"login":"avocado-framework","id":7245719,"node_id":"MDEyOk9yZ2FuaXphdGlvbjcyNDU3MTk=","avatar_url":"https://avatars3.githubusercontent.com/u/7245719?v=4","gravatar_id":"","url":"https://api.github.com/users/avocado-framework","html_url":"https://github.com/avocado-framework","followers_url":"https://api.github.com/users/avocado-framework/followers","following_url":"https://api.github.com/users/avocado-framework/following{/other_user}","gists_url":"https://api.github.com/users/avocado-framework/gists{/gist_id}","starred_url":"https://api.github.com/users/avocado-framework/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avocado-framework/subscriptions","organizations_url":"https://api.github.com/users/avocado-framework/orgs","repos_url":"https://api.github.com/users/avocado-framework/repos","events_url":"https://api.github.com/users/avocado-framework/events{/privacy}","received_events_url":"https://api.github.com/users/avocado-framework/received_events","type":"Organization","site_admin":false},"repo":{"id":36371959,"node_id":"MDEwOlJlcG9zaXRvcnkzNjM3MTk1OQ==","name":"avocado-vt","full_name":"avocado-framework/avocado-vt","private":false,"owner":{"login":"avocado-framework","id":7245719,"node_id":"MDEyOk9yZ2FuaXphdGlvbjcyNDU3MTk=","avatar_url":"https://avatars3.githubusercontent.com/u/7245719?v=4","gravatar_id":"","url":"https://api.github.com/users/avocado-framework","html_url":"https://github.com/avocado-framework","followers_url":"https://api.github.com/users/avocado-framework/followers","following_url":"https://api.github.com/users/avocado-framework/following{/other_user}","gists_url":"https://api.github.com/users/avocado-framework/gists{/gist_id}","starred_url":"https://api.github.com/users/avocado-framework/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/avocado-framework/subscriptions","organizations_url":"https://api.github.com/users/avocado-framework/orgs","repos_url":"https://api.github.com/users/avocado-framework/repos","events_url":"https://api.github.com/users/avocado-framework/events{/privacy}","received_events_url":"https://api.github.com/users/avocado-framework/received_events","type":"Organization","site_admin":false},"html_url":"https://github.com/avocado-framework/avocado-vt","description":"Avocado VT Plugin","fork":false,"url":"https://api.github.com/repos/avocado-framework/avocado-vt","forks_url":"https://api.github.com/repos/avocado-framework/avocado-vt/forks","keys_url":"https://api.github.com/repos/avocado-framework/avocado-vt/keys{/key_id}","collaborators_url":"https://api.github.com/repos/avocado-framework/avocado-vt/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/avocado-framework/avocado-vt/teams","hooks_url":"https://api.github.com/repos/avocado-framework/avocado-vt/hooks","issue_events_url":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/events{/number}","events_url":"https://api.github.com/repos/avocado-framework/avocado-vt/events","assignees_url":"https://api.github.com/repos/avocado-framework/avocado-vt/assignees{/user}","branches_url":"https://api.github.com/repos/avocado-framework/avocado-vt/branches{/branch}","tags_url":"https://api.github.com/repos/avocado-framework/avocado-vt/tags","blobs_url":"https://api.github.com/repos/avocado-framework/avocado-vt/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/avocado-framework/avocado-vt/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/avocado-framework/avocado-vt/git/refs{/sha}","trees_url":"https://api.github.com/repos/avocado-framework/avocado-vt/git/trees{/sha}","statuses_url":"https://api.github.com/repos/avocado-framework/avocado-vt/statuses/{sha}","languages_url":"https://api.github.com/repos/avocado-framework/avocado-vt/languages","stargazers_url":"https://api.github.com/repos/avocado-framework/avocado-vt/stargazers","contributors_url":"https://api.github.com/repos/avocado-framework/avocado-vt/contributors","subscribers_url":"https://api.github.com/repos/avocado-framework/avocado-vt/subscribers","subscription_url":"https://api.github.com/repos/avocado-framework/avocado-vt/subscription","commits_url":"https://api.github.com/repos/avocado-framework/avocado-vt/commits{/sha}","git_commits_url":"https://api.github.com/repos/avocado-framework/avocado-vt/git/commits{/sha}","comments_url":"https://api.github.com/repos/avocado-framework/avocado-vt/comments{/number}","issue_comment_url":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/comments{/number}","contents_url":"https://api.github.com/repos/avocado-framework/avocado-vt/contents/{+path}","compare_url":"https://api.github.com/repos/avocado-framework/avocado-vt/compare/{base}...{head}","merges_url":"https://api.github.com/repos/avocado-framework/avocado-vt/merges","archive_url":"https://api.github.com/repos/avocado-framework/avocado-vt/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/avocado-framework/avocado-vt/downloads","issues_url":"https://api.github.com/repos/avocado-framework/avocado-vt/issues{/number}","pulls_url":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls{/number}","milestones_url":"https://api.github.com/repos/avocado-framework/avocado-vt/milestones{/number}","notifications_url":"https://api.github.com/repos/avocado-framework/avocado-vt/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/avocado-framework/avocado-vt/labels{/name}","releases_url":"https://api.github.com/repos/avocado-framework/avocado-vt/releases{/id}","deployments_url":"https://api.github.com/repos/avocado-framework/avocado-vt/deployments","created_at":"2015-05-27T14:22:13Z","updated_at":"2019-01-02T05:27:22Z","pushed_at":"2019-01-02T05:27:13Z","git_url":"git://github.com/avocado-framework/avocado-vt.git","ssh_url":"git@github.com:avocado-framework/avocado-vt.git","clone_url":"https://github.com/avocado-framework/avocado-vt.git","svn_url":"https://github.com/avocado-framework/avocado-vt","homepage":"http://avocado-vt.readthedocs.org/","size":28927,"stargazers_count":35,"watchers_count":35,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":146,"mirror_url":null,"archived":false,"open_issues_count":138,"license":{"key":"gpl-2.0","name":"GNU General Public License v2.0","spdx_id":"GPL-2.0","url":"https://api.github.com/licenses/gpl-2.0","node_id":"MDc6TGljZW5zZTg="},"forks":146,"open_issues":138,"watchers":35,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639"},"html":{"href":"https://github.com/avocado-framework/avocado-vt/pull/1639"},"issue":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/1639"},"comments":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/issues/1639/comments"},"review_comments":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639/comments"},"review_comment":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/pulls/1639/commits"},"statuses":{"href":"https://api.github.com/repos/avocado-framework/avocado-vt/statuses/b6ebcacb3155a456b97243272dfc39af46920a30"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"yanan-fu"}}