)]}'
{"cinder/locale/it/LC_MESSAGES/cinder-log-info.po":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"da8011c65d85f99a82345f1dd13ec611aad164b2","unresolved":false,"context_lines":[{"line_number":2812,"context_line":""},{"line_number":2813,"context_line":"msgid \"\""},{"line_number":2814,"context_line":"\"Using extra_specs for defining QoS specs will be deprecated in the Newton \""},{"line_number":2815,"context_line":"\"release of OpenStack. Please use QoS specs.\""},{"line_number":2816,"context_line":"msgstr \"\""},{"line_number":2817,"context_line":"\"L\u0027utilizzo di extra_specs per definire le specifiche QoS risulterà obsoleto \""},{"line_number":2818,"context_line":"\"nella release N di OpenStack. Utilizzare le specifiche QoS.\""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"1ac06dbe_11b9b079","line":2815,"updated":"2016-08-23 09:43:29.000000000","message":"We\u0027re not supposed to modify translations directly [1].\n\n[1] https://wiki.openstack.org/wiki/Translations","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"}],"cinder/locale/ko_KR/LC_MESSAGES/cinder-log-info.po":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"da8011c65d85f99a82345f1dd13ec611aad164b2","unresolved":false,"context_lines":[{"line_number":2652,"context_line":"msgid \"Using existing initiator group name: %(igGroupName)s.\""},{"line_number":2653,"context_line":"msgstr \"기존 개시자 그룹 이름 사용: %(igGroupName)s.\""},{"line_number":2654,"context_line":""},{"line_number":2655,"context_line":"msgid \"\""},{"line_number":2656,"context_line":"\"Using extra_specs for defining QoS specs will be deprecated in the Newton \""},{"line_number":2657,"context_line":"\"release of OpenStack. Please use QoS specs.\""},{"line_number":2658,"context_line":"msgstr \"\""},{"line_number":2659,"context_line":"\"QoS 사양을 정의하는 데 extra_specs을 사용하는 기능은 OpenStack의 N 릴리스에\""},{"line_number":2660,"context_line":"\"서 더 이상 사용되지 않습니다. QoS 사양을 사용하십시오.\""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"1ac06dbe_517688d7","line":2657,"range":{"start_line":2655,"start_character":0,"end_line":2657,"end_character":45},"updated":"2016-08-23 09:43:29.000000000","message":"We\u0027re not supposed to modify translations directly [1].\n\n[1] https://wiki.openstack.org/wiki/Translations","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"}],"cinder/volume/drivers/emc/scaleio.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"da8011c65d85f99a82345f1dd13ec611aad164b2","unresolved":false,"context_lines":[{"line_number":260,"context_line":"            if qos_limit is not None:"},{"line_number":261,"context_line":"                LOG.warning(_LW(\"QoS specs are overriding extra_specs.\"))"},{"line_number":262,"context_line":"            else:"},{"line_number":263,"context_line":"                LOG.info(_LI(\"Using extra_specs for defining QoS specs \""},{"line_number":264,"context_line":"                             \"will be deprecated in the Newton release \""},{"line_number":265,"context_line":"                             \"of OpenStack. Please use QoS specs.\"))"},{"line_number":266,"context_line":"        return qos_limit if qos_limit is not None else extraspecs_limit"},{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    def _id_to_base64(self, id):"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_6c3c8bc8","line":265,"range":{"start_line":263,"start_character":0,"end_line":265,"end_character":68},"updated":"2016-08-23 09:43:29.000000000","message":"We should deprecate the option instead.","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"}],"cinder/volume/drivers/eqlx.py":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"da8011c65d85f99a82345f1dd13ec611aad164b2","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027group-0\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Group name to use for creating volumes. Defaults to \u0027"},{"line_number":45,"context_line":"                    \u0027\"group-0\".\u0027),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_timeout\u0027,"},{"line_number":47,"context_line":"               default\u003d30,"},{"line_number":48,"context_line":"               help\u003d\u0027Timeout for the Group Manager cli command execution. \u0027"},{"line_number":49,"context_line":"                    \u0027Default is 30. Note that this option is deprecated \u0027"},{"line_number":50,"context_line":"                    \u0027in favour of \"ssh_conn_timeout\" as \u0027"},{"line_number":51,"context_line":"                    \u0027specified in cinder/volume/drivers/san/san.py \u0027"},{"line_number":52,"context_line":"                    \u0027and will be removed in Mitaka release.\u0027),"},{"line_number":53,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_max_retries\u0027,"},{"line_number":54,"context_line":"               default\u003d5,"},{"line_number":55,"context_line":"               help\u003d\u0027Maximum retry count for reconnection. Default is 5.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_6c15ab3e","line":52,"range":{"start_line":46,"start_character":0,"end_line":52,"end_character":62},"updated":"2016-08-23 09:43:29.000000000","message":"We should delete the option instead. We\u0027re past Mitaka now.","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"},{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"aca963fd1773b21baca20fbc893cbd4eaa25c783","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027group-0\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Group name to use for creating volumes. Defaults to \u0027"},{"line_number":45,"context_line":"                    \u0027\"group-0\".\u0027),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_timeout\u0027,"},{"line_number":47,"context_line":"               default\u003d30,"},{"line_number":48,"context_line":"               help\u003d\u0027Timeout for the Group Manager cli command execution. \u0027"},{"line_number":49,"context_line":"                    \u0027Default is 30. Note that this option is deprecated \u0027"},{"line_number":50,"context_line":"                    \u0027in favour of \"ssh_conn_timeout\" as \u0027"},{"line_number":51,"context_line":"                    \u0027specified in cinder/volume/drivers/san/san.py \u0027"},{"line_number":52,"context_line":"                    \u0027and will be removed in Mitaka release.\u0027),"},{"line_number":53,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_max_retries\u0027,"},{"line_number":54,"context_line":"               default\u003d5,"},{"line_number":55,"context_line":"               help\u003d\u0027Maximum retry count for reconnection. Default is 5.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_439cf05c","line":52,"range":{"start_line":46,"start_character":0,"end_line":52,"end_character":62},"in_reply_to":"1ac06dbe_631e4c60","updated":"2016-08-23 13:20:53.000000000","message":"Oh yes, deprecated\u003dTrue should be set in here first. Thanks!","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"},{"author":{"_account_id":1207,"name":"Duncan Thomas","email":"duncan.thomas@gmail.com","username":"duncan-thomas"},"change_message_id":"d1f1e402fe69399e0e672ecd4f8128c8a3326e1f","unresolved":false,"context_lines":[{"line_number":43,"context_line":"               default\u003d\u0027group-0\u0027,"},{"line_number":44,"context_line":"               help\u003d\u0027Group name to use for creating volumes. Defaults to \u0027"},{"line_number":45,"context_line":"                    \u0027\"group-0\".\u0027),"},{"line_number":46,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_timeout\u0027,"},{"line_number":47,"context_line":"               default\u003d30,"},{"line_number":48,"context_line":"               help\u003d\u0027Timeout for the Group Manager cli command execution. \u0027"},{"line_number":49,"context_line":"                    \u0027Default is 30. Note that this option is deprecated \u0027"},{"line_number":50,"context_line":"                    \u0027in favour of \"ssh_conn_timeout\" as \u0027"},{"line_number":51,"context_line":"                    \u0027specified in cinder/volume/drivers/san/san.py \u0027"},{"line_number":52,"context_line":"                    \u0027and will be removed in Mitaka release.\u0027),"},{"line_number":53,"context_line":"    cfg.IntOpt(\u0027eqlx_cli_max_retries\u0027,"},{"line_number":54,"context_line":"               default\u003d5,"},{"line_number":55,"context_line":"               help\u003d\u0027Maximum retry count for reconnection. Default is 5.\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"1ac06dbe_631e4c60","line":52,"range":{"start_line":46,"start_character":0,"end_line":52,"end_character":62},"in_reply_to":"1ac06dbe_6c15ab3e","updated":"2016-08-23 13:18:06.000000000","message":"It doesn\u0027t appear to have been hooked up to the deprecation machinery (that emits warnings if you are using it), which some distros rely on to audit their use of deprecated features. Unless I\u0027ve missed something, I\u0027d prefer it was properly deprecated first.","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"}],"doc/source/devref/rolling.upgrades.rst":[{"author":{"_account_id":11600,"name":"Michał Dulko","email":"michal.dulko@gmail.com","username":"dulek"},"change_message_id":"da8011c65d85f99a82345f1dd13ec611aad164b2","unresolved":false,"context_lines":[{"line_number":23,"context_line":"sure that any introduced change doesn\u0027t break older services running in the"},{"line_number":24,"context_line":"same Cinder deployment."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"In general there is a requirement that release Newton(N) will keep backward"},{"line_number":27,"context_line":"compatibility with release N-1 and in a deployment N\u0027s and N-1\u0027s services can"},{"line_number":28,"context_line":"safely coexist. This means that when performing a live upgrade you cannot skip"},{"line_number":29,"context_line":"any release (e.g. you cannot upgrade N to N+2 without upgrading it to N+1"},{"line_number":30,"context_line":"first). Further in the document N will denote the current release, N-1 a"},{"line_number":31,"context_line":"previous one, N+1 the next one, etc."},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"Having in mind that we only support compatibility with N-1, most of the"},{"line_number":34,"context_line":"compatibility code written in N needs to exist just for one release and can be"},{"line_number":35,"context_line":"removed in the beginning of N+1. A good practice here is to mark them with"},{"line_number":36,"context_line":":code:`TODO` or :code:`FIXME` comments to make them easy to find in the future."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"Please note that proper upgrades solution should support both"},{"line_number":39,"context_line":"release-to-release upgrades as well as upgrades of deployments following the"},{"line_number":40,"context_line":"Cinder master more closely. We cannot just merge patches implementing"},{"line_number":41,"context_line":"compatibility at the end of the release - we should keep things compatible"},{"line_number":42,"context_line":"through the whole release."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"To achieve compatibility, discipline is required from the developers. There are"},{"line_number":45,"context_line":"several planes on which incompatibility may occur:"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"* **REST API changes** - these are prohibited by definition and this document"},{"line_number":48,"context_line":"  will not describe the subject. For further information one may use `API"},{"line_number":49,"context_line":"  Working Group guidelines"},{"line_number":50,"context_line":"  \u003chttps://specs.openstack.org/openstack/api-wg/guidelines/evaluating_api_changes.html\u003e`_"},{"line_number":51,"context_line":"  for reference."},{"line_number":52,"context_line":""},{"line_number":53,"context_line":"* **Database schema migrations** - e.g. if N-1 was relying on some column in"},{"line_number":54,"context_line":"  the DB being present, N\u0027s migrations cannot remove it. N+1\u0027s however can"},{"line_number":55,"context_line":"  (assuming N has no notion of the column)."},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"* **Database data migrations** - if a migration requires big amount of data to"},{"line_number":58,"context_line":"  be transferred between columns or tables or converted, it will most likely"},{"line_number":59,"context_line":"  lock the tables. This may cause services to be unresponsive, causing the"},{"line_number":60,"context_line":"  downtime."},{"line_number":61,"context_line":""},{"line_number":62,"context_line":"* **RPC API changes** - adding or removing RPC method parameter, or the method"},{"line_number":63,"context_line":"  itself, may lead to incompatibilities."},{"line_number":64,"context_line":""},{"line_number":65,"context_line":"* **RPC payload changes** - adding, renaming or removing a field from the dict"},{"line_number":66,"context_line":"  passed over RPC may lead to incompatibilities."},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"Next sections of this document will focus on explaining last four points and"},{"line_number":69,"context_line":"provide means to tackle required changes in these matters while maintaining"},{"line_number":70,"context_line":"backward compatibility."},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"Database schema and data migrations"},{"line_number":74,"context_line":"-----------------------------------"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"In general incompatible database schema migrations can be tracked to ALTER and"},{"line_number":77,"context_line":"DROP SQL commands instruction issued either against a column or table. This is"},{"line_number":78,"context_line":"why a unit test that blocks such migrations was introduced. We should try to"},{"line_number":79,"context_line":"keep our DB modifications additive. Moreover we should aim not to introduce"},{"line_number":80,"context_line":"migrations that cause the database tables to lock for a long period. Long lock"},{"line_number":81,"context_line":"on whole table can block other queries and may make real requests to fail."},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"Adding a column"},{"line_number":84,"context_line":"..............."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"This is the simplest case - we don\u0027t have any requirements when adding a new"},{"line_number":87,"context_line":"column apart from the fact that it should be added as the last one in the"},{"line_number":88,"context_line":"table. If that\u0027s covered, the DB engine will make sure the migration won\u0027t be"},{"line_number":89,"context_line":"disruptive."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"Dropping a column not referenced in SQLAlchemy code"},{"line_number":92,"context_line":"..................................................."},{"line_number":93,"context_line":""},{"line_number":94,"context_line":"When we want to remove a column that wasn\u0027t present in any SQLAlchemy model or"},{"line_number":95,"context_line":"it was in the model, but model was not referenced in any SQLAlchemy API"},{"line_number":96,"context_line":"function (this basically means that N-1 wasn\u0027t depending on the presence of"},{"line_number":97,"context_line":"that column in the DB), then the situation is simple. We should be able to"},{"line_number":98,"context_line":"safely drop the column in Newton release."},{"line_number":99,"context_line":""},{"line_number":100,"context_line":"Removal of unnecessary column"},{"line_number":101,"context_line":"............................."},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"When we want to remove a used column without migrating any data out of it (for"},{"line_number":104,"context_line":"example because what\u0027s kept in the column is obsolete), then we just need to"},{"line_number":105,"context_line":"remove it from the SQLAlchemy model and API in Newton(N) release. In N+1 or as a"},{"line_number":106,"context_line":"post-upgrade migration in N we can merge a migration issuing DROP for this"},{"line_number":107,"context_line":"column (we cannot do that earlier because N-1 will depend on the presence of"},{"line_number":108,"context_line":"that column)."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"ALTER on a column"}],"source_content_type":"text/x-rst","patch_set":1,"id":"1ac06dbe_31394cf3","line":107,"range":{"start_line":26,"start_character":0,"end_line":107,"end_character":76},"updated":"2016-08-23 09:43:29.000000000","message":"N is just a variable here. This is a general description and isn\u0027t connected an actual version.","commit_id":"6450d01e0a0ea64555527a007f4369e1422b7fbd"}]}
