)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch aims at implementing basic functions of v2/deployable API."},{"line_number":10,"context_line":"It contains:"},{"line_number":11,"context_line":"1. implement deployable list/show API based on v1 deployable API."},{"line_number":12,"context_line":"2. remove \u0027patch\u0027 method, because Cyborg V2 API provides other"},{"line_number":13,"context_line":"API resource(ARQ) to let caller to do binding, not based on deployable."},{"line_number":14,"context_line":"3. remove \u0027delete\u0027 method, because deployable can not actually be"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1fa4df85_f1533838","line":11,"range":{"start_line":11,"start_character":3,"end_line":11,"end_character":4},"updated":"2020-03-16 10:00:25.000000000","message":"nit:I","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":9,"context_line":"This patch aims at implementing basic functions of v2/deployable API."},{"line_number":10,"context_line":"It contains:"},{"line_number":11,"context_line":"1. implement deployable list/show API based on v1 deployable API."},{"line_number":12,"context_line":"2. remove \u0027patch\u0027 method, because Cyborg V2 API provides other"},{"line_number":13,"context_line":"API resource(ARQ) to let caller to do binding, not based on deployable."},{"line_number":14,"context_line":"3. remove \u0027delete\u0027 method, because deployable can not actually be"},{"line_number":15,"context_line":"deleted, it is reported by each driver on the node."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1fa4df85_9130c409","line":12,"range":{"start_line":12,"start_character":3,"end_line":12,"end_character":4},"updated":"2020-03-16 10:00:25.000000000","message":"nit:R","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":11,"context_line":"1. implement deployable list/show API based on v1 deployable API."},{"line_number":12,"context_line":"2. remove \u0027patch\u0027 method, because Cyborg V2 API provides other"},{"line_number":13,"context_line":"API resource(ARQ) to let caller to do binding, not based on deployable."},{"line_number":14,"context_line":"3. remove \u0027delete\u0027 method, because deployable can not actually be"},{"line_number":15,"context_line":"deleted, it is reported by each driver on the node."},{"line_number":16,"context_line":"4. Add related UT."},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1fa4df85_b1338013","line":14,"range":{"start_line":14,"start_character":3,"end_line":14,"end_character":4},"updated":"2020-03-16 10:00:25.000000000","message":"nit:R","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"}],"cyborg/api/controllers/types.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    name \u003d \u0027filtertype\u0027"},{"line_number":31,"context_line":"    basetype \u003d wtypes.text"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _supported_fields \u003d wtypes.Enum(wtypes.text, \u0027parent_uuid\u0027, \u0027root_uuid\u0027,"},{"line_number":34,"context_line":"                                    \u0027board\u0027, \u0027availability\u0027, \u0027interface_type\u0027,"},{"line_number":35,"context_line":"                                    \u0027instance_uuid\u0027, \u0027limit\u0027, \u0027marker\u0027,"},{"line_number":36,"context_line":"                                    \u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_735be753","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":21},"updated":"2020-03-13 06:58:37.000000000","message":"These supported filter fields all used for deployable?\nIf so, can we renmae this class define or \"_supported_fields\", from the current file it looks like it supports all objects, devices, device profile, etc.","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"4e52b0e0059f831427816e24cc6aafbe7ec5f797","unresolved":false,"context_lines":[{"line_number":30,"context_line":"    name \u003d \u0027filtertype\u0027"},{"line_number":31,"context_line":"    basetype \u003d wtypes.text"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    _supported_fields \u003d wtypes.Enum(wtypes.text, \u0027parent_uuid\u0027, \u0027root_uuid\u0027,"},{"line_number":34,"context_line":"                                    \u0027board\u0027, \u0027availability\u0027, \u0027interface_type\u0027,"},{"line_number":35,"context_line":"                                    \u0027instance_uuid\u0027, \u0027limit\u0027, \u0027marker\u0027,"},{"line_number":36,"context_line":"                                    \u0027sort_key\u0027, \u0027sort_dir\u0027, \u0027name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_265f6f0f","line":33,"range":{"start_line":33,"start_character":4,"end_line":33,"end_character":21},"in_reply_to":"1fa4df85_735be753","updated":"2020-03-13 07:25:03.000000000","message":"this is used by all","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"}],"cyborg/api/controllers/v2/deployables.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":76,"context_line":"            setattr(self, field, kwargs.get(field, wtypes.Unset))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    @classmethod"},{"line_number":79,"context_line":"    def convert_with_links(cls, obj_dep):"},{"line_number":80,"context_line":"        api_dep \u003d cls(**obj_dep.as_dict())"},{"line_number":81,"context_line":"        url \u003d pecan.request.public_url"},{"line_number":82,"context_line":"        api_dep.links \u003d ["}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_53234bbf","line":79,"range":{"start_line":79,"start_character":8,"end_line":79,"end_character":26},"updated":"2020-03-13 06:58:37.000000000","message":"Can we rename this to convert_with_link(cls, obj_dep)? and DeployableCollection inherit Deployable, that we can use self.convert_with_link() to call in DeployableCollection.\n\nWe can reduce the calls to Deployable.convert_with_links (obj_dep). Although there is no technical difference, using inheritance is relatively good.","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        return api_dep"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"class DeployableCollection(base.APIBase):"},{"line_number":98,"context_line":"    \"\"\"API representation of a collection of deployables.\"\"\""},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"    deployables \u003d [Deployable]"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_7320c7b1","line":97,"range":{"start_line":97,"start_character":39,"end_line":97,"end_character":40},"updated":"2020-03-13 06:58:37.000000000","message":"inherit Deployable.","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":103,"context_line":"    @classmethod"},{"line_number":104,"context_line":"    def convert_with_links(cls, obj_deps):"},{"line_number":105,"context_line":"        collection \u003d cls()"},{"line_number":106,"context_line":"        collection.deployables \u003d [Deployable.convert_with_links(obj_dep)"},{"line_number":107,"context_line":"                                  for obj_dep in obj_deps]"},{"line_number":108,"context_line":"        return collection"},{"line_number":109,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_f31d9773","line":106,"range":{"start_line":106,"start_character":34,"end_line":106,"end_character":72},"updated":"2020-03-13 06:58:37.000000000","message":"If inherit Deployable, that we can use \"self.convert_with_link(obj_dep)\" instead of \"Deployable.convert_with_links(obj_dep)\".","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":108,"context_line":"        return collection"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"class DeployablesController(base.CyborgController):"},{"line_number":112,"context_line":"    \"\"\"REST controller for Deployables.\"\"\""},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"    @policy.authorize_wsgi(\"cyborg:deployable\", \"get_one\")"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_b3171f52","line":111,"range":{"start_line":111,"start_character":49,"end_line":111,"end_character":50},"updated":"2020-03-13 06:58:37.000000000","message":"inherit DeployableCollection.","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":119,"context_line":"        :param uuid: UUID of a deployable."},{"line_number":120,"context_line":"        \"\"\""},{"line_number":121,"context_line":"        obj_dep \u003d objects.Deployable.get(pecan.request.context, uuid)"},{"line_number":122,"context_line":"        return Deployable.convert_with_links(obj_dep)"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"    @policy.authorize_wsgi(\"cyborg:deployable\", \"get_all\")"},{"line_number":125,"context_line":"    @expose.expose(DeployableCollection, wtypes.ArrayType(types.FilterType))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_530cab41","line":122,"range":{"start_line":122,"start_character":15,"end_line":122,"end_character":53},"updated":"2020-03-13 06:58:37.000000000","message":"self.convert_with_link(obj_dep)","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":131,"context_line":"                filters_dict.update(filter.as_dict())"},{"line_number":132,"context_line":"        context \u003d pecan.request.context"},{"line_number":133,"context_line":"        obj_deps \u003d objects.Deployable.list(context, filters\u003dfilters_dict)"},{"line_number":134,"context_line":"        return DeployableCollection.convert_with_links(obj_deps)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_7309a72f","line":134,"range":{"start_line":134,"start_character":15,"end_line":134,"end_character":64},"updated":"2020-03-13 06:58:37.000000000","message":"self.convert_with_links(obj_deps)","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    a deployable."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    uuid \u003d types.uuid"},{"line_number":39,"context_line":"    \"\"\"The UUID of the deployable\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    parent_id \u003d types.integer"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_71166858","line":38,"range":{"start_line":38,"start_character":11,"end_line":38,"end_character":16},"updated":"2020-03-16 10:00:25.000000000","message":"I have a doubt, why this use types? I saw at Line18, you import types as wtypes, does it use wtypes.uuid?\n\nAs bellow some same issue, contains {\"parent_id\", \"root_id\", \"num_accelerators\", \"device_id\", \"rp_uuid\"}, or I missed sth?","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3b296fa2bc151eab53a5a7abcccca1d87d63b194","unresolved":false,"context_lines":[{"line_number":35,"context_line":"    a deployable."},{"line_number":36,"context_line":"    \"\"\""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"    uuid \u003d types.uuid"},{"line_number":39,"context_line":"    \"\"\"The UUID of the deployable\"\"\""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"    parent_id \u003d types.integer"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_40227403","line":38,"range":{"start_line":38,"start_character":11,"end_line":38,"end_character":16},"in_reply_to":"1fa4df85_71166858","updated":"2020-03-16 12:58:40.000000000","message":"later: This is from cyborg.api.controllers import types this, you can ignore my comments.","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    root_id \u003d types.integer"},{"line_number":45,"context_line":"    \"\"\"The root ID of the deployable\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    name \u003d wtypes.text"},{"line_number":48,"context_line":"    \"\"\"The name of the deployable\"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    num_accelerators \u003d types.integer"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_110db43d","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":17},"updated":"2020-03-16 10:00:25.000000000","message":"like this.","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"3b296fa2bc151eab53a5a7abcccca1d87d63b194","unresolved":false,"context_lines":[{"line_number":44,"context_line":"    root_id \u003d types.integer"},{"line_number":45,"context_line":"    \"\"\"The root ID of the deployable\"\"\""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    name \u003d wtypes.text"},{"line_number":48,"context_line":"    \"\"\"The name of the deployable\"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    num_accelerators \u003d types.integer"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_e02040fa","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":17},"in_reply_to":"1fa4df85_110db43d","updated":"2020-03-16 12:58:40.000000000","message":"ditto.","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f926eabeb3994c0ac84d0d7914a6f8f9c850f651","unresolved":false,"context_lines":[{"line_number":75,"context_line":"            self.fields.append(field)"},{"line_number":76,"context_line":"            setattr(self, field, kwargs.get(field, wtypes.Unset))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    def convert_with_link(self, obj_dep):"},{"line_number":79,"context_line":"        api_dep \u003d Deployable(**obj_dep.as_dict())"},{"line_number":80,"context_line":"        url \u003d pecan.request.public_url"},{"line_number":81,"context_line":"        api_dep.links \u003d ["}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_f9850d08","line":78,"range":{"start_line":78,"start_character":4,"end_line":78,"end_character":41},"updated":"2020-03-20 07:04:34.000000000","message":"@classmethod","commit_id":"a9ca2c5ece998b088314aa2ab38668a851e3b52a"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"9084d4c9d7f9b0936eb16a9a2985e2c51e321032","unresolved":false,"context_lines":[{"line_number":87,"context_line":"        attr_get_list \u003d objects.Attribute.get_by_filter(pecan.request.context,"},{"line_number":88,"context_line":"                                                        query)"},{"line_number":89,"context_line":"        attributes_list \u003d []"},{"line_number":90,"context_line":"        for exist_attr in attr_get_list:"},{"line_number":91,"context_line":"            attributes_list.append({exist_attr.key: exist_attr.value})"},{"line_number":92,"context_line":"        api_dep.attributes_list \u003d jsonutils.dumps(attributes_list)"},{"line_number":93,"context_line":"        return api_dep"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"class DeployableCollection(Deployable):"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_1938299e","line":93,"range":{"start_line":90,"start_character":0,"end_line":93,"end_character":22},"updated":"2020-03-20 06:26:21.000000000","message":"Hi.xinran. LGTM. Do we need to return the attribute information in the deployable api?","commit_id":"a9ca2c5ece998b088314aa2ab38668a851e3b52a"},{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f926eabeb3994c0ac84d0d7914a6f8f9c850f651","unresolved":false,"context_lines":[{"line_number":99,"context_line":"    deployables \u003d [Deployable]"},{"line_number":100,"context_line":"    \"\"\"A list containing deployable objects\"\"\""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"    def convert_with_links(self, obj_deps):"},{"line_number":103,"context_line":"        collection \u003d DeployableCollection()"},{"line_number":104,"context_line":"        collection.deployables \u003d ["},{"line_number":105,"context_line":"            self.convert_with_link(obj_dep) for obj_dep in obj_deps]"}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_59746136","line":102,"range":{"start_line":102,"start_character":3,"end_line":102,"end_character":43},"updated":"2020-03-20 07:04:34.000000000","message":"@classmethod","commit_id":"a9ca2c5ece998b088314aa2ab38668a851e3b52a"}],"cyborg/common/policy.py":[{"author":{"_account_id":28748,"name":"chenker","email":"chen.ke14@zte.com.cn","username":"chenke"},"change_message_id":"f12bd9d96fadaca1d75dafb86b082906e4ed9ed0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:get_all\u0027,"},{"line_number":123,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":124,"context_line":"                       description\u003d\u0027Retrieve all deployable records\u0027),"},{"line_number":125,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:update\u0027,"},{"line_number":126,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":127,"context_line":"                       description\u003d\u0027Update deployable records\u0027),"},{"line_number":128,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:delete\u0027,"},{"line_number":129,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":130,"context_line":"                       description\u003d\u0027Delete deployable records\u0027),"},{"line_number":131,"context_line":"]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_d393bbff","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":63},"updated":"2020-03-13 06:15:56.000000000","message":"Maybe we can delete this?","commit_id":"59a39d8b7aed877cf1b854aee714bc7c7b6b5156"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"b502cf7da648d4109f8a0a0a5d6e3c46e22157f0","unresolved":false,"context_lines":[{"line_number":122,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:get_all\u0027,"},{"line_number":123,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":124,"context_line":"                       description\u003d\u0027Retrieve all deployable records\u0027),"},{"line_number":125,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:update\u0027,"},{"line_number":126,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":127,"context_line":"                       description\u003d\u0027Update deployable records\u0027),"},{"line_number":128,"context_line":"    policy.RuleDefault(\u0027cyborg:deployable:delete\u0027,"},{"line_number":129,"context_line":"                       \u0027rule:allow\u0027,"},{"line_number":130,"context_line":"                       description\u003d\u0027Delete deployable records\u0027),"},{"line_number":131,"context_line":"]"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1fa4df85_d3617b13","line":130,"range":{"start_line":125,"start_character":0,"end_line":130,"end_character":63},"in_reply_to":"1fa4df85_d393bbff","updated":"2020-03-13 06:31:16.000000000","message":"Ah yes, thanks for reminder","commit_id":"59a39d8b7aed877cf1b854aee714bc7c7b6b5156"}],"cyborg/tests/unit/api/controllers/v2/test_deployables.py":[{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"f7d310805c297321154d1cd4c0e9eba5974a0152","unresolved":false,"context_lines":[{"line_number":26,"context_line":"    def setUp(self):"},{"line_number":27,"context_line":"        super(TestDeployablesController, self).setUp()"},{"line_number":28,"context_line":"        self.headers \u003d self.gen_headers(self.context)"},{"line_number":29,"context_line":"        self.fake_deployable \u003d \\"},{"line_number":30,"context_line":"            fake_deployable.fake_deployable_obj(self.context)"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def _validate_links(self, links, deployable_uuid):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1fa4df85_e62b977f","line":29,"range":{"start_line":29,"start_character":31,"end_line":29,"end_character":32},"updated":"2020-03-13 06:58:37.000000000","message":"As I know, in many projects, the use of \u0027\\\u0027 is consciously reduced. We can use () as a newline character. If this line is\u003e 79 characters.\n\nHere I think we can do this way:\n        self.fake_deployable \u003d fake_deployable.fake_deployable_obj(\n            self.context)","commit_id":"7cf88998bf3db8a7beaa9c383e62174cb5643fd3"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"eb28ac0f4f0ef3d6257ff13fabea24863871a3e9","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                has_self_link \u003d True"},{"line_number":37,"context_line":"                url \u003d link[\u0027href\u0027]"},{"line_number":38,"context_line":"                components \u003d url.split(\u0027/\u0027)"},{"line_number":39,"context_line":"                self.assertEqual(components[-1], deployable_uuid)"},{"line_number":40,"context_line":"        self.assertTrue(has_self_link)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _validate_deployable(self, in_deployable, out_deployable):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_9bf99a81","line":39,"range":{"start_line":39,"start_character":15,"end_line":39,"end_character":65},"updated":"2020-03-18 07:33:02.000000000","message":"Just a quick question. Why do we need to validate the links? Is it intended to validate that a url is successfully constructed and sent to the Pecan test app?","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0fd2604450a1d976039f5138efe01b20b9af2b92","unresolved":false,"context_lines":[{"line_number":36,"context_line":"                has_self_link \u003d True"},{"line_number":37,"context_line":"                url \u003d link[\u0027href\u0027]"},{"line_number":38,"context_line":"                components \u003d url.split(\u0027/\u0027)"},{"line_number":39,"context_line":"                self.assertEqual(components[-1], deployable_uuid)"},{"line_number":40,"context_line":"        self.assertTrue(has_self_link)"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"    def _validate_deployable(self, in_deployable, out_deployable):"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_3e172248","line":39,"range":{"start_line":39,"start_character":15,"end_line":39,"end_character":65},"in_reply_to":"1fa4df85_9bf99a81","updated":"2020-03-19 02:53:34.000000000","message":"Yes, it is for validating the URL with the correct uuid.","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._validate_deployable(self.fake_deployable, out_deployable[0])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027cyborg.objects.Deployable.list\u0027)"},{"line_number":72,"context_line":"    def test_get_with_filters(self, mock_deployables):"},{"line_number":73,"context_line":"        mock_deployables.return_value \u003d [self.fake_deployable]"},{"line_number":74,"context_line":"        data \u003d self.get_json("},{"line_number":75,"context_line":"            self.DEPLOYABLE_URL + \"?filters.field\u003dlimit\u0026filters.value\u003d1\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_5f981369","line":72,"updated":"2020-03-16 10:00:25.000000000","message":"Can you add some comments fot this test case? That the filters should appear in pairs (\"?filters.field\u003dlimit\u0026filters.value\u003d1\"), it\u0027s different with other project\u0027s request (\"?limit\u003d1\").","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0fd2604450a1d976039f5138efe01b20b9af2b92","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self._validate_deployable(self.fake_deployable, out_deployable[0])"},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"    @mock.patch(\u0027cyborg.objects.Deployable.list\u0027)"},{"line_number":72,"context_line":"    def test_get_with_filters(self, mock_deployables):"},{"line_number":73,"context_line":"        mock_deployables.return_value \u003d [self.fake_deployable]"},{"line_number":74,"context_line":"        data \u003d self.get_json("},{"line_number":75,"context_line":"            self.DEPLOYABLE_URL + \"?filters.field\u003dlimit\u0026filters.value\u003d1\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_fe2aea7b","line":72,"in_reply_to":"1fa4df85_5f981369","updated":"2020-03-19 02:53:34.000000000","message":"Done","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":24872,"name":"YumengBao","email":"yumeng_bao@yahoo.com","username":"Yumeng_Bao"},"change_message_id":"eb28ac0f4f0ef3d6257ff13fabea24863871a3e9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def test_get_with_filters(self, mock_deployables):"},{"line_number":73,"context_line":"        mock_deployables.return_value \u003d [self.fake_deployable]"},{"line_number":74,"context_line":"        data \u003d self.get_json("},{"line_number":75,"context_line":"            self.DEPLOYABLE_URL + \"?filters.field\u003dlimit\u0026filters.value\u003d1\","},{"line_number":76,"context_line":"            headers\u003dself.headers)"},{"line_number":77,"context_line":"        out_deployable \u003d data[\u0027deployables\u0027]"},{"line_number":78,"context_line":"        mock_deployables.assert_called_once_with(mock.ANY,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_bb9d7658","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":73},"updated":"2020-03-18 07:33:02.000000000","message":"Just a reminder. Not yet tried this URL request.\nDon\u0027t forget to update the API-doc of deployable and show us an example there. ^^","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0fd2604450a1d976039f5138efe01b20b9af2b92","unresolved":false,"context_lines":[{"line_number":72,"context_line":"    def test_get_with_filters(self, mock_deployables):"},{"line_number":73,"context_line":"        mock_deployables.return_value \u003d [self.fake_deployable]"},{"line_number":74,"context_line":"        data \u003d self.get_json("},{"line_number":75,"context_line":"            self.DEPLOYABLE_URL + \"?filters.field\u003dlimit\u0026filters.value\u003d1\","},{"line_number":76,"context_line":"            headers\u003dself.headers)"},{"line_number":77,"context_line":"        out_deployable \u003d data[\u0027deployables\u0027]"},{"line_number":78,"context_line":"        mock_deployables.assert_called_once_with(mock.ANY,"}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_9e2176a2","line":75,"range":{"start_line":75,"start_character":11,"end_line":75,"end_character":73},"in_reply_to":"1fa4df85_bb9d7658","updated":"2020-03-19 02:53:34.000000000","message":"Yes,sure ;)","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"4b2b9e2edbbbd73622d613dcae9a41bb18377454","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch(\u0027cyborg.objects.Deployable.list\u0027)"},{"line_number":83,"context_line":"    def test_get_with_filters_not_match(self, mock_deployables):"},{"line_number":84,"context_line":"        mock_deployables.return_value \u003d []"},{"line_number":85,"context_line":"        data \u003d self.get_json("},{"line_number":86,"context_line":"            self.DEPLOYABLE_URL +"},{"line_number":87,"context_line":"            \"?filters.field\u003dname\u0026filters.value\u003dwrongname\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_ff98df75","line":84,"updated":"2020-03-16 10:00:25.000000000","message":"Can you add some comments for this test case? That we can clearlier to know why this is not match.","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":25738,"name":"Xinran WANG","email":"xin-ran.wang@intel.com","username":"Xinran"},"change_message_id":"0fd2604450a1d976039f5138efe01b20b9af2b92","unresolved":false,"context_lines":[{"line_number":81,"context_line":""},{"line_number":82,"context_line":"    @mock.patch(\u0027cyborg.objects.Deployable.list\u0027)"},{"line_number":83,"context_line":"    def test_get_with_filters_not_match(self, mock_deployables):"},{"line_number":84,"context_line":"        mock_deployables.return_value \u003d []"},{"line_number":85,"context_line":"        data \u003d self.get_json("},{"line_number":86,"context_line":"            self.DEPLOYABLE_URL +"},{"line_number":87,"context_line":"            \"?filters.field\u003dname\u0026filters.value\u003dwrongname\","}],"source_content_type":"text/x-python","patch_set":3,"id":"1fa4df85_be2472b0","line":84,"in_reply_to":"1fa4df85_ff98df75","updated":"2020-03-19 02:53:34.000000000","message":"Done","commit_id":"059841b955faebebd020929b1bd6565b7fa4e8ca"},{"author":{"_account_id":26458,"name":"Brin Zhang","email":"zhangbailin@inspur.com","username":"zhangbailin"},"change_message_id":"d194dd805b26e1fa9cad71820c39d2d68acff603","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    @mock.patch(\u0027cyborg.objects.Deployable.list\u0027)"},{"line_number":72,"context_line":"    def test_get_with_filters(self, mock_deployables):"},{"line_number":73,"context_line":"        mock_deployables.return_value \u003d [self.fake_deployable]"},{"line_number":74,"context_line":"        # TODO(Xinran) Add API doc to explain the usage of filter."},{"line_number":75,"context_line":"        # Add \"?filters.field\u003dlimit\u0026filters.value\u003d1\" in DEPLOYABLE_URL, in"},{"line_number":76,"context_line":"        # order to list the deployables with limited number which is 1."},{"line_number":77,"context_line":"        data \u003d self.get_json("}],"source_content_type":"text/x-python","patch_set":4,"id":"1fa4df85_9e6f36c4","line":74,"range":{"start_line":74,"start_character":10,"end_line":74,"end_character":22},"updated":"2020-03-19 03:04:30.000000000","message":"nit: TODO(Xinran):","commit_id":"a9ca2c5ece998b088314aa2ab38668a851e3b52a"}]}
