)]}'
{"doc/api_samples/os-pci/pci-detail-resp.json":[{"author":{"_account_id":6685,"name":"Baodong (Robert) Li","email":"baoli@cisco.com","username":"baoli"},"change_message_id":"c3f73adeba70c07ea8ae87e109aa9158f237dc3f","unresolved":false,"context_lines":[{"line_number":15,"context_line":"            \"product_id\": \"p\","},{"line_number":16,"context_line":"            \"status\": \"available\","},{"line_number":17,"context_line":"            \"updated_at\": null,"},{"line_number":18,"context_line":"            \"vendor_id\": \"v\""},{"line_number":19,"context_line":"        }"},{"line_number":20,"context_line":"    ]"},{"line_number":21,"context_line":"}"}],"source_content_type":"application/json","patch_set":7,"id":"AAAATn%2F%2FSsQ%3D","line":18,"updated":"2013-11-11 18:18:18.000000000","message":"As an sample, can we provide realistic data or a real example here? Similar comments apply to all the samples.","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"40081ac5aedbadd096c9d16a496d099f4c7018de","unresolved":false,"context_lines":[{"line_number":15,"context_line":"            \"product_id\": \"p\","},{"line_number":16,"context_line":"            \"status\": \"available\","},{"line_number":17,"context_line":"            \"updated_at\": null,"},{"line_number":18,"context_line":"            \"vendor_id\": \"v\""},{"line_number":19,"context_line":"        }"},{"line_number":20,"context_line":"    ]"},{"line_number":21,"context_line":"}"}],"source_content_type":"application/json","patch_set":7,"id":"AAAATn%2F%2FLyE%3D","line":18,"in_reply_to":"AAAATn%2F%2FMts%3D","updated":"2013-11-13 08:40:00.000000000","message":"Done","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"40081ac5aedbadd096c9d16a496d099f4c7018de","unresolved":false,"context_lines":[{"line_number":15,"context_line":"            \"product_id\": \"p\","},{"line_number":16,"context_line":"            \"status\": \"available\","},{"line_number":17,"context_line":"            \"updated_at\": null,"},{"line_number":18,"context_line":"            \"vendor_id\": \"v\""},{"line_number":19,"context_line":"        }"},{"line_number":20,"context_line":"    ]"},{"line_number":21,"context_line":"}"}],"source_content_type":"application/json","patch_set":7,"id":"AAAATn%2F%2FLyI%3D","line":18,"in_reply_to":"AAAATn%2F%2FSsQ%3D","updated":"2013-11-13 08:40:00.000000000","message":"Done","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"8fd817d969bc6fe8e49c8fd51de9c21a7076fd66","unresolved":false,"context_lines":[{"line_number":15,"context_line":"            \"product_id\": \"p\","},{"line_number":16,"context_line":"            \"status\": \"available\","},{"line_number":17,"context_line":"            \"updated_at\": null,"},{"line_number":18,"context_line":"            \"vendor_id\": \"v\""},{"line_number":19,"context_line":"        }"},{"line_number":20,"context_line":"    ]"},{"line_number":21,"context_line":"}"}],"source_content_type":"application/json","patch_set":7,"id":"AAAATn%2F%2FMts%3D","line":18,"in_reply_to":"AAAATn%2F%2FSsQ%3D","updated":"2013-11-13 02:37:00.000000000","message":"Yes I definitely agree with this. These api samples are used to produce documentation for users of the API so we really want realistic looking data","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"}],"nova/api/openstack/compute/contrib/pci.py":[{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"56daa02f4a8c718368a5f8acff1e3560aeb7074d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"            context, node)"},{"line_number":183,"context_line":"        if not pci_devs:"},{"line_number":184,"context_line":"            msg \u003d _(\"Pci in node \u0027%s\u0027 could not be found.\") % node"},{"line_number":185,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":186,"context_line":"        return dict(pci_devices\u003d["},{"line_number":187,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":188,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FS7I%3D","line":185,"updated":"2013-10-18 07:53:34.000000000","message":"when nothing found just return empty list? looks like most of list action won\u0027t raise HTTPNotFound","commit_id":"36a3713237f1701d5d67359df6f13d03bbb737e6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"56daa02f4a8c718368a5f8acff1e3560aeb7074d","unresolved":false,"context_lines":[{"line_number":206,"context_line":"            context, node)"},{"line_number":207,"context_line":"        if not pci_devs:"},{"line_number":208,"context_line":"            msg \u003d _(\"Pci in node \u0027%s\u0027 could not be found.\") % node"},{"line_number":209,"context_line":"            raise webob.exc.HTTPNotFound(explanation\u003dmsg)"},{"line_number":210,"context_line":"        return dict("},{"line_number":211,"context_line":"            pci_devices\u003d[self._view_pcidevice(dev, False) for dev in pci_devs])"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FS7E%3D","line":209,"updated":"2013-10-18 07:53:34.000000000","message":"when nothing found just return empty list? looks like most of list action won\u0027t raise HTTPNotFound","commit_id":"36a3713237f1701d5d67359df6f13d03bbb737e6"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"56daa02f4a8c718368a5f8acff1e3560aeb7074d","unresolved":false,"context_lines":[{"line_number":222,"context_line":"        resources \u003d [extensions.ResourceExtension(ALIAS,"},{"line_number":223,"context_line":"                     PciController(),"},{"line_number":224,"context_line":"                     collection_actions\u003d{\u0027detail\u0027: \u0027GET\u0027},"},{"line_number":225,"context_line":"                     member_actions\u003d{\u0027pci_devices\u0027: \u0027GET\u0027})]"},{"line_number":226,"context_line":"        return resources"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"    def get_controller_extensions(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAATH%2F%2FS7A%3D","line":225,"updated":"2013-10-18 07:53:34.000000000","message":"didn\u0027t find this action implemented","commit_id":"36a3713237f1701d5d67359df6f13d03bbb737e6"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"46f4efe6d946d13afc93013c6fda33735f24bbea","unresolved":false,"context_lines":[{"line_number":177,"context_line":"                    \u0027vendor_id\u0027: device[\u0027vendor_id\u0027],"},{"line_number":178,"context_line":"                    \u0027product_id\u0027: device[\u0027product_id\u0027],"},{"line_number":179,"context_line":"                    \u0027status\u0027: device[\u0027status\u0027]}"},{"line_number":180,"context_line":"        if detail:"},{"line_number":181,"context_line":"            for field in pci_device.PciDevice.fields:"},{"line_number":182,"context_line":"                dev_dict[field] \u003d device[field]"},{"line_number":183,"context_line":"        return dev_dict"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F16s%3D","line":180,"updated":"2013-10-28 03:29:55.000000000","message":"Maybe rearrange this so with detail it only assigns these entries once?","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"46f4efe6d946d13afc93013c6fda33735f24bbea","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        authorize(context)"},{"line_number":190,"context_line":"        pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":191,"context_line":"            context, node)"},{"line_number":192,"context_line":"        return dict(pci_devices\u003d["},{"line_number":193,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F16U%3D","line":191,"updated":"2013-10-28 03:29:55.000000000","message":"Does this (and index) do the right thing when no node parameter is not passed via the URL?","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"86fbe1a98a0cde2afab075ed0898f795f94d0d15","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        authorize(context)"},{"line_number":190,"context_line":"        pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":191,"context_line":"            context, node)"},{"line_number":192,"context_line":"        return dict(pci_devices\u003d["},{"line_number":193,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F1j8%3D","line":191,"in_reply_to":"AAAATn%2F%2F11E%3D","updated":"2013-10-28 08:02:57.000000000","message":"@Christopher \nwhat\u0027s your suggestion?  Here return PCI devices for all compute node ?","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9ff280b4054f17f3ae3884f2e506bef4997aa473","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        authorize(context)"},{"line_number":190,"context_line":"        pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":191,"context_line":"            context, node)"},{"line_number":192,"context_line":"        return dict(pci_devices\u003d["},{"line_number":193,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F11E%3D","line":191,"in_reply_to":"AAAATn%2F%2F13I%3D","updated":"2013-10-28 05:42:15.000000000","message":"That\u0027s what I thought it might be. Which I think makes this interface a bit odd, as it would always require something like:\n\nGET v2/tenant_id/os-pci/?node\u003dnode_id\n\nIs it useful at all for GET v2/tenant_id/os-pci/ to return pci devices for all compute nodes? If not maybe we need to rethink the design of the API?","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"f1f1125aff53ab1976c67ec20ad0810b965e0193","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        authorize(context)"},{"line_number":190,"context_line":"        pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":191,"context_line":"            context, node)"},{"line_number":192,"context_line":"        return dict(pci_devices\u003d["},{"line_number":193,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F13I%3D","line":191,"in_reply_to":"AAAATn%2F%2F16U%3D","updated":"2013-10-28 05:18:57.000000000","message":"in this case , get_by_compute_node would retuen [], here  we return {\"pci_devices\" : []}.","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"6b6400903756d8202f96c57d797ab114fa091ae5","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        context \u003d req.environ[\u0027nova.context\u0027]"},{"line_number":189,"context_line":"        authorize(context)"},{"line_number":190,"context_line":"        pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":191,"context_line":"            context, node)"},{"line_number":192,"context_line":"        return dict(pci_devices\u003d["},{"line_number":193,"context_line":"            self._view_pcidevice(dev, True) for dev in pci_devs])"},{"line_number":194,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F0y8%3D","line":191,"in_reply_to":"AAAATn%2F%2F1j8%3D","updated":"2013-10-28 12:46:26.000000000","message":"I think so. However as I mentioned on a review of a related changeset there are quite a few additions being made to the API spread across a few changesets. The split is fine with me, but I would like to see an overall summary of the REST API\u0027s being added/extended in the blueprint so we get a better picture of what is being proposed. \n\nJust to make sure we get the new interface right as its really hard/impossible to change once it has been released.","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"98f444ac825e2b3998a7d61d4830c084fbd39af1","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        elem.set(\u0027deleted\u0027)"},{"line_number":163,"context_line":"        extra_info \u003d xmlutil.SubTemplateElement(elem, \u0027extra_info\u0027,"},{"line_number":164,"context_line":"                                                selector\u003d\u0027extra_info\u0027)"},{"line_number":165,"context_line":"        extra_info.set(\u0027phys_function\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"class PciIndexTemplate(xmlutil.TemplateBuilder):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FM54%3D","line":165,"updated":"2013-11-13 00:50:32.000000000","message":"@Christopher Yeoh\nHi, Chris,  Deployer can add any keys and values in extra_info dict. So  I do not know all keys\u0027s name.   should I add some function in xmlutil ?  I hope to get your suggestions. thanks!","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"8fd817d969bc6fe8e49c8fd51de9c21a7076fd66","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        elem.set(\u0027deleted\u0027)"},{"line_number":163,"context_line":"        extra_info \u003d xmlutil.SubTemplateElement(elem, \u0027extra_info\u0027,"},{"line_number":164,"context_line":"                                                selector\u003d\u0027extra_info\u0027)"},{"line_number":165,"context_line":"        extra_info.set(\u0027phys_function\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"class PciIndexTemplate(xmlutil.TemplateBuilder):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FMtk%3D","line":165,"in_reply_to":"AAAATn%2F%2FM54%3D","updated":"2013-11-13 02:37:00.000000000","message":"I\u0027d recommend having a look at how the flavors_extraspecs plugin handles this as its a very similar situation. Also related to the other comment I added, its worth creating realistic api sample data for this situation so we can verify that the XML looks like we\u0027d expect.","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"40081ac5aedbadd096c9d16a496d099f4c7018de","unresolved":false,"context_lines":[{"line_number":162,"context_line":"        elem.set(\u0027deleted\u0027)"},{"line_number":163,"context_line":"        extra_info \u003d xmlutil.SubTemplateElement(elem, \u0027extra_info\u0027,"},{"line_number":164,"context_line":"                                                selector\u003d\u0027extra_info\u0027)"},{"line_number":165,"context_line":"        extra_info.set(\u0027phys_function\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"class PciIndexTemplate(xmlutil.TemplateBuilder):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FLyA%3D","line":165,"in_reply_to":"AAAATn%2F%2FMtk%3D","updated":"2013-11-13 08:40:00.000000000","message":"Done","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"9eec99a2dd1f3847ce24ac21f1d4991c18a9024b","unresolved":false,"context_lines":[{"line_number":163,"context_line":"        extra_info \u003d xmlutil.SubTemplateElement(elem, \u0027extra_info\u0027,"},{"line_number":164,"context_line":"                                                selector\u003d\u0027extra_info\u0027)"},{"line_number":165,"context_line":"        extra_info.set(\u0027phys_function\u0027)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"class PciIndexTemplate(xmlutil.TemplateBuilder):"},{"line_number":169,"context_line":"    def construct(self):"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAATn%2F%2FM48%3D","line":166,"updated":"2013-11-13 00:57:18.000000000","message":"Chris,whether the following format can use here ?\n\u003cpci_device status\u003d\"available\" extra_info\u003d\"{\u0027phys_function\u0027: \u0027a\u0027,\"pfd\": \u0027b\u0027}\"/\u003e","commit_id":"27589aeb8033aeb5ee979e65dad7d2373b2f2a98"},{"author":{"_account_id":5586,"name":"Ivan-Zhu","email":"zhubo198511@gmail.com","username":"ivan-zhu"},"change_message_id":"0256be526a2617bd6c0975b2892e19df1444ed2b","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        for node in compute_nodes:"},{"line_number":240,"context_line":"            pci_devs \u003d pci_device.PciDeviceList.get_by_compute_node("},{"line_number":241,"context_line":"                context, node[\u0027id\u0027])"},{"line_number":242,"context_line":"            results \u003d results + [self._view_pcidevice(dev, False)"},{"line_number":243,"context_line":"                                 for dev in pci_devs]"},{"line_number":244,"context_line":"        return dict(pci_devices\u003dresults)"},{"line_number":245,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FDm4%3D","line":242,"updated":"2013-11-15 03:29:59.000000000","message":"the parameteer: detail is the only difference between index and detail. why not use a function instead of the code duplication?","commit_id":"9fce0acd50311cd7e49e07b437a421052ae83a1e"}],"nova/tests/integrated/test_api_samples.py":[{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"46f4efe6d946d13afc93013c6fda33735f24bbea","unresolved":false,"context_lines":[{"line_number":4139,"context_line":"    def test_pci_index(self):"},{"line_number":4140,"context_line":"        self.stubs.Set(db, \u0027pci_device_get_all_by_node\u0027,"},{"line_number":4141,"context_line":"                       self._fake_pci_device_get_all_by_node)"},{"line_number":4142,"context_line":"        response \u003d self._do_get(\u0027os-pci\u0027)"},{"line_number":4143,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":4144,"context_line":"        self._verify_response(\u0027pci-index-resp\u0027, subs, response, 200)"},{"line_number":4145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F16Y%3D","line":4142,"updated":"2013-10-28 03:29:55.000000000","message":"Could do with another api sample that shows filtering by node","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":5292,"name":"Christopher Yeoh","email":"cbkyeoh@gmail.com","username":"cyeoh-0"},"change_message_id":"9ff280b4054f17f3ae3884f2e506bef4997aa473","unresolved":false,"context_lines":[{"line_number":4139,"context_line":"    def test_pci_index(self):"},{"line_number":4140,"context_line":"        self.stubs.Set(db, \u0027pci_device_get_all_by_node\u0027,"},{"line_number":4141,"context_line":"                       self._fake_pci_device_get_all_by_node)"},{"line_number":4142,"context_line":"        response \u003d self._do_get(\u0027os-pci\u0027)"},{"line_number":4143,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":4144,"context_line":"        self._verify_response(\u0027pci-index-resp\u0027, subs, response, 200)"},{"line_number":4145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F108%3D","line":4142,"in_reply_to":"AAAATn%2F%2F128%3D","updated":"2013-10-28 05:42:15.000000000","message":"yep, but see my comment in pci.py\n\n- btw it\u0027s worth checking your extension in devstack if you haven\u0027t done already to verify how it works in practice","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"},{"author":{"_account_id":7641,"name":"Shuangtai Tian","email":"hitianst@gmail.com","username":"shuangtai"},"change_message_id":"f1f1125aff53ab1976c67ec20ad0810b965e0193","unresolved":false,"context_lines":[{"line_number":4139,"context_line":"    def test_pci_index(self):"},{"line_number":4140,"context_line":"        self.stubs.Set(db, \u0027pci_device_get_all_by_node\u0027,"},{"line_number":4141,"context_line":"                       self._fake_pci_device_get_all_by_node)"},{"line_number":4142,"context_line":"        response \u003d self._do_get(\u0027os-pci\u0027)"},{"line_number":4143,"context_line":"        subs \u003d self._get_regexes()"},{"line_number":4144,"context_line":"        self._verify_response(\u0027pci-index-resp\u0027, subs, response, 200)"},{"line_number":4145,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAATn%2F%2F128%3D","line":4142,"in_reply_to":"AAAATn%2F%2F16Y%3D","updated":"2013-10-28 05:18:57.000000000","message":"Oh,sorry. here is a error. Should it be os-pci?node\u003d1 ?","commit_id":"8d5e839d99697280acce72c8a36e1ec1f112d11f"}]}
