)]}'
{"specs/10.0/nics-and-nodes-attributes-via-plugin.rst":[{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":264,"context_line":"      ]"},{"line_number":265,"context_line":"      \"value\": \"balance-rr\","},{"line_number":266,"context_line":"    },"},{"line_number":267,"context_line":"    \"plugin_a\": {"},{"line_number":268,"context_line":"      \"attribute_a\": {"},{"line_number":269,"context_line":"        \"label\": \"BOND attribute A\","},{"line_number":270,"context_line":"        \"weight\": 20"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_6b886523","line":267,"updated":"2016-03-21 15:25:48.000000000","message":"Please make the same as /nodes/:id/interfaces\nput all the attributes to \u0027attributes\u0027 array","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"159e717e8add992a20eaea4118f54b7f55c0088c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"      ]"},{"line_number":265,"context_line":"      \"value\": \"balance-rr\","},{"line_number":266,"context_line":"    },"},{"line_number":267,"context_line":"    \"plugin_a\": {"},{"line_number":268,"context_line":"      \"attribute_a\": {"},{"line_number":269,"context_line":"        \"label\": \"BOND attribute A\","},{"line_number":270,"context_line":"        \"weight\": 20"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_dd731414","line":267,"in_reply_to":"fa0719c6_6b886523","updated":"2016-03-22 09:56:29.000000000","message":"Done","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"type\": \"checkbox\","},{"line_number":280,"context_line":"        \"value\": False"},{"line_number":281,"context_line":"      }"},{"line_number":282,"context_line":"    }"},{"line_number":283,"context_line":"  }"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_ab99dd70","line":282,"updated":"2016-03-21 15:25:48.000000000","message":"no plugin metadata. please put metadata with at least title field","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"159e717e8add992a20eaea4118f54b7f55c0088c","unresolved":false,"context_lines":[{"line_number":279,"context_line":"        \"type\": \"checkbox\","},{"line_number":280,"context_line":"        \"value\": False"},{"line_number":281,"context_line":"      }"},{"line_number":282,"context_line":"    }"},{"line_number":283,"context_line":"  }"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_dd1cb4c3","line":282,"in_reply_to":"fa0719c6_ab99dd70","updated":"2016-03-22 09:56:29.000000000","message":"Done","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":315,"context_line":"          \"value\": \"\""},{"line_number":316,"context_line":"        },"},{"line_number":317,"context_line":"        \"plugin_a\": {"},{"line_number":318,"context_line":"          \"attributes\": {"},{"line_number":319,"context_line":"            \"attribute_a\": {"},{"line_number":320,"context_line":"              \"label\": \"NIC attribute A\","},{"line_number":321,"context_line":"              \"weight\": 20"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_ebf8f57e","line":318,"range":{"start_line":318,"start_character":11,"end_line":318,"end_character":21},"updated":"2016-03-21 15:25:48.000000000","message":"please make array of attributes, not the hash","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            }"},{"line_number":333,"context_line":"          },"},{"line_number":334,"context_line":"          \"metadata\": {"},{"line_number":335,"context_line":"            \"class\": \"plugin\","},{"line_number":336,"context_line":"            \"nic_plugin_id\": 1"},{"line_number":337,"context_line":"          }"},{"line_number":338,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_ab355d47","line":335,"updated":"2016-03-21 15:25:48.000000000","message":"Please add title to display on UI","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"159e717e8add992a20eaea4118f54b7f55c0088c","unresolved":false,"context_lines":[{"line_number":332,"context_line":"            }"},{"line_number":333,"context_line":"          },"},{"line_number":334,"context_line":"          \"metadata\": {"},{"line_number":335,"context_line":"            \"class\": \"plugin\","},{"line_number":336,"context_line":"            \"nic_plugin_id\": 1"},{"line_number":337,"context_line":"          }"},{"line_number":338,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_5d48a487","line":335,"in_reply_to":"fa0719c6_ab355d47","updated":"2016-03-22 09:56:29.000000000","message":"Done","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":367,"context_line":"          \"value\": \"balance-rr\","},{"line_number":368,"context_line":"        },"},{"line_number":369,"context_line":"        \"plugin_a\": {"},{"line_number":370,"context_line":"          \"attributes\": {"},{"line_number":371,"context_line":"            \"attribute_a\": {"},{"line_number":372,"context_line":"              \"label\": \"BOND attribute A\","},{"line_number":373,"context_line":"              \"weight\": 20,"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_eb3f5523","line":370,"updated":"2016-03-21 15:25:48.000000000","message":"Please make array","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"425c2dcf8c83466558d270a9cd5b8ceeaf3b1d13","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            }"},{"line_number":385,"context_line":"          },"},{"line_number":386,"context_line":"          \"metadata\": {"},{"line_number":387,"context_line":"            \"class\": \"plugin\","},{"line_number":388,"context_line":"            \"bond_plugin_id\": 1"},{"line_number":389,"context_line":"          }"},{"line_number":390,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_0b1e09ba","line":387,"updated":"2016-03-21 15:25:48.000000000","message":"Please add title as described above","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"159e717e8add992a20eaea4118f54b7f55c0088c","unresolved":false,"context_lines":[{"line_number":384,"context_line":"            }"},{"line_number":385,"context_line":"          },"},{"line_number":386,"context_line":"          \"metadata\": {"},{"line_number":387,"context_line":"            \"class\": \"plugin\","},{"line_number":388,"context_line":"            \"bond_plugin_id\": 1"},{"line_number":389,"context_line":"          }"},{"line_number":390,"context_line":"        }"}],"source_content_type":"text/x-rst","patch_set":10,"id":"fa0719c6_1d4e2c96","line":387,"in_reply_to":"fa0719c6_0b1e09ba","updated":"2016-03-22 09:56:29.000000000","message":"Done","commit_id":"232c3125eed29f3a95c9b3b466aa7cd3c5ffc2c8"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional interfaces(NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_53f57081","line":20,"range":{"start_line":20,"start_character":65,"end_line":20,"end_character":66},"updated":"2016-04-11 12:42:23.000000000","message":"+space","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional interfaces(NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_736d0c32","line":20,"range":{"start_line":20,"start_character":20,"end_line":20,"end_character":29},"updated":"2016-04-11 12:42:23.000000000","message":"mechanism","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional interfaces(NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_d7bb3774","line":20,"range":{"start_line":20,"start_character":65,"end_line":20,"end_character":66},"in_reply_to":"7a1b2928_53f57081","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional interfaces(NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_b7c03be2","line":20,"range":{"start_line":20,"start_character":20,"end_line":20,"end_character":29},"in_reply_to":"7a1b2928_736d0c32","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":26,"context_line":"----------------"},{"line_number":27,"context_line":"Proposed changes"},{"line_number":28,"context_line":"----------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_3e835bce","line":29,"updated":"2016-04-11 12:42:23.000000000","message":"we usually have concise description here","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":26,"context_line":"----------------"},{"line_number":27,"context_line":"Proposed changes"},{"line_number":28,"context_line":"----------------"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_f22be131","line":29,"in_reply_to":"7a1b2928_3e835bce","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  screens. In case of Node attributes it should be done in context of [0]_"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_1e813f4b","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":63},"updated":"2016-04-11 12:42:23.000000000","message":"afaic, there should be an ability to fetch default attributes separately (the same way as for bonds)","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":35,"context_line":"  screens. In case of Node attributes it should be done in context of [0]_"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_921d4dc0","line":38,"range":{"start_line":38,"start_character":26,"end_line":38,"end_character":63},"in_reply_to":"7a1b2928_1e813f4b","updated":"2016-04-12 18:52:25.000000000","message":"not sure. In case of bonds it\u0027s forced action because they are created on client side and we need info about additional plugin attributes for them.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":45,"context_line":"  default NIC and BOND data."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":48,"context_line":"  attributes data."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_7ef953c8","line":45,"range":{"start_line":45,"start_character":14,"end_line":45,"end_character":22},"updated":"2016-04-11 12:42:23.000000000","message":"default configuration does not consider bonds (see get_default_interfaces_configuration)","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":45,"context_line":"  default NIC and BOND data."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":48,"context_line":"  attributes data."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_72f8717d","line":45,"range":{"start_line":45,"start_character":14,"end_line":45,"end_character":22},"in_reply_to":"7a1b2928_7ef953c8","updated":"2016-04-12 18:52:25.000000000","message":"right","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":48,"context_line":"  attributes data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* In case of bond creation, all interfaces should have the same set of"},{"line_number":51,"context_line":"  attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_5ee4570c","line":50,"range":{"start_line":50,"start_character":32,"end_line":50,"end_character":42},"updated":"2016-04-11 12:42:23.000000000","message":"slave interfaces?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":47,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":48,"context_line":"  attributes data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* In case of bond creation, all interfaces should have the same set of"},{"line_number":51,"context_line":"  attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_03e28d03","line":50,"range":{"start_line":50,"start_character":32,"end_line":50,"end_character":42},"in_reply_to":"7a1b2928_5ee4570c","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  attributes data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* In case of bond creation, all interfaces should have the same set of"},{"line_number":51,"context_line":"  attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_5ece175b","line":51,"updated":"2016-04-11 12:42:23.000000000","message":"is it about attributes keys or exact match of attributes?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":48,"context_line":"  attributes data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* In case of bond creation, all interfaces should have the same set of"},{"line_number":51,"context_line":"  attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_23822901","line":51,"in_reply_to":"7a1b2928_5ece175b","updated":"2016-04-12 18:52:25.000000000","message":"exact match. Even with only same keys we can have different representation of attribute which provide inconsistency in bond section on UI.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"New default core attributes for NIC and BOND should be described in"},{"line_number":61,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":62,"context_line":"`bond_metadata` in Release."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Plugin releated information with NICs, BONDs and Nodes default attributes"},{"line_number":65,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_fe9443e9","line":62,"updated":"2016-04-11 12:42:23.000000000","message":"will there be some release-agnostic (common) attributes? for now, MTU and offloadings can be changed even for node that is not in environment.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"New default core attributes for NIC and BOND should be described in"},{"line_number":61,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":62,"context_line":"`bond_metadata` in Release."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Plugin releated information with NICs, BONDs and Nodes default attributes"},{"line_number":65,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_c96c339f","line":62,"in_reply_to":"7a1b2928_fe9443e9","updated":"2016-04-12 18:52:25.000000000","message":"as I see for now: mtu, disable_offloading, sriov, dpdk and mode as common bond attribute. In other words interface_properties are common attributes.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":61,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":62,"context_line":"`bond_metadata` in Release."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Plugin releated information with NICs, BONDs and Nodes default attributes"},{"line_number":65,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"},{"line_number":66,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":67,"context_line":"Plugins v5 spec [1]_)."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_9e2c2fad","line":64,"range":{"start_line":64,"start_character":7,"end_line":64,"end_character":15},"updated":"2016-04-11 12:42:23.000000000","message":"typo","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":61,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":62,"context_line":"`bond_metadata` in Release."},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"Plugin releated information with NICs, BONDs and Nodes default attributes"},{"line_number":65,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"},{"line_number":66,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":67,"context_line":"Plugins v5 spec [1]_)."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_a99c576a","line":64,"range":{"start_line":64,"start_character":7,"end_line":64,"end_character":15},"in_reply_to":"7a1b2928_9e2c2fad","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":70,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":71,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":72,"context_line":"node. By default \u0027attributes\u0027 fields of this models should be filled with data"},{"line_number":73,"context_line":"from plugin `nic_attributes_metadata`, `node_attributes_metadata` and"},{"line_number":74,"context_line":"`bond_attributes_metadata` respectively."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_d951a110","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":44},"updated":"2016-04-11 12:42:23.000000000","message":"these","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":69,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":70,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":71,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":72,"context_line":"node. By default \u0027attributes\u0027 fields of this models should be filled with data"},{"line_number":73,"context_line":"from plugin `nic_attributes_metadata`, `node_attributes_metadata` and"},{"line_number":74,"context_line":"`bond_attributes_metadata` respectively."},{"line_number":75,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_0988eb21","line":72,"range":{"start_line":72,"start_character":40,"end_line":72,"end_character":44},"in_reply_to":"7a1b2928_d951a110","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":70,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":71,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":72,"context_line":"node. By default \u0027attributes\u0027 fields of this models should be filled with data"},{"line_number":73,"context_line":"from plugin `nic_attributes_metadata`, `node_attributes_metadata` and"},{"line_number":74,"context_line":"`bond_attributes_metadata` respectively."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":77,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_d96241ad","line":74,"range":{"start_line":73,"start_character":12,"end_line":74,"end_character":26},"updated":"2016-04-11 12:42:23.000000000","message":"Plugin.nic_attributes_metadata, etc.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":70,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":71,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":72,"context_line":"node. By default \u0027attributes\u0027 fields of this models should be filled with data"},{"line_number":73,"context_line":"from plugin `nic_attributes_metadata`, `node_attributes_metadata` and"},{"line_number":74,"context_line":"`bond_attributes_metadata` respectively."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":77,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_6c740dcf","line":74,"range":{"start_line":73,"start_character":12,"end_line":74,"end_character":26},"in_reply_to":"7a1b2928_d96241ad","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":77,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":78,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":79,"context_line":"`nic_metadata` and merged with `interface_properties` data as values. Data"},{"line_number":80,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":81,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":82,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. Same logic will be used"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_19f839e5","line":79,"range":{"start_line":78,"start_character":36,"end_line":79,"end_character":14},"updated":"2016-04-11 12:42:23.000000000","message":"Release.nic_metadata","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":77,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":78,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":79,"context_line":"`nic_metadata` and merged with `interface_properties` data as values. Data"},{"line_number":80,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":81,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":82,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. Same logic will be used"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_a17747d3","line":79,"range":{"start_line":79,"start_character":32,"end_line":79,"end_character":52},"updated":"2016-04-11 12:42:23.000000000","message":"seems we should not have interface_properties any longer (see example starting from L300). or it will remain in DB only (that does not look good)? also, some of the interface_properties are got and updated from nailgun-agent only so we maybe need node_nic_interfaces.meta or separate field in API at least.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":76,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":77,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":78,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":79,"context_line":"`nic_metadata` and merged with `interface_properties` data as values. Data"},{"line_number":80,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":81,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":82,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. Same logic will be used"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_8c3ec4b6","line":79,"range":{"start_line":79,"start_character":32,"end_line":79,"end_character":52},"in_reply_to":"7a1b2928_a17747d3","updated":"2016-04-12 18:52:25.000000000","message":"1. we can leave interface_properties in DB for nailgun-agent and merge them in attributes then hide it from API for interfaces.\n2. rewrite NodeAgent handler to save interface data changes direct into attributes and remove DB field. (but NIC attributes are release specific so on step when agent pull DB with info we can\u0027t determine specific attribute structure)","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":81,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":82,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. Same logic will be used"},{"line_number":83,"context_line":"for BOND and Node attributes."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":86,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_2b04b87c","line":84,"updated":"2016-04-11 12:42:23.000000000","message":"Please clarify: seems that changed data will be stored separately from schema for both core and plugins. Thus, API will do composition/decomposition of data.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":81,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":82,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. Same logic will be used"},{"line_number":83,"context_line":"for BOND and Node attributes."},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":86,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":87,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_96136f5c","line":84,"in_reply_to":"7a1b2928_2b04b87c","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":86,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Nailgun DB tables changes:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_8ee4fa0d","line":87,"updated":"2016-04-11 12:42:23.000000000","message":"should overriding of attributes be supported (as for cluster attributes, network roles, tasks now) ?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":84,"context_line":""},{"line_number":85,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":86,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"Nailgun DB tables changes:"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_ec3bfd9a","line":87,"in_reply_to":"7a1b2928_8ee4fa0d","updated":"2016-04-12 18:52:25.000000000","message":"no. we have restrictions on this as for volumes, node roles, and some of network roles (https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L189)","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"`attributes`"},{"line_number":106,"context_line":"NIC attributes in DSL format"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_0431e9a2","line":107,"updated":"2016-04-11 12:42:23.000000000","message":"+ remove interface_properties ?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"`attributes`"},{"line_number":106,"context_line":"NIC attributes in DSL format"},{"line_number":107,"context_line":""},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_03728de5","line":107,"in_reply_to":"7a1b2928_0431e9a2","updated":"2016-04-12 18:52:25.000000000","message":"I\u0027m not sure we should remove it from DB. interface_properties will be merged as values for common attributes and removed from data serialization for API.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":111,"context_line":"`id`"},{"line_number":112,"context_line":"unique identifier"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"`attributes`"},{"line_number":115,"context_line":"actual state of plugin NIC attributes data"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"`cluster_plugin_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_eebe4efe","line":114,"updated":"2016-04-11 12:42:23.000000000","message":"json? an example (that is consistent with other examples, like L255-292) would be helpful.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":114,"context_line":"`attributes`"},{"line_number":115,"context_line":"actual state of plugin NIC attributes data"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"`cluster_plugin_id`"},{"line_number":118,"context_line":"foreign key on plugins table"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"`interface_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_eb55a0c6","line":117,"updated":"2016-04-11 12:42:23.000000000","message":"seems, there should be two fields here: cluster_id + plugin_id","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":114,"context_line":"`attributes`"},{"line_number":115,"context_line":"actual state of plugin NIC attributes data"},{"line_number":116,"context_line":""},{"line_number":117,"context_line":"`cluster_plugin_id`"},{"line_number":118,"context_line":"foreign key on plugins table"},{"line_number":119,"context_line":""},{"line_number":120,"context_line":"`interface_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_83205c4b","line":117,"in_reply_to":"7a1b2928_eb55a0c6","updated":"2016-04-12 18:52:25.000000000","message":"sorry for mistake in description. It\u0027s foreign key on cluster_plugins table, not plugins.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":138,"context_line":"`attributes`"},{"line_number":139,"context_line":"actual state of plugin NIC attributes data"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"`cluster_plugin_id`"},{"line_number":142,"context_line":"foreign key on plugins table"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"`bond_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_ab72887a","line":141,"updated":"2016-04-11 12:42:23.000000000","message":"cluster_id + plugin_id","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":138,"context_line":"`attributes`"},{"line_number":139,"context_line":"actual state of plugin NIC attributes data"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"`cluster_plugin_id`"},{"line_number":142,"context_line":"foreign key on plugins table"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"`bond_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_038f2c24","line":141,"in_reply_to":"7a1b2928_ab72887a","updated":"2016-04-12 18:52:25.000000000","message":"ditton","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":142,"context_line":"foreign key on plugins table"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"`bond_id`"},{"line_number":145,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"`node_id`"},{"line_number":148,"context_line":"foreign key on nodes table"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_0b31fca2","line":145,"range":{"start_line":145,"start_character":15,"end_line":145,"end_character":34},"updated":"2016-04-11 12:42:23.000000000","message":"node_bond_interfaces","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":142,"context_line":"foreign key on plugins table"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"`bond_id`"},{"line_number":145,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"`node_id`"},{"line_number":148,"context_line":"foreign key on nodes table"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_435804fb","line":145,"range":{"start_line":145,"start_character":15,"end_line":145,"end_character":34},"in_reply_to":"7a1b2928_0b31fca2","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":156,"context_line":"`attributes`"},{"line_number":157,"context_line":"actual state of plugin Node attributes data"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"`cluster_plugin_id`"},{"line_number":160,"context_line":"foreign key on plugins table"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"`node_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_eb6c809e","line":159,"updated":"2016-04-11 12:42:23.000000000","message":"cluster_id + plugin_id","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":156,"context_line":"`attributes`"},{"line_number":157,"context_line":"actual state of plugin Node attributes data"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"`cluster_plugin_id`"},{"line_number":160,"context_line":"foreign key on plugins table"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"`node_id`"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_4399246e","line":159,"in_reply_to":"7a1b2928_eb6c809e","updated":"2016-04-12 18:52:25.000000000","message":"ditto","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":166,"context_line":"**Release**"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"`nic_metadata`"},{"line_number":169,"context_line":"default attributes with empty values for NICs"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_6b351045","line":169,"range":{"start_line":169,"start_character":24,"end_line":169,"end_character":29},"updated":"2016-04-11 12:42:23.000000000","message":"better be \u0027default\u0027","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":166,"context_line":"**Release**"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"`nic_metadata`"},{"line_number":169,"context_line":"default attributes with empty values for NICs"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_43b004de","line":169,"range":{"start_line":169,"start_character":24,"end_line":169,"end_character":29},"in_reply_to":"7a1b2928_6b351045","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":169,"context_line":"default attributes with empty values for NICs"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":175,"context_line":"of nailgun extension."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_ab3f2824","line":172,"range":{"start_line":172,"start_character":24,"end_line":172,"end_character":29},"updated":"2016-04-11 12:42:23.000000000","message":"better be \u0027default\u0027","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":169,"context_line":"default attributes with empty values for NICs"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":175,"context_line":"of nailgun extension."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_63cee05b","line":172,"range":{"start_line":172,"start_character":24,"end_line":172,"end_character":29},"in_reply_to":"7a1b2928_ab3f2824","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":175,"context_line":"of nailgun extension."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"},{"line_number":178,"context_line":"`NodeBondInterface`, `NodeBondInterfaceClusterPlugin`, `Node` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_eb776000","line":175,"range":{"start_line":174,"start_character":0,"end_line":175,"end_character":21},"updated":"2016-04-11 12:42:23.000000000","message":"now networking part is becoming an extension. let\u0027s be in contact with Ryan Moe on how to live with plugins data in extension.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":171,"context_line":"`bond_metadata`"},{"line_number":172,"context_line":"default attributes with empty values for BONDs"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":175,"context_line":"of nailgun extension."},{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"},{"line_number":178,"context_line":"`NodeBondInterface`, `NodeBondInterfaceClusterPlugin`, `Node` and"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_a8ab9f88","line":175,"range":{"start_line":174,"start_character":0,"end_line":175,"end_character":21},"in_reply_to":"7a1b2928_eb776000","updated":"2016-04-12 18:52:25.000000000","message":"will do","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"},{"line_number":178,"context_line":"`NodeBondInterface`, `NodeBondInterfaceClusterPlugin`, `Node` and"},{"line_number":179,"context_line":"`NodeClusterPlugin` should be serialized in deployment scenario and send to"},{"line_number":180,"context_line":"astute with other attributes. This is how an astute.yaml part will look like"},{"line_number":181,"context_line":"for additional NIC attributes:"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_abdba8ec","line":179,"range":{"start_line":179,"start_character":68,"end_line":179,"end_character":72},"updated":"2016-04-11 12:42:23.000000000","message":"sent","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":176,"context_line":""},{"line_number":177,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"},{"line_number":178,"context_line":"`NodeBondInterface`, `NodeBondInterfaceClusterPlugin`, `Node` and"},{"line_number":179,"context_line":"`NodeClusterPlugin` should be serialized in deployment scenario and send to"},{"line_number":180,"context_line":"astute with other attributes. This is how an astute.yaml part will look like"},{"line_number":181,"context_line":"for additional NIC attributes:"},{"line_number":182,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_597907fc","line":179,"range":{"start_line":179,"start_character":68,"end_line":179,"end_character":72},"in_reply_to":"7a1b2928_abdba8ec","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":187,"context_line":"      vendor_specific:"},{"line_number":188,"context_line":"        driver: e1000"},{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_2b31580c","line":190,"range":{"start_line":190,"start_character":6,"end_line":190,"end_character":16},"updated":"2016-04-11 12:42:23.000000000","message":"could core attributes be here? some or all?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":187,"context_line":"      vendor_specific:"},{"line_number":188,"context_line":"        driver: e1000"},{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_b3995471","line":190,"range":{"start_line":190,"start_character":6,"end_line":190,"end_character":16},"in_reply_to":"7a1b2928_2b31580c","updated":"2016-04-12 18:52:25.000000000","message":"good question. We can set here dpdk or sriov in any case. Or only when they are enabled. Thoughts?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        driver: e1000"},{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"},{"line_number":194,"context_line":"    enp0s2:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_2e95e6e3","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":16},"updated":"2016-04-11 12:42:23.000000000","message":"is it a name of plugin or some section that is defined in plugin? afaic, it should be the latter.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":188,"context_line":"        driver: e1000"},{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"},{"line_number":194,"context_line":"    enp0s2:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_334a64c6","line":191,"range":{"start_line":191,"start_character":8,"end_line":191,"end_character":16},"in_reply_to":"7a1b2928_2e95e6e3","updated":"2016-04-12 18:52:25.000000000","message":"in case when plugin attributes can\u0027t overwrite core attributes or themselves it\u0027s enough to have only attribute keys or sections. Opinions?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"},{"line_number":194,"context_line":"    enp0s2:"},{"line_number":195,"context_line":"      vendor_specific:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_2b4af883","line":192,"range":{"start_line":192,"start_character":10,"end_line":192,"end_character":21},"updated":"2016-04-11 12:42:23.000000000","message":"should it be attribute\u0027s name or key? (see L255-292)","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":189,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":190,"context_line":"      attributes:"},{"line_number":191,"context_line":"        plugin_a:"},{"line_number":192,"context_line":"          attribute_a: \"test\""},{"line_number":193,"context_line":"          attribute_b: false"},{"line_number":194,"context_line":"    enp0s2:"},{"line_number":195,"context_line":"      vendor_specific:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_93ed388e","line":192,"range":{"start_line":192,"start_character":10,"end_line":192,"end_character":21},"in_reply_to":"7a1b2928_2b4af883","updated":"2016-04-12 18:52:25.000000000","message":"name and key is the same. I\u0027ve changed bond section.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":".. code-block:: yaml"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  nodes:"},{"line_number":229,"context_line":"    - uid: 1"},{"line_number":230,"context_line":"      attributes:"},{"line_number":231,"context_line":"        plugin_a:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_4b177451","line":228,"range":{"start_line":228,"start_character":2,"end_line":228,"end_character":7},"updated":"2016-04-11 12:42:23.000000000","message":"where is it? please take https://bugs.launchpad.net/fuel/+bug/1531128 into account","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":225,"context_line":""},{"line_number":226,"context_line":".. code-block:: yaml"},{"line_number":227,"context_line":""},{"line_number":228,"context_line":"  nodes:"},{"line_number":229,"context_line":"    - uid: 1"},{"line_number":230,"context_line":"      attributes:"},{"line_number":231,"context_line":"        plugin_a:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_ae6d6706","line":228,"range":{"start_line":228,"start_character":2,"end_line":228,"end_character":7},"in_reply_to":"7a1b2928_4b177451","updated":"2016-04-12 18:52:25.000000000","message":"it should be in the root of astute yaml per node.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":"HTTP  URL                                        Description"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":244,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":245,"context_line":"                                                 for specific release"},{"line_number":246,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":247,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_73a34c9f","line":244,"range":{"start_line":244,"start_character":24,"end_line":244,"end_character":29},"updated":"2016-04-11 12:42:23.000000000","message":"afaic, need to add the same for interfaces","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":241,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":242,"context_line":"HTTP  URL                                        Description"},{"line_number":243,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":244,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":245,"context_line":"                                                 for specific release"},{"line_number":246,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":247,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_59c74712","line":244,"range":{"start_line":244,"start_character":24,"end_line":244,"end_character":29},"in_reply_to":"7a1b2928_73a34c9f","updated":"2016-04-12 18:52:25.000000000","message":"answered above L38-39","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                                                 for specific release"},{"line_number":246,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":247,"context_line":"                                                 for specific release"},{"line_number":248,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"The response format for GET `/nodes/bonds/:id/attributes/default`:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_a402b53c","line":248,"updated":"2016-04-11 12:42:23.000000000","message":"what about PUT/PATCH? or /api/v1/nodes/:id/interfaces/ will be used?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":245,"context_line":"                                                 for specific release"},{"line_number":246,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":247,"context_line":"                                                 for specific release"},{"line_number":248,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"The response format for GET `/nodes/bonds/:id/attributes/default`:"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_48176ba3","line":248,"in_reply_to":"7a1b2928_a402b53c","updated":"2016-04-12 18:52:25.000000000","message":"API not changed. Nailgun will split data with PUT method between `core` and `plugin` tables.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":248,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"The response format for GET `/nodes/bonds/:id/attributes/default`:"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":".. code-block:: json"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_6e207e9c","line":251,"range":{"start_line":251,"start_character":29,"end_line":251,"end_character":64},"updated":"2016-04-11 12:42:23.000000000","message":"/nodes/:id/bonds/attributes/default","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":248,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"The response format for GET `/nodes/bonds/:id/attributes/default`:"},{"line_number":252,"context_line":""},{"line_number":253,"context_line":".. code-block:: json"},{"line_number":254,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_ee5e3f44","line":251,"range":{"start_line":251,"start_character":29,"end_line":251,"end_character":64},"in_reply_to":"7a1b2928_6e207e9c","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":265,"context_line":"      \"value\": \"balance-rr\","},{"line_number":266,"context_line":"    },"},{"line_number":267,"context_line":"    \"plugin_a\": {"},{"line_number":268,"context_line":"      \"attributes\": {"},{"line_number":269,"context_line":"        \"attribute_a\": {"},{"line_number":270,"context_line":"          \"name\": \"attribute_a\""},{"line_number":271,"context_line":"          \"label\": \"BOND attribute A\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_c11a436e","line":268,"range":{"start_line":268,"start_character":7,"end_line":268,"end_character":17},"updated":"2016-04-11 12:42:23.000000000","message":"it looks strange here. afaic, it should be the name of section. see my comments in L190-192 also.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":265,"context_line":"      \"value\": \"balance-rr\","},{"line_number":266,"context_line":"    },"},{"line_number":267,"context_line":"    \"plugin_a\": {"},{"line_number":268,"context_line":"      \"attributes\": {"},{"line_number":269,"context_line":"        \"attribute_a\": {"},{"line_number":270,"context_line":"          \"name\": \"attribute_a\""},{"line_number":271,"context_line":"          \"label\": \"BOND attribute A\","}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_0e045b15","line":268,"range":{"start_line":268,"start_character":7,"end_line":268,"end_character":17},"in_reply_to":"7a1b2928_c11a436e","updated":"2016-04-12 18:52:25.000000000","message":"changed","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":292,"context_line":"  }"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"In case of additional NIC and BOND attributes, GET `/nodes/:id/interfaces/`"},{"line_number":296,"context_line":"method should return data with the following structure:"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":".. code-block:: json"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_81932ba3","line":295,"range":{"start_line":295,"start_character":11,"end_line":295,"end_character":21},"updated":"2016-04-11 12:42:23.000000000","message":"additional to what?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":292,"context_line":"  }"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":""},{"line_number":295,"context_line":"In case of additional NIC and BOND attributes, GET `/nodes/:id/interfaces/`"},{"line_number":296,"context_line":"method should return data with the following structure:"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":".. code-block:: json"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_826e7fc7","line":295,"range":{"start_line":295,"start_character":11,"end_line":295,"end_character":21},"in_reply_to":"7a1b2928_81932ba3","updated":"2016-04-12 18:52:25.000000000","message":"to core attributes","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":311,"context_line":"      \"offloading_modes\": [],"},{"line_number":312,"context_line":"      \"pxe\": False,"},{"line_number":313,"context_line":"      \"bus_info\": \"0000:01:00.0\","},{"line_number":314,"context_line":"      \"attributes\": {"},{"line_number":315,"context_line":"        \"disable_offloading\": {"},{"line_number":316,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":317,"context_line":"          \"weight\": 10,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_2137b7b1","line":314,"range":{"start_line":314,"start_character":7,"end_line":314,"end_character":17},"updated":"2016-04-11 12:42:23.000000000","message":"why is this so very different from L255-292?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":311,"context_line":"      \"offloading_modes\": [],"},{"line_number":312,"context_line":"      \"pxe\": False,"},{"line_number":313,"context_line":"      \"bus_info\": \"0000:01:00.0\","},{"line_number":314,"context_line":"      \"attributes\": {"},{"line_number":315,"context_line":"        \"disable_offloading\": {"},{"line_number":316,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":317,"context_line":"          \"weight\": 10,"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_e248135e","line":314,"range":{"start_line":314,"start_character":7,"end_line":314,"end_character":17},"in_reply_to":"7a1b2928_2137b7b1","updated":"2016-04-12 18:52:25.000000000","message":"default bond metadata changed.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    \"cpu_pinning\": {},"},{"line_number":427,"context_line":"    \"hugepages\": {},"},{"line_number":428,"context_line":"    \"plugin_a\": {"},{"line_number":429,"context_line":"      \"attributes\": {"},{"line_number":430,"context_line":"        \"section_a\": {"},{"line_number":431,"context_line":"          \"metadata\": {"},{"line_number":432,"context_line":"            \"group\": \"some_new_section\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_c4bb710d","line":429,"range":{"start_line":429,"start_character":7,"end_line":429,"end_character":17},"updated":"2016-04-11 12:42:23.000000000","message":"same as above: why to have \u0027attributes\u0027 section here?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":426,"context_line":"    \"cpu_pinning\": {},"},{"line_number":427,"context_line":"    \"hugepages\": {},"},{"line_number":428,"context_line":"    \"plugin_a\": {"},{"line_number":429,"context_line":"      \"attributes\": {"},{"line_number":430,"context_line":"        \"section_a\": {"},{"line_number":431,"context_line":"          \"metadata\": {"},{"line_number":432,"context_line":"            \"group\": \"some_new_section\""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_d6b0398e","line":429,"range":{"start_line":429,"start_character":7,"end_line":429,"end_character":17},"in_reply_to":"7a1b2928_c4bb710d","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":478,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"* NIC, BOND and Node attributes can be described in additional optional"},{"line_number":481,"context_line":"  config yaml files which will be integrated in Nailgun."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* Basic skeleton description for NICs in `nic_config` yaml file:"},{"line_number":484,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_a441153c","line":481,"range":{"start_line":481,"start_character":20,"end_line":481,"end_character":55},"updated":"2016-04-11 12:42:23.000000000","message":"integration - what does this mean?","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":478,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":479,"context_line":""},{"line_number":480,"context_line":"* NIC, BOND and Node attributes can be described in additional optional"},{"line_number":481,"context_line":"  config yaml files which will be integrated in Nailgun."},{"line_number":482,"context_line":""},{"line_number":483,"context_line":"* Basic skeleton description for NICs in `nic_config` yaml file:"},{"line_number":484,"context_line":""}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_96440175","line":481,"range":{"start_line":481,"start_character":20,"end_line":481,"end_character":55},"in_reply_to":"7a1b2928_a441153c","updated":"2016-04-12 18:52:25.000000000","message":"data from this files will be merged with core. I\u0027ll remove it to avoid confusion","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Upgrade impact"},{"line_number":553,"context_line":"--------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"None"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_a1262714","line":555,"range":{"start_line":555,"start_character":0,"end_line":555,"end_character":4},"updated":"2016-04-11 12:42:23.000000000","message":"seems to be not none. but maybe it will be covered within moving networking into extension.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":552,"context_line":"Upgrade impact"},{"line_number":553,"context_line":"--------------"},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"None"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":""},{"line_number":558,"context_line":"---------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_b1102750","line":555,"range":{"start_line":555,"start_character":0,"end_line":555,"end_character":4},"in_reply_to":"7a1b2928_a1262714","updated":"2016-04-12 18:52:25.000000000","message":"for this version I\u0027ll leave as is. Extension not ready yet. Need to cooperate","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":582,"context_line":"Performance impact"},{"line_number":583,"context_line":"------------------"},{"line_number":584,"context_line":""},{"line_number":585,"context_line":"None"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"-----------------"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_247985fd","line":585,"range":{"start_line":585,"start_character":0,"end_line":585,"end_character":4},"updated":"2016-04-11 12:42:23.000000000","message":"seems, it can be significant (for processing of attributes changes VS current processing of properties changes). need to estimate. looks like lots of DB requests will be made for each PUT.","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":636,"context_line":"Work Items"},{"line_number":637,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"* [Nailgun] Provide changes in DB model and new plugin config files sync."},{"line_number":640,"context_line":"* [Nailgun] Provide mixing of core and plugin NICs and Nodes attributes"},{"line_number":641,"context_line":"  and proper data storing."},{"line_number":642,"context_line":"* [Nailgun] Refresh NICs and Nodes attributes with default data."}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_ff2a7a7d","line":639,"range":{"start_line":639,"start_character":2,"end_line":639,"end_character":11},"updated":"2016-04-11 12:42:23.000000000","message":"seems to be Nailgun extension here and below","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":636,"context_line":"Work Items"},{"line_number":637,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":638,"context_line":""},{"line_number":639,"context_line":"* [Nailgun] Provide changes in DB model and new plugin config files sync."},{"line_number":640,"context_line":"* [Nailgun] Provide mixing of core and plugin NICs and Nodes attributes"},{"line_number":641,"context_line":"  and proper data storing."},{"line_number":642,"context_line":"* [Nailgun] Refresh NICs and Nodes attributes with default data."}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_cdf89fe8","line":639,"range":{"start_line":639,"start_character":2,"end_line":639,"end_character":11},"in_reply_to":"7a1b2928_ff2a7a7d","updated":"2016-04-12 18:52:25.000000000","message":"Done","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"362e9e642732fb4cce7c970c95b0ff78669950b9","unresolved":false,"context_lines":[{"line_number":671,"context_line":"----------"},{"line_number":672,"context_line":"References"},{"line_number":673,"context_line":"----------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":".. [0] https://blueprints.launchpad.net/fuel/+spec/support-numa-cpu-pinning"},{"line_number":676,"context_line":".. [1] https://blueprints.launchpad.net/fuel/+spec/plugins-v5"}],"source_content_type":"text/x-rst","patch_set":13,"id":"7a1b2928_1fff7602","line":674,"updated":"2016-04-11 12:42:23.000000000","message":"seems, https://blueprints.launchpad.net/fuel/+spec/network-manager-extension will have some relation to this spec","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c0224e6d6fe3efa9de1a8319edf21ba78a5e8212","unresolved":false,"context_lines":[{"line_number":671,"context_line":"----------"},{"line_number":672,"context_line":"References"},{"line_number":673,"context_line":"----------"},{"line_number":674,"context_line":""},{"line_number":675,"context_line":".. [0] https://blueprints.launchpad.net/fuel/+spec/support-numa-cpu-pinning"},{"line_number":676,"context_line":".. [1] https://blueprints.launchpad.net/fuel/+spec/plugins-v5"}],"source_content_type":"text/x-rst","patch_set":13,"id":"5a18252c_31eed722","line":674,"in_reply_to":"7a1b2928_1fff7602","updated":"2016-04-12 18:52:25.000000000","message":"dependency added","commit_id":"618898fe020ce4697563b48481cf322243b58af5"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  attributes data."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_34217ba0","line":54,"updated":"2016-04-13 12:47:41.000000000","message":"is there a chance to have different set or structure (as we define one template that is in use for all interfaces)?","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  attributes data."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_6a301a9f","line":54,"in_reply_to":"5a18252c_34217ba0","updated":"2016-04-13 20:15:58.000000000","message":"not sure. But let\u0027s restrict it for now. Concern:\nNIC A has some VF which described as plugin attr\nNIC B hasn\u0027t such function\nFor example: can we bond two interfaces where one of them support dpdk and other not?","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"New default core attributes for NIC and BOND should be described in"},{"line_number":64,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":65,"context_line":"`bond_metadata` in Release."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Plugin related information with NICs, BONDs and Nodes default attributes"},{"line_number":68,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_94ba0f09","line":65,"updated":"2016-04-13 12:47:41.000000000","message":"continuing from #13:\n\nWe need to have metadata for such attributes somewhere else (not in release) or we should limit their availability (they will not be available when node is not in any environment). \n\nAlso, we have duplication of definition in every Release if they are not global (not a big problem though).","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"New default core attributes for NIC and BOND should be described in"},{"line_number":64,"context_line":"`openstack.yaml` file. They will be mapped on `nic_metadata` and"},{"line_number":65,"context_line":"`bond_metadata` in Release."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Plugin related information with NICs, BONDs and Nodes default attributes"},{"line_number":68,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_ef271310","line":65,"in_reply_to":"5a18252c_94ba0f09","updated":"2016-04-13 20:15:58.000000000","message":"Interfaces are not available on UI for not assigned nodes. Also maybe core attributes could be changed from release to release.","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":81,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":82,"context_line":"`nic_metadata` and merged with `interface_properties` data as values. Data"},{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_94a68f51","line":82,"updated":"2016-04-13 12:47:41.000000000","message":"continuing from #13:\n\nall data from nailgun-agent is saved in node.meta already. but we need some field in NodeNICInterface to not parse all node.meta for every interface. We could introduce NodeNICInterface.meta (or smth like this) to store data from nailgun-agent. Almost all this data cannot be modified via API and only part of this data is visible on UI. So, it is not required to have all this data in attributes. UI could use NodeNICInterface.meta + NodeNICInterface.attributes as it does for node now or we could merge part of NodeNICInterface.meta into NodeNICInterface.attributes so that UI could use NodeNICInterface.attributes only.","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":81,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":82,"context_line":"`nic_metadata` and merged with `interface_properties` data as values. Data"},{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_b2f464f2","line":82,"in_reply_to":"5a18252c_94a68f51","updated":"2016-04-13 20:15:58.000000000","message":"we already have such `NodeNICInterface.meta` it\u0027s interface_properties. Basic idea: for each release we store NIC or Bond template for attributes in Release and during assigning node to env fill it with values from `interafece_properties` and save this info in `NodeNICInteraface.attributes`. Then UI will work only with attributes.","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"},{"line_number":86,"context_line":"client will be splited and stored between these two tables. Same logic will be"},{"line_number":87,"context_line":"used for BOND and Node attributes."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_973051ea","line":86,"range":{"start_line":86,"start_character":15,"end_line":86,"end_character":22},"updated":"2016-04-13 12:47:41.000000000","message":"split","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"},{"line_number":86,"context_line":"client will be splited and stored between these two tables. Same logic will be"},{"line_number":87,"context_line":"used for BOND and Node attributes."},{"line_number":88,"context_line":""},{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_92f7a8f4","line":86,"range":{"start_line":86,"start_character":15,"end_line":86,"end_character":22},"in_reply_to":"5a18252c_973051ea","updated":"2016-04-13 20:15:58.000000000","message":"Done","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Nailgun DB tables changes:"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_77cf757f","line":91,"updated":"2016-04-13 12:47:41.000000000","message":"continuing from #13:\n\nWhy not? There may be conflicts (when two plugins override one section) that should be verified but still.\nAFAIC, this should be clarified in spec anyway.\nBTW, for network roles overriding is possible but there are cases when it cannot be resolved (conflict from your link).","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Nailgun DB tables changes:"},{"line_number":93,"context_line":""},{"line_number":94,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_7e71f3df","line":91,"in_reply_to":"5a18252c_77cf757f","updated":"2016-04-13 20:15:58.000000000","message":"Done","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":115,"context_line":"`id`"},{"line_number":116,"context_line":"unique identifier"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`attributes`"},{"line_number":119,"context_line":"actual state of plugin NIC attributes data"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"`cluster_plugin_id`"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_97f8514b","line":118,"updated":"2016-04-13 12:47:41.000000000","message":"Let\u0027s provide an example. What is stored here when result of serialization looks like L189-205 ?","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":115,"context_line":"`id`"},{"line_number":116,"context_line":"unique identifier"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`attributes`"},{"line_number":119,"context_line":"actual state of plugin NIC attributes data"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"`cluster_plugin_id`"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_c447961b","line":118,"in_reply_to":"5a18252c_97f8514b","updated":"2016-04-13 20:15:58.000000000","message":"Done","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"bb7d5678eb7e42cfaaeabc0087cc7eaaa2ec91d1","unresolved":false,"context_lines":[{"line_number":191,"context_line":"      vendor_specific:"},{"line_number":192,"context_line":"        driver: e1000"},{"line_number":193,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":194,"context_line":"      attributes:"},{"line_number":195,"context_line":"        plugin_a:"},{"line_number":196,"context_line":"          attribute_a: \"test\""},{"line_number":197,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_c877c49d","line":194,"updated":"2016-04-13 13:00:26.000000000","message":"continuing from #13:\n\nSeems there is no much sense to have existing core attributes here as they are already spread among specific sections/properties (serialization of them is very specific sometimes).","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":191,"context_line":"      vendor_specific:"},{"line_number":192,"context_line":"        driver: e1000"},{"line_number":193,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":194,"context_line":"      attributes:"},{"line_number":195,"context_line":"        plugin_a:"},{"line_number":196,"context_line":"          attribute_a: \"test\""},{"line_number":197,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_e473b27e","line":194,"in_reply_to":"5a18252c_c877c49d","updated":"2016-04-13 20:15:58.000000000","message":"I see. thx","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"bb7d5678eb7e42cfaaeabc0087cc7eaaa2ec91d1","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        driver: e1000"},{"line_number":193,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":194,"context_line":"      attributes:"},{"line_number":195,"context_line":"        plugin_a:"},{"line_number":196,"context_line":"          attribute_a: \"test\""},{"line_number":197,"context_line":"          attribute_b: false"},{"line_number":198,"context_line":"    enp0s2:"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_88edccf1","line":195,"updated":"2016-04-13 13:00:26.000000000","message":"continuing from #13:\n\nIMO, having only attribute keys and sections seems to be consistent with API.","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":192,"context_line":"        driver: e1000"},{"line_number":193,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":194,"context_line":"      attributes:"},{"line_number":195,"context_line":"        plugin_a:"},{"line_number":196,"context_line":"          attribute_a: \"test\""},{"line_number":197,"context_line":"          attribute_b: false"},{"line_number":198,"context_line":"    enp0s2:"}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_e4cbb251","line":195,"in_reply_to":"5a18252c_88edccf1","updated":"2016-04-13 20:15:58.000000000","message":"Done","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c157db9a91001f2ed44a637caa0cab2fd525e177","unresolved":false,"context_lines":[{"line_number":283,"context_line":"  }"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"In case of additional to core NIC and BOND attributes, GET"},{"line_number":287,"context_line":"`/nodes/:id/interfaces/` method should return data with the"},{"line_number":288,"context_line":"following structure:"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_6a7828c5","line":286,"range":{"start_line":286,"start_character":0,"end_line":286,"end_character":53},"updated":"2016-04-13 12:47:41.000000000","message":"IMO, this part is not meaningful. We can see all attributes (and other stuff) in this example.","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3501a9ce4a624d533ad96ee4340dfdd00605dc57","unresolved":false,"context_lines":[{"line_number":283,"context_line":"  }"},{"line_number":284,"context_line":""},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"In case of additional to core NIC and BOND attributes, GET"},{"line_number":287,"context_line":"`/nodes/:id/interfaces/` method should return data with the"},{"line_number":288,"context_line":"following structure:"},{"line_number":289,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"5a18252c_845e3e74","line":286,"range":{"start_line":286,"start_character":0,"end_line":286,"end_character":53},"in_reply_to":"5a18252c_6a7828c5","updated":"2016-04-13 20:15:58.000000000","message":"Done","commit_id":"d02d66de09b1cc2ce6f815bdeee3ae9fe0e21793"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":65,"context_line":"`bond_metadata` in Release."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Plugin related information with NICs, BONDs and Nodes default attributes"},{"line_number":68,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"},{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_ba581358","line":68,"updated":"2016-04-15 17:11:25.000000000","message":"The naming should be consistent, if we decide that the field should be nic_metadata, lets call it like that in plugin and in core.\n\nBut I think the name `nic_attributes` is better, since we already have cluster attributes, \"metadata\" postfix is redundant for sure.","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"10239938a6898f7421fd2e0cae35d4c617a92a3b","unresolved":false,"context_lines":[{"line_number":65,"context_line":"`bond_metadata` in Release."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"Plugin related information with NICs, BONDs and Nodes default attributes"},{"line_number":68,"context_line":"will be stored in `nic_attributes_metadata`, `bond_attributes_metadata` and"},{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_6804d414","line":68,"in_reply_to":"1a122d0e_ba581358","updated":"2016-04-18 05:53:23.000000000","message":"we can rename names in Release from nic_metadata to nic_attributes. But in Plugin almost fields have postfix \u0027metadata\u0027. So were is consistency: to keep same names between Release and Plugin or between Plugin fields?","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":104,"context_line":"plugin attributes data taken from `bond_config` yaml"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`node_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `node_config` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"**NodeNICInterface**"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_6e20809c","line":107,"updated":"2016-04-15 17:11:25.000000000","message":"Has to be per release, not global for all releases.","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"10239938a6898f7421fd2e0cae35d4c617a92a3b","unresolved":false,"context_lines":[{"line_number":104,"context_line":"plugin attributes data taken from `bond_config` yaml"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`node_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `node_config` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"**NodeNICInterface**"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_155f3942","line":107,"in_reply_to":"1a122d0e_6e20809c","updated":"2016-04-18 05:53:23.000000000","message":"will be global for all releases in plugin. We haven\u0027t possibility to set specific release for each config and this feature described in plugin v5","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":127,"context_line":"`interface_id`"},{"line_number":128,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`node_id`"},{"line_number":131,"context_line":"foreign key on nodes table"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Example of `attributes` field:"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_2e9b28cb","line":130,"updated":"2016-04-15 17:11:25.000000000","message":"Are you sure that it\u0027s needed? By interface_id you always can get Node id.","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"10239938a6898f7421fd2e0cae35d4c617a92a3b","unresolved":false,"context_lines":[{"line_number":127,"context_line":"`interface_id`"},{"line_number":128,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`node_id`"},{"line_number":131,"context_line":"foreign key on nodes table"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Example of `attributes` field:"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_751dcd72","line":130,"in_reply_to":"1a122d0e_2e9b28cb","updated":"2016-04-18 05:53:23.000000000","message":"It was proposed by @akasatkin. Should help us to build more fast queries.","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":243,"context_line":"      interface_properties:"},{"line_number":244,"context_line":"        vendor_specific:"},{"line_number":245,"context_line":"          disable_offloading: true"},{"line_number":246,"context_line":"      attributes:"},{"line_number":247,"context_line":"        plugin_section_a:"},{"line_number":248,"context_line":"          attribute_a: \"test\""},{"line_number":249,"context_line":"          attribute_b: true"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_4e466424","line":246,"updated":"2016-04-15 17:11:25.000000000","message":"I\u0027m not sure if it\u0027s a good idea to put it for every transformation. Isn\u0027t it better to add for `interfaces` type and pass this information there?","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"add277468b0c3ff832ff11277811ceac3e74a8ba","unresolved":false,"context_lines":[{"line_number":243,"context_line":"      interface_properties:"},{"line_number":244,"context_line":"        vendor_specific:"},{"line_number":245,"context_line":"          disable_offloading: true"},{"line_number":246,"context_line":"      attributes:"},{"line_number":247,"context_line":"        plugin_section_a:"},{"line_number":248,"context_line":"          attribute_a: \"test\""},{"line_number":249,"context_line":"          attribute_b: true"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_c026b315","line":246,"in_reply_to":"1a122d0e_4e466424","updated":"2016-04-16 11:29:14.000000000","message":"it\u0027s not for every transformation. Only with action \u0027add-bond\u0027","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":484,"context_line":"* NIC, BOND and Node attributes can be described in additional optional"},{"line_number":485,"context_line":"  config yaml files."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Basic skeleton description for NICs in `nic_config` yaml file:"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"  .. code-block:: yaml"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_ee6c909e","line":487,"updated":"2016-04-15 17:11:25.000000000","message":"And here `nic_config`, naming has to be consistent, lets find a good term for that and use it everywhere.","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"10239938a6898f7421fd2e0cae35d4c617a92a3b","unresolved":false,"context_lines":[{"line_number":484,"context_line":"* NIC, BOND and Node attributes can be described in additional optional"},{"line_number":485,"context_line":"  config yaml files."},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"* Basic skeleton description for NICs in `nic_config` yaml file:"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"  .. code-block:: yaml"},{"line_number":490,"context_line":""}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_e8daa477","line":487,"in_reply_to":"1a122d0e_ee6c909e","updated":"2016-04-18 05:53:23.000000000","message":"the same: name was chosen based on previous naming like \u0027environment_config` we can use nic_attributes , bond_attributes and node_attributes everywhere (for Release and Plugin fields and yaml files)","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"37fa2c55070216dbcccd550ca0338d008bbfa511","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"--------------"},{"line_number":556,"context_line":"Upgrade impact"},{"line_number":557,"context_line":"--------------"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_8ef6bcd5","line":556,"updated":"2016-04-15 17:11:25.000000000","message":"Migrations to convert old `properties` attributes to new?","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"10239938a6898f7421fd2e0cae35d4c617a92a3b","unresolved":false,"context_lines":[{"line_number":553,"context_line":""},{"line_number":554,"context_line":""},{"line_number":555,"context_line":"--------------"},{"line_number":556,"context_line":"Upgrade impact"},{"line_number":557,"context_line":"--------------"},{"line_number":558,"context_line":""},{"line_number":559,"context_line":"None"}],"source_content_type":"text/x-rst","patch_set":15,"id":"1a122d0e_28e5bc36","line":556,"in_reply_to":"1a122d0e_8ef6bcd5","updated":"2016-04-18 05:53:23.000000000","message":"yes. will do","commit_id":"e7b7632e9b3493b6debeb9303005d9a55ebcd758"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"e3d85f2add7b9330a856edd0bfc9f287a50a357f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Plugin can override core interface attributes. In case when two or plugins"},{"line_number":93,"context_line":"override same attribute conflict exception should be raised."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Nailgun DB tables changes:"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_174c59c6","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":8},"updated":"2016-04-18 08:47:58.000000000","message":"I think the plugin should be able to override  attributes from other plugin too or at least it should be configurable. the plugin attributes can be merged in same order that the plugins were installed.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"726fbe58d3e08d206d70c5210c4c151d90e38fad","unresolved":false,"context_lines":[{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Plugin can override core interface attributes. In case when two or plugins"},{"line_number":93,"context_line":"override same attribute conflict exception should be raised."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Nailgun DB tables changes:"},{"line_number":96,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_5036d252","line":93,"range":{"start_line":93,"start_character":0,"end_line":93,"end_character":8},"in_reply_to":"1a122d0e_174c59c6","updated":"2016-04-18 11:45:38.000000000","message":"make sense. But but I see it as separate task. We already have behavior with conflicts of overlapping in many places: https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L217\nhttps://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L248\nhttps://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L288\nhttps://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L322\n\nSo we need some general logic to handle cases with plugin overlapping. NIC extension blueprint already is too huge, so I don\u0027t want add another scope.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"e3d85f2add7b9330a856edd0bfc9f287a50a357f","unresolved":false,"context_lines":[{"line_number":199,"context_line":"`bond_attributes`"},{"line_number":200,"context_line":"attributes with default values for BONDs"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":203,"context_line":"of nailgun extension."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_97bb4972","line":202,"range":{"start_line":202,"start_character":0,"end_line":202,"end_character":2},"updated":"2016-04-18 08:47:58.000000000","message":"Please clarify, I think plugins are core thing of nailgun, not extra.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"726fbe58d3e08d206d70c5210c4c151d90e38fad","unresolved":false,"context_lines":[{"line_number":199,"context_line":"`bond_attributes`"},{"line_number":200,"context_line":"attributes with default values for BONDs"},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"In future all plugin related data (API, models, etc.) can be rewritten as part"},{"line_number":203,"context_line":"of nailgun extension."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"Data from `attributes` in `NodeNICInterface`, `NodeNICInterfaceClusterPlugin`,"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_445bb72e","line":202,"range":{"start_line":202,"start_character":0,"end_line":202,"end_character":2},"in_reply_to":"1a122d0e_97bb4972","updated":"2016-04-18 11:45:38.000000000","message":"Sorry this part deprecated. It was my vision before but currently it\u0027s maybe not relevant anymore.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"e3d85f2add7b9330a856edd0bfc9f287a50a357f","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        vendor_specific:"},{"line_number":245,"context_line":"          disable_offloading: true"},{"line_number":246,"context_line":"      attributes:"},{"line_number":247,"context_line":"        plugin_section_a:"},{"line_number":248,"context_line":"          attribute_a: \"test\""},{"line_number":249,"context_line":"          attribute_b: true"},{"line_number":250,"context_line":"      action: add-bond"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_d722e1b8","line":247,"range":{"start_line":247,"start_character":8,"end_line":247,"end_character":24},"updated":"2016-04-18 08:47:58.000000000","message":"I think the attributes should be in root, not separated by plugin names. \nor please clarify how will the attributes overridden be implemented.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"726fbe58d3e08d206d70c5210c4c151d90e38fad","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        vendor_specific:"},{"line_number":245,"context_line":"          disable_offloading: true"},{"line_number":246,"context_line":"      attributes:"},{"line_number":247,"context_line":"        plugin_section_a:"},{"line_number":248,"context_line":"          attribute_a: \"test\""},{"line_number":249,"context_line":"          attribute_b: true"},{"line_number":250,"context_line":"      action: add-bond"}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_dae67cb3","line":247,"range":{"start_line":247,"start_character":8,"end_line":247,"end_character":24},"in_reply_to":"1a122d0e_d722e1b8","updated":"2016-04-18 11:45:38.000000000","message":"Plugin can provide nested levels (\u0027plugin_section_a\u0027 just name of attribute). But key `attributes` is redundant here.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"e3d85f2add7b9330a856edd0bfc9f287a50a357f","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":".. code-block:: yaml"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  plugin_section_a:"},{"line_number":257,"context_line":"    attribute_a: \"test\""},{"line_number":258,"context_line":"    attribute_b: false"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_571d3172","line":256,"range":{"start_line":256,"start_character":2,"end_line":256,"end_character":18},"updated":"2016-04-18 08:47:58.000000000","message":"ditto","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"726fbe58d3e08d206d70c5210c4c151d90e38fad","unresolved":false,"context_lines":[{"line_number":253,"context_line":""},{"line_number":254,"context_line":".. code-block:: yaml"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"  plugin_section_a:"},{"line_number":257,"context_line":"    attribute_a: \"test\""},{"line_number":258,"context_line":"    attribute_b: false"},{"line_number":259,"context_line":""}],"source_content_type":"text/x-rst","patch_set":16,"id":"1a122d0e_27bb1de7","line":256,"range":{"start_line":256,"start_character":2,"end_line":256,"end_character":18},"in_reply_to":"1a122d0e_571d3172","updated":"2016-04-18 11:45:38.000000000","message":"the same: plugin_section_a it\u0027s just another level of abstraction. Plugin nic_attributes structure can have follow structure:\n\nattribute_a: \u0027a\u0027\nattribute_b: \u0027b\u0027\n\nwhich will override root attributes.","commit_id":"cbda4a42e07b3fea309d4849be80baf752600e1e"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"2427c4e3214a881ff47b1d45d58c5295c9984bdd","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* UI should properly represent schema and data for NIC, BOND and Node"},{"line_number":37,"context_line":"  attributes provided by plugin on `Configure Interfaces` and `Node`"},{"line_number":38,"context_line":"  screens. In case of Node attributes it should be done in context of [0]_"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a122d0e_ad66e726","line":38,"range":{"start_line":38,"start_character":11,"end_line":38,"end_character":74},"updated":"2016-04-18 13:55:47.000000000","message":"Could you please explain this? What does it mean to \"represent in context\"?","commit_id":"8d6cf6248b62d8f2cde269da849ca667f8027138"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f9b57c580e7c6a4b3440f7fe188808e280539dbc","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* UI should properly represent schema and data for NIC, BOND and Node"},{"line_number":37,"context_line":"  attributes provided by plugin on `Configure Interfaces` and `Node`"},{"line_number":38,"context_line":"  screens. In case of Node attributes it should be done in context of [0]_"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a122d0e_3aa147a4","line":38,"range":{"start_line":38,"start_character":11,"end_line":38,"end_character":74},"in_reply_to":"1a122d0e_ad66e726","updated":"2016-04-19 06:43:35.000000000","message":"I mean functionality for representation Node attributes on UI should be done in another blueprint. Spec began writing long time ago when node attributes were in development stage. I\u0027ll remove this sentence.","commit_id":"8d6cf6248b62d8f2cde269da849ca667f8027138"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"2427c4e3214a881ff47b1d45d58c5295c9984bdd","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a122d0e_73514ed8","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":34},"updated":"2016-04-18 13:55:47.000000000","message":"This handler is going to be used to populate default bond attribute values, right? I think it\u0027s not that easy. We\u0027ll have some difficulties with value of DPDK for bonds - it should always be true for ovs bonds and false for linux bonds. Probably this should be hardcoded on UI side - I have no idea how to describe this declaratively","commit_id":"8d6cf6248b62d8f2cde269da849ca667f8027138"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f9b57c580e7c6a4b3440f7fe188808e280539dbc","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a122d0e_fa034f40","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":34},"in_reply_to":"1a122d0e_73514ed8","updated":"2016-04-19 06:43:35.000000000","message":"Handler only returns set of available attributes without initial values. Bond creates on UI side and backend know nothing about this stage. So maybe yes, UI should check what bond created and set proper value. Agreed, that\u0027s why we need rethink current DSL model.","commit_id":"8d6cf6248b62d8f2cde269da849ca667f8027138"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"2427c4e3214a881ff47b1d45d58c5295c9984bdd","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":51,"context_line":"  attributes data."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":17,"id":"1a122d0e_73c02e2b","line":54,"range":{"start_line":53,"start_character":2,"end_line":54,"end_character":38},"updated":"2016-04-18 13:55:47.000000000","message":"Currently that\u0027s not true for offloading modes - in case of bond creation intersection of available modes is used. I think it\u0027s safe to change this behaviour to the one you propose.","commit_id":"8d6cf6248b62d8f2cde269da849ca667f8027138"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional interfaces (NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_0e4b68ca","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":65},"updated":"2016-04-19 10:28:32.000000000","message":"It sounds like:\n\n\u003e Plugins should provide additional NICs and Bonds\n\nwhich is wrong statement here. If I\u0027m not mistaken, your proposal is about extending NICs/BONDs and Node attributes. So let\u0027s make things clear and write down:\n\n\u003e Plugins should have mechanism for providing additional attributes for NICs, bonds and nodes.\n\nOne more +1 to my suggestion is, the word \u0027interfaces\u0027 could be applied for really different things.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional interfaces (NICs and"},{"line_number":21,"context_line":"bonds) and Nodes attributes. In future it can be useful when plugin provides"},{"line_number":22,"context_line":"some technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_1289c275","line":20,"range":{"start_line":20,"start_character":0,"end_line":20,"end_character":65},"in_reply_to":"1a122d0e_0e4b68ca","updated":"2016-04-19 14:07:41.000000000","message":"Done","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  attributes provided by plugin on `Configure Interfaces` and `Node`"},{"line_number":38,"context_line":"  screens."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_4ec8c022","line":40,"range":{"start_line":40,"start_character":2,"end_line":40,"end_character":55},"updated":"2016-04-19 10:28:32.000000000","message":"Could you please rephrase it? I barely understand it.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":37,"context_line":"  attributes provided by plugin on `Configure Interfaces` and `Node`"},{"line_number":38,"context_line":"  screens."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_d2a8ea79","line":40,"range":{"start_line":40,"start_character":2,"end_line":40,"end_character":55},"in_reply_to":"1a122d0e_4ec8c022","updated":"2016-04-19 14:07:41.000000000","message":"i\u0027ll try","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  screens."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_ee7d4cb2","line":41,"range":{"start_line":41,"start_character":26,"end_line":41,"end_character":63},"updated":"2016-04-19 10:28:32.000000000","message":"What exactly `default_assignment` returns? It seems like default network assigned to that interface, or what?\n\nBesides, why that URL doesn\u0027t look like the same one for BONDs below?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  screens."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_067b4c8d","line":41,"range":{"start_line":41,"start_character":26,"end_line":41,"end_character":63},"in_reply_to":"1a122d0e_ee7d4cb2","updated":"2016-04-19 14:07:41.000000000","message":"it returns default values globally for all interfaces: https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/api/v1/urls.py#L315. It was in core before and as for me it\u0027s not a right place to change it.\n\n/nodes/bonds/attributes/default call looks in more RESTful way.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_a964eee4","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":34},"updated":"2016-04-19 10:28:32.000000000","message":"Just want to clarify: this handler is supposed to return *default* values for bond properties? And those defaults should be provided by either core or plugins. Correct?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"* For rendering core and plugin NIC and BOND attributes client can receive"},{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_46f6e4f9","line":42,"range":{"start_line":42,"start_character":3,"end_line":42,"end_character":34},"in_reply_to":"1a122d0e_a964eee4","updated":"2016-04-19 14:07:41.000000000","message":"not just default values but set of all Bond attributes in system. Bond creates on UI side, so we need somehow to know which attributes should be added to it.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_6945b615","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":40},"updated":"2016-04-19 10:28:32.000000000","message":"please, add comma between those two words in order to separate two sentenced.\n\nor, rephrase it into something like:\n\n\u003e ``/nodes/:id/attributes`` should return both core and plugins Node attributes","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_d2ed8ab8","line":44,"range":{"start_line":44,"start_character":25,"end_line":44,"end_character":40},"in_reply_to":"1a122d0e_6945b615","updated":"2016-04-19 14:07:41.000000000","message":"Done","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":48,"context_line":"  default NIC data."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_4906face","line":45,"range":{"start_line":45,"start_character":16,"end_line":45,"end_character":40},"updated":"2016-04-19 10:28:32.000000000","message":"FYI: it\u0027s not markdown, code literal here is doubled `.\n\n  ``/nodes/:id/attributes/``\n\nIf you use single ` - it would be converted into italic text.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":42,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":48,"context_line":"  default NIC data."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_52ea1aad","line":45,"range":{"start_line":45,"start_character":16,"end_line":45,"end_character":40},"in_reply_to":"1a122d0e_4906face","updated":"2016-04-19 14:07:41.000000000","message":"got it, thx","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":48,"context_line":"  default NIC data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":51,"context_line":"  attributes data."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_c9fa0abd","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":18},"updated":"2016-04-19 10:28:32.000000000","message":"attributes?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":48,"context_line":"  default NIC data."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":51,"context_line":"  attributes data."}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_52869adb","line":48,"range":{"start_line":48,"start_character":14,"end_line":48,"end_character":18},"in_reply_to":"1a122d0e_c9fa0abd","updated":"2016-04-19 14:07:41.000000000","message":"Done","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":51,"context_line":"  attributes data."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_29d73e24","line":54,"range":{"start_line":53,"start_character":49,"end_line":54,"end_character":37},"updated":"2016-04-19 10:28:32.000000000","message":"Hm.. That seems like you want not only *extend NICs* attributes via plugins, but extend attributes of *only* certain NICs? Is that correct?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":50,"context_line":"* `Load defaults` button on `Node` details dialog should return default Node"},{"line_number":51,"context_line":"  attributes data."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_e61e10ba","line":54,"range":{"start_line":53,"start_character":49,"end_line":54,"end_character":37},"in_reply_to":"1a122d0e_29d73e24","updated":"2016-04-19 14:07:41.000000000","message":"yes, but I\u0027m not sure it will be done in context of this blueprint. For example: plugin provide some attribute A which will be added to interface with available DPDK, etc. In such case need to test how we can describe such expressions in plugins. In any case restriction on the same set of attributes for bonded interfaces looks like right way for me.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_a9d7cebd","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"updated":"2016-04-19 10:28:32.000000000","message":"So far we have two extending approaches:\n\n* Store plugin state in separate table (like ClusterPlugin relation), and core state in regular table (e.g. cluster attrbutes)\n\n* Store both plugin and core state in one table, and add additional relation table to refer to core or plugin stuff (e.g. deployment graph).\n\nThe latest I like more, since it simplifies flow around the code and we don\u0027t need to merge things each time we need access them. Maybe here we should follow thus principle either? Currently it seems not harder than proposed solution.\n\nWhat do you think?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"79f5efd7112aa94c898ad8efc65c0f06b8bb1eae","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_3892d3f6","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_02020fb4","updated":"2016-04-19 15:59:20.000000000","message":"2nd we will need to store plugin related attributes and core separately (because it simplifies deletion and update), so we will need to merge them anyway.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"8a83cdb87a85d84a65b05b4057571f40772f5874","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_fea5e3a1","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_02020fb4","updated":"2016-04-19 16:26:49.000000000","message":"I agree with Igor, but that means we should decompose attributes and put each of them into separated table.\nBondAttributes\nNICAttributes\n\nThe question, Are we ready to do this job.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f5a8bd052a686e54be3ea2aab89f6f6249a90a62","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_bf186976","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_09022b0b","updated":"2016-04-20 07:34:12.000000000","message":"Maybe make sense have one attributes table for all entities in nailgun? For example:\n\n`attributes` table:\n\nid\nkey\nvalue\nparent_id (FK on same table)\n\n`node_attributes`:\n\nid\nnode_id\nattribute_id (FK on attributes)\n\n`cluster_attributes`:\n\nid\ncluster_id\nattribute_id\n\n`nic_attributes`:\n\nid\nnic_id\nattribute_id\n\n`plugin_attributes`:\n\nid\nplugin_id\nattribute_id\n\n...\n\n\nIn such case as Bulat said need mechanisme to decompose json blobs into records in DB.\n\nAs for me I would rather skip it in context of this blueprint, because:\n\n1. I\u0027d like to do such changes in `atomicity` way. I see `attributes` table  as a place where all attributes stored (NIC, Bond, Cluster, Node etc.), probably better to move all at once.\n2. It\u0027s a lot of refactoring with migrations which makes this blueprint more huge. Let\u0027s divide it on two: one(current) blueprint which covers basic acceptance criteria and guaranty working functionality for NICs and another blueprint for refactor attributes model in Nailgun.\n\nWhat do you think?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"578cd4f36bfd84cd86fb09d12e8b999b2de83eeb","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_7b0725ca","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_3892d3f6","updated":"2016-04-19 16:08:10.000000000","message":"Evgeniy,\n\nI\u0027m not sure I got you right. Deletion will happened automatically if we remove plugin, using CASCADE mechanism. So I\u0027m not sure what do you mean by \"we need to merge them anyway\". As for updates, It\u0027d be much easier to update everything if they are stored in one place. No special code for extracting *plugin* stuff and saving it in special table. :)","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_02020fb4","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_a9d7cebd","updated":"2016-04-19 14:07:41.000000000","message":"AFAIS it: we need 3 table with references to NIC, BOND, Node tables and on some additional table with core and plugin attributes. And why we don\u0027t have to merge them?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"16ca621a5a3a286c6ff647c76aaf775308fced42","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_ad016308","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_bf186976","updated":"2016-04-20 08:36:02.000000000","message":"Andrii,\n\nI\u0027m not sure it should be a one table, at first glance it seems better to have separate ones for nodes, nics and cluster.\n\nBut I\u0027d rather agree that making it *the right way* and decomposing attributes into atomic entries may require a lot of work and even overlapping with decomposing openstack.yaml functionallity.\n\nSo let\u0027s do it step-by-step and follow proposed solution for now.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"0bd9f7394864784a4478fa21707513acb9d3f7dc","unresolved":false,"context_lines":[{"line_number":69,"context_line":"`node_attributes_metadata` attributes of Plugin model (Can be changed based on"},{"line_number":70,"context_line":"Plugins v5 spec [1]_)."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"Additional models `NodeNICInterfaceClusterPlugin`, `NodeClusterPlugin` and"},{"line_number":73,"context_line":"`NodeBondInterfaceClusterPlugin` will be used to store actual state of plugin"},{"line_number":74,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":75,"context_line":"node. By default \u0027attributes\u0027 fields of these models should be filled with"},{"line_number":76,"context_line":"data from `Plugin.nic_attributes_metadata`, `Plugin.node_attributes_metadata`"},{"line_number":77,"context_line":"and `Plugin.bond_attributes_metadata` respectively."},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_09022b0b","line":77,"range":{"start_line":72,"start_character":0,"end_line":77,"end_character":51},"in_reply_to":"1a122d0e_fea5e3a1","updated":"2016-04-19 16:57:43.000000000","message":"Igor, talked to Bulat, haven\u0027t got your suggestion correctly at first. Ok, basically it\u0027s more about attributes as a json blob vs attributes as entries in database. I would agree that 2nd approach looks better, the question is as always depends on timeline and amount of refactoring we will have to do.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":113,"context_line":"NIC attributes in DSL format"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`id`"},{"line_number":119,"context_line":"unique identifier"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_896e52ff","line":116,"updated":"2016-04-19 10:28:32.000000000","message":"I think we need to define unique constrain here.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":113,"context_line":"NIC attributes in DSL format"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`id`"},{"line_number":119,"context_line":"unique identifier"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_62a823dc","line":116,"in_reply_to":"1a122d0e_896e52ff","updated":"2016-04-19 14:07:41.000000000","message":"i thought `id` was enough","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":121,"context_line":"`attributes`"},{"line_number":122,"context_line":"actual state of plugin NIC attributes data"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"`cluster_plugin_id`"},{"line_number":125,"context_line":"foreign key on cluster_plugins table"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"`interface_id`"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_49643a21","line":124,"updated":"2016-04-19 10:28:32.000000000","message":"For what purpose we want that FK?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":121,"context_line":"`attributes`"},{"line_number":122,"context_line":"actual state of plugin NIC attributes data"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"`cluster_plugin_id`"},{"line_number":125,"context_line":"foreign key on cluster_plugins table"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"`interface_id`"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_0c80868a","line":124,"in_reply_to":"1a122d0e_49643a21","updated":"2016-04-19 14:07:41.000000000","message":"NIC BOND Node attributes should be available only if plugin enabled.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":127,"context_line":"`interface_id`"},{"line_number":128,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`node_id`"},{"line_number":131,"context_line":"foreign key on nodes table"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Example of `attributes` field:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_49bd5a67","line":130,"updated":"2016-04-19 10:28:32.000000000","message":"Do we really need that FK? If I\u0027m not mistaken, each interface is unique for one node.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":127,"context_line":"`interface_id`"},{"line_number":128,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`node_id`"},{"line_number":131,"context_line":"foreign key on nodes table"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"Example of `attributes` field:"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_0c2ec6a4","line":130,"in_reply_to":"1a122d0e_49bd5a67","updated":"2016-04-19 14:07:41.000000000","message":"was proposed to speed up queries for DB. It can be remove in any time","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":172,"context_line":"`bond_id`"},{"line_number":173,"context_line":"foreign key on node_bond_interfaces table"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"`node_id`"},{"line_number":176,"context_line":"foreign key on nodes table"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_69a3f64f","line":175,"updated":"2016-04-19 10:28:32.000000000","message":"ditto","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":213,"context_line":"      vendor_specific:"},{"line_number":214,"context_line":"        driver: e1000"},{"line_number":215,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":216,"context_line":"      plugin_section_a:"},{"line_number":217,"context_line":"        attribute_a: \"spam\""},{"line_number":218,"context_line":"        attribute_b: false"},{"line_number":219,"context_line":"      attribute_a: \"egg\""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_242ac57e","line":216,"updated":"2016-04-19 10:28:32.000000000","message":"Where did that come from?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":213,"context_line":"      vendor_specific:"},{"line_number":214,"context_line":"        driver: e1000"},{"line_number":215,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":216,"context_line":"      plugin_section_a:"},{"line_number":217,"context_line":"        attribute_a: \"spam\""},{"line_number":218,"context_line":"        attribute_b: false"},{"line_number":219,"context_line":"      attribute_a: \"egg\""}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_3d9dafbc","line":216,"in_reply_to":"1a122d0e_242ac57e","updated":"2016-04-19 14:07:41.000000000","message":"from attributes in PluginNICInterafaceClusterPlugins table","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":216,"context_line":"      plugin_section_a:"},{"line_number":217,"context_line":"        attribute_a: \"spam\""},{"line_number":218,"context_line":"        attribute_b: false"},{"line_number":219,"context_line":"      attribute_a: \"egg\""},{"line_number":220,"context_line":"    enp0s2:"},{"line_number":221,"context_line":"      vendor_specific:"},{"line_number":222,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_291c5e76","line":219,"updated":"2016-04-19 10:28:32.000000000","message":"What\u0027s the difference between attribute_a and attribute_a inside plugin_section_a ? I thought plugins should be able to override core attributes (you\u0027ve mentioned it above).","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":216,"context_line":"      plugin_section_a:"},{"line_number":217,"context_line":"        attribute_a: \"spam\""},{"line_number":218,"context_line":"        attribute_b: false"},{"line_number":219,"context_line":"      attribute_a: \"egg\""},{"line_number":220,"context_line":"    enp0s2:"},{"line_number":221,"context_line":"      vendor_specific:"},{"line_number":222,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_1dd7134c","line":219,"in_reply_to":"1a122d0e_291c5e76","updated":"2016-04-19 14:07:41.000000000","message":"it\u0027s different attributes. First attribute `plugin_section_a` with 2 nested attributes(attribute_a and attribute_b), second `attribute_a`","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":261,"context_line":"There will be new API call provided metadata for NIC and BOND."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":264,"context_line":"HTTP  URL                                        Description"},{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":267,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_044d096c","line":264,"updated":"2016-04-19 10:28:32.000000000","message":"Where\u0027s the API call for default NICs attributes?","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":261,"context_line":"There will be new API call provided metadata for NIC and BOND."},{"line_number":262,"context_line":""},{"line_number":263,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":264,"context_line":"HTTP  URL                                        Description"},{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":267,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_1d6553b4","line":264,"in_reply_to":"1a122d0e_044d096c","updated":"2016-04-19 14:07:41.000000000","message":"we extend with plugin attributes current API call /nodes/interfaces/default_assignment/","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":263,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":264,"context_line":"HTTP  URL                                        Description"},{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":267,"context_line":"                                                 for specific release"},{"line_number":268,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":269,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_645b1d2f","line":266,"range":{"start_line":266,"start_character":41,"end_line":266,"end_character":48},"updated":"2016-04-19 10:28:32.000000000","message":"let\u0027s call it \u0027defaults\u0027 (with trailing \u0027s\u0027) in order to be consistent with your below variant.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":263,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":264,"context_line":"HTTP  URL                                        Description"},{"line_number":265,"context_line":"\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":266,"context_line":"GET   /api/v1/nodes/:id/bonds/attributes/default Get default bond attributes"},{"line_number":267,"context_line":"                                                 for specific release"},{"line_number":268,"context_line":"GET   /api/v1/nodes/:id/attributes/defaults/     Get default node attributes"},{"line_number":269,"context_line":"                                                 for specific release"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_bd741f68","line":266,"range":{"start_line":266,"start_character":41,"end_line":266,"end_character":48},"in_reply_to":"1a122d0e_645b1d2f","updated":"2016-04-19 14:07:41.000000000","message":"Done","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":10391,"name":"Ihor Kalnytskyi","email":"ihor@kalnytskyi.com","username":"ikalnitsky"},"change_message_id":"948f3dff5e9f4daa1250f34c1f3a329f773a4136","unresolved":false,"context_lines":[{"line_number":436,"context_line":"  {"},{"line_number":437,"context_line":"    \"cpu_pinning\": {},"},{"line_number":438,"context_line":"    \"hugepages\": {},"},{"line_number":439,"context_line":"    \"plugin_section_a\": {"},{"line_number":440,"context_line":"      \"metadata\": {"},{"line_number":441,"context_line":"        \"group\": \"some_new_section\","},{"line_number":442,"context_line":"        \"label\": \"Section A\","}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_44838156","line":439,"updated":"2016-04-19 10:28:32.000000000","message":"Does it mean that plugin has name \"plugin_section_a\"? And why isolated section? I thought plugins should be able to override nodes attributes.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"7687878d15cce7ceb01833377ba836d51ae3a5ce","unresolved":false,"context_lines":[{"line_number":436,"context_line":"  {"},{"line_number":437,"context_line":"    \"cpu_pinning\": {},"},{"line_number":438,"context_line":"    \"hugepages\": {},"},{"line_number":439,"context_line":"    \"plugin_section_a\": {"},{"line_number":440,"context_line":"      \"metadata\": {"},{"line_number":441,"context_line":"        \"group\": \"some_new_section\","},{"line_number":442,"context_line":"        \"label\": \"Section A\","}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_232d9afe","line":439,"in_reply_to":"1a122d0e_44838156","updated":"2016-04-19 14:07:41.000000000","message":"no. Maybe \u0027plugin_section_a` confused example but it represents only nested attribute nothing more. For example: core node attribute \u0027hugepages` has nested attributes like dpdk, nova , etc.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":18205,"name":"Bulat Gaifullin","email":"gaifullinbf@gmail.com","username":"bgaifullin"},"change_message_id":"3e46d4d0b89803cd00fefb76345652a282afac65","unresolved":false,"context_lines":[{"line_number":665,"context_line":"Testing, QA"},{"line_number":666,"context_line":"------------"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"TBD"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"Acceptance criteria"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_50005f01","line":668,"range":{"start_line":668,"start_character":0,"end_line":668,"end_character":3},"updated":"2016-04-19 09:04:34.000000000","message":"please fill this section.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":15921,"name":"Ilya Bumarskov","email":"bumarskov@gmail.com","username":"ibumarskov"},"change_message_id":"eddecd6944f06798cc8cf73b4cf5c41a0077bfdd","unresolved":false,"context_lines":[{"line_number":665,"context_line":"Testing, QA"},{"line_number":666,"context_line":"------------"},{"line_number":667,"context_line":""},{"line_number":668,"context_line":"TBD"},{"line_number":669,"context_line":""},{"line_number":670,"context_line":""},{"line_number":671,"context_line":"Acceptance criteria"}],"source_content_type":"text/x-rst","patch_set":18,"id":"1a122d0e_495a752b","line":668,"range":{"start_line":668,"start_character":0,"end_line":668,"end_character":3},"in_reply_to":"1a122d0e_50005f01","updated":"2016-04-19 11:46:30.000000000","message":"I will fill this section till end of week.","commit_id":"831147ee3c7c8ddca6462c3a1d028ac671a8a690"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  state by ``/nodes/interfaces/default_assignment/`` and"},{"line_number":42,"context_line":"  ``/nodes/bonds/attributes/defaults`` API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* ``/nodes/:id/attributes`` should return both core and plugins Node"},{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_883eb927","line":44,"range":{"start_line":44,"start_character":35,"end_line":44,"end_character":41},"updated":"2016-04-21 16:58:12.000000000","message":"operate\n\nor\n\nreturn and change","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":41,"context_line":"  state by ``/nodes/interfaces/default_assignment/`` and"},{"line_number":42,"context_line":"  ``/nodes/bonds/attributes/defaults`` API calls."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* ``/nodes/:id/attributes`` should return both core and plugins Node"},{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_cf4a5c27","line":44,"range":{"start_line":44,"start_character":35,"end_line":44,"end_character":41},"in_reply_to":"1a122d0e_883eb927","updated":"2016-04-22 09:31:13.000000000","message":"Done","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_88afd92a","line":54,"updated":"2016-04-21 16:58:12.000000000","message":"could NICs have different set or structure of attributes? (while NICs attributes have the same template for all NICs)","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_0a6282d8","line":54,"in_reply_to":"1a122d0e_88afd92a","updated":"2016-04-22 09:31:13.000000000","message":"yes, but maybe not in this iteration. Pls look:\nhttps://review.openstack.org/#/c/282570/18/specs/10.0/nics-and-nodes-attributes-via-plugin.rst@54","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":81,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":82,"context_line":"`nic_attributes` and merged with `interface_properties` data as values. Data"},{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_6bc6b74a","line":82,"range":{"start_line":82,"start_character":34,"end_line":82,"end_character":54},"updated":"2016-04-21 16:58:12.000000000","message":"Will all data from here (including read-only data) be displayed in UI through attributes only? so that we will not have short NIC summary info in one string. Or such things will be expressed with an attribute of new type?\nAlso, it seems that some new field of attribute is needed for read-only properties.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":79,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ can be stored in"},{"line_number":80,"context_line":"`attributes` field in each related table. Core NICs `attributes` will be"},{"line_number":81,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":82,"context_line":"`nic_attributes` and merged with `interface_properties` data as values. Data"},{"line_number":83,"context_line":"from NodeNICInterfaceClusterPlugin `attributes` will be mixed with"},{"line_number":84,"context_line":"NodeNICInterface `attributes` based on info about disabled or enabled state"},{"line_number":85,"context_line":"of plugins during `/nodes/:id/interfaces/` API call. And vice versa: data from"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_8ab5f27f","line":82,"range":{"start_line":82,"start_character":34,"end_line":82,"end_character":54},"in_reply_to":"1a122d0e_6bc6b74a","updated":"2016-04-22 09:31:13.000000000","message":"maybe we can provide new attribute like \u0027short_summary` and fill it based on `interface_properties` info during attribute creation and describe new attribute field \u0027read_only` for read-only properties.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Plugin can override core interface attributes. In case when two or plugins"},{"line_number":93,"context_line":"override same attribute conflict exception should be raised."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_2b5cbfec","line":92,"range":{"start_line":92,"start_character":60,"end_line":92,"end_character":74},"updated":"2016-04-21 16:58:12.000000000","message":"two plugins","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":89,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":90,"context_line":"relations with empty `attributes` shouldn\u0027t exist."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"Plugin can override core interface attributes. In case when two or plugins"},{"line_number":93,"context_line":"override same attribute conflict exception should be raised."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_af92809d","line":92,"range":{"start_line":92,"start_character":60,"end_line":92,"end_character":74},"in_reply_to":"1a122d0e_2b5cbfec","updated":"2016-04-22 09:31:13.000000000","message":"Done","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. code-block:: json"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  {"},{"line_number":138,"context_line":"    \"attribute_a\": {"},{"line_number":139,"context_line":"      \"label\": \"NIC attribute A\","},{"line_number":140,"context_line":"      \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_cb4d4bc6","line":137,"updated":"2016-04-21 16:58:12.000000000","message":"seems it should be different. UI-related things are stored in other place. I suppose, only values should be here.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. code-block:: json"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  {"},{"line_number":138,"context_line":"    \"attribute_a\": {"},{"line_number":139,"context_line":"      \"label\": \"NIC attribute A\","},{"line_number":140,"context_line":"      \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_1458e955","line":137,"in_reply_to":"1a122d0e_346245ae","updated":"2016-04-22 09:31:13.000000000","message":"Data for core is separated because we need to get default values from interface_properties. In case of plugin it\u0027s declared in YAML file.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"11fb2c04457b2151028b1196ef767e127cbe5f38","unresolved":false,"context_lines":[{"line_number":134,"context_line":""},{"line_number":135,"context_line":".. code-block:: json"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"  {"},{"line_number":138,"context_line":"    \"attribute_a\": {"},{"line_number":139,"context_line":"      \"label\": \"NIC attribute A\","},{"line_number":140,"context_line":"      \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_346245ae","line":137,"in_reply_to":"1a122d0e_cb4d4bc6","updated":"2016-04-22 08:44:29.000000000","message":"or these tables (plugin-related) hold combined data (meta + actual values) but data for core is separated? is it not very clear from the document. why partial separation then? is not it easier to do the same for core and for plugins attrs?","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fd97ecc400281e3b0a7628daf89e37ab0887b357","unresolved":false,"context_lines":[{"line_number":241,"context_line":"      interface_properties:"},{"line_number":242,"context_line":"        vendor_specific:"},{"line_number":243,"context_line":"          disable_offloading: true"},{"line_number":244,"context_line":"      plugin_section_a:"},{"line_number":245,"context_line":"        attribute_a: \"test\""},{"line_number":246,"context_line":"        attribute_b: true"},{"line_number":247,"context_line":"      action: add-bond"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_6ec0857d","line":244,"updated":"2016-04-21 16:58:12.000000000","message":"where is \u0027plugin_section_a\u0027 from? I don\u0027t see it in API and Plugin examples.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2c57f4655be6bd3934979f6d05457a7364cc9c81","unresolved":false,"context_lines":[{"line_number":241,"context_line":"      interface_properties:"},{"line_number":242,"context_line":"        vendor_specific:"},{"line_number":243,"context_line":"          disable_offloading: true"},{"line_number":244,"context_line":"      plugin_section_a:"},{"line_number":245,"context_line":"        attribute_a: \"test\""},{"line_number":246,"context_line":"        attribute_b: true"},{"line_number":247,"context_line":"      action: add-bond"}],"source_content_type":"text/x-rst","patch_set":20,"id":"1a122d0e_4f9accc6","line":244,"in_reply_to":"1a122d0e_6ec0857d","updated":"2016-04-22 09:31:13.000000000","message":"sorry, missed that. I\u0027ve removed this section from NIC and BOND and leave it only for node attributes as example of nested attributes.","commit_id":"e2e03216919b23d9d7d40733cf800d5d52604e24"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"b20fcf38c15459ba8ad34851e47068e21960a3bc","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_856cc509","line":54,"updated":"2016-04-22 09:48:41.000000000","message":"Seems, we have different rules for bonding. E.g., when SR-IOV is enabled (SR-IOV availability does not matter), such NIC cannot be a bond slave. If some NICs support DPDK and some are not, all of them can be bonded (but it will be non-DPDK bond). So, availability of bonding depends on conditions that we have for bonds of different types (https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/fixtures/openstack.yaml#L378-L408) not just on difference in attributes structure or even their values.","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"ceeb9fab7f64cef7bc0fb78c26cd5cd8af00eea9","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_de4f70bc","line":54,"in_reply_to":"1a122d0e_856cc509","updated":"2016-04-25 07:47:04.000000000","message":"thx. Made a note.","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"b20fcf38c15459ba8ad34851e47068e21960a3bc","unresolved":false,"context_lines":[{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure."},{"line_number":55,"context_line":""},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"Nailgun"},{"line_number":58,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_a9739bb3","line":55,"updated":"2016-04-22 09:48:41.000000000","message":"Let\u0027s list new properties of attributes at least:\n\n1. read-only support,\n2. provide path to interface_properties (or more general path maybe). e.g. \"interface_properties.sriov.enabled\"\n3. new type for summary attribute.\n\nNeed to discuss with UI team.","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":7468,"name":"Sergey Vasilenko","email":"svasilenko@mirantis.com","username":"xenolog"},"change_message_id":"378274adec0b96f32dae9dc0bd3d07ec4439e057","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        driver: e1000"},{"line_number":216,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":217,"context_line":"      attribute_a: \"spam\""},{"line_number":218,"context_line":"      attribute_b: false"},{"line_number":219,"context_line":"    enp0s2:"},{"line_number":220,"context_line":"      vendor_specific:"},{"line_number":221,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_b18b5ec2","line":218,"updated":"2016-04-28 16:19:07.000000000","message":"All attributes should be into vendor_specific hash","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f622cd4f541dfe24132402b0833d3e68655d2fff","unresolved":false,"context_lines":[{"line_number":215,"context_line":"        driver: e1000"},{"line_number":216,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":217,"context_line":"      attribute_a: \"spam\""},{"line_number":218,"context_line":"      attribute_b: false"},{"line_number":219,"context_line":"    enp0s2:"},{"line_number":220,"context_line":"      vendor_specific:"},{"line_number":221,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_4fcc2335","line":218,"in_reply_to":"1a122d0e_b18b5ec2","updated":"2016-05-05 08:32:24.000000000","message":"Done","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":7468,"name":"Sergey Vasilenko","email":"svasilenko@mirantis.com","username":"xenolog"},"change_message_id":"378274adec0b96f32dae9dc0bd3d07ec4439e057","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        vendor_specific:"},{"line_number":240,"context_line":"          disable_offloading: true"},{"line_number":241,"context_line":"      attribute_a: \"test\""},{"line_number":242,"context_line":"      attribute_b: true"},{"line_number":243,"context_line":"      action: add-bond"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"for Node attributes:"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_f19156f2","line":242,"updated":"2016-04-28 16:19:07.000000000","message":"ditto","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f622cd4f541dfe24132402b0833d3e68655d2fff","unresolved":false,"context_lines":[{"line_number":239,"context_line":"        vendor_specific:"},{"line_number":240,"context_line":"          disable_offloading: true"},{"line_number":241,"context_line":"      attribute_a: \"test\""},{"line_number":242,"context_line":"      attribute_b: true"},{"line_number":243,"context_line":"      action: add-bond"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":"for Node attributes:"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_8fd2bbcf","line":242,"in_reply_to":"1a122d0e_f19156f2","updated":"2016-05-05 08:32:24.000000000","message":"Done","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":7468,"name":"Sergey Vasilenko","email":"svasilenko@mirantis.com","username":"xenolog"},"change_message_id":"378274adec0b96f32dae9dc0bd3d07ec4439e057","unresolved":false,"context_lines":[{"line_number":632,"context_line":"  * Aleksey Kasatkin \u003cakasatkin@mirantis.com\u003e"},{"line_number":633,"context_line":"  * Evgeniy L \u003celi@mirantis.com\u003e"},{"line_number":634,"context_line":"  * Igor Kalnitsky \u003cikalnitsky@mirantis.com\u003e"},{"line_number":635,"context_line":"  * Vitaly Kramskikh \u003cvkramskikh@mirantis.com\u003e"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_2c01b505","line":635,"updated":"2016-04-28 16:19:07.000000000","message":"Please inform me about any changes or additions into the network_scheme.","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f622cd4f541dfe24132402b0833d3e68655d2fff","unresolved":false,"context_lines":[{"line_number":632,"context_line":"  * Aleksey Kasatkin \u003cakasatkin@mirantis.com\u003e"},{"line_number":633,"context_line":"  * Evgeniy L \u003celi@mirantis.com\u003e"},{"line_number":634,"context_line":"  * Igor Kalnitsky \u003cikalnitsky@mirantis.com\u003e"},{"line_number":635,"context_line":"  * Vitaly Kramskikh \u003cvkramskikh@mirantis.com\u003e"},{"line_number":636,"context_line":""},{"line_number":637,"context_line":""},{"line_number":638,"context_line":"Work Items"}],"source_content_type":"text/x-rst","patch_set":21,"id":"1a122d0e_ef6d2f33","line":635,"in_reply_to":"1a122d0e_2c01b505","updated":"2016-05-05 08:32:24.000000000","message":"will do","commit_id":"2e87ef5c18bf728f4b33a085d8851490fefaeabd"},{"author":{"_account_id":7468,"name":"Sergey Vasilenko","email":"svasilenko@mirantis.com","username":"xenolog"},"change_message_id":"2f4956e511c6ee2e2a6554ef967846131f221b61","unresolved":false,"context_lines":[{"line_number":216,"context_line":"        driver: e1000"},{"line_number":217,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":218,"context_line":"      attribute_a: \"spam\""},{"line_number":219,"context_line":"      attribute_b: false"},{"line_number":220,"context_line":"    enp0s2:"},{"line_number":221,"context_line":"      vendor_specific:"},{"line_number":222,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a122d0e_92e4600d","line":219,"updated":"2016-04-28 17:17:38.000000000","message":"All additional attributes should be into vendor_specific hash","commit_id":"02ec6f9f78952eee4facb61550b61b6ce61a2851"},{"author":{"_account_id":7468,"name":"Sergey Vasilenko","email":"svasilenko@mirantis.com","username":"xenolog"},"change_message_id":"2f4956e511c6ee2e2a6554ef967846131f221b61","unresolved":false,"context_lines":[{"line_number":240,"context_line":"        vendor_specific:"},{"line_number":241,"context_line":"          disable_offloading: true"},{"line_number":242,"context_line":"      attribute_a: \"test\""},{"line_number":243,"context_line":"      attribute_b: true"},{"line_number":244,"context_line":"      action: add-bond"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"for Node attributes:"}],"source_content_type":"text/x-rst","patch_set":23,"id":"1a122d0e_d2ea58d7","line":243,"updated":"2016-04-28 17:17:38.000000000","message":"ditto","commit_id":"02ec6f9f78952eee4facb61550b61b6ce61a2851"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"c44afaa6c0f68eaad3b74e2096c95714ba0d65a6","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"},{"line_number":82,"context_line":"``attributes`` field in each related table. Core NICs ``attributes`` will be"},{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and merged with ``interface_properties`` data as values."},{"line_number":85,"context_line":"Data from ``NodeNICInterfaceClusterPlugin.attributes`` will be mixed with"},{"line_number":86,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":87,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_29c40a3e","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":57},"updated":"2016-05-11 14:10:10.000000000","message":"seems, we are getting rid of this field as it is actually became splitted into \u0027meta\u0027 and \u0027attributes\u0027. Default values for all writeable parameters are generated by nailgun so it can generate them into attributes the same way.","commit_id":"68a8c002b31d41b596475ceff6b3031802afdd31"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"f1403e3cb1a8d43b48532af98118416884951005","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"},{"line_number":82,"context_line":"``attributes`` field in each related table. Core NICs ``attributes`` will be"},{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and merged with ``interface_properties`` data as values."},{"line_number":85,"context_line":"Data from ``NodeNICInterfaceClusterPlugin.attributes`` will be mixed with"},{"line_number":86,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":87,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_89b89676","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":57},"in_reply_to":"dab17558_29c40a3e","updated":"2016-05-11 14:17:01.000000000","message":"so we can get values directly from Node meta, correct?","commit_id":"68a8c002b31d41b596475ceff6b3031802afdd31"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"392f1d6da0c15419e7321ad7c64d4160b6b1e977","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"},{"line_number":82,"context_line":"``attributes`` field in each related table. Core NICs ``attributes`` will be"},{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and merged with ``interface_properties`` data as values."},{"line_number":85,"context_line":"Data from ``NodeNICInterfaceClusterPlugin.attributes`` will be mixed with"},{"line_number":86,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":87,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"}],"source_content_type":"text/x-rst","patch_set":25,"id":"dab17558_04e2cd2e","line":84,"range":{"start_line":84,"start_character":37,"end_line":84,"end_character":57},"in_reply_to":"dab17558_89b89676","updated":"2016-05-11 14:24:29.000000000","message":"NICs \u0027meta\u0027 has only read-only values. Default values for attributes can be generated by nailgun the same way as it is done now for default values in interface_properties.","commit_id":"68a8c002b31d41b596475ceff6b3031802afdd31"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"2e0b0f6e194ad0ffd756f9c649f97f6970748577","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"},{"line_number":82,"context_line":"``attributes`` field in each related table. Core NICs ``attributes`` will be"},{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and merged with ``Node.meta`` data as values. Data from ``NodeNICInterfaceClusterPlugin.attributes`` will be mixed with"},{"line_number":85,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":86,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"},{"line_number":87,"context_line":"from client will be split and stored between these two tables. Same logic will"}],"source_content_type":"text/x-rst","patch_set":26,"id":"dab17558_a4e661e5","line":84,"range":{"start_line":84,"start_character":74,"end_line":84,"end_character":75},"updated":"2016-05-11 14:28:05.000000000","message":"let\u0027s split long lines )","commit_id":"01aa69c8c5cbceb0b7629e2e8cd1ab72a37d3342"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"5770ca53313e1f20a87c1516fe12b16b3d99ca88","unresolved":false,"context_lines":[{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"},{"line_number":82,"context_line":"``attributes`` field in each related table. Core NICs ``attributes`` will be"},{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and merged with ``Node.meta`` data as values. Data from ``NodeNICInterfaceClusterPlugin.attributes`` will be mixed with"},{"line_number":85,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":86,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"},{"line_number":87,"context_line":"from client will be split and stored between these two tables. Same logic will"}],"source_content_type":"text/x-rst","patch_set":26,"id":"dab17558_ff2e348a","line":84,"range":{"start_line":84,"start_character":74,"end_line":84,"end_character":75},"in_reply_to":"dab17558_a4e661e5","updated":"2016-05-11 14:35:51.000000000","message":"Done","commit_id":"01aa69c8c5cbceb0b7629e2e8cd1ab72a37d3342"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"f608c038e796f73056f33b9a7a42c7415ef23b6f","unresolved":false,"context_lines":[{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"`NodeNICInterface.meta` and `NodeBondInterface.meta` will be used to store"},{"line_number":93,"context_line":"read-only metadata and filled with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."}],"source_content_type":"text/x-rst","patch_set":28,"id":"dab17558_f8d5a942","line":93,"range":{"start_line":93,"start_character":19,"end_line":93,"end_character":56},"updated":"2016-05-11 15:35:47.000000000","message":"just for \u0027NodeNICInterface.meta\u0027\n\nand it will be synchronized with Node.meta not always, just in certain conditions.","commit_id":"20afa599cb1a147f6000342fa03514f3e5b5ebe4"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"2f3fe0f0653f94da837e3b4fd3793eff98b65a62","unresolved":false,"context_lines":[{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"`NodeNICInterface.meta` and `NodeBondInterface.meta` will be used to store"},{"line_number":93,"context_line":"read-only metadata and filled with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."}],"source_content_type":"text/x-rst","patch_set":28,"id":"dab17558_37c9e05b","line":93,"range":{"start_line":93,"start_character":19,"end_line":93,"end_character":56},"in_reply_to":"dab17558_f16be9ee","updated":"2016-05-12 07:56:56.000000000","message":"It can be changed if HW is changed )","commit_id":"20afa599cb1a147f6000342fa03514f3e5b5ebe4"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"cd1cb506d0c225eafda73c79f25bfb00c2faa3cb","unresolved":false,"context_lines":[{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"`NodeNICInterface.meta` and `NodeBondInterface.meta` will be used to store"},{"line_number":93,"context_line":"read-only metadata and filled with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."}],"source_content_type":"text/x-rst","patch_set":28,"id":"dab17558_f16be9ee","line":93,"range":{"start_line":93,"start_character":19,"end_line":93,"end_character":56},"in_reply_to":"dab17558_f8d5a942","updated":"2016-05-12 06:38:58.000000000","message":"remove `NodeBondInterface.meta`. And about synchronization - AFAIK it should be filled once during initialization, because read-only attributes it\u0027s hardware properties which not changing in time","commit_id":"20afa599cb1a147f6000342fa03514f3e5b5ebe4"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional attributes for NICs,"},{"line_number":21,"context_line":"bonds and nodes. In future it can be useful when plugin provides some"},{"line_number":22,"context_line":"technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_4963e9dd","line":20,"range":{"start_line":20,"start_character":8,"end_line":20,"end_character":29},"updated":"2016-05-13 08:13:52.000000000","message":"should have a mechanism","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional attributes for NICs,"},{"line_number":21,"context_line":"bonds and nodes. In future it can be useful when plugin provides some"},{"line_number":22,"context_line":"technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_6f6d0d32","line":20,"range":{"start_line":20,"start_character":8,"end_line":20,"end_character":29},"in_reply_to":"dab17558_4963e9dd","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional attributes for NICs,"},{"line_number":21,"context_line":"bonds and nodes. In future it can be useful when plugin provides some"},{"line_number":22,"context_line":"technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_69686dbb","line":22,"range":{"start_line":22,"start_character":60,"end_line":22,"end_character":72},"updated":"2016-05-13 08:13:52.000000000","message":"For example,","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanism for providing additional attributes for NICs,"},{"line_number":21,"context_line":"bonds and nodes. In future it can be useful when plugin provides some"},{"line_number":22,"context_line":"technology which should work \"per interface\" or \"per node\". For example:"},{"line_number":23,"context_line":"in case of Contrail we need support VF for vRouter on each network interface."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_8f72f10f","line":22,"range":{"start_line":22,"start_character":60,"end_line":22,"end_character":72},"in_reply_to":"dab17558_69686dbb","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure and depends on availability conditions"},{"line_number":55,"context_line":"  for different type of bonds."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_097f2167","line":54,"range":{"start_line":54,"start_character":42,"end_line":54,"end_character":49},"updated":"2016-05-13 08:13:52.000000000","message":"depend","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure and depends on availability conditions"},{"line_number":55,"context_line":"  for different type of bonds."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_0f5d6179","line":54,"range":{"start_line":54,"start_character":42,"end_line":54,"end_character":49},"in_reply_to":"dab17558_097f2167","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":75,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":76,"context_line":"node. By default ``attributes`` fields of these models should be filled with"},{"line_number":77,"context_line":"data from ``Plugin.nic_attributes_metadata``,"},{"line_number":78,"context_line":"``Plugin.node_attributes_metadata`` and `Plugin.bond_attributes_metadata`"},{"line_number":79,"context_line":"respectively."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_c9d2395b","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":41},"updated":"2016-05-13 08:13:52.000000000","message":"``...``","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":75,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":76,"context_line":"node. By default ``attributes`` fields of these models should be filled with"},{"line_number":77,"context_line":"data from ``Plugin.nic_attributes_metadata``,"},{"line_number":78,"context_line":"``Plugin.node_attributes_metadata`` and `Plugin.bond_attributes_metadata`"},{"line_number":79,"context_line":"respectively."},{"line_number":80,"context_line":""},{"line_number":81,"context_line":"Fuel core NIC, BOND and Node ``attributes`` [0]_ can be stored in"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_8663f3dc","line":78,"range":{"start_line":78,"start_character":40,"end_line":78,"end_character":41},"in_reply_to":"dab17558_c9d2395b","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and values will be generated in same way as for"},{"line_number":85,"context_line":"``interface_properties``. Data from"},{"line_number":86,"context_line":"``NodeNICInterfaceClusterPlugin.attributes``will be mixed with"},{"line_number":87,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":88,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"},{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_c93999a5","line":86,"range":{"start_line":86,"start_character":42,"end_line":86,"end_character":48},"updated":"2016-05-13 08:13:52.000000000","message":"a white space is missing","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":83,"context_line":"filled with default attributes from Release which are taken from"},{"line_number":84,"context_line":"``nic_attributes`` and values will be generated in same way as for"},{"line_number":85,"context_line":"``interface_properties``. Data from"},{"line_number":86,"context_line":"``NodeNICInterfaceClusterPlugin.attributes``will be mixed with"},{"line_number":87,"context_line":"``NodeNICInterface.attributes`` based on info about disabled or enabled state"},{"line_number":88,"context_line":"of plugins during ``/nodes/:id/interfaces/`` API call. And vice versa: data"},{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_efed7d8f","line":86,"range":{"start_line":86,"start_character":42,"end_line":86,"end_character":48},"in_reply_to":"dab17558_c93999a5","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"},{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"`NodeNICInterface.meta` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_a95535c7","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":23},"updated":"2016-05-13 08:13:52.000000000","message":"``...``","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"},{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"`NodeNICInterface.meta` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_efbbbd73","line":92,"range":{"start_line":92,"start_character":0,"end_line":92,"end_character":23},"in_reply_to":"dab17558_a95535c7","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":92,"context_line":"`NodeNICInterface.meta` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_095ba1f7","line":95,"range":{"start_line":95,"start_character":10,"end_line":95,"end_character":18},"updated":"2016-05-13 08:13:52.000000000","message":"does not","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":92,"context_line":"`NodeNICInterface.meta` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_0fb9e179","line":95,"range":{"start_line":95,"start_character":10,"end_line":95,"end_character":18},"in_reply_to":"dab17558_095ba1f7","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_a96c159d","line":96,"range":{"start_line":96,"start_character":36,"end_line":96,"end_character":43},"updated":"2016-05-13 08:13:52.000000000","message":"should not","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_6fb06d8c","line":96,"range":{"start_line":96,"start_character":36,"end_line":96,"end_character":43},"in_reply_to":"dab17558_a96c159d","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_89fe71ac","line":98,"range":{"start_line":98,"start_character":47,"end_line":98,"end_character":59},"updated":"2016-05-13 08:13:52.000000000","message":"In case when --\u003e if","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":95,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_4f59295b","line":98,"range":{"start_line":98,"start_character":47,"end_line":98,"end_character":59},"in_reply_to":"dab17558_89fe71ac","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Nailgun DB tables changes:"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_c9d5191c","line":99,"range":{"start_line":99,"start_character":9,"end_line":99,"end_character":23},"updated":"2016-05-13 08:13:52.000000000","message":"the same attribute, (comma) a conflict exception should be raised","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":96,"context_line":"relations with empty ``attributes`` shouldn\u0027t exist."},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"Plugin can override core interface attributes. In case when two plugins"},{"line_number":99,"context_line":"override same attribute conflict exception should be raised."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Nailgun DB tables changes:"},{"line_number":102,"context_line":""}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_6f5ead46","line":99,"range":{"start_line":99,"start_character":9,"end_line":99,"end_character":23},"in_reply_to":"dab17558_c9d5191c","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"**Plugin**"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_49c92979","line":106,"range":{"start_line":106,"start_character":1,"end_line":106,"end_character":24},"updated":"2016-05-13 08:13:52.000000000","message":"please use double backticks to wrap the code/parameters/etc inline --\u003e ``nic_attributes_metadata``.\nCheck this through the whole file, please","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":103,"context_line":""},{"line_number":104,"context_line":"**Plugin**"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_b2c47e40","line":106,"range":{"start_line":106,"start_character":1,"end_line":106,"end_character":24},"in_reply_to":"dab17558_49c92979","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":104,"context_line":"**Plugin**"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"},{"line_number":110,"context_line":"plugin attributes data taken from `bond_attributes` yaml"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_a949b5d2","line":107,"updated":"2016-05-13 08:13:52.000000000","message":"If you intend formatting this piece of text as a definition list, you should indent the 107 line properly. Please see http://docs.openstack.org/contributor-guide/rst-conv/lists.html for details.","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"**Plugin**"},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"},{"line_number":110,"context_line":"plugin attributes data taken from `bond_attributes` yaml"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_92bfbaa9","line":107,"in_reply_to":"dab17558_a949b5d2","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"},{"line_number":110,"context_line":"plugin attributes data taken from `bond_attributes` yaml"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"`node_attributes_metadata`"},{"line_number":113,"context_line":"plugin attributes data taken from `node_attributes` yaml"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterface**"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_6926ad17","line":113,"range":{"start_line":109,"start_character":0,"end_line":113,"end_character":56},"updated":"2016-05-13 08:13:52.000000000","message":"ditto","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":106,"context_line":"`nic_attributes_metadata`"},{"line_number":107,"context_line":"plugin attributes data taken from `nic_attributes` yaml"},{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`bond_attributes_metadata`"},{"line_number":110,"context_line":"plugin attributes data taken from `bond_attributes` yaml"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"`node_attributes_metadata`"},{"line_number":113,"context_line":"plugin attributes data taken from `node_attributes` yaml"},{"line_number":114,"context_line":""},{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterface**"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_863c93c0","line":113,"range":{"start_line":109,"start_character":0,"end_line":113,"end_character":56},"in_reply_to":"dab17558_6926ad17","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterface**"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`attributes`"},{"line_number":119,"context_line":"NIC attributes in DSL format"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"`meta`"},{"line_number":122,"context_line":"Read-only metadata"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"**NodeNICInterfaceClusterPlugin**"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_891b11ca","line":122,"range":{"start_line":118,"start_character":0,"end_line":122,"end_character":18},"updated":"2016-05-13 08:13:52.000000000","message":"ditto","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":115,"context_line":""},{"line_number":116,"context_line":"**NodeNICInterface**"},{"line_number":117,"context_line":""},{"line_number":118,"context_line":"`attributes`"},{"line_number":119,"context_line":"NIC attributes in DSL format"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"`meta`"},{"line_number":122,"context_line":"Read-only metadata"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":""},{"line_number":125,"context_line":"**NodeNICInterfaceClusterPlugin**"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_e64bdf57","line":122,"range":{"start_line":118,"start_character":0,"end_line":122,"end_character":18},"in_reply_to":"dab17558_891b11ca","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"`id`"},{"line_number":128,"context_line":"unique identifier"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`attributes`"},{"line_number":131,"context_line":"actual state of plugin NIC attributes data"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_098601db","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":17},"updated":"2016-05-13 08:13:52.000000000","message":"ditto","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":124,"context_line":""},{"line_number":125,"context_line":"**NodeNICInterfaceClusterPlugin**"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":"`id`"},{"line_number":128,"context_line":"unique identifier"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`attributes`"},{"line_number":131,"context_line":"actual state of plugin NIC attributes data"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_069ee3b7","line":128,"range":{"start_line":127,"start_character":0,"end_line":128,"end_character":17},"in_reply_to":"dab17558_098601db","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14643,"name":"Olga Gusarenko","email":"ogusarenko@mirantis.com","username":"Olga"},"change_message_id":"872a17e46bb023de6b574314b4a0e69ce848c097","unresolved":false,"context_lines":[{"line_number":128,"context_line":"unique identifier"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`attributes`"},{"line_number":131,"context_line":"actual state of plugin NIC attributes data"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"`cluster_plugin_id`"},{"line_number":134,"context_line":"foreign key on cluster_plugins table"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_494f69be","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":6},"updated":"2016-05-13 08:13:52.000000000","message":"Start each new line with a capital letter. Please check through the file.","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"42f5615711b3a081453a2a2c9ea0eaef94bf3a4e","unresolved":false,"context_lines":[{"line_number":128,"context_line":"unique identifier"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"`attributes`"},{"line_number":131,"context_line":"actual state of plugin NIC attributes data"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"`cluster_plugin_id`"},{"line_number":134,"context_line":"foreign key on cluster_plugins table"}],"source_content_type":"text/x-rst","patch_set":31,"id":"dab17558_c6469b4e","line":131,"range":{"start_line":131,"start_character":0,"end_line":131,"end_character":6},"in_reply_to":"dab17558_494f69be","updated":"2016-05-13 11:33:05.000000000","message":"Done","commit_id":"6a13a3de699a4f963fa45414b5323f05216c36ff"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"},{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"``NodeNICInterface.meta`` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` should not exist."}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_8da38bff","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":26},"updated":"2016-05-17 10:15:54.000000000","message":"Will plugins be able add values to nics meta?","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c1e756c468476739bcb240d6a19668133cc69a15","unresolved":false,"context_lines":[{"line_number":89,"context_line":"from client will be split and stored between these two tables. Same logic will"},{"line_number":90,"context_line":"be used for BOND and Node attributes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"``NodeNICInterface.meta`` will be used to store read-only metadata and filled"},{"line_number":93,"context_line":"with ``Node.meta`` values."},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":96,"context_line":"relations with empty ``attributes`` should not exist."}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_76e6f8b0","line":93,"range":{"start_line":92,"start_character":0,"end_line":93,"end_character":26},"in_reply_to":"dab17558_8da38bff","updated":"2016-05-17 11:57:36.000000000","message":"I don\u0027t think so. Meta contains hardware specific data and plugin haven\u0027t impact on it.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":284,"context_line":"      \"type\": \"select\","},{"line_number":285,"context_line":"      \"weight\": 10,"},{"line_number":286,"context_line":"      \"values\": ["},{"line_number":287,"context_line":"        {\"balance-rr\": \"balance-rr\"},"},{"line_number":288,"context_line":"        {\"some-label-1\": \"some-value-1\"},"},{"line_number":289,"context_line":"        {\"some-label-n\": \"some-value-n\"}"},{"line_number":290,"context_line":"      ]"},{"line_number":291,"context_line":"      \"value\": \"balance-rr\","},{"line_number":292,"context_line":"    },"}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_ed4e9736","line":289,"range":{"start_line":287,"start_character":0,"end_line":289,"end_character":40},"updated":"2016-05-17 10:15:54.000000000","message":"Select control uses the same data format as for radiobuttons - array of objects with keys \"data\" and \"label\"","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c1e756c468476739bcb240d6a19668133cc69a15","unresolved":false,"context_lines":[{"line_number":284,"context_line":"      \"type\": \"select\","},{"line_number":285,"context_line":"      \"weight\": 10,"},{"line_number":286,"context_line":"      \"values\": ["},{"line_number":287,"context_line":"        {\"balance-rr\": \"balance-rr\"},"},{"line_number":288,"context_line":"        {\"some-label-1\": \"some-value-1\"},"},{"line_number":289,"context_line":"        {\"some-label-n\": \"some-value-n\"}"},{"line_number":290,"context_line":"      ]"},{"line_number":291,"context_line":"      \"value\": \"balance-rr\","},{"line_number":292,"context_line":"    },"}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_501db771","line":289,"range":{"start_line":287,"start_character":0,"end_line":289,"end_character":40},"in_reply_to":"dab17558_ed4e9736","updated":"2016-05-17 11:57:36.000000000","message":"will do","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        {\"some-label-n\": \"some-value-n\"}"},{"line_number":290,"context_line":"      ]"},{"line_number":291,"context_line":"      \"value\": \"balance-rr\","},{"line_number":292,"context_line":"    },"},{"line_number":293,"context_line":"    \"attribute_a\": {"},{"line_number":294,"context_line":"      \"label\": \"BOND attribute A\","},{"line_number":295,"context_line":"      \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_4deb6313","line":292,"updated":"2016-05-17 10:15:54.000000000","message":"Hmm, I thought we\u0027re going to keep boding mode as an explicit property, like bond type. If not, we must preserve existing mechanism of restrictions for such modes. See networks_metadata.bonding.properties section in openstack.yaml.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"91e4ea952b134e3d24864562f577e30652a60f24","unresolved":false,"context_lines":[{"line_number":289,"context_line":"        {\"some-label-n\": \"some-value-n\"}"},{"line_number":290,"context_line":"      ]"},{"line_number":291,"context_line":"      \"value\": \"balance-rr\","},{"line_number":292,"context_line":"    },"},{"line_number":293,"context_line":"    \"attribute_a\": {"},{"line_number":294,"context_line":"      \"label\": \"BOND attribute A\","},{"line_number":295,"context_line":"      \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bab6814e_bf2c6eac","line":292,"in_reply_to":"dab17558_4deb6313","updated":"2016-05-18 13:59:06.000000000","message":"yes, maybe better to get bonding mode value from networks_metadata. Fixed","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        }"},{"line_number":337,"context_line":"      }"},{"line_number":338,"context_line":"      \"attributes\": {"},{"line_number":339,"context_line":"        \"disable_offloading\": {"},{"line_number":340,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":341,"context_line":"          \"weight\": 10,"},{"line_number":342,"context_line":"          \"type\": \"checkbox\","},{"line_number":343,"context_line":"          \"value\": False,"},{"line_number":344,"context_line":"        },"},{"line_number":345,"context_line":"        \"mtu\": {"},{"line_number":346,"context_line":"          \"label\": \"MTU\","},{"line_number":347,"context_line":"          \"weight\": 20,"}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_2a940535","line":344,"range":{"start_line":339,"start_character":0,"end_line":344,"end_character":10},"updated":"2016-05-17 10:15:54.000000000","message":"Could you please provide example of \"modern\" offloading options? Checkbox will only be available for deployments upgraded from Fuel 7.0 AFAIR","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"91e4ea952b134e3d24864562f577e30652a60f24","unresolved":false,"context_lines":[{"line_number":336,"context_line":"        }"},{"line_number":337,"context_line":"      }"},{"line_number":338,"context_line":"      \"attributes\": {"},{"line_number":339,"context_line":"        \"disable_offloading\": {"},{"line_number":340,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":341,"context_line":"          \"weight\": 10,"},{"line_number":342,"context_line":"          \"type\": \"checkbox\","},{"line_number":343,"context_line":"          \"value\": False,"},{"line_number":344,"context_line":"        },"},{"line_number":345,"context_line":"        \"mtu\": {"},{"line_number":346,"context_line":"          \"label\": \"MTU\","},{"line_number":347,"context_line":"          \"weight\": 20,"}],"source_content_type":"text/x-rst","patch_set":32,"id":"bab6814e_b265bce2","line":344,"range":{"start_line":339,"start_character":0,"end_line":344,"end_character":10},"in_reply_to":"dab17558_2a940535","updated":"2016-05-18 13:59:06.000000000","message":"Done","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":348,"context_line":"          \"type\": \"text\","},{"line_number":349,"context_line":"          \"value\": \"\""},{"line_number":350,"context_line":"        },"},{"line_number":351,"context_line":"        \"sriov\" : {"},{"line_number":352,"context_line":"          \"label\": \"SRIOV\","},{"line_number":353,"context_line":"          \"type\": \"checkbox\","},{"line_number":354,"context_line":"          \"enabled\": Boolean or null,"},{"line_number":355,"context_line":"          \"sriov_numvfs\": {"},{"line_number":356,"context_line":"            \"label\": \"virtual_functions\""},{"line_number":357,"context_line":"            \"type\": \"number\","},{"line_number":358,"context_line":"            \"min\": \"0\","}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_eade7dd8","line":355,"range":{"start_line":351,"start_character":0,"end_line":355,"end_character":27},"updated":"2016-05-17 10:15:54.000000000","message":"Is this a section with parameters? If so, it doesn\u0027t match our cluster and node settings structure. It should _always_ have 2 levels - section and individual options.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"91e4ea952b134e3d24864562f577e30652a60f24","unresolved":false,"context_lines":[{"line_number":348,"context_line":"          \"type\": \"text\","},{"line_number":349,"context_line":"          \"value\": \"\""},{"line_number":350,"context_line":"        },"},{"line_number":351,"context_line":"        \"sriov\" : {"},{"line_number":352,"context_line":"          \"label\": \"SRIOV\","},{"line_number":353,"context_line":"          \"type\": \"checkbox\","},{"line_number":354,"context_line":"          \"enabled\": Boolean or null,"},{"line_number":355,"context_line":"          \"sriov_numvfs\": {"},{"line_number":356,"context_line":"            \"label\": \"virtual_functions\""},{"line_number":357,"context_line":"            \"type\": \"number\","},{"line_number":358,"context_line":"            \"min\": \"0\","}],"source_content_type":"text/x-rst","patch_set":32,"id":"bab6814e_92ab5889","line":355,"range":{"start_line":351,"start_character":0,"end_line":355,"end_character":27},"in_reply_to":"dab17558_d02247b8","updated":"2016-05-18 13:59:06.000000000","message":"Done","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"c1e756c468476739bcb240d6a19668133cc69a15","unresolved":false,"context_lines":[{"line_number":348,"context_line":"          \"type\": \"text\","},{"line_number":349,"context_line":"          \"value\": \"\""},{"line_number":350,"context_line":"        },"},{"line_number":351,"context_line":"        \"sriov\" : {"},{"line_number":352,"context_line":"          \"label\": \"SRIOV\","},{"line_number":353,"context_line":"          \"type\": \"checkbox\","},{"line_number":354,"context_line":"          \"enabled\": Boolean or null,"},{"line_number":355,"context_line":"          \"sriov_numvfs\": {"},{"line_number":356,"context_line":"            \"label\": \"virtual_functions\""},{"line_number":357,"context_line":"            \"type\": \"number\","},{"line_number":358,"context_line":"            \"min\": \"0\","}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_d02247b8","line":355,"range":{"start_line":351,"start_character":0,"end_line":355,"end_character":27},"in_reply_to":"dab17558_eade7dd8","updated":"2016-05-17 11:57:36.000000000","message":"maybe better to move checkbox as separate option \u0027sriov_enabled\u0027 and validation other options in section with this parameter.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"83bf67d8150709cb8596d4b6eefcd4f116211bbb","unresolved":false,"context_lines":[{"line_number":433,"context_line":"          \"description\": \"Some description\","},{"line_number":434,"context_line":"          \"type\": \"text\","},{"line_number":435,"context_line":"          \"value\": \"test\","},{"line_number":436,"context_line":"          \"bond_plugin_id\": 1"},{"line_number":437,"context_line":"        },"},{"line_number":438,"context_line":"        \"attribute_b\": {"},{"line_number":439,"context_line":"          \"label\": \"BOND attribute B\","}],"source_content_type":"text/x-rst","patch_set":32,"id":"dab17558_ad376fe1","line":436,"updated":"2016-05-17 10:15:54.000000000","message":"So did you try to describe batch configuration and bonding behaviour for current cases (DPDK)? It still can be possible.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"91e4ea952b134e3d24864562f577e30652a60f24","unresolved":false,"context_lines":[{"line_number":433,"context_line":"          \"description\": \"Some description\","},{"line_number":434,"context_line":"          \"type\": \"text\","},{"line_number":435,"context_line":"          \"value\": \"test\","},{"line_number":436,"context_line":"          \"bond_plugin_id\": 1"},{"line_number":437,"context_line":"        },"},{"line_number":438,"context_line":"        \"attribute_b\": {"},{"line_number":439,"context_line":"          \"label\": \"BOND attribute B\","}],"source_content_type":"text/x-rst","patch_set":32,"id":"bab6814e_12c92879","line":436,"in_reply_to":"dab17558_ad376fe1","updated":"2016-05-18 13:59:06.000000000","message":"let\u0027s leave current validation as is. It is should not block us  with implementation of plugin nic attributes and we can add this section in spec later.","commit_id":"db236c91c0e9b1457ac883b60d0781cbd58c32ee"},{"author":{"_account_id":8735,"name":"Vitaly Kramskikh","email":"vkramskikh@mirantis.com","username":"vkramskikh"},"change_message_id":"78b8ab0c7a4827a98621b0fe58c0d9ee682d205f","unresolved":false,"context_lines":[{"line_number":336,"context_line":"          }"},{"line_number":337,"context_line":"        ]"},{"line_number":338,"context_line":"      }"},{"line_number":339,"context_line":"      \"attributes\": {"},{"line_number":340,"context_line":"        \"disable_offloading\": {"},{"line_number":341,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":342,"context_line":"          \"weight\": 10,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bab6814e_4cb5d0cb","line":339,"updated":"2016-05-18 15:45:59.000000000","message":"Please wrap all standalone attributes in sections","commit_id":"550f3478356e99e73966cdd53e3df47a43a16e79"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"80e72a39792573c6d42d7421800a42d20342ca84","unresolved":false,"context_lines":[{"line_number":336,"context_line":"          }"},{"line_number":337,"context_line":"        ]"},{"line_number":338,"context_line":"      }"},{"line_number":339,"context_line":"      \"attributes\": {"},{"line_number":340,"context_line":"        \"disable_offloading\": {"},{"line_number":341,"context_line":"          \"label\": \"Disable offloading\","},{"line_number":342,"context_line":"          \"weight\": 10,"}],"source_content_type":"text/x-rst","patch_set":33,"id":"bab6814e_2245da16","line":339,"in_reply_to":"bab6814e_4cb5d0cb","updated":"2016-05-19 06:32:39.000000000","message":"Done","commit_id":"550f3478356e99e73966cdd53e3df47a43a16e79"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* ``/nodes/:id/attributes`` should operate with both core and plugins Node"},{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"},{"line_number":48,"context_line":"  default data for NIC attributes."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* ``Load defaults`` button on ``Node`` details dialog should return default"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_3e020e70","line":47,"range":{"start_line":47,"start_character":69,"end_line":47,"end_character":76},"updated":"2016-05-19 09:11:05.000000000","message":"return","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":44,"context_line":"* ``/nodes/:id/attributes`` should operate with both core and plugins Node"},{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"},{"line_number":48,"context_line":"  default data for NIC attributes."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* ``Load defaults`` button on ``Node`` details dialog should return default"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_60b51030","line":47,"range":{"start_line":47,"start_character":69,"end_line":47,"end_character":76},"in_reply_to":"bab6814e_3e020e70","updated":"2016-05-19 09:48:22.000000000","message":"Done","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"},{"line_number":48,"context_line":"  default data for NIC attributes."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* ``Load defaults`` button on ``Node`` details dialog should return default"},{"line_number":51,"context_line":"  data for Node attributes."}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_5e8432d3","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":22},"updated":"2016-05-19 09:11:05.000000000","message":"NICs and BONDs","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":45,"context_line":"  attributes."},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* ``Load defaults`` button on ``Configure Interfaces`` screen should returns"},{"line_number":48,"context_line":"  default data for NIC attributes."},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"* ``Load defaults`` button on ``Node`` details dialog should return default"},{"line_number":51,"context_line":"  data for Node attributes."}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_9d297d8c","line":48,"range":{"start_line":48,"start_character":19,"end_line":48,"end_character":22},"in_reply_to":"bab6814e_5e8432d3","updated":"2016-05-19 09:48:22.000000000","message":"no, only for NICs. Default bonds attributes use only for bond creation. `Load defaults` remove all bonds.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure and depend on availability conditions"},{"line_number":55,"context_line":"  for different type of bonds."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Current mechanism for attributes availability during bonding like DPDK"},{"line_number":58,"context_line":"  will be the same and implemented on UI."}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_3e716ee1","line":55,"range":{"start_line":54,"start_character":52,"end_line":55,"end_character":29},"updated":"2016-05-19 09:11:05.000000000","message":"I think a link to the current bonding type availability conditions will make this paragraph more clear.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  data for Node attributes."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* In case of bond creation, all slave interfaces should have the same set of"},{"line_number":54,"context_line":"  attributes with identical structure and depend on availability conditions"},{"line_number":55,"context_line":"  for different type of bonds."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* Current mechanism for attributes availability during bonding like DPDK"},{"line_number":58,"context_line":"  will be the same and implemented on UI."}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_e0f620f8","line":55,"range":{"start_line":54,"start_character":52,"end_line":55,"end_character":29},"in_reply_to":"bab6814e_3e716ee1","updated":"2016-05-19 09:48:22.000000000","message":"Done","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":98,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":99,"context_line":"relations with empty ``attributes`` should not exist."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Plugin can override core interface attributes. If two plugins override the"},{"line_number":102,"context_line":"same attribute, conflict exception should be raised."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_59cbaca5","line":101,"range":{"start_line":101,"start_character":25,"end_line":101,"end_character":45},"updated":"2016-05-19 09:11:05.000000000","message":"Is it true for bond and node attributes too?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":98,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":99,"context_line":"relations with empty ``attributes`` should not exist."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Plugin can override core interface attributes. If two plugins override the"},{"line_number":102,"context_line":"same attribute, conflict exception should be raised."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_19eac40f","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":46},"updated":"2016-05-19 09:11:05.000000000","message":"So, core attributes will come with new overridden values in API response?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":98,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":99,"context_line":"relations with empty ``attributes`` should not exist."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Plugin can override core interface attributes. If two plugins override the"},{"line_number":102,"context_line":"same attribute, conflict exception should be raised."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_fd3b69e9","line":101,"range":{"start_line":101,"start_character":0,"end_line":101,"end_character":46},"in_reply_to":"bab6814e_19eac40f","updated":"2016-05-19 09:48:22.000000000","message":"with values from plugin. But this case more hypothetical. Most of core attributes is hardware depended (maybe even all) so plugin can\u0027t change them.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":98,"context_line":"If plugin does not provide NIC, BOND or Node additional attributes then"},{"line_number":99,"context_line":"relations with empty ``attributes`` should not exist."},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Plugin can override core interface attributes. If two plugins override the"},{"line_number":102,"context_line":"same attribute, conflict exception should be raised."},{"line_number":103,"context_line":""},{"line_number":104,"context_line":"Nailgun DB tables changes:"}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_dd15c549","line":101,"range":{"start_line":101,"start_character":25,"end_line":101,"end_character":45},"in_reply_to":"bab6814e_59cbaca5","updated":"2016-05-19 09:48:22.000000000","message":"same we have for all plugin attributes.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"**NodeBondInterface**"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"``attributes``"},{"line_number":170,"context_line":"  BOND attributes in DSL format"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_195f64e6","line":169,"updated":"2016-05-19 09:11:05.000000000","message":"Will metadata exist for bonds?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"**NodeBondInterface**"},{"line_number":168,"context_line":""},{"line_number":169,"context_line":"``attributes``"},{"line_number":170,"context_line":"  BOND attributes in DSL format"},{"line_number":171,"context_line":""},{"line_number":172,"context_line":""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_dd12e508","line":169,"in_reply_to":"bab6814e_195f64e6","updated":"2016-05-19 09:48:22.000000000","message":"no, only for NICs. meta is hardware settings of network interface controllers.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":282,"context_line":".. code-block:: json"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  {"},{"line_number":285,"context_line":"    \"attribute_a\": {"},{"line_number":286,"context_line":"      \"label\": \"BOND attribute A\","},{"line_number":287,"context_line":"      \"weight\": 10"},{"line_number":288,"context_line":"      \"description\": \"Some description\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_9a8b431e","line":285,"updated":"2016-05-19 09:11:05.000000000","message":"Are plugin attributes here only? Should they be wrapped into \"additional_attributes\" section?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":282,"context_line":".. code-block:: json"},{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  {"},{"line_number":285,"context_line":"    \"attribute_a\": {"},{"line_number":286,"context_line":"      \"label\": \"BOND attribute A\","},{"line_number":287,"context_line":"      \"weight\": 10"},{"line_number":288,"context_line":"      \"description\": \"Some description\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_801bd41a","line":285,"in_reply_to":"bab6814e_9a8b431e","updated":"2016-05-19 09:48:22.000000000","message":"Done","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":451,"context_line":"      \"mode\": \"balance-rr\","},{"line_number":452,"context_line":"      \"slaves\": [],"},{"line_number":453,"context_line":"      \"attributes\": {"},{"line_number":454,"context_line":"        \"mode\": {"},{"line_number":455,"context_line":"          \"label\": \"Mode\","},{"line_number":456,"context_line":"          \"weight\": 10,"},{"line_number":457,"context_line":"          \"type\": \"select\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_baba87df","line":454,"range":{"start_line":454,"start_character":8,"end_line":454,"end_character":14},"updated":"2016-05-19 09:11:05.000000000","message":"This looks like a single setting without an appropriate section (1-level attribute). How is it planned to be rendered on UI?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":451,"context_line":"      \"mode\": \"balance-rr\","},{"line_number":452,"context_line":"      \"slaves\": [],"},{"line_number":453,"context_line":"      \"attributes\": {"},{"line_number":454,"context_line":"        \"mode\": {"},{"line_number":455,"context_line":"          \"label\": \"Mode\","},{"line_number":456,"context_line":"          \"weight\": 10,"},{"line_number":457,"context_line":"          \"type\": \"select\","}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_a08b781d","line":454,"range":{"start_line":454,"start_character":8,"end_line":454,"end_character":14},"in_reply_to":"bab6814e_baba87df","updated":"2016-05-19 09:48:22.000000000","message":"Done","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"  .. code-block:: yaml"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    attribute_a:"},{"line_number":582,"context_line":"      label: \"NIC attribute A\""},{"line_number":583,"context_line":"      description: \"Some description\""},{"line_number":584,"context_line":"      type: \"text\""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_9a7ce3ec","line":581,"updated":"2016-05-19 09:11:05.000000000","message":"Should they be wrapped into a section?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":578,"context_line":""},{"line_number":579,"context_line":"  .. code-block:: yaml"},{"line_number":580,"context_line":""},{"line_number":581,"context_line":"    attribute_a:"},{"line_number":582,"context_line":"      label: \"NIC attribute A\""},{"line_number":583,"context_line":"      description: \"Some description\""},{"line_number":584,"context_line":"      type: \"text\""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_bd79e1fe","line":581,"in_reply_to":"bab6814e_9a7ce3ec","updated":"2016-05-19 09:48:22.000000000","message":"no. I think it\u0027s overwhelmed here. All NICs and Bonds attributes should be in one subtab: additional attributes. Current UX design of NICs is little different from Node. In case of many sections we will have to many buttons (one for each section of plugin). I propose have one button like `Additional attributes` where all plugin attributes stored. Besides I think it\u0027s not critical and we can easily add section description.","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a31ac4d2bd690944b156f61a62ed6393a655a433","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"  .. code-block:: yaml"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    attribute_a:"},{"line_number":597,"context_line":"      label: \"Bond attribute A\""},{"line_number":598,"context_line":"      description: \"Some description\""},{"line_number":599,"context_line":"      type: \"text\""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_fa836fca","line":596,"updated":"2016-05-19 09:11:05.000000000","message":"Should they be wrapped into a section?","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"6a94f2532e4b9532adea77b95394c3f7a44853fd","unresolved":false,"context_lines":[{"line_number":593,"context_line":""},{"line_number":594,"context_line":"  .. code-block:: yaml"},{"line_number":595,"context_line":""},{"line_number":596,"context_line":"    attribute_a:"},{"line_number":597,"context_line":"      label: \"Bond attribute A\""},{"line_number":598,"context_line":"      description: \"Some description\""},{"line_number":599,"context_line":"      type: \"text\""}],"source_content_type":"text/x-rst","patch_set":34,"id":"bab6814e_dd8665da","line":596,"in_reply_to":"bab6814e_fa836fca","updated":"2016-05-19 09:48:22.000000000","message":"ditto","commit_id":"5376ec175b022f4f692472e70c02973631724c37"},{"author":{"_account_id":19158,"name":"Ilya Kutukov","email":"post.ilya@gmail.com","username":"ikutukov"},"change_message_id":"4de57194fc0f1927c5d33032cc05a61d3a46b2bd","unresolved":false,"context_lines":[{"line_number":73,"context_line":"and ``node_attributes_metadata`` attributes of Plugin model (Can be changed"},{"line_number":74,"context_line":"based on Plugins v5 spec [1]_)."},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"Additional models ``NodeNICInterfaceClusterPlugin``, ``NodeClusterPlugin`` and"},{"line_number":77,"context_line":"``NodeBondInterfaceClusterPlugin`` will be used to store actual state of plugin"},{"line_number":78,"context_line":"related NICs, BONDs and Nodes attributes data per each interface, bond or"},{"line_number":79,"context_line":"node. By default ``attributes`` fields of these models should be filled with"}],"source_content_type":"text/x-rst","patch_set":35,"id":"bacf61ea_fb71290d","line":76,"range":{"start_line":76,"start_character":11,"end_line":76,"end_character":17},"updated":"2016-08-01 16:14:57.000000000","message":"objects","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"ad51b2c51d2b1fd96c3efbd124a4bcd047b485ec","unresolved":false,"context_lines":[{"line_number":283,"context_line":""},{"line_number":284,"context_line":"  {"},{"line_number":285,"context_line":"    \"additional_attributes\": {"},{"line_number":286,"context_line":"      \"metadata\": {"},{"line_number":287,"context_line":"        \"label\": \"Plugins attributes section for bonds\","},{"line_number":288,"context_line":"        \"weight\": 50"},{"line_number":289,"context_line":"      },"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7aa08908_0afcb36e","line":286,"updated":"2016-06-08 12:45:12.000000000","message":"additional_attributes is not acceptible for UI, make a separate section for each plugin","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"ad51b2c51d2b1fd96c3efbd124a4bcd047b485ec","unresolved":false,"context_lines":[{"line_number":286,"context_line":"      \"metadata\": {"},{"line_number":287,"context_line":"        \"label\": \"Plugins attributes section for bonds\","},{"line_number":288,"context_line":"        \"weight\": 50"},{"line_number":289,"context_line":"      },"},{"line_number":290,"context_line":"      \"attribute_a\": {"},{"line_number":291,"context_line":"        \"label\": \"BOND attribute A\","},{"line_number":292,"context_line":"        \"weight\": 10"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7aa08908_6a18d7d3","line":289,"updated":"2016-06-08 12:45:12.000000000","message":"add availability field","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"ad51b2c51d2b1fd96c3efbd124a4bcd047b485ec","unresolved":false,"context_lines":[{"line_number":421,"context_line":"          },"},{"line_number":422,"context_line":"        }"},{"line_number":423,"context_line":"        \"additional_attributes\": {"},{"line_number":424,"context_line":"          \"metadata\": {"},{"line_number":425,"context_line":"            \"label\": \"All plugins attributes section\","},{"line_number":426,"context_line":"            \"weight\": 50"},{"line_number":427,"context_line":"          },"}],"source_content_type":"text/x-rst","patch_set":35,"id":"7aa08908_6acd7730","line":424,"range":{"start_line":424,"start_character":0,"end_line":424,"end_character":1},"updated":"2016-06-08 12:45:12.000000000","message":"make a section for each plugin.","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"},{"author":{"_account_id":13516,"name":"Anton Zemlyanov","email":"azemlyanov@mirantis.com","username":"azemlyanov"},"change_message_id":"ad51b2c51d2b1fd96c3efbd124a4bcd047b485ec","unresolved":false,"context_lines":[{"line_number":427,"context_line":"          },"},{"line_number":428,"context_line":"          \"attribute_a\": {"},{"line_number":429,"context_line":"            \"label\": \"NIC attribute A\","},{"line_number":430,"context_line":"            \"weight\": 10"},{"line_number":431,"context_line":"            \"description\": \"Some description\","},{"line_number":432,"context_line":"            \"type\": \"text\","},{"line_number":433,"context_line":"            \"value\": \"test\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"7aa08908_cab58b7e","line":430,"updated":"2016-06-08 12:45:12.000000000","message":"if there are multiple attributes, there should be an attribute that displays on preview. such attribute should have \u0027preview\u0027: true flag","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"},{"author":{"_account_id":17754,"name":"Elena Kosareva","email":"ekosareva@mirantis.com","username":"ekosareva"},"change_message_id":"e302b642073f02913cf1531ee1e59dd29fc82181","unresolved":false,"context_lines":[{"line_number":431,"context_line":"            \"description\": \"Some description\","},{"line_number":432,"context_line":"            \"type\": \"text\","},{"line_number":433,"context_line":"            \"value\": \"test\","},{"line_number":434,"context_line":"            \"nic_plugin_id\": 1"},{"line_number":435,"context_line":"          },"},{"line_number":436,"context_line":"          \"attribute_b\": {"},{"line_number":437,"context_line":"            \"label\": \"NIC attribute B\","}],"source_content_type":"text/x-rst","patch_set":35,"id":"fa6399be_402102b4","line":434,"updated":"2016-10-17 14:55:05.000000000","message":"May be nic_plugin_id should be placed under metadata section?","commit_id":"0957ddebc94f3f1db2efa423c3cd5448dfaf40d1"}],"specs/9.0/nics-and-nodes-attributes-via-plugin.rst":[{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Support extensions of NIC and Node attributes in plugins"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/fuel/+spec/example"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Plugin developer should be able to extend NIC and Node properties"},{"line_number":14,"context_line":"via plugin."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_39186c1d","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":51},"updated":"2016-02-26 13:08:44.000000000","message":"Provide a link to specific bp.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8dde38ed42a3143474e9fd4157827dff84d7e201","unresolved":false,"context_lines":[{"line_number":8,"context_line":"Support extensions of NIC and Node attributes in plugins"},{"line_number":9,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"https://blueprints.launchpad.net/fuel/+spec/example"},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Plugin developer should be able to extend NIC and Node properties"},{"line_number":14,"context_line":"via plugin."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_e9538937","line":11,"range":{"start_line":11,"start_character":44,"end_line":11,"end_character":51},"in_reply_to":"9aed3d3a_39186c1d","updated":"2016-02-29 10:23:15.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interafaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":37,"context_line":"  default plugin NIC data per interface."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_7e3af137","line":34,"range":{"start_line":34,"start_character":35,"end_line":34,"end_character":46},"updated":"2016-02-26 06:55:29.000000000","message":"typo","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interafaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":37,"context_line":"  default plugin NIC data per interface."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_189490e0","line":34,"range":{"start_line":34,"start_character":35,"end_line":34,"end_character":46},"in_reply_to":"9aed3d3a_7e3af137","updated":"2016-02-26 10:07:26.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":37,"context_line":"  default plugin NIC data per interface."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nailgun"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_642c244b","line":38,"updated":"2016-02-26 06:55:29.000000000","message":"AFAIK, it is not suitable to show interfaces in UI using the same format as we use for environment attributes. It will occupy a lot of place on the page. Seems, DSL format needs to be extended. Let\u0027s ask UI team.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Data model"},{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_849e8854","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":66},"updated":"2016-02-26 06:55:29.000000000","message":"We\u0027ve agreed that separation of DSL schema and actual data will be helpful (and data is merged when serialized for API). Will this work include such separation? Duplication of UI related data will be huge otherwise. From the other side, merging/splitting of such a big amount of data can be slow.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fcc466d4a09ef483af3b22c19491dfdf856e50d4","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Data model"},{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_d3cfa6ae","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":66},"in_reply_to":"9aed3d3a_134c736f","updated":"2016-02-26 11:08:04.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":43,"context_line":"Data model"},{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_134c736f","line":46,"range":{"start_line":46,"start_character":0,"end_line":46,"end_character":66},"in_reply_to":"9aed3d3a_849e8854","updated":"2016-02-26 10:07:26.000000000","message":"In context of this task I think - no. We have separate blueprint decompose-openstack-yaml.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4fa019f5","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":34},"updated":"2016-02-26 06:55:29.000000000","message":"How will this be resolved in the context of \u0027separate network service\u0027 where NIC table will be moved into external service/storage? (see https://review.openstack.org/#/c/238271/) Need coordination here.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_59ae1086","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":34},"in_reply_to":"9aed3d3a_1dbbe2c5","updated":"2016-02-26 13:08:44.000000000","message":"Aleksey, during removal we will have to put it into different place (service?), there is a requirement to be able to extend attributes with plugins, so at this stage knowing that some day there will be a separate service, will not help us now.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"ee74f4108ec9f58f33917c32aba06c754cd6c672","unresolved":false,"context_lines":[{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_55d8a853","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":34},"in_reply_to":"9aed3d3a_4fa019f5","updated":"2016-02-26 07:36:44.000000000","message":"Where it described in spec? I see only proxy objects, not changes in DB model.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"059b0d0fc5e66f5ccb59713fb0aa34f09f886ef7","unresolved":false,"context_lines":[{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_1dbbe2c5","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":34},"in_reply_to":"9aed3d3a_55d8a853","updated":"2016-02-26 09:16:46.000000000","message":"It\u0027s first part. Need to ask Ryan Moe where he has second part. It\u0027s planned to remove all those tables from Nailgun DB when everything there will be done. You can see my and his comments about it there.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"801d16849812ee6baf8b95808520e54771157281","unresolved":false,"context_lines":[{"line_number":44,"context_line":"----------"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_87845c5e","line":47,"range":{"start_line":47,"start_character":11,"end_line":47,"end_character":34},"in_reply_to":"9aed3d3a_59ae1086","updated":"2016-02-29 11:31:18.000000000","message":"...will not help us now.\n\nIt\u0027s OK if \u0027now\u0027 is 9.0 (additional iteration?).","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_79ccb435","line":48,"range":{"start_line":48,"start_character":35,"end_line":48,"end_character":76},"updated":"2016-02-26 13:08:44.000000000","message":"Take a look at https://review.openstack.org/#/c/271417/ , looks like there will be couple more fields for plugin_releases field.\n\nAnd these new tables should be linked to plugin_cluster relation so those will be cleaned up automatically on plugin deletion.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8dde38ed42a3143474e9fd4157827dff84d7e201","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":"Plugin releated information with NICs and Nodes default attributes will be"},{"line_number":47,"context_line":"stored in `nic_attributes_metadata` and `node_attributes_metadata` attributes"},{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_e4bf30a8","line":48,"range":{"start_line":48,"start_character":35,"end_line":48,"end_character":76},"in_reply_to":"9aed3d3a_79ccb435","updated":"2016-02-29 10:23:15.000000000","message":"mentioned about it","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_44f3e073","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"updated":"2016-02-26 06:55:29.000000000","message":"Why \u0027interface_properties\u0027? Shouldn\u0027t it be \u0027attributes\u0027?\nShould it be filled with default values the same way as Node.attributes (from release metadata)? Again, let\u0027s think about separate network service.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_79367404","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_33fa52be","updated":"2016-02-26 13:08:44.000000000","message":"Aleksey,\nHow separate networking service can help here?\n\nAndriy,\nSince `interface_properties` was not implemented properly, you will have to send them as to separate fields.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_93e8837e","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_44f3e073","updated":"2016-02-26 10:07:26.000000000","message":"For such case UI should support handling of interface attributes. AFAIK currently it\u0027s process pure data from `interface_properties`. As quick solution we can send plugin related data with specific key `additional_attributes` handling it in specific manner and don\u0027t rewrite logic for processing `interface_properties`","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"cae6f4f2f97cb42e6a95eff983d07c84690ce6b7","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4af3d09e","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_4a911099","updated":"2016-02-26 13:42:14.000000000","message":"I don\u0027t get it, you will have teach UI to understand declarative description from plugins anyway. My concern is you want to mix those things in a single fields, so we will need to convert hardcoded fields into declarative, or to send/store them separately (in separate fields).","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"801d16849812ee6baf8b95808520e54771157281","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_aacde5b8","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_4af3d09e","updated":"2016-02-29 11:31:18.000000000","message":"AFAIC, we need Ryan to review this also.\n\nWe don\u0027t need to merge `interface_properties` with releases.nic_metadata on the fly. AFAIC, we need to rewrite `interface_properties` using DSL. Let\u0027s figure out do we have any parameters that should keep their state when node is not inside an environment. As I know, all existing parameters can be set up only when node is in environment.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2ac80dd0927ef17ac6791bfc3ba9531f5b863a7f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4a911099","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_79367404","updated":"2016-02-26 13:37:12.000000000","message":"So in this case. We need rewrite https://github.com/openstack/fuel-web/blob/master/nailgun/static/views/cluster_page_tabs/nodes_tab_screens/edit_node_interfaces_screen.js. Move UI controls into DSl model. Specify general attributes in DSL format for NIC and BOND in releases. Then merge `interface_properties` with releases.nic_metadata and store it in node_nic_interfaces.attributes. Then merge node_nic_interfaces.attributes and node_nic_interfaces_plugins.attributes and send it on UI. Teach UI to process attributes on Interface Screen","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fcc466d4a09ef483af3b22c19491dfdf856e50d4","unresolved":false,"context_lines":[{"line_number":48,"context_line":"of Plugin model. Additional models `PluginNodeNICInterface` and `PluginNode`"},{"line_number":49,"context_line":"will be used to store actual state of plugin NICs and Nodes attributes data"},{"line_number":50,"context_line":"per each interface or node. By default they should be filled with data from"},{"line_number":51,"context_line":"plugin `nic_attributes_metadata` and `node_attributes_metadata`. Fuel core"},{"line_number":52,"context_line":"NICs `interface_properties` and Node `attributes` [0]_ will be mixed with"},{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_33fa52be","line":52,"range":{"start_line":51,"start_character":65,"end_line":52,"end_character":26},"in_reply_to":"9aed3d3a_93e8837e","updated":"2016-02-26 11:08:04.000000000","message":"`interface_properties` was a quick solution actually. AFAIC, we need to get rid of it and have only one implementation.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"If plugin doesn\u0027t provide NIC or Node additional attributes then relations"},{"line_number":58,"context_line":"with empty `attributes` shouldn\u0027t exist."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4f0ad9d3","line":56,"updated":"2016-02-26 06:55:29.000000000","message":"what is about bonds?","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":53,"context_line":"data from `PluginNodeNICInterface` and `PluginNode` based on info about"},{"line_number":54,"context_line":"disabled/enabled state of plugins during `/nodes/:id/interfaces/` and"},{"line_number":55,"context_line":"`/nodes/:id/attributes/` API calls."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"If plugin doesn\u0027t provide NIC or Node additional attributes then relations"},{"line_number":58,"context_line":"with empty `attributes` shouldn\u0027t exist."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_139473e0","line":56,"in_reply_to":"9aed3d3a_4f0ad9d3","updated":"2016-02-26 10:07:26.000000000","message":"I\u0027ll add it. Logic is similar to NICs.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":59,"context_line":""},{"line_number":60,"context_line":"Nailgun DB tables changes:"},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Plugin**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`nic_attributes_metadata`"},{"line_number":65,"context_line":"plugin attributes data taken from `nic_config` yaml"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_0c144842","line":62,"range":{"start_line":62,"start_character":2,"end_line":62,"end_character":8},"updated":"2016-02-26 13:08:44.000000000","message":"It requires to be aligned with changes in https://review.openstack.org/#/c/271417/","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Plugin**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`nic_attributes_metadata`"},{"line_number":65,"context_line":"plugin attributes data taken from `nic_config` yaml"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`node_attributes_metadata`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_5907301c","line":64,"range":{"start_line":64,"start_character":15,"end_line":64,"end_character":24},"updated":"2016-02-26 13:08:44.000000000","message":"`metadata` postfix looks redundant, the same for fields below.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"2ac80dd0927ef17ac6791bfc3ba9531f5b863a7f","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Plugin**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`nic_attributes_metadata`"},{"line_number":65,"context_line":"plugin attributes data taken from `nic_config` yaml"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`node_attributes_metadata`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_6f522615","line":64,"range":{"start_line":64,"start_character":15,"end_line":64,"end_character":24},"in_reply_to":"9aed3d3a_5907301c","updated":"2016-02-26 13:37:12.000000000","message":"make sense, but https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/db/sqlalchemy/models/plugins.py#L78-L87 lets keep some consistency. If change then everywhere.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"cae6f4f2f97cb42e6a95eff983d07c84690ce6b7","unresolved":false,"context_lines":[{"line_number":61,"context_line":""},{"line_number":62,"context_line":"**Plugin**"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"`nic_attributes_metadata`"},{"line_number":65,"context_line":"plugin attributes data taken from `nic_config` yaml"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"`node_attributes_metadata`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_aa889ce8","line":64,"range":{"start_line":64,"start_character":15,"end_line":64,"end_character":24},"in_reply_to":"9aed3d3a_6f522615","updated":"2016-02-26 13:42:14.000000000","message":"This will be changed https://review.openstack.org/#/c/271417/","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8749,"name":"Evgeniy L","email":"eli@mirantis.com","username":"evgeniyl"},"change_message_id":"177126ad854a42f698e9e9feb49e80fe4601ee29","unresolved":false,"context_lines":[{"line_number":76,"context_line":"`attributes`"},{"line_number":77,"context_line":"actual state of plugin NIC attributes data"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"`plugin_id`"},{"line_number":80,"context_line":"foreign key on plugins table"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"`node_nic_interface_id`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_ec3764e1","line":79,"range":{"start_line":79,"start_character":1,"end_line":79,"end_character":10},"updated":"2016-02-26 13:08:44.000000000","message":"Link has to be not to a plugin, but to plugin-clsuter relation.\nThe same is for Node.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8dde38ed42a3143474e9fd4157827dff84d7e201","unresolved":false,"context_lines":[{"line_number":76,"context_line":"`attributes`"},{"line_number":77,"context_line":"actual state of plugin NIC attributes data"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"`plugin_id`"},{"line_number":80,"context_line":"foreign key on plugins table"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"`node_nic_interface_id`"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_3bdad24c","line":79,"range":{"start_line":79,"start_character":1,"end_line":79,"end_character":10},"in_reply_to":"9aed3d3a_ec3764e1","updated":"2016-02-29 10:23:15.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_8f14e1f5","line":100,"updated":"2016-02-26 06:55:29.000000000","message":"please add changes for NodeNICInterface table here (and probably bonds)","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_d30ccb44","line":100,"in_reply_to":"9aed3d3a_3dd06653","updated":"2016-02-26 10:07:26.000000000","message":"Why we can\u0027t merge core and plugin specific on FLY?","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8dde38ed42a3143474e9fd4157827dff84d7e201","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_fdfe9aac","line":100,"in_reply_to":"9aed3d3a_56c53f3a","updated":"2016-02-29 10:23:15.000000000","message":"let\u0027s keep it for this time. Now it\u0027s required additional changes in DB, migrations and logic of storing data by nailgun agent. In future we can store all data in `attributes` like:\n\n{\n  \u0027metadata\u0027: Release.get_nic_metadata() or {}\n  \u0027data\u0027: pulled_with_nailgun_agent_instead_of_interface_properties\n}","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"ee74f4108ec9f58f33917c32aba06c754cd6c672","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_d5f678d6","line":100,"in_reply_to":"9aed3d3a_8f14e1f5","updated":"2016-02-26 07:36:44.000000000","message":"NodeNICInterface shouldn\u0027t change. We introduce `PluginNodeNICInterface`(or `NodeNICInterfacePlugin`) which will have FK on needed table.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"557903e42698bef0eeed8abf8595610e0d202801","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_d614b4f6","line":100,"in_reply_to":"9aed3d3a_b3d30238","updated":"2016-02-26 11:20:39.000000000","message":"If we are going to rid current approach with processing only pure `interface_properties` then - yes we need one additional field for storing attributes for NIC and one for BOND. In such case https://github.com/openstack/fuel-web/blob/master/nailgun/static/views/cluster_page_tabs/nodes_tab_screens/edit_node_interfaces_screen.js should be rewritten to support NIC and BOND attributes data.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"fcc466d4a09ef483af3b22c19491dfdf856e50d4","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_b3d30238","line":100,"in_reply_to":"9aed3d3a_d30ccb44","updated":"2016-02-26 11:08:04.000000000","message":"Where to store core specific values for each NIC?","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"059b0d0fc5e66f5ccb59713fb0aa34f09f886ef7","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_3dd06653","line":100,"in_reply_to":"9aed3d3a_d5f678d6","updated":"2016-02-26 09:16:46.000000000","message":"How to add fuel core attributes then? (line 134)","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"63934b1bbdc6bf9d2261e7d9abbb31a1b844b0cc","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_56c53f3a","line":100,"in_reply_to":"9aed3d3a_d614b4f6","updated":"2016-02-26 12:42:18.000000000","message":"AFAIC, we need to get rid of \u0027interface_properties\u0027. Otherwise we will need to support two implementations and will increase our tech debt.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"801d16849812ee6baf8b95808520e54771157281","unresolved":false,"context_lines":[{"line_number":97,"context_line":"`node_id`"},{"line_number":98,"context_line":"foreign key on nodes table"},{"line_number":99,"context_line":""},{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Data from `attributes` in `PluginNodeNICInterface` and `PluginNode` should"},{"line_number":102,"context_line":"be serialized in deployment scenario and send to astute with other attributes."},{"line_number":103,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_8ad5811d","line":100,"in_reply_to":"9aed3d3a_fdfe9aac","updated":"2016-02-29 11:31:18.000000000","message":"I don\u0027t agree that we need to keep them. Need to ask UI team also. I don\u0027t think it\u0027s a good thing to keep two implementations in UI and in Nailgun.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":109,"context_line":"--------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"In case of additional NIC attributes, GET `/nodes/:id/interfaces/` method"},{"line_number":112,"context_line":"should return data with follow structure:"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":".. code-block:: json"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_8ff861e7","line":112,"range":{"start_line":112,"start_character":24,"end_line":112,"end_character":41},"updated":"2016-02-26 06:55:29.000000000","message":"the following structure:","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":109,"context_line":"--------"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"In case of additional NIC attributes, GET `/nodes/:id/interfaces/` method"},{"line_number":112,"context_line":"should return data with follow structure:"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":".. code-block:: json"},{"line_number":115,"context_line":""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_f303cf0d","line":112,"range":{"start_line":112,"start_character":24,"end_line":112,"end_character":41},"in_reply_to":"9aed3d3a_8ff861e7","updated":"2016-02-26 10:07:26.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":124,"context_line":"      \"state\": null,"},{"line_number":125,"context_line":"      \"max_speed\": 1000,"},{"line_number":126,"context_line":"      \"current_speed\": 1000,"},{"line_number":127,"context_line":"      \"interface_properties\": {"},{"line_number":128,"context_line":"        \"disable_offloading\": False,"},{"line_number":129,"context_line":"        \"mtu\": null"},{"line_number":130,"context_line":"      },"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4f3c9993","line":127,"range":{"start_line":127,"start_character":7,"end_line":127,"end_character":27},"updated":"2016-02-26 06:55:29.000000000","message":"It is a predecessor of attributes. AFAIC, its contents should be moved into attributes.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":131,"context_line":"      \"offloading_modes\": [],"},{"line_number":132,"context_line":"      \"pxe\": False,"},{"line_number":133,"context_line":"      \"bus_info\": \"0000:01:00.0\""},{"line_number":134,"context_line":"      \"additional_attributes\": {"},{"line_number":135,"context_line":"        \"plugin_a\": {"},{"line_number":136,"context_line":"          \"attribute_a\": {"},{"line_number":137,"context_line":"            \"label\": \"NIC attribute A\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_2f1b151d","line":134,"range":{"start_line":134,"start_character":7,"end_line":134,"end_character":28},"updated":"2016-02-26 06:55:29.000000000","message":"why not just \u0027attributes\u0027 as in other entities?","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":131,"context_line":"      \"offloading_modes\": [],"},{"line_number":132,"context_line":"      \"pxe\": False,"},{"line_number":133,"context_line":"      \"bus_info\": \"0000:01:00.0\""},{"line_number":134,"context_line":"      \"additional_attributes\": {"},{"line_number":135,"context_line":"        \"plugin_a\": {"},{"line_number":136,"context_line":"          \"attribute_a\": {"},{"line_number":137,"context_line":"            \"label\": \"NIC attribute A\""}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_8e7cda73","line":134,"range":{"start_line":134,"start_character":7,"end_line":134,"end_character":28},"in_reply_to":"9aed3d3a_2f1b151d","updated":"2016-02-26 10:07:26.000000000","message":"Replied above in `Data mode` section.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  {"},{"line_number":158,"context_line":"    \"cpu_pinning\": {},"},{"line_number":159,"context_line":"    \"hugepages\": {},"},{"line_number":160,"context_line":"    \"additional_attributes\": {"},{"line_number":161,"context_line":"      \"plugin_a\": {"},{"line_number":162,"context_line":"        \"section_a\": {"},{"line_number":163,"context_line":"          \"metadata\": {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_2fa0359f","line":160,"range":{"start_line":160,"start_character":5,"end_line":160,"end_character":26},"updated":"2016-02-26 06:55:29.000000000","message":"why to have \u0027additional_attributes\u0027 inside \u0027attributes\u0027? AFAIC, we need single \u0027attributes\u0027 and merge everything into there.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":157,"context_line":"  {"},{"line_number":158,"context_line":"    \"cpu_pinning\": {},"},{"line_number":159,"context_line":"    \"hugepages\": {},"},{"line_number":160,"context_line":"    \"additional_attributes\": {"},{"line_number":161,"context_line":"      \"plugin_a\": {"},{"line_number":162,"context_line":"        \"section_a\": {"},{"line_number":163,"context_line":"          \"metadata\": {"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_f352afdc","line":160,"range":{"start_line":160,"start_character":5,"end_line":160,"end_character":26},"in_reply_to":"9aed3d3a_2fa0359f","updated":"2016-02-26 10:07:26.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        description: \"Some description\""},{"line_number":238,"context_line":"        type: \"checkbox\""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"  Actually NICs and Nodes attributes can have similar structure as in"},{"line_number":241,"context_line":"  `openstack.yaml` file."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_2f77953b","line":240,"range":{"start_line":240,"start_character":37,"end_line":240,"end_character":40},"updated":"2016-02-26 06:55:29.000000000","message":"should","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":237,"context_line":"        description: \"Some description\""},{"line_number":238,"context_line":"        type: \"checkbox\""},{"line_number":239,"context_line":""},{"line_number":240,"context_line":"  Actually NICs and Nodes attributes can have similar structure as in"},{"line_number":241,"context_line":"  `openstack.yaml` file."},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_b36f8791","line":240,"range":{"start_line":240,"start_character":37,"end_line":240,"end_character":40},"in_reply_to":"9aed3d3a_2f77953b","updated":"2016-02-26 10:07:26.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":314,"context_line":"      vendor_specific:"},{"line_number":315,"context_line":"        driver: e1000"},{"line_number":316,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":317,"context_line":"      additional_attributes:"},{"line_number":318,"context_line":"        plugin_a:"},{"line_number":319,"context_line":"          attribute_a: \"test\""},{"line_number":320,"context_line":"          attribute_b: false"},{"line_number":321,"context_line":"    enp0s2:"},{"line_number":322,"context_line":"      vendor_specific:"},{"line_number":323,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_6f04fd7d","line":320,"range":{"start_line":317,"start_character":0,"end_line":320,"end_character":28},"updated":"2016-02-26 06:55:29.000000000","message":"Let\u0027s describe in Nailgun section how to serialize data.","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":314,"context_line":"      vendor_specific:"},{"line_number":315,"context_line":"        driver: e1000"},{"line_number":316,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":317,"context_line":"      additional_attributes:"},{"line_number":318,"context_line":"        plugin_a:"},{"line_number":319,"context_line":"          attribute_a: \"test\""},{"line_number":320,"context_line":"          attribute_b: false"},{"line_number":321,"context_line":"    enp0s2:"},{"line_number":322,"context_line":"      vendor_specific:"},{"line_number":323,"context_line":"        driver: e1000"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_aea0be91","line":320,"range":{"start_line":317,"start_character":0,"end_line":320,"end_character":28},"in_reply_to":"9aed3d3a_6f04fd7d","updated":"2016-02-26 10:07:26.000000000","message":"Done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"846f9c1851ae24261cc603c051573f5be0fddeca","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"This is how an astute.yaml part will look like for additional Node attributes:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"TBD"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_4f65b943","line":332,"range":{"start_line":332,"start_character":0,"end_line":332,"end_character":3},"updated":"2016-02-26 06:55:29.000000000","message":"It can be done the same way:\n\n    nodes:\n      - uid: 1\n        ...\n        attributes:\n            ...","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"8de7425176ecf188b5e23e330b886bc52190d0ea","unresolved":false,"context_lines":[{"line_number":329,"context_line":""},{"line_number":330,"context_line":"This is how an astute.yaml part will look like for additional Node attributes:"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"TBD"},{"line_number":333,"context_line":""},{"line_number":334,"context_line":""},{"line_number":335,"context_line":"---------------------"}],"source_content_type":"text/x-rst","patch_set":3,"id":"9aed3d3a_0e560ad2","line":332,"range":{"start_line":332,"start_character":0,"end_line":332,"end_character":3},"in_reply_to":"9aed3d3a_4f65b943","updated":"2016-02-26 10:07:26.000000000","message":"thx. done","commit_id":"9109ab2b6a043abc9e8fe6857f04df0beee987f6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional NICs and Nodes"},{"line_number":21,"context_line":"attributes. In future it can be useful when plugin provides some technology"},{"line_number":22,"context_line":"which should work \"per interface\" or \"per node\". For example: in case of"},{"line_number":23,"context_line":"Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_6a963d40","line":20,"range":{"start_line":20,"start_character":55,"end_line":20,"end_character":59},"updated":"2016-02-29 12:19:34.000000000","message":"s/NICs/interfaces\n\n(NICs and bonds)","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":17,"context_line":"Problem description"},{"line_number":18,"context_line":"-------------------"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"Plugins should have mechanizm for providing additional NICs and Nodes"},{"line_number":21,"context_line":"attributes. In future it can be useful when plugin provides some technology"},{"line_number":22,"context_line":"which should work \"per interface\" or \"per node\". For example: in case of"},{"line_number":23,"context_line":"Contrail we need support VF for vRouter on each network interface."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_563840ef","line":20,"range":{"start_line":20,"start_character":55,"end_line":20,"end_character":59},"in_reply_to":"9aed3d3a_6a963d40","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":9091,"name":"Alexandra Morozova","email":"astepanchuk@mirantis.com","username":"astepanchuk"},"change_message_id":"db97cf6ca73b81ec3223247917fa55b48cc6f9b7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC, BOND and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interfaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_1054001f","line":33,"range":{"start_line":33,"start_character":12,"end_line":33,"end_character":18},"updated":"2016-02-29 12:21:59.000000000","message":"*properly","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":9091,"name":"Alexandra Morozova","email":"astepanchuk@mirantis.com","username":"astepanchuk"},"change_message_id":"db97cf6ca73b81ec3223247917fa55b48cc6f9b7","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC, BOND and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interfaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_102b6095","line":33,"range":{"start_line":33,"start_character":1,"end_line":33,"end_character":78},"updated":"2016-02-29 12:21:59.000000000","message":"how is that supposed to be done? could you please provide some screenshots or general description on how this would look like","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14088,"name":"Andrian Noga","email":"anoga@mirantis.com","username":"anoga"},"change_message_id":"87f4236cfc2994456530eefd47c57c2d272c524b","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC, BOND and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interfaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_a7e7b2aa","line":33,"range":{"start_line":33,"start_character":1,"end_line":33,"end_character":78},"in_reply_to":"9aed3d3a_102b6095","updated":"2016-03-01 00:25:07.000000000","message":"Anton Zemlyanov should provide screenshots, how this would like.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC, BOND and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interfaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_e6538ae0","line":33,"range":{"start_line":33,"start_character":1,"end_line":33,"end_character":78},"in_reply_to":"9aed3d3a_102b6095","updated":"2016-03-01 08:16:48.000000000","message":"will do ASAP.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":30,"context_line":"Web UI"},{"line_number":31,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"* UI should proper represent schema and data for NIC, BOND and Node attributes"},{"line_number":34,"context_line":"  provided by plugin on `Configure Interfaces` and `Node` screens."},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_f627d4c7","line":33,"range":{"start_line":33,"start_character":12,"end_line":33,"end_character":18},"in_reply_to":"9aed3d3a_1054001f","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"cc848db698d48c84f29320a12b1657d0146f769d","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":37,"context_line":"  default plugin NIC data per interface."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nailgun"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_1b68a186","line":38,"updated":"2016-02-29 12:28:50.000000000","message":"I\u0027ll copy my comment from prev.patch:\n\nAFAIK, it is not suitable to show interfaces in UI using the same format as we use for environment attributes. It will occupy a lot of place on the page. Seems, DSL format needs to be extended. Let\u0027s ask UI team.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":9091,"name":"Alexandra Morozova","email":"astepanchuk@mirantis.com","username":"astepanchuk"},"change_message_id":"ffaa052f87631fcd452fcc78f8baf83b759a9595","unresolved":false,"context_lines":[{"line_number":35,"context_line":""},{"line_number":36,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"},{"line_number":37,"context_line":"  default plugin NIC data per interface."},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Nailgun"},{"line_number":41,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_2d8c4ad9","line":38,"in_reply_to":"9aed3d3a_1b68a186","updated":"2016-02-29 13:21:07.000000000","message":"Aleksey, you are absolutely right here. There should be a lot of improvements done to support this feature","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":54,"context_line":"they should be filled with data from plugin `nic_attributes_metadata`,"},{"line_number":55,"context_line":"`bond_attributes_metadata` and `node_attributes_metadata`."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"New default attributes for NIC and BOND should be described in `openstack.yaml`"},{"line_number":58,"context_line":"file. They will be mapped on `nic_attributes` and `bond_attributes` in"},{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_4a4d39c3","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":12},"updated":"2016-02-29 12:19:34.000000000","message":"core","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":54,"context_line":"they should be filled with data from plugin `nic_attributes_metadata`,"},{"line_number":55,"context_line":"`bond_attributes_metadata` and `node_attributes_metadata`."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"New default attributes for NIC and BOND should be described in `openstack.yaml`"},{"line_number":58,"context_line":"file. They will be mapped on `nic_attributes` and `bond_attributes` in"},{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_c66766b5","line":57,"range":{"start_line":57,"start_character":11,"end_line":57,"end_character":12},"in_reply_to":"9aed3d3a_4a4d39c3","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_2a739516","line":62,"range":{"start_line":62,"start_character":27,"end_line":62,"end_character":35},"updated":"2016-02-29 12:19:34.000000000","message":"typo","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_ca8149c5","line":62,"range":{"start_line":62,"start_character":36,"end_line":62,"end_character":41},"updated":"2016-02-29 12:19:34.000000000","message":"typo","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_d7fa6e42","line":62,"range":{"start_line":62,"start_character":27,"end_line":62,"end_character":35},"in_reply_to":"9aed3d3a_2a739516","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":59,"context_line":"Release."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_7701e237","line":62,"range":{"start_line":62,"start_character":36,"end_line":62,"end_character":41},"in_reply_to":"9aed3d3a_ca8149c5","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"},{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_aa5de57a","line":63,"range":{"start_line":63,"start_character":50,"end_line":63,"end_character":55},"updated":"2016-02-29 12:19:34.000000000","message":"are taken","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":60,"context_line":""},{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"},{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_ba3df8de","line":63,"range":{"start_line":63,"start_character":50,"end_line":63,"end_character":55},"in_reply_to":"9aed3d3a_aa5de57a","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":61,"context_line":"Fuel core NIC, BOND and Node `attributes` [0]_ should be stored in"},{"line_number":62,"context_line":"`attributes` field in each releated tabel. Core NICs `attributes` will be"},{"line_number":63,"context_line":"filled with default attributes from Release which takes from `nic_attributes`"},{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"},{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"},{"line_number":67,"context_line":"`/nodes/:id/interfaces/` API call."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_f5150e40","line":64,"range":{"start_line":64,"start_character":4,"end_line":64,"end_character":38},"updated":"2016-02-29 12:19:34.000000000","message":"I don\u0027t think we need to merge this on the fly. And merging of schema and data is a subject of separate ticket. It will make more sense then to store plugins data separated from scheme (DSL) also.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"},{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"},{"line_number":67,"context_line":"`/nodes/:id/interfaces/` API call."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_d5c3aa87","line":67,"range":{"start_line":67,"start_character":33,"end_line":67,"end_character":34},"updated":"2016-02-29 12:19:34.000000000","message":"Seems we need to check parameters consistency when plugins are switched on/off. So, plugins should not have conflicting attributes for nodes or interfaces. Such a check is now done for deployment tasks.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14088,"name":"Andrian Noga","email":"anoga@mirantis.com","username":"anoga"},"change_message_id":"a7742d4eb743475a5119cf2e0d2bd77cc0d9b84a","unresolved":false,"context_lines":[{"line_number":64,"context_line":"and merged with `interface_properties` data as values. Data from"},{"line_number":65,"context_line":"NodeNICInterfacePlugin `attributes` will be mixed with NodeNICInterface"},{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"},{"line_number":67,"context_line":"`/nodes/:id/interfaces/` API call."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_8941eaab","line":67,"range":{"start_line":67,"start_character":33,"end_line":67,"end_character":34},"in_reply_to":"9aed3d3a_d5c3aa87","updated":"2016-02-29 21:54:54.000000000","message":"Agree here","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":66,"context_line":"`attributes` based on info about disabled or enabled state of plugins during"},{"line_number":67,"context_line":"`/nodes/:id/interfaces/` API call."},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"},{"line_number":71,"context_line":"for BOND which will be taken from Release `bond_atributes` and Plugin"},{"line_number":72,"context_line":"`bond_attributes_metadata`."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_eacd2d86","line":69,"range":{"start_line":69,"start_character":16,"end_line":69,"end_character":39},"updated":"2016-02-29 12:19:34.000000000","message":"who creates what ? cannot get this sentence","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"},{"line_number":71,"context_line":"for BOND which will be taken from Release `bond_atributes` and Plugin"},{"line_number":72,"context_line":"`bond_attributes_metadata`."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Node `attributes` will be mixed with NodePlugin `attributes` in same way as"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_b50d46ea","line":71,"range":{"start_line":71,"start_character":43,"end_line":71,"end_character":57},"updated":"2016-02-29 12:19:34.000000000","message":"typo","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":68,"context_line":""},{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"},{"line_number":71,"context_line":"for BOND which will be taken from Release `bond_atributes` and Plugin"},{"line_number":72,"context_line":"`bond_attributes_metadata`."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Node `attributes` will be mixed with NodePlugin `attributes` in same way as"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_5adb0c1b","line":71,"range":{"start_line":71,"start_character":43,"end_line":71,"end_character":57},"in_reply_to":"9aed3d3a_b50d46ea","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":69,"context_line":"In case of BOND it always creates first on client that\u0027s why"},{"line_number":70,"context_line":"`/nodes/:id/interfaces/` call should always return actuall default attributes"},{"line_number":71,"context_line":"for BOND which will be taken from Release `bond_atributes` and Plugin"},{"line_number":72,"context_line":"`bond_attributes_metadata`."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Node `attributes` will be mixed with NodePlugin `attributes` in same way as"},{"line_number":75,"context_line":"for NICs and returns in `/nodes/:id/attributes/` API call."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_d5c9ea5a","line":72,"updated":"2016-02-29 12:19:34.000000000","message":"we need a new handler that will return default bond attributes for UI as we have for network assignment (see /nodes/interfaces/default_assignment/).","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":72,"context_line":"`bond_attributes_metadata`."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Node `attributes` will be mixed with NodePlugin `attributes` in same way as"},{"line_number":75,"context_line":"for NICs and returns in `/nodes/:id/attributes/` API call."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":78,"context_line":"relations with empty `attributes` shouldn\u0027t exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_d53e0a27","line":75,"range":{"start_line":75,"start_character":13,"end_line":75,"end_character":20},"updated":"2016-02-29 12:19:34.000000000","message":"are returned/will be returned","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":72,"context_line":"`bond_attributes_metadata`."},{"line_number":73,"context_line":""},{"line_number":74,"context_line":"Node `attributes` will be mixed with NodePlugin `attributes` in same way as"},{"line_number":75,"context_line":"for NICs and returns in `/nodes/:id/attributes/` API call."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"If plugin doesn\u0027t provide NIC, BOND or Node additional attributes then"},{"line_number":78,"context_line":"relations with empty `attributes` shouldn\u0027t exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_9a3474fc","line":75,"range":{"start_line":75,"start_character":13,"end_line":75,"end_character":20},"in_reply_to":"9aed3d3a_d53e0a27","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`interface_id`"},{"line_number":110,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"**NodeBondInterface**"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"`attributes`"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_75629e3f","line":111,"updated":"2016-02-29 12:19:34.000000000","message":"node_id would be helpful for easier fetching","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":108,"context_line":""},{"line_number":109,"context_line":"`interface_id`"},{"line_number":110,"context_line":"foreign key on node_nic_interfaces table"},{"line_number":111,"context_line":""},{"line_number":112,"context_line":"**NodeBondInterface**"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"`attributes`"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_9fd62626","line":111,"in_reply_to":"9aed3d3a_75629e3f","updated":"2016-03-01 08:16:48.000000000","message":"Done","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":166,"context_line":"      vendor_specific:"},{"line_number":167,"context_line":"        driver: e1000"},{"line_number":168,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":169,"context_line":"      additional_attributes:"},{"line_number":170,"context_line":"        plugin_a:"},{"line_number":171,"context_line":"          attribute_a: \"test\""},{"line_number":172,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_75973eec","line":169,"range":{"start_line":169,"start_character":6,"end_line":169,"end_character":27},"updated":"2016-02-29 12:19:34.000000000","message":"why \u0027additional_\u0027 here (not in other places)?","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":166,"context_line":"      vendor_specific:"},{"line_number":167,"context_line":"        driver: e1000"},{"line_number":168,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":169,"context_line":"      additional_attributes:"},{"line_number":170,"context_line":"        plugin_a:"},{"line_number":171,"context_line":"          attribute_a: \"test\""},{"line_number":172,"context_line":"          attribute_b: false"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_ff3f72b1","line":169,"range":{"start_line":169,"start_character":6,"end_line":169,"end_character":27},"in_reply_to":"9aed3d3a_75973eec","updated":"2016-03-01 08:16:48.000000000","message":"removed","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"8575af439ffceb6cdd7d217a7de3224c5f2fc826","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":169,"context_line":"      additional_attributes:"},{"line_number":170,"context_line":"        plugin_a:"},{"line_number":171,"context_line":"          attribute_a: \"test\""},{"line_number":172,"context_line":"          attribute_b: false"},{"line_number":173,"context_line":"    enp0s2:"},{"line_number":174,"context_line":"      vendor_specific:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_301f84b8","line":171,"range":{"start_line":171,"start_character":10,"end_line":171,"end_character":21},"updated":"2016-02-29 12:19:34.000000000","message":"Need to describe some rules for serialization. Is it plugin name in top (what DB field in particular)? Just flat list of properties or keep structure from attributes?","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        bus_info: \"0000:00:01.0\""},{"line_number":169,"context_line":"      additional_attributes:"},{"line_number":170,"context_line":"        plugin_a:"},{"line_number":171,"context_line":"          attribute_a: \"test\""},{"line_number":172,"context_line":"          attribute_b: false"},{"line_number":173,"context_line":"    enp0s2:"},{"line_number":174,"context_line":"      vendor_specific:"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_1f4fb637","line":171,"range":{"start_line":171,"start_character":10,"end_line":171,"end_character":21},"in_reply_to":"9aed3d3a_301f84b8","updated":"2016-03-01 08:16:48.000000000","message":"what means here \" structure from attributes\"? If attribute has few nested levels then - yes. If only one like in this example then flat list. For what we need UI controls info here? Or I didn\u0027t get your point.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"f0e3085f732707ac14ffae8ebfed54e4892ea28c","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        label: \"Node attribute A for section A\""},{"line_number":363,"context_line":"        description: \"Some description\""},{"line_number":364,"context_line":"        type: \"text\""},{"line_number":365,"context_line":"      attribute_b:"},{"line_number":366,"context_line":"        label: \"Node attribute B for section A\""},{"line_number":367,"context_line":"        description: \"Some description\""},{"line_number":368,"context_line":"        type: \"checkbox\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_5606801d","line":365,"range":{"start_line":365,"start_character":6,"end_line":365,"end_character":17},"updated":"2016-02-29 12:43:02.000000000","message":"What about the new attributes validation? Can they have \u0027regex\u0027 property as we work with environment settings for now?","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        label: \"Node attribute A for section A\""},{"line_number":363,"context_line":"        description: \"Some description\""},{"line_number":364,"context_line":"        type: \"text\""},{"line_number":365,"context_line":"      attribute_b:"},{"line_number":366,"context_line":"        label: \"Node attribute B for section A\""},{"line_number":367,"context_line":"        description: \"Some description\""},{"line_number":368,"context_line":"        type: \"checkbox\""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_b7ed2ab9","line":365,"range":{"start_line":365,"start_character":6,"end_line":365,"end_character":17},"in_reply_to":"9aed3d3a_5606801d","updated":"2016-03-01 08:16:48.000000000","message":"yes. As described below they have same format as core attributes in `openstack.yaml`","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"42199cee9b0e0ea7316ae52fbc5dafe8aa39b3dc","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  `openstack.yaml` file."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* New specific DSL boolean attrbiute `multiconfiguration` which means that"},{"line_number":374,"context_line":"  current plugin NIC or BOND or Node attribute is global for all instances."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"},{"line_number":377,"context_line":"  attributes in relevant config files if they exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_f00ebc39","line":374,"range":{"start_line":374,"start_character":46,"end_line":374,"end_character":74},"updated":"2016-02-29 12:27:13.000000000","message":"What does this mean? What influence it has on anything?","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  `openstack.yaml` file."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* New specific DSL boolean attrbiute `multiconfiguration` which means that"},{"line_number":374,"context_line":"  current plugin NIC or BOND or Node attribute is global for all instances."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"},{"line_number":377,"context_line":"  attributes in relevant config files if they exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_f2886073","line":374,"range":{"start_line":374,"start_character":46,"end_line":374,"end_character":74},"in_reply_to":"9aed3d3a_e07a6976","updated":"2016-03-01 08:16:48.000000000","message":"here I meant next: we have 100 interfaces, for 99 some attribute value is the same and for 1 is another. Ideally we need ability describe some rules for multiconfiguration. For example\n\nattribute_b:\n  multiconfiguration:\n    rule: sriov.enabled \u003d\u003d true\n\nIt can mean that attribute_b should be automatically filled with same value for all NICs where SRIOV enabled.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"022cf7d4d173fe7bd8e20d13ea8311fae12dee0b","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  `openstack.yaml` file."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* New specific DSL boolean attrbiute `multiconfiguration` which means that"},{"line_number":374,"context_line":"  current plugin NIC or BOND or Node attribute is global for all instances."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"},{"line_number":377,"context_line":"  attributes in relevant config files if they exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_e07a6976","line":374,"range":{"start_line":374,"start_character":46,"end_line":374,"end_character":74},"in_reply_to":"9aed3d3a_f00ebc39","updated":"2016-02-29 13:25:07.000000000","message":"Global parameters are in environment settings now. Is it something different?","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":371,"context_line":"  `openstack.yaml` file."},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"* New specific DSL boolean attrbiute `multiconfiguration` which means that"},{"line_number":374,"context_line":"  current plugin NIC or BOND or Node attribute is global for all instances."},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"},{"line_number":377,"context_line":"  attributes in relevant config files if they exist."}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_325be8f7","line":374,"range":{"start_line":374,"start_character":46,"end_line":374,"end_character":74},"in_reply_to":"9aed3d3a_f00ebc39","updated":"2016-03-01 08:16:48.000000000","message":"Maybe `global` not the best name here.\n\n... current plugins NIC or BOND or Node attribute is common for some set of NIC|BOND|Node instances.","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"42199cee9b0e0ea7316ae52fbc5dafe8aa39b3dc","unresolved":false,"context_lines":[{"line_number":392,"context_line":"attribute `type`. This attributes will contain \u0027node\u0027, \u0027nic\u0027 or \u0027bond\u0027 value"},{"line_number":393,"context_line":"of relation type."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"Data from `nic_config` and `bond_config` yaml files can be described in on"},{"line_number":396,"context_line":"file."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_7b844d5d","line":395,"range":{"start_line":395,"start_character":69,"end_line":395,"end_character":74},"updated":"2016-02-29 12:27:13.000000000","message":"s/in on/in","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"e4c6fc5b412b1c27203e79ae86d0557f8d79b8a6","unresolved":false,"context_lines":[{"line_number":392,"context_line":"attribute `type`. This attributes will contain \u0027node\u0027, \u0027nic\u0027 or \u0027bond\u0027 value"},{"line_number":393,"context_line":"of relation type."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"Data from `nic_config` and `bond_config` yaml files can be described in on"},{"line_number":396,"context_line":"file."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_df0eeee3","line":395,"range":{"start_line":395,"start_character":69,"end_line":395,"end_character":74},"in_reply_to":"9aed3d3a_7b844d5d","updated":"2016-03-01 08:16:48.000000000","message":"in one file. typo","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"42199cee9b0e0ea7316ae52fbc5dafe8aa39b3dc","unresolved":false,"context_lines":[{"line_number":392,"context_line":"attribute `type`. This attributes will contain \u0027node\u0027, \u0027nic\u0027 or \u0027bond\u0027 value"},{"line_number":393,"context_line":"of relation type."},{"line_number":394,"context_line":""},{"line_number":395,"context_line":"Data from `nic_config` and `bond_config` yaml files can be described in on"},{"line_number":396,"context_line":"file."},{"line_number":397,"context_line":""},{"line_number":398,"context_line":""},{"line_number":399,"context_line":"--------------"}],"source_content_type":"text/x-rst","patch_set":5,"id":"9aed3d3a_fbb17d48","line":396,"range":{"start_line":395,"start_character":0,"end_line":396,"end_character":5},"updated":"2016-02-29 12:27:13.000000000","message":"cannot get this","commit_id":"3dc562800aff8b72178d9cfbbbe6b3976a207cc7"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_d0f30c9d","line":41,"updated":"2016-03-02 08:16:38.000000000","message":"Should it be Load Default button for node attributes somewhere on UI? (Show Node Details dialog?)","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3d7ca47ca8ccf5f1b8f05ce80c42ce6bb06fa378","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_d307931a","line":41,"in_reply_to":"7af24918_d0f30c9d","updated":"2016-03-02 09:32:35.000000000","message":"Maybe. But I thought it was provided by Node attributes feature.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"a6a6545cc2b02ae581e926a071e3b64a3b5ae712","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_e415a049","line":41,"in_reply_to":"7af24918_d307931a","updated":"2016-03-02 11:01:41.000000000","message":"So, let\u0027s mention the ability to load default node attributes in UI in the spec.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"4a21a4194e4cb219e69c8a674a756c31110d17eb","unresolved":false,"context_lines":[{"line_number":38,"context_line":"  their default state by \u0027/nodes/interfaces/default_assignment/\u0027 and"},{"line_number":39,"context_line":"  \u0027/nodes/bonds/attributes/default\u0027 API calls."},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"* In case of plugin Node attributes they should be returned with core Node"},{"line_number":42,"context_line":"  attributes by `/nodes/:id/attributes/`."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"* `Load defaults` button on `Configure Interfaces` screen should return"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa0719c6_b10044ac","line":41,"in_reply_to":"7af24918_e415a049","updated":"2016-03-21 14:56:05.000000000","message":"Done","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"The response format for GET `/nodes/bonds/attributes/default`:"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":".. code-block:: json"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_50a09c43","line":243,"updated":"2016-03-02 08:16:38.000000000","message":"Node/interfaces attributes should also have \u0027weight\u0027 property to set up their order in Fuel UI","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"4a21a4194e4cb219e69c8a674a756c31110d17eb","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"The response format for GET `/nodes/bonds/attributes/default`:"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":".. code-block:: json"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa0719c6_7c9e7557","line":243,"in_reply_to":"7af24918_50a09c43","updated":"2016-03-21 14:56:05.000000000","message":"Done","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3d7ca47ca8ccf5f1b8f05ce80c42ce6bb06fa378","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"The response format for GET `/nodes/bonds/attributes/default`:"},{"line_number":243,"context_line":""},{"line_number":244,"context_line":".. code-block:: json"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"  {"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_f6a43dba","line":243,"in_reply_to":"7af24918_50a09c43","updated":"2016-03-02 09:32:35.000000000","message":"I\u0027ll add this and other attributes (label, description, metadata)","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":248,"context_line":"      \"label\": \"Mode\","},{"line_number":249,"context_line":"      \"type\": \"select\","},{"line_number":250,"context_line":"      \"values\": ["},{"line_number":251,"context_line":"        \"balance-rr\","},{"line_number":252,"context_line":"        \"some-value-1\","},{"line_number":253,"context_line":"        \"some-value-n\""},{"line_number":254,"context_line":"      ]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_90dce4e5","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":20},"updated":"2016-03-02 08:16:38.000000000","message":"I guess labels should be provided for the values too.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"4a21a4194e4cb219e69c8a674a756c31110d17eb","unresolved":false,"context_lines":[{"line_number":248,"context_line":"      \"label\": \"Mode\","},{"line_number":249,"context_line":"      \"type\": \"select\","},{"line_number":250,"context_line":"      \"values\": ["},{"line_number":251,"context_line":"        \"balance-rr\","},{"line_number":252,"context_line":"        \"some-value-1\","},{"line_number":253,"context_line":"        \"some-value-n\""},{"line_number":254,"context_line":"      ]"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa0719c6_0a1ba773","line":251,"range":{"start_line":251,"start_character":8,"end_line":251,"end_character":20},"in_reply_to":"7af24918_90dce4e5","updated":"2016-03-21 14:56:05.000000000","message":"Done","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"512b3f78fdfdeb055bf3ed057fa608a2a02ff26e","unresolved":false,"context_lines":[{"line_number":287,"context_line":"      \"state\": null,"},{"line_number":288,"context_line":"      \"max_speed\": 1000,"},{"line_number":289,"context_line":"      \"current_speed\": 1000,"},{"line_number":290,"context_line":"      \"interface_properties\": {"},{"line_number":291,"context_line":"        \"disable_offloading\": False,"},{"line_number":292,"context_line":"        \"mtu\": null,"},{"line_number":293,"context_line":"      },"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_5d57fbcd","line":290,"range":{"start_line":290,"start_character":7,"end_line":290,"end_character":27},"updated":"2016-03-02 14:58:06.000000000","message":"I don\u0027t think we need to keep this.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"4a21a4194e4cb219e69c8a674a756c31110d17eb","unresolved":false,"context_lines":[{"line_number":287,"context_line":"      \"state\": null,"},{"line_number":288,"context_line":"      \"max_speed\": 1000,"},{"line_number":289,"context_line":"      \"current_speed\": 1000,"},{"line_number":290,"context_line":"      \"interface_properties\": {"},{"line_number":291,"context_line":"        \"disable_offloading\": False,"},{"line_number":292,"context_line":"        \"mtu\": null,"},{"line_number":293,"context_line":"      },"}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa0719c6_4a2bdf82","line":290,"range":{"start_line":290,"start_character":7,"end_line":290,"end_character":27},"in_reply_to":"7af24918_5d57fbcd","updated":"2016-03-21 14:56:05.000000000","message":"Done","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_307190e1","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"updated":"2016-03-02 08:16:38.000000000","message":"What is interface here? Is it attributes for all bond slaves?","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"512b3f78fdfdeb055bf3ed057fa608a2a02ff26e","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_9d2ce303","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"in_reply_to":"7af24918_16d1e957","updated":"2016-03-02 14:58:06.000000000","message":"Let\u0027s ensure we cannot have different values of some attribute for slaves in this case.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3d7ca47ca8ccf5f1b8f05ce80c42ce6bb06fa378","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_16d1e957","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"in_reply_to":"7af24918_307190e1","updated":"2016-03-02 09:32:35.000000000","message":"Yes. All NICs have same set of attributes. So here attributes.interface is common attributes for bond slaves.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"a159c022aa96c71290d2e63121ed1aaf53b1a69f","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_a4b89fe6","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"in_reply_to":"7af24918_9d2ce303","updated":"2016-03-02 16:24:44.000000000","message":"bond is created on client side(UI) so there should be a check to prevent such behavior before bond data stored in DB","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"4da60d85c82a81d53907e6e26843e632e8997d36","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_bcc6ef46","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"in_reply_to":"7af24918_a4b89fe6","updated":"2016-03-02 18:07:22.000000000","message":"Please describe this moment in Web UI section also. It is important UX point to think about.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"4a21a4194e4cb219e69c8a674a756c31110d17eb","unresolved":false,"context_lines":[{"line_number":338,"context_line":"        \"mtu\": 5000,"},{"line_number":339,"context_line":"      },"},{"line_number":340,"context_line":"      \"attributes\": {"},{"line_number":341,"context_line":"        \"interface\": {"},{"line_number":342,"context_line":"          \"disable_offloading\": {"},{"line_number":343,"context_line":"            \"label\": \"Disable offloading\","},{"line_number":344,"context_line":"            \"type\": \"checkbox\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"fa0719c6_65c7f412","line":341,"range":{"start_line":341,"start_character":9,"end_line":341,"end_character":18},"in_reply_to":"7af24918_bcc6ef46","updated":"2016-03-21 14:56:05.000000000","message":"Done","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            ]"},{"line_number":376,"context_line":"            \"value\": \"balance-rr\","},{"line_number":377,"context_line":"          },"},{"line_number":378,"context_line":"          \"plugin_a\": {"},{"line_number":379,"context_line":"            \"attribute_a\": {"},{"line_number":380,"context_line":"              \"label\": \"BOND attribute A\""},{"line_number":381,"context_line":"              \"description\": \"Some description\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_905fc440","line":378,"range":{"start_line":378,"start_character":11,"end_line":378,"end_character":19},"updated":"2016-03-02 08:16:38.000000000","message":"Should this section has metadata hash? To provide section title and other info.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8392,"name":"Aleksey Kasatkin","email":"akasatkin@mirantis.com","username":"aleksey"},"change_message_id":"512b3f78fdfdeb055bf3ed057fa608a2a02ff26e","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            ]"},{"line_number":376,"context_line":"            \"value\": \"balance-rr\","},{"line_number":377,"context_line":"          },"},{"line_number":378,"context_line":"          \"plugin_a\": {"},{"line_number":379,"context_line":"            \"attribute_a\": {"},{"line_number":380,"context_line":"              \"label\": \"BOND attribute A\""},{"line_number":381,"context_line":"              \"description\": \"Some description\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_bdaf1f93","line":378,"range":{"start_line":378,"start_character":11,"end_line":378,"end_character":19},"in_reply_to":"7af24918_905fc440","updated":"2016-03-02 14:58:06.000000000","message":"I think it should not be here at all. Attributes should work the same way as for cluster.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"a159c022aa96c71290d2e63121ed1aaf53b1a69f","unresolved":false,"context_lines":[{"line_number":375,"context_line":"            ]"},{"line_number":376,"context_line":"            \"value\": \"balance-rr\","},{"line_number":377,"context_line":"          },"},{"line_number":378,"context_line":"          \"plugin_a\": {"},{"line_number":379,"context_line":"            \"attribute_a\": {"},{"line_number":380,"context_line":"              \"label\": \"BOND attribute A\""},{"line_number":381,"context_line":"              \"description\": \"Some description\","}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_6403370e","line":378,"range":{"start_line":378,"start_character":11,"end_line":378,"end_character":19},"in_reply_to":"7af24918_bdaf1f93","updated":"2016-03-02 16:24:44.000000000","message":"I think it\u0027s a same way. Cluster attributes also use \u0027plugin_name\u0027 to identify plugin. https://github.com/openstack/fuel-web/blob/master/nailgun/nailgun/plugins/manager.py#L86\n\nMaybe one major thing which will be added it plugin id for case of plugin multiversion","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        description: \"Some description\""},{"line_number":498,"context_line":"        type: \"checkbox\""},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"  Actually NICs and Nodes attributes should have similar structure as in"},{"line_number":501,"context_line":"  `openstack.yaml` file."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_cb635ddb","line":500,"updated":"2016-03-02 08:16:38.000000000","message":"Do these node/interfaces attributes support restrictions (DSL)?","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":14167,"name":"Andriy Popovych","email":"apopovych@mirantis.com","username":"apopovych"},"change_message_id":"3d7ca47ca8ccf5f1b8f05ce80c42ce6bb06fa378","unresolved":false,"context_lines":[{"line_number":497,"context_line":"        description: \"Some description\""},{"line_number":498,"context_line":"        type: \"checkbox\""},{"line_number":499,"context_line":""},{"line_number":500,"context_line":"  Actually NICs and Nodes attributes should have similar structure as in"},{"line_number":501,"context_line":"  `openstack.yaml` file."},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"* Fuel plugin builder should provide validation of schema for NICs and Nodes"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_d66301db","line":500,"in_reply_to":"7af24918_cb635ddb","updated":"2016-03-02 09:32:35.000000000","message":"Yes it should. Actually I want to show that this attributes can have exactly the same structure as attributes in openstack.yaml for `Settings` tab.","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"},{"author":{"_account_id":8766,"name":"Julia Aranovich","email":"jkirnosova@mirantis.com","username":"CesarSar"},"change_message_id":"3047ae31ee5b62136c38242497dbf6d80b589e59","unresolved":false,"context_lines":[{"line_number":611,"context_line":"  and proper data storing."},{"line_number":612,"context_line":"* [Nailgun] Refresh NICs and Nodes attributes with default data."},{"line_number":613,"context_line":"* [Nailgun] Provide serialization of plugin releated attributes for astute."},{"line_number":614,"context_line":"* [UI] Handle plugin NICs and Nodes attributes on `Node` and"},{"line_number":615,"context_line":"  `Configure Interfaces` screens."},{"line_number":616,"context_line":"* [FPB] Templates and validation for optional yaml files: `nic_config`"},{"line_number":617,"context_line":"  and `node_config`"}],"source_content_type":"text/x-rst","patch_set":8,"id":"7af24918_ab19b17b","line":614,"range":{"start_line":614,"start_character":50,"end_line":614,"end_character":56},"updated":"2016-03-02 08:16:38.000000000","message":"There is no \u0027Node\u0027 screen in Fuel UI. Let it be Show Node Details dialog for now. Or it is planned to introduce such a Node screen within this feature?","commit_id":"aa7b587bed8e45ace4b32f3e95d7676f7b5f4de6"}]}
