)]}'
{"openstack/cluster/v1/_proxy.py":[{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def delete_cluster(self, value, ignore_missing\u003dTrue):"},{"line_number":33,"context_line":"        \"\"\"Delete a cluster."},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"        :param value: The value can be either the name or ID of a cluster or a"},{"line_number":36,"context_line":"            :class:`~openstack.cluster.v1.cluster.Cluster` instance."},{"line_number":37,"context_line":"        :param bool ignore_missing: When set to ``False``, an exception"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_a70f372d","line":34,"updated":"2015-06-30 17:48:47.000000000","message":"just ID?","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def get_cluster(self, name_or_id):"},{"line_number":56,"context_line":"        \"\"\"Get a single cluster."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        :param name_or_id: The value can be the name or ID of a cluster or a"},{"line_number":59,"context_line":"            :class:`~openstack.cluster.v1.cluster.Cluster` instance."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_272a477f","line":57,"updated":"2015-06-30 17:48:47.000000000","message":"Just ID?","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    def update_cluster(self, value, **attrs):"},{"line_number":93,"context_line":"        \"\"\"Update a cluster."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"        :param value: Either the name or the ID of the cluster, or an instance"},{"line_number":96,"context_line":"            of :class:`~openstack.cluster.v1.cluster.Cluster`."},{"line_number":97,"context_line":"        :param attrs: The attributes to update on the cluster represented by"},{"line_number":98,"context_line":"            the ``value`` parameter."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_47350bd8","line":95,"updated":"2015-06-30 17:48:47.000000000","message":"Just ID?","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def delete_node(self, value, ignore_missing\u003dTrue):"},{"line_number":118,"context_line":"        \"\"\"Delete a node."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param value: The value can be either the name or ID of a node or a"},{"line_number":121,"context_line":"            :class:`~openstack.cluster.v1.node.Node` instance."},{"line_number":122,"context_line":"        :param bool ignore_missing: When set to ``False``, an exception"},{"line_number":123,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be raised when"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_94dc9fe5","line":120,"updated":"2015-06-30 17:48:47.000000000","message":"I think this is ID or Node instance only.  Same with the one above for the cluster.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":140,"context_line":"    def get_node(self, value):"},{"line_number":141,"context_line":"        \"\"\"Get a single node."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        :param value: The value can be the name or ID of a node or a"},{"line_number":144,"context_line":"            :class:`~openstack.cluster.v1.node.Node` instance."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"        :returns: One :class:`~openstack.cluster.v1.node.Node`"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_3467d326","line":143,"updated":"2015-06-30 17:48:47.000000000","message":"Does the API support get by name or ID?  I think this is ID or Node instance.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"b4999f5398546810ae843522c5940346188796fd","unresolved":false,"context_lines":[{"line_number":178,"context_line":"    def update_node(self, value, **attrs):"},{"line_number":179,"context_line":"        \"\"\"Update a node."},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"        :param value: Either the name or the ID of the node, or an instance"},{"line_number":182,"context_line":"            of :class:`~openstack.cluster.v1.node.Node`."},{"line_number":183,"context_line":"        :param attrs: The attributes to update on the node represented by"},{"line_number":184,"context_line":"            the ``value`` parameter."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_a73df7bc","line":181,"updated":"2015-06-30 17:48:47.000000000","message":"Just ID?","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bc036934b0a81ef84114eb4184928c74e1f4f119","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        :rtype: :class:`~openstack.cluster.v1.cluster.Cluster`"},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return self._update(cluster.Cluster, value, **attrs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def create_node(self, **attrs):"},{"line_number":106,"context_line":"        \"\"\"Create a new node from attributes."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_1f071f19","line":104,"updated":"2015-07-01 12:26:39.000000000","message":"Are there going to be proxy methods for join and leave?","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"1955c155bb3f72d749b502fef067a52bf43c677b","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        :rtype: :class:`~openstack.cluster.v1.cluster.Cluster`"},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return self._update(cluster.Cluster, value, **attrs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def create_node(self, **attrs):"},{"line_number":106,"context_line":"        \"\"\"Create a new node from attributes."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_ff5d9b47","line":104,"in_reply_to":"ba3cc151_1f071f19","updated":"2015-07-01 12:46:14.000000000","message":"Don\u0027t know whether that is a good idea. My current understanding is that these actions are not \"standard\" operations. They are resource type specific, just like a nova server supports \u0027reboot\u0027 action today.\n\nThe targeted use case is like this:\n\n   node \u003d conn.cluster.v1.get_node(name_or_id)\n   node.join(cluster_name_or_id)","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"67c090de6e5943cc2a4bfc46ab6764729ab50bae","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        :rtype: :class:`~openstack.cluster.v1.cluster.Cluster`"},{"line_number":102,"context_line":"        \"\"\""},{"line_number":103,"context_line":"        return self._update(cluster.Cluster, value, **attrs)"},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    def create_node(self, **attrs):"},{"line_number":106,"context_line":"        \"\"\"Create a new node from attributes."},{"line_number":107,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_257a1478","line":104,"in_reply_to":"ba3cc151_ff5d9b47","updated":"2015-07-01 13:02:32.000000000","message":"Well, the join is going to need the session as well.  I think the proxy should cover actions like this although support for this kind of thing is not implemented in a lot of places.\n\n    action_id \u003d conn.cluster.node_join(cluster_name_or_id)\n\nWhat do others think?  It could be on a follow on patch.","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"fbaae5184caddada0084c38870a3400c18cae343","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def delete_node(self, value, ignore_missing\u003dTrue):"},{"line_number":118,"context_line":"        \"\"\"Delete a node."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param value: The value can be either the name or ID of a node or a"},{"line_number":121,"context_line":"            :class:`~openstack.cluster.v1.node.Node` instance."},{"line_number":122,"context_line":"        :param bool ignore_missing: When set to ``False``, an exception"},{"line_number":123,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be raised when"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_130ddee7","line":120,"updated":"2015-07-01 11:08:08.000000000","message":"Should \u0027name or ID\u0027 should be changed to ID here and everywhere else?","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"0ea45ffc3e2e52ec813afa4b91131bdad4a3c0a4","unresolved":false,"context_lines":[{"line_number":117,"context_line":"    def delete_node(self, value, ignore_missing\u003dTrue):"},{"line_number":118,"context_line":"        \"\"\"Delete a node."},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"        :param value: The value can be either the name or ID of a node or a"},{"line_number":121,"context_line":"            :class:`~openstack.cluster.v1.node.Node` instance."},{"line_number":122,"context_line":"        :param bool ignore_missing: When set to ``False``, an exception"},{"line_number":123,"context_line":"            :class:`~openstack.exceptions.ResourceNotFound` will be raised when"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_d92797c8","line":120,"in_reply_to":"ba3cc151_130ddee7","updated":"2015-07-01 12:03:37.000000000","message":"both name and ID would work for Senlin.","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"}],"openstack/cluster/v1/node.py":[{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"76a4eef7812c46b300cf3987805014ed4dd13a65","unresolved":false,"context_lines":[{"line_number":69,"context_line":"    #: represents"},{"line_number":70,"context_line":"    details \u003d resource.prop(\u0027details\u0027, type\u003ddict)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def action(self, session, body):"},{"line_number":73,"context_line":"        \"\"\"Procedure the invoke an action API."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        :param session: A session object used for sending request."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_4983ee56","line":72,"updated":"2015-06-30 14:24:29.000000000","message":"action should be a private method. Same as in Stack [1].\n\n[1] http://git.openstack.org/cgit/stackforge/python-openstacksdk/tree/openstack/orchestration/v1/stack.py#n67","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"76a4eef7812c46b300cf3987805014ed4dd13a65","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"        :param session: A session object used for sending request."},{"line_number":86,"context_line":"        :param cluster_id: The ID, name or short ID of a cluster the"},{"line_number":87,"context_line":"            node is about to join."},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":"        body \u003d {"},{"line_number":90,"context_line":"            \u0027join\u0027: {"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_e9f522cb","line":87,"updated":"2015-06-30 14:24:29.000000000","message":"Needs docstring for return value.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"76a4eef7812c46b300cf3987805014ed4dd13a65","unresolved":false,"context_lines":[{"line_number":96,"context_line":"    def leave(self, session):"},{"line_number":97,"context_line":"        \"\"\"An action procedure for the node to leave its current cluster."},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"        :param session: A session object used for sending request."},{"line_number":100,"context_line":"        \"\"\""},{"line_number":101,"context_line":"        body \u003d {"},{"line_number":102,"context_line":"            \u0027leave\u0027: {}"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_a9ff1aa9","line":99,"updated":"2015-06-30 14:24:29.000000000","message":"Needs docstring for return value.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":8736,"name":"Terry Howe","email":"terrylhowe@gmail.com","username":"terrylhowe"},"change_message_id":"bc036934b0a81ef84114eb4184928c74e1f4f119","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        :param session: A session object used for sending request."},{"line_number":86,"context_line":"        :param cluster_id: The ID, name or short ID of a cluster the"},{"line_number":87,"context_line":"            node is about to join."},{"line_number":88,"context_line":"        :returns: A dictionary containing the action ID."},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        body \u003d {"},{"line_number":91,"context_line":"            \u0027join\u0027: {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_8438c6f0","line":88,"updated":"2015-07-01 12:26:39.000000000","message":"Is there anything else in the dictionary?  Should _action maybe parse the dict and just return the action ID?","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"},{"author":{"_account_id":8246,"name":"Qiming Teng","email":"tengqm@outlook.com","username":"tengqm"},"change_message_id":"1955c155bb3f72d749b502fef067a52bf43c677b","unresolved":false,"context_lines":[{"line_number":85,"context_line":"        :param session: A session object used for sending request."},{"line_number":86,"context_line":"        :param cluster_id: The ID, name or short ID of a cluster the"},{"line_number":87,"context_line":"            node is about to join."},{"line_number":88,"context_line":"        :returns: A dictionary containing the action ID."},{"line_number":89,"context_line":"        \"\"\""},{"line_number":90,"context_line":"        body \u003d {"},{"line_number":91,"context_line":"            \u0027join\u0027: {"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba3cc151_0a411f38","line":88,"in_reply_to":"ba3cc151_8438c6f0","updated":"2015-07-01 12:46:14.000000000","message":"Returning ID directly is not a bad idea. Currently we returns nothing more than just an action ID. We made this a dictionary to make it extensible in future.","commit_id":"7a662fa38ad38441dcc03b03026b78f7bece3c53"}],"openstack/tests/unit/cluster/v1/test_node.py":[{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"76a4eef7812c46b300cf3987805014ed4dd13a65","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        sot[\u0027id\u0027] \u003d \u0027IDENTIFIER\u0027"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        resp \u003d mock.Mock()"},{"line_number":89,"context_line":"        resp.body \u003d \u0027\u0027"},{"line_number":90,"context_line":"        sess \u003d mock.Mock()"},{"line_number":91,"context_line":"        sess.put \u003d mock.MagicMock(return_value\u003dresp)"},{"line_number":92,"context_line":"        self.assertEqual(\u0027\u0027, sot.join(sess, \u0027cluster-b\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_292a2a2d","line":89,"updated":"2015-06-30 14:24:29.000000000","message":"Please include an example of the response body here.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"},{"author":{"_account_id":1112,"name":"Everett Toews","email":"everett.toews@rackspace.com","username":"everett-toews"},"change_message_id":"76a4eef7812c46b300cf3987805014ed4dd13a65","unresolved":false,"context_lines":[{"line_number":99,"context_line":"        sot[\u0027id\u0027] \u003d \u0027IDENTIFIER\u0027"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"        resp \u003d mock.Mock()"},{"line_number":102,"context_line":"        resp.body \u003d \u0027\u0027"},{"line_number":103,"context_line":"        sess \u003d mock.Mock()"},{"line_number":104,"context_line":"        sess.put \u003d mock.MagicMock(return_value\u003dresp)"},{"line_number":105,"context_line":"        self.assertEqual(\u0027\u0027, sot.leave(sess))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba3cc151_891b361b","line":102,"updated":"2015-06-30 14:24:29.000000000","message":"Please include an example of the response body here.","commit_id":"f85150e8e4c1f607b0bbe1a54e4bba14dd97a0be"}]}
