)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e16bb2460a1a535707f88c8a43b22c94619f35f9","unresolved":false,"context_lines":[{"line_number":15,"context_line":"are adapted to include new fields in the response called"},{"line_number":16,"context_line":"\"labels_merged\", \"labels_added\", \"labels_skipped\". The fields"},{"line_number":17,"context_line":"contain the differnces with the parent labels."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Change-Id: I1054c54da96005a49e874de6f4cf60b5db57fc02"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"1f493fa4_07df67d6","line":18,"updated":"2020-05-07 11:48:36.000000000","message":"story: 2007515\ntask: 39691","commit_id":"cbe7f8bbebd646b368ddefd03f9d62dc170d3425"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"39eb02f51d63fdceb9a7b68bd525897ba15cf99b","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Theodoros Tsioutsias \u003ctheodoros.tsioutsias@cern.ch\u003e"},{"line_number":5,"context_line":"CommitDate: 2020-05-07 12:46:50 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Labels override"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The post for both clusters and nodegroups is adapted to wait for a"},{"line_number":10,"context_line":"boolean flag called merge_labels. Based on this flag the API will"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"1f493fa4_40282b33","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":15},"updated":"2020-05-07 20:55:29.000000000","message":"Support merge_labels boolean flag?","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"}],"magnum/api/controllers/v1/cluster.py":[{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"af54ea71bf24f6583fd31dfc0f2848222ac8bad2","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    labels_override \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be used to override parent values.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    overriden_labels \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType(wtypes.text, six.integer_types,"},{"line_number":190,"context_line":"                                         bool, float, list))"},{"line_number":191,"context_line":"    \"\"\"One or more key/value pairs used to override the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4c43b2_1b798592","line":188,"range":{"start_line":188,"start_character":4,"end_line":188,"end_character":13},"updated":"2020-04-16 13:06:38.000000000","message":"overridden","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"bec504cef4fd42bd160f1a793cc461023c046f91","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    labels_override \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be used to override parent values.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    overriden_labels \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType(wtypes.text, six.integer_types,"},{"line_number":190,"context_line":"                                         bool, float, list))"},{"line_number":191,"context_line":"    \"\"\"One or more key/value pairs used to override the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_60fdb139","line":188,"range":{"start_line":188,"start_character":4,"end_line":188,"end_character":13},"in_reply_to":"3f4c43b2_1b798592","updated":"2020-04-21 21:24:48.000000000","message":"oops","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"e16bb2460a1a535707f88c8a43b22c94619f35f9","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    floating_ip_enabled \u003d wsme.wsattr(types.boolean)"},{"line_number":183,"context_line":"    \"\"\"Indicates whether created clusters should have a floating ip or not.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("}],"source_content_type":"text/x-python","patch_set":4,"id":"1f493fa4_e726bb16","line":185,"range":{"start_line":185,"start_character":4,"end_line":185,"end_character":16},"updated":"2020-05-07 11:48:36.000000000","message":"Can you also update the spec with \u0027merge\u0027?","commit_id":"cbe7f8bbebd646b368ddefd03f9d62dc170d3425"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"54c82ca88e66976cfe2eacecd4fa7c39f740867d","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    floating_ip_enabled \u003d wsme.wsattr(types.boolean)"},{"line_number":183,"context_line":"    \"\"\"Indicates whether created clusters should have a floating ip or not.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_20499f8a","line":185,"updated":"2020-05-07 21:27:52.000000000","message":"Should we use merge_labels_enabled? The current name is not like a typical boolean variable. Thoughts?","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"0a62f3ad1d5334fc7033118daf17720278a9fd96","unresolved":false,"context_lines":[{"line_number":182,"context_line":"    floating_ip_enabled \u003d wsme.wsattr(types.boolean)"},{"line_number":183,"context_line":"    \"\"\"Indicates whether created clusters should have a floating ip or not.\"\"\""},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_2f03a844","line":185,"in_reply_to":"1f493fa4_20499f8a","updated":"2020-05-11 14:23:05.000000000","message":"-1 to merge_labels_enabled. \"merge\" is already a positive verb, adding enabled. this makes it unnecessarily long.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"39eb02f51d63fdceb9a7b68bd525897ba15cf99b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_a0ebefd9","line":188,"range":{"start_line":188,"start_character":27,"end_line":188,"end_character":35},"updated":"2020-05-07 20:55:29.000000000","message":"if we change this to ArrayType, labels_merged will make more sense as a name. The parent keys have not merged into child but rather child has merged into parent.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"0a62f3ad1d5334fc7033118daf17720278a9fd96","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_0f006434","line":188,"range":{"start_line":188,"start_character":27,"end_line":188,"end_character":35},"in_reply_to":"1f493fa4_23e089fa","updated":"2020-05-11 14:23:05.000000000","message":"+1","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"14d30de25bc57ba99495b9a003e67c4bdc5accb5","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_0ab8fac5","line":188,"range":{"start_line":188,"start_character":27,"end_line":188,"end_character":35},"in_reply_to":"1f493fa4_23e089fa","updated":"2020-05-12 09:24:35.000000000","message":"\u003e Probably not. With dict type, we can know what\u0027s the original value\n \u003e of the label without checking the cluster template.\n\nYes, this is the reason we have a dict here. So the user/operator can quickly see what changed with one API query.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a09fb1b74036c15082049ad0ec84b33e18c830a6","unresolved":false,"context_lines":[{"line_number":185,"context_line":"    merge_labels \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":186,"context_line":"    \"\"\"Indicates whether the labels will be merged with the CT labels.\"\"\""},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_23e089fa","line":188,"range":{"start_line":188,"start_character":27,"end_line":188,"end_character":35},"in_reply_to":"1f493fa4_a0ebefd9","updated":"2020-05-07 22:38:21.000000000","message":"Probably not. With dict type, we can know what\u0027s the original value of the label without checking the cluster template.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"39eb02f51d63fdceb9a7b68bd525897ba15cf99b","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_c01b9b18","line":191,"range":{"start_line":191,"start_character":23,"end_line":191,"end_character":26},"updated":"2020-05-07 20:55:29.000000000","message":"that","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"14d30de25bc57ba99495b9a003e67c4bdc5accb5","unresolved":false,"context_lines":[{"line_number":188,"context_line":"    labels_merged \u003d wtypes.DictType("},{"line_number":189,"context_line":"            wtypes.text, types.MultiType("},{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_4e59c558","line":191,"range":{"start_line":191,"start_character":23,"end_line":191,"end_character":26},"in_reply_to":"1f493fa4_c01b9b18","updated":"2020-05-12 09:24:35.000000000","message":"Done","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a09fb1b74036c15082049ad0ec84b33e18c830a6","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    labels_skipped \u003d wtypes.ArrayType(wtypes.text)"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_6350d15f","line":193,"updated":"2020-05-07 22:38:21.000000000","message":"I\u0027m thinking if we should use dict for labels_add and labels_skipped to be consistent with the labels. And in my testing, I feel a bit inconsistent to see a \u0027label\u0027 without a value, which looks like a tag.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"0a62f3ad1d5334fc7033118daf17720278a9fd96","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    labels_skipped \u003d wtypes.ArrayType(wtypes.text)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_6ffda039","line":193,"in_reply_to":"1f493fa4_6350d15f","updated":"2020-05-11 14:23:05.000000000","message":"+1","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"f972309b3c6787f59828e73eac4f0e0a8f8599c9","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    labels_skipped \u003d wtypes.ArrayType(wtypes.text)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_368811c5","line":193,"in_reply_to":"1f493fa4_6350d15f","updated":"2020-05-12 08:32:18.000000000","message":"@ttstious, I agree with @flwang here, would be good to have all the diff labels as dicts rather than a mix of array and dict.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"14d30de25bc57ba99495b9a003e67c4bdc5accb5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":191,"context_line":"    \"\"\"Contains labels who have a value different than the parent labels.\"\"\""},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    labels_added \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":194,"context_line":"    \"\"\"Contains labels that do not exist in the parent.\"\"\""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"    labels_skipped \u003d wtypes.ArrayType(wtypes.text)"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_718f33cc","line":193,"in_reply_to":"ff570b3c_368811c5","updated":"2020-05-12 09:24:35.000000000","message":"it makes sense for skipped labels to show also the values, but IMHO the labels_added should be a list, since their values will be present in the \"labels\" field above.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"}],"magnum/api/controllers/v1/nodegroup.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"8ac657d3ce3427de1e4cadedbe9e95aff8dc2382","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            # If labels are provided check if they are used to"},{"line_number":330,"context_line":"            # override the values from the cluster."},{"line_number":331,"context_line":"            if nodegroup.labels_override:"},{"line_number":332,"context_line":"                labels \u003d cluste.labels"},{"line_number":333,"context_line":"                labels.update(nodegroup.labels)"},{"line_number":334,"context_line":"                nodegroup.labels \u003d labels"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4c43b2_c8148751","line":332,"updated":"2020-04-15 15:51:50.000000000","message":"pep8: F821 undefined name \u0027cluste\u0027","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"af54ea71bf24f6583fd31dfc0f2848222ac8bad2","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            # If labels are provided check if they are used to"},{"line_number":330,"context_line":"            # override the values from the cluster."},{"line_number":331,"context_line":"            if nodegroup.labels_override:"},{"line_number":332,"context_line":"                labels \u003d cluste.labels"},{"line_number":333,"context_line":"                labels.update(nodegroup.labels)"},{"line_number":334,"context_line":"                nodegroup.labels \u003d labels"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4c43b2_5d34b7fb","line":332,"range":{"start_line":332,"start_character":25,"end_line":332,"end_character":31},"updated":"2020-04-16 13:06:38.000000000","message":"s/cluste/cluster?","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"bec504cef4fd42bd160f1a793cc461023c046f91","unresolved":false,"context_lines":[{"line_number":329,"context_line":"            # If labels are provided check if they are used to"},{"line_number":330,"context_line":"            # override the values from the cluster."},{"line_number":331,"context_line":"            if nodegroup.labels_override:"},{"line_number":332,"context_line":"                labels \u003d cluste.labels"},{"line_number":333,"context_line":"                labels.update(nodegroup.labels)"},{"line_number":334,"context_line":"                nodegroup.labels \u003d labels"},{"line_number":335,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_40fa3542","line":332,"range":{"start_line":332,"start_character":25,"end_line":332,"end_character":31},"in_reply_to":"3f4c43b2_5d34b7fb","updated":"2020-04-21 21:24:48.000000000","message":"yeap","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"43d66a960edff03f641327632b1b970c211420b6","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    labels_override \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":130,"context_line":"    \"\"\"Indicates whether the labels will be used to override parent values.\"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    overridden_labels \u003d wtypes.DictType("},{"line_number":133,"context_line":"            wtypes.text, types.MultiType("},{"line_number":134,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":135,"context_line":"    \"\"\"Contains labels that were overriden.\"\"\""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    added_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":138,"context_line":"    \"\"\"Contains labels that did not exist in the parent.\"\"\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    skipped_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":141,"context_line":"    \"\"\"Contains labels that existed in the parent but were not inherited.\"\"\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def __init__(self, **kwargs):"},{"line_number":144,"context_line":"        super(NodeGroup, self).__init__()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_687fea14","line":141,"range":{"start_line":132,"start_character":0,"end_line":141,"end_character":68},"updated":"2020-04-27 13:00:10.000000000","message":"are these going to be grouped together or in alphabetical order when its displayed to the user?? it would be difficult to read otherwise.","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"b928b971c4f14d0d5ee736047c1d15df18046771","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    labels_override \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":130,"context_line":"    \"\"\"Indicates whether the labels will be used to override parent values.\"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    overridden_labels \u003d wtypes.DictType("},{"line_number":133,"context_line":"            wtypes.text, types.MultiType("},{"line_number":134,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":135,"context_line":"    \"\"\"Contains labels that were overriden.\"\"\""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    added_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":138,"context_line":"    \"\"\"Contains labels that did not exist in the parent.\"\"\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    skipped_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":141,"context_line":"    \"\"\"Contains labels that existed in the parent but were not inherited.\"\"\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def __init__(self, **kwargs):"},{"line_number":144,"context_line":"        super(NodeGroup, self).__init__()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_e3eafd0c","line":141,"range":{"start_line":132,"start_character":0,"end_line":141,"end_character":68},"in_reply_to":"1f493fa4_6857ea59","updated":"2020-04-27 13:22:36.000000000","message":"thanks for the clarification","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"41388b3660bd3781ab2087fad025871f0728c845","unresolved":false,"context_lines":[{"line_number":129,"context_line":"    labels_override \u003d wsme.wsattr(types.boolean, default\u003dFalse)"},{"line_number":130,"context_line":"    \"\"\"Indicates whether the labels will be used to override parent values.\"\"\""},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    overridden_labels \u003d wtypes.DictType("},{"line_number":133,"context_line":"            wtypes.text, types.MultiType("},{"line_number":134,"context_line":"                wtypes.text, six.integer_types, bool, float))"},{"line_number":135,"context_line":"    \"\"\"Contains labels that were overriden.\"\"\""},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    added_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":138,"context_line":"    \"\"\"Contains labels that did not exist in the parent.\"\"\""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"    skipped_labels \u003d wtypes.ArrayType(wtypes.text)"},{"line_number":141,"context_line":"    \"\"\"Contains labels that existed in the parent but were not inherited.\"\"\""},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def __init__(self, **kwargs):"},{"line_number":144,"context_line":"        super(NodeGroup, self).__init__()"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_6857ea59","line":141,"range":{"start_line":132,"start_character":0,"end_line":141,"end_character":68},"in_reply_to":"1f493fa4_687fea14","updated":"2020-04-27 13:08:02.000000000","message":"the order is set in the client,\nthe response payload of the API is a json (no order)","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"}],"magnum/api/utils.py":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"df87a39fba1277feb0932b85de5849306e4bb5fc","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    return resource_data"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def get_overriden_labels(parent_labels, labels):"},{"line_number":141,"context_line":"    SKIPPED \u003d \"SKIPPED_LABELS\""},{"line_number":142,"context_line":"    overriden_labels \u003d {}"},{"line_number":143,"context_line":"    for key, value in labels.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_604811cc","line":140,"updated":"2020-04-21 20:53:22.000000000","message":"this will be executed in cluster list right?","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"bec504cef4fd42bd160f1a793cc461023c046f91","unresolved":false,"context_lines":[{"line_number":137,"context_line":"    return resource_data"},{"line_number":138,"context_line":""},{"line_number":139,"context_line":""},{"line_number":140,"context_line":"def get_overriden_labels(parent_labels, labels):"},{"line_number":141,"context_line":"    SKIPPED \u003d \"SKIPPED_LABELS\""},{"line_number":142,"context_line":"    overriden_labels \u003d {}"},{"line_number":143,"context_line":"    for key, value in labels.items():"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_0085cdad","line":140,"in_reply_to":"1f493fa4_604811cc","updated":"2020-04-21 21:24:48.000000000","message":"no. only on cluster or nodegroup show.","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"d4cde34432f4960e3a03843a9d0cfd79d6f4e322","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."},{"line_number":153,"context_line":"    skipped \u003d [key for key in parent_labels.keys() if key not in labels]"},{"line_number":154,"context_line":"    if skipped:"},{"line_number":155,"context_line":"        overriden_labels[SKIPPED] \u003d skipped"},{"line_number":156,"context_line":"    return overriden_labels"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f4c43b2_9ee1cb2d","line":155,"range":{"start_line":155,"start_character":25,"end_line":155,"end_character":32},"updated":"2020-04-20 12:10:11.000000000","message":"skipped are the not overriden labels?","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"c9efae1e3ac8ae1ed1df28f1d0e33d4c86ddb678","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."},{"line_number":153,"context_line":"    skipped \u003d [key for key in parent_labels.keys() if key not in labels]"},{"line_number":154,"context_line":"    if skipped:"},{"line_number":155,"context_line":"        overriden_labels[SKIPPED] \u003d skipped"},{"line_number":156,"context_line":"    return overriden_labels"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_887d7fb3","line":155,"range":{"start_line":155,"start_character":25,"end_line":155,"end_character":32},"in_reply_to":"1f493fa4_4004f517","updated":"2020-04-22 05:08:49.000000000","message":"So the \"SKIPPED_LABELS\" will be like a dynamic label only be displayed when user doing cluster showing? And it won\u0027t save in DB, right?","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"bec504cef4fd42bd160f1a793cc461023c046f91","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."},{"line_number":153,"context_line":"    skipped \u003d [key for key in parent_labels.keys() if key not in labels]"},{"line_number":154,"context_line":"    if skipped:"},{"line_number":155,"context_line":"        overriden_labels[SKIPPED] \u003d skipped"},{"line_number":156,"context_line":"    return overriden_labels"}],"source_content_type":"text/x-python","patch_set":1,"id":"1f493fa4_4004f517","line":155,"range":{"start_line":155,"start_character":25,"end_line":155,"end_character":32},"in_reply_to":"3f4c43b2_9ee1cb2d","updated":"2020-04-21 21:24:48.000000000","message":"in case the user does not override with --override-labels and just provides new ones at creation time, some of the labels might be skipped. meaning:\n\ncluster_template.labels \u003d {label1: value1, label2:value2}\n\nand the user creates a cluster with the current functionality (without --override-labels):\nopenstack coe cluster create --cluster-template ... --labels label1\u003dvalue3 test_cluster\n\nin this case the show output will have:\noverridden_labels \u003d {label1: value3 (was value1)}\nskipped_labels \u003d [label2] # which was not provided at all","commit_id":"ad57a8d5760b34cdcb3e571725a2efde6ef07674"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"d3dc687b8fb5544cfd6c7ac04c5d46aeae97f459","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        try:"},{"line_number":153,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":154,"context_line":"            if parent_value !\u003d value:"},{"line_number":155,"context_line":"                overridden_labels[key] \u003d \"%s (was %s)\" % (value, parent_value)"},{"line_number":156,"context_line":"        except KeyError:"},{"line_number":157,"context_line":"            overridden_labels[key] \u003d \"%s (not in parent)\" % value"},{"line_number":158,"context_line":"    # In case the labels of the parent were tottaly overridden and"}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_00b6048b","line":155,"range":{"start_line":155,"start_character":42,"end_line":155,"end_character":53},"updated":"2020-04-27 09:53:46.000000000","message":"if we can use a key for this similar to SKIPPED_LABELS or a new variable for this, it would be preferable to appending this text","commit_id":"b106163b3ba77c59510252f37acacdd116a954ee"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"d3dc687b8fb5544cfd6c7ac04c5d46aeae97f459","unresolved":false,"context_lines":[{"line_number":154,"context_line":"            if parent_value !\u003d value:"},{"line_number":155,"context_line":"                overridden_labels[key] \u003d \"%s (was %s)\" % (value, parent_value)"},{"line_number":156,"context_line":"        except KeyError:"},{"line_number":157,"context_line":"            overridden_labels[key] \u003d \"%s (not in parent)\" % value"},{"line_number":158,"context_line":"    # In case the labels of the parent were tottaly overridden and"},{"line_number":159,"context_line":"    # there are keys in the parent dict missing from the resulting"},{"line_number":160,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."}],"source_content_type":"text/x-python","patch_set":2,"id":"1f493fa4_809054ef","line":157,"range":{"start_line":157,"start_character":38,"end_line":157,"end_character":56},"updated":"2020-04-27 09:53:46.000000000","message":"same comment as above","commit_id":"b106163b3ba77c59510252f37acacdd116a954ee"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"b928b971c4f14d0d5ee736047c1d15df18046771","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        try:"},{"line_number":146,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":147,"context_line":"            if parent_value !\u003d value:"},{"line_number":148,"context_line":"                overridden_labels[key] \u003d \"%s (was %s)\" % (value, parent_value)"},{"line_number":149,"context_line":"        except KeyError:"},{"line_number":150,"context_line":"            added_labels.append(key)"},{"line_number":151,"context_line":"    # In case the labels of the parent were tottaly overridden and"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_035d69e8","line":148,"range":{"start_line":148,"start_character":16,"end_line":148,"end_character":33},"updated":"2020-04-27 13:22:36.000000000","message":"only show the old k/v pair as the new is shown in labels field","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"b928b971c4f14d0d5ee736047c1d15df18046771","unresolved":false,"context_lines":[{"line_number":150,"context_line":"            added_labels.append(key)"},{"line_number":151,"context_line":"    # In case the labels of the parent were tottaly overridden and"},{"line_number":152,"context_line":"    # there are keys in the parent dict missing from the resulting"},{"line_number":153,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."},{"line_number":154,"context_line":"    skipped_labels \u003d [key for key in parent_labels.keys() if key not in labels]"},{"line_number":155,"context_line":"    return overridden_labels, added_labels, skipped_labels"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_c3d8a17c","line":153,"range":{"start_line":153,"start_character":36,"end_line":153,"end_character":50},"updated":"2020-04-27 13:22:36.000000000","message":"outdated","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"b928b971c4f14d0d5ee736047c1d15df18046771","unresolved":false,"context_lines":[{"line_number":151,"context_line":"    # In case the labels of the parent were tottaly overridden and"},{"line_number":152,"context_line":"    # there are keys in the parent dict missing from the resulting"},{"line_number":153,"context_line":"    # labels we add them under the \"SKIPPED_LABELS\" key."},{"line_number":154,"context_line":"    skipped_labels \u003d [key for key in parent_labels.keys() if key not in labels]"},{"line_number":155,"context_line":"    return overridden_labels, added_labels, skipped_labels"}],"source_content_type":"text/x-python","patch_set":3,"id":"1f493fa4_43dbf17a","line":154,"range":{"start_line":154,"start_character":4,"end_line":154,"end_character":18},"updated":"2020-04-27 13:22:36.000000000","message":"would it be useful to provide user with the value of what was skipped here as well rather than just the key.","commit_id":"62c1e84fff9bd88b715c604a02cbadf67cc8534e"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a09fb1b74036c15082049ad0ec84b33e18c830a6","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    return resource_data"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def get_labels_diff(parent_labels, labels):"},{"line_number":142,"context_line":"    # Merged are the labels that exist in both the parent and the object but"},{"line_number":143,"context_line":"    # have a different value."},{"line_number":144,"context_line":"    merged_labels \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_a3ee59b1","line":141,"updated":"2020-05-07 22:38:21.000000000","message":"I\u0027d like to see a fully covered test suite for this function since it\u0027s important. Thanks.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"0a62f3ad1d5334fc7033118daf17720278a9fd96","unresolved":false,"context_lines":[{"line_number":138,"context_line":"    return resource_data"},{"line_number":139,"context_line":""},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"def get_labels_diff(parent_labels, labels):"},{"line_number":142,"context_line":"    # Merged are the labels that exist in both the parent and the object but"},{"line_number":143,"context_line":"    # have a different value."},{"line_number":144,"context_line":"    merged_labels \u003d {}"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_4ffa5c42","line":141,"in_reply_to":"1f493fa4_a3ee59b1","updated":"2020-05-11 14:23:05.000000000","message":"+1","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"f972309b3c6787f59828e73eac4f0e0a8f8599c9","unresolved":false,"context_lines":[{"line_number":141,"context_line":"def get_labels_diff(parent_labels, labels):"},{"line_number":142,"context_line":"    # Merged are the labels that exist in both the parent and the object but"},{"line_number":143,"context_line":"    # have a different value."},{"line_number":144,"context_line":"    merged_labels \u003d {}"},{"line_number":145,"context_line":"    # Added are the labels that exist in the object and not in the parent."},{"line_number":146,"context_line":"    added_labels \u003d []"},{"line_number":147,"context_line":"    # We consider as skipped, the labels that exist in the parent but not in"}],"source_content_type":"text/x-python","patch_set":5,"id":"ff570b3c_96c2bde8","line":144,"range":{"start_line":144,"start_character":4,"end_line":144,"end_character":17},"updated":"2020-05-12 08:32:18.000000000","message":"can we also make these labels_overridden, labels_added, labels_skipped? would make it easier for grep in the future.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"872ecc6e6308d9e25c5cc1a05e751e0ed3303efa","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":153,"context_line":"            if parent_value !\u003d value:"},{"line_number":154,"context_line":"                merged_labels[key] \u003d parent_value"},{"line_number":155,"context_line":"        except KeyError:"},{"line_number":156,"context_line":"            added_labels.append(key)"},{"line_number":157,"context_line":"    skipped_labels \u003d [key for key in parent_labels.keys() if key not in labels]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_609287a1","line":154,"range":{"start_line":154,"start_character":15,"end_line":154,"end_character":49},"updated":"2020-05-07 20:46:16.000000000","message":"I am in support of the fact that we are using merge_labels boolean flag but the definition of merged_label here is ambiguous. Merged implies those are the labels which have taken effect whereas here, merged labels are the parent label which are no longer in effect. It is maybe better to call this replaced_labels or overridden_labels. I would expect the value of the merged labels to be the child value rather than the parent value but that adds little value. This comment also applies to the client side where where have labels_merged, whereas these are labels_overridden.\n\nIt may be okay to leave this as merged labels if this type(merged_labels)\u003d\u003dlist.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"a09fb1b74036c15082049ad0ec84b33e18c830a6","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":153,"context_line":"            if parent_value !\u003d value:"},{"line_number":154,"context_line":"                merged_labels[key] \u003d parent_value"},{"line_number":155,"context_line":"        except KeyError:"},{"line_number":156,"context_line":"            added_labels.append(key)"},{"line_number":157,"context_line":"    skipped_labels \u003d [key for key in parent_labels.keys() if key not in labels]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_6339f13d","line":154,"range":{"start_line":154,"start_character":15,"end_line":154,"end_character":49},"in_reply_to":"1f493fa4_609287a1","updated":"2020-05-07 22:38:21.000000000","message":"That\u0027s a good point. I kind of like labels_overridden here.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"e00af4475c8dc4a16d95ca8d1ccf20ee2e505d0e","unresolved":false,"context_lines":[{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":153,"context_line":"            if parent_value !\u003d value:"},{"line_number":154,"context_line":"                merged_labels[key] \u003d parent_value"},{"line_number":155,"context_line":"        except KeyError:"},{"line_number":156,"context_line":"            added_labels.append(key)"},{"line_number":157,"context_line":"    skipped_labels \u003d [key for key in parent_labels.keys() if key not in labels]"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f493fa4_a0bacf06","line":154,"range":{"start_line":154,"start_character":15,"end_line":154,"end_character":49},"in_reply_to":"1f493fa4_609287a1","updated":"2020-05-07 20:51:49.000000000","message":"lets also call these labels_* for searchability.","commit_id":"5f7af0560c7c979e6a6d1792cc6ea5e4156817c3"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"f972309b3c6787f59828e73eac4f0e0a8f8599c9","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    added_labels \u003d []"},{"line_number":147,"context_line":"    # We consider as skipped, the labels that exist in the parent but not in"},{"line_number":148,"context_line":"    # the object\u0027s labels."},{"line_number":149,"context_line":"    skipped_labels \u003d []"},{"line_number":150,"context_line":"    for key, value in labels.items():"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            parent_value \u003d parent_labels[key]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_b661c13c","line":149,"range":{"start_line":149,"start_character":4,"end_line":149,"end_character":23},"updated":"2020-05-12 08:32:18.000000000","message":"this is redundant","commit_id":"ceec1d8b91e30cc3708346c224bf176bb4ad97bf"},{"author":{"_account_id":27057,"name":"Theodoros Tsioutsias","email":"theodoros.tsioutsias@cern.ch","username":"ttsiouts"},"change_message_id":"14d30de25bc57ba99495b9a003e67c4bdc5accb5","unresolved":false,"context_lines":[{"line_number":146,"context_line":"    added_labels \u003d []"},{"line_number":147,"context_line":"    # We consider as skipped, the labels that exist in the parent but not in"},{"line_number":148,"context_line":"    # the object\u0027s labels."},{"line_number":149,"context_line":"    skipped_labels \u003d []"},{"line_number":150,"context_line":"    for key, value in labels.items():"},{"line_number":151,"context_line":"        try:"},{"line_number":152,"context_line":"            parent_value \u003d parent_labels[key]"}],"source_content_type":"text/x-python","patch_set":6,"id":"ff570b3c_717d73b0","line":149,"range":{"start_line":149,"start_character":4,"end_line":149,"end_character":23},"in_reply_to":"ff570b3c_b661c13c","updated":"2020-05-12 09:24:35.000000000","message":"Done","commit_id":"ceec1d8b91e30cc3708346c224bf176bb4ad97bf"},{"author":{"_account_id":29425,"name":"Diogo Guerra","email":"diogo.filipe.tomas.guerra@cern.ch","username":"dioguerra"},"change_message_id":"87df1219c335c5c9d25d8b6afa1fcec0210f60bf","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        k: v for k, v in parent_labels.items() if k not in labels"},{"line_number":151,"context_line":"    }"},{"line_number":152,"context_line":"    for key, value in labels.items():"},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":155,"context_line":"            if parent_value !\u003d value:"},{"line_number":156,"context_line":"                labels_overridden[key] \u003d parent_value"},{"line_number":157,"context_line":"        except KeyError:"},{"line_number":158,"context_line":"            labels_added[key] \u003d value"},{"line_number":159,"context_line":"    return labels_overridden, labels_added, labels_skipped"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_3df9f0c7","line":158,"range":{"start_line":153,"start_character":7,"end_line":158,"end_character":37},"updated":"2020-05-13 10:09:17.000000000","message":"using a try except to validate values is not very pythonic.\n\nMaybe use a get\n\nvalue \u003d d.get(key, None)\nand test for that","commit_id":"61648f7c7ce0b001cfd1a43525a3a96ab8549ec5"},{"author":{"_account_id":29425,"name":"Diogo Guerra","email":"diogo.filipe.tomas.guerra@cern.ch","username":"dioguerra"},"change_message_id":"5726036d54ea3da7b81fd5b35e12ce9d7498cb3d","unresolved":false,"context_lines":[{"line_number":150,"context_line":"        k: v for k, v in parent_labels.items() if k not in labels"},{"line_number":151,"context_line":"    }"},{"line_number":152,"context_line":"    for key, value in labels.items():"},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            parent_value \u003d parent_labels[key]"},{"line_number":155,"context_line":"            if parent_value !\u003d value:"},{"line_number":156,"context_line":"                labels_overridden[key] \u003d parent_value"},{"line_number":157,"context_line":"        except KeyError:"},{"line_number":158,"context_line":"            labels_added[key] \u003d value"},{"line_number":159,"context_line":"    return labels_overridden, labels_added, labels_skipped"}],"source_content_type":"text/x-python","patch_set":8,"id":"ff570b3c_ddb554cf","line":158,"range":{"start_line":153,"start_character":7,"end_line":158,"end_character":37},"in_reply_to":"ff570b3c_3df9f0c7","updated":"2020-05-13 10:17:37.000000000","message":"Disregard this","commit_id":"61648f7c7ce0b001cfd1a43525a3a96ab8549ec5"}],"magnum/tests/unit/api/controllers/v1/test_cluster.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"c0306a14192eab9fa8c8345654fd57c7c4fb7993","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        self.assertIn(\u0027links\u0027, response.keys())"},{"line_number":245,"context_line":"        self.assertEqual(2, len(response[\u0027links\u0027]))"},{"line_number":246,"context_line":"        self.assertIn(uuid, response[\u0027links\u0027][0][\u0027href\u0027])"},{"line_number":247,"context_line":"        for l in response[\u0027links\u0027]:"},{"line_number":248,"context_line":"            bookmark \u003d l[\u0027rel\u0027] \u003d\u003d \u0027bookmark\u0027"},{"line_number":249,"context_line":"            self.assertTrue(self.validate_link(l[\u0027href\u0027],"},{"line_number":250,"context_line":"                                               bookmark\u003dbookmark))"}],"source_content_type":"text/x-python","patch_set":7,"id":"ff570b3c_c4bc7807","line":247,"updated":"2020-05-12 12:10:31.000000000","message":"pep8: E741 ambiguous variable name \u0027l\u0027","commit_id":"38dc335ea45768b820a0e1260cf6883b4db1e3b6"}],"releasenotes/notes/merge-labels-9ba7deffc5bb3c7f.yaml":[{"author":{"_account_id":20498,"name":"Spyros Trigazis","email":"spyridon.trigazis@cern.ch","username":"strigazi"},"change_message_id":"3817a8b49aef283ab674b078143aacf6694ee96f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new boolean flag is introduced in the CLuster and Nodegroup create API"},{"line_number":5,"context_line":"    calls. Using this flag, users can override label values when clusters or"},{"line_number":6,"context_line":"    nodegroups are created without having to specify all the inherited values."},{"line_number":7,"context_line":"    To do that, users have to specify the labels with their new values and use"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff570b3c_22a38ba0","line":4,"range":{"start_line":4,"start_character":44,"end_line":4,"end_character":51},"updated":"2020-05-13 09:43:11.000000000","message":"Cluster","commit_id":"61648f7c7ce0b001cfd1a43525a3a96ab8549ec5"},{"author":{"_account_id":28022,"name":"Bharat Kunwar","email":"brtknr@bath.edu","username":"brtknr"},"change_message_id":"a1182644cce6b4743643b515f86ceebc6b1ee284","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new boolean flag is introduced in the CLuster and Nodegroup create API"},{"line_number":5,"context_line":"    calls. Using this flag, users can override label values when clusters or"},{"line_number":6,"context_line":"    nodegroups are created without having to specify all the inherited values."},{"line_number":7,"context_line":"    To do that, users have to specify the labels with their new values and use"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff570b3c_81d6c0c2","line":4,"range":{"start_line":4,"start_character":44,"end_line":4,"end_character":51},"in_reply_to":"ff570b3c_22a38ba0","updated":"2020-05-14 06:22:01.000000000","message":"+1","commit_id":"61648f7c7ce0b001cfd1a43525a3a96ab8549ec5"},{"author":{"_account_id":6484,"name":"Feilong Wang","email":"hustemb@gmail.com","username":"flwang"},"change_message_id":"4a23588821e9bd97393423fa954f2a4924659c99","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    A new boolean flag is introduced in the CLuster and Nodegroup create API"},{"line_number":5,"context_line":"    calls. Using this flag, users can override label values when clusters or"},{"line_number":6,"context_line":"    nodegroups are created without having to specify all the inherited values."},{"line_number":7,"context_line":"    To do that, users have to specify the labels with their new values and use"}],"source_content_type":"text/x-yaml","patch_set":8,"id":"ff570b3c_c41d66be","line":4,"range":{"start_line":4,"start_character":44,"end_line":4,"end_character":51},"in_reply_to":"ff570b3c_81d6c0c2","updated":"2020-05-14 07:02:34.000000000","message":"Like you guys, I\u0027m super keen to get this in and we can fix such typo later.","commit_id":"61648f7c7ce0b001cfd1a43525a3a96ab8549ec5"}]}
