)]}'
{"specs/newton/deployment-stages.rst":[{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"a78670865ef1d5315fee305f5b6a33f72d957d69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"3ac371cc_de0fc586","updated":"2016-08-18 18:48:15.000000000","message":"This spec will need to move to the Ocata cycle. N3 (feature freeze) in in two weeks.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"112e0ef3916d52ea4838d57537dd3f7e2dd98e18","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  or more. Ideally a default AIO deployment of the compute kit using pre-built"},{"line_number":17,"context_line":"  artifacts should be complete and functional within 15 minutes. Ideally a"},{"line_number":18,"context_line":"  default AIO deployment of the compute kit without using pre-built artifacts"},{"line_number":19,"context_line":"  should be complete within 30 minutes."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* In production environments with many target hosts there are sometimes"},{"line_number":22,"context_line":"  transient failures that happen. When they happen the deployer is forced to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bacf61ea_5c314859","line":19,"updated":"2016-08-01 18:20:24.000000000","message":"Does the second scenario assume that an internet connection will be involved?","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"68324fd4380adb4da2a82df3c33bc74962fb40d6","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  or more. Ideally a default AIO deployment of the compute kit using pre-built"},{"line_number":17,"context_line":"  artifacts should be complete and functional within 15 minutes. Ideally a"},{"line_number":18,"context_line":"  default AIO deployment of the compute kit without using pre-built artifacts"},{"line_number":19,"context_line":"  should be complete within 30 minutes."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* In production environments with many target hosts there are sometimes"},{"line_number":22,"context_line":"  transient failures that happen. When they happen the deployer is forced to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bacf61ea_9ca10049","line":19,"in_reply_to":"bacf61ea_5c314859","updated":"2016-08-01 18:24:25.000000000","message":"Without using pre-built artifacts it absolutely is required to have an internet connection.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":12892,"name":"Nolan Brubaker","email":"nolan.brubaker@rackspace.com","username":"nrb"},"change_message_id":"a081b811f4c6bccb8fba98492cef6b7638336249","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  or more. Ideally a default AIO deployment of the compute kit using pre-built"},{"line_number":17,"context_line":"  artifacts should be complete and functional within 15 minutes. Ideally a"},{"line_number":18,"context_line":"  default AIO deployment of the compute kit without using pre-built artifacts"},{"line_number":19,"context_line":"  should be complete within 30 minutes."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* In production environments with many target hosts there are sometimes"},{"line_number":22,"context_line":"  transient failures that happen. When they happen the deployer is forced to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bacf61ea_dc5c184d","line":19,"in_reply_to":"bacf61ea_9ca10049","updated":"2016-08-01 18:27:29.000000000","message":"That\u0027s what I thought. A 30 minute goal seems fairly ambitious in that case.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"9b837258551b19649f65520d6a33f9db6b491c53","unresolved":false,"context_lines":[{"line_number":16,"context_line":"  or more. Ideally a default AIO deployment of the compute kit using pre-built"},{"line_number":17,"context_line":"  artifacts should be complete and functional within 15 minutes. Ideally a"},{"line_number":18,"context_line":"  default AIO deployment of the compute kit without using pre-built artifacts"},{"line_number":19,"context_line":"  should be complete within 30 minutes."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"* In production environments with many target hosts there are sometimes"},{"line_number":22,"context_line":"  transient failures that happen. When they happen the deployer is forced to"}],"source_content_type":"text/x-rst","patch_set":1,"id":"bacf61ea_cd38e4d5","line":19,"in_reply_to":"bacf61ea_dc5c184d","updated":"2016-08-01 19:16:20.000000000","message":"The goal time is a fairly arbitrary number. It\u0027s a goal set to try and force thinking differently. The measure of success in my mind is that it can complete in 30 mins (or close to it) within OpenStack-CI (ie local mirrors, etc).","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":23,"context_line":"  re-execute playbooks which may go through many tasks which are already"},{"line_number":24,"context_line":"  complete and do not need to be executed again. While a knowledgable deployer"},{"line_number":25,"context_line":"  will make use of tag skipping and host scoping to reduce the execution time,"},{"line_number":26,"context_line":"  this is not a skill the novie deployer has. In order to improve ease-of-use"},{"line_number":27,"context_line":"  it should be possible for the playbooks to simply skip over the stages which"},{"line_number":28,"context_line":"  have already completed on each host."},{"line_number":29,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_e8008b04","line":26,"range":{"start_line":26,"start_character":26,"end_line":26,"end_character":31},"updated":"2016-07-26 05:33:01.000000000","message":"typo: s/novie/novice/","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":33,"context_line":"  distribution packages. While this can (and should) be catered for through"},{"line_number":34,"context_line":"  the implementation of distribution package mirrors, it also makes sense to"},{"line_number":35,"context_line":"  make use of pre-build container root disks in order to solve this problem"},{"line_number":36,"context_line":"  for the control plane and simulataneously reduce deploy time."},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"* Deployments currently do a lot of outgoing internet interaction in order"},{"line_number":39,"context_line":"  to fetch packages, keys and other artifacts. The outgoing access is often"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_131b9474","line":36,"range":{"start_line":36,"start_character":28,"end_line":36,"end_character":43},"updated":"2016-07-26 05:33:01.000000000","message":"typo: s/simulataneously/simultaneously/","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":39,"context_line":"  to fetch packages, keys and other artifacts. The outgoing access is often"},{"line_number":40,"context_line":"  a problem for deployers with a high security environment as the hosts are"},{"line_number":41,"context_line":"  not able to access the internet directly. This access is also slower than"},{"line_number":42,"context_line":"  it would be if these artifacts were locally cached."},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"Proposed change"},{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_1349d460","line":42,"updated":"2016-07-26 05:33:01.000000000","message":"This is definitely a thing I\u0027ve seen for some deployments in the wild for customers.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"0f28fa1b724de56091c86f5f07b112370b9e5f7c","unresolved":false,"context_lines":[{"line_number":45,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"The stages proposed are as follows:"},{"line_number":48,"context_line":""},{"line_number":49,"context_line":"#. Build: This stage prepares artifacts which are general purpose. This stage"},{"line_number":50,"context_line":"   is not required to be executed per deployment - but would typically be"},{"line_number":51,"context_line":"   executed a CI process in order to prepare the appropriate artifacts to be"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8ec9b2_b06836f7","line":48,"updated":"2016-09-14 12:48:16.000000000","message":"Possibly add a pre-requisites check stage - or add that as a part of the \u0027Prepare\u0027 stage? The idea being is that each role can have a check stage which validates that it has everything it needs for an install, including having all the right inventory and configuration entries.\n\nA playbook could be compiled which executes this stage in each role to verify that the environment is ready for a deployment.\n\nSee the galera_server role\u0027s cluster state check for an example.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":48,"context_line":""},{"line_number":49,"context_line":"#. Build: This stage prepares artifacts which are general purpose. This stage"},{"line_number":50,"context_line":"   is not required to be executed per deployment - but would typically be"},{"line_number":51,"context_line":"   executed a CI process in order to prepare the appropriate artifacts to be"},{"line_number":52,"context_line":"   used by an organisation. Artifact examples include distribution software"},{"line_number":53,"context_line":"   packages, container rootfs tarballs, python venvs, etc."},{"line_number":54,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_7322d0a4","line":51,"range":{"start_line":51,"start_character":12,"end_line":51,"end_character":13},"updated":"2016-07-26 05:33:01.000000000","message":"\"by a\"?","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":20038,"name":"Michael Gugino","email":"michael.gugino@walmart.com","username":"michaelgugino"},"change_message_id":"4caeeb5c46112eba0b4ec07155139c632dae3e86","unresolved":false,"context_lines":[{"line_number":49,"context_line":"#. Build: This stage prepares artifacts which are general purpose. This stage"},{"line_number":50,"context_line":"   is not required to be executed per deployment - but would typically be"},{"line_number":51,"context_line":"   executed a CI process in order to prepare the appropriate artifacts to be"},{"line_number":52,"context_line":"   used by an organisation. Artifact examples include distribution software"},{"line_number":53,"context_line":"   packages, container rootfs tarballs, python venvs, etc."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":56,"context_line":"   that\u0027s needed for the role/playbook to execute are in-place before effecting"}],"source_content_type":"text/x-rst","patch_set":1,"id":"7a8ec9b2_c059575c","line":53,"range":{"start_line":52,"start_character":54,"end_line":53,"end_character":58},"updated":"2016-09-14 18:21:13.000000000","message":"Are we considering mixed architecture deploys with this, possibly powervm folks?\n\nThis step also seems like the repo server.  I\u0027m not sure deployers want to be in the business of hosting debs/rpms in the repo, it\u0027s likely going to drift after some time locally due to packaging, and it\u0027s going to add more to maintenance tasks, IMO.  I\u0027m on board with the venvs and possibly the container rootfs.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"c03110645f5c1feab9a928f08a63dfc279a4e365","unresolved":false,"context_lines":[{"line_number":53,"context_line":"   packages, container rootfs tarballs, python venvs, etc."},{"line_number":54,"context_line":""},{"line_number":55,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":56,"context_line":"   that\u0027s needed for the role/playbook to execute are in-place before effecting"},{"line_number":57,"context_line":"   any changes. This stage also pre-stages all artifacts from the Build"},{"line_number":58,"context_line":"   stage."},{"line_number":59,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_02469b4e","line":56,"updated":"2016-07-26 06:29:55.000000000","message":"s/are/is/","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"c03110645f5c1feab9a928f08a63dfc279a4e365","unresolved":false,"context_lines":[{"line_number":64,"context_line":"#. Configure: This stage executes the implementation of configuration changes"},{"line_number":65,"context_line":"   to configuration files and starts/restarts the applicable services."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Upgrade: This stage should be contain specialised tasks to be included in the"},{"line_number":68,"context_line":"   \u0027Install\u0027 stage which are activated when an environment is already in-place."},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"The tasks for each stage will be explicitly broken into task files, for example:"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_2260ffce","line":67,"updated":"2016-07-26 06:29:55.000000000","message":"s/be//","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":538,"name":"Major Hayden","email":"major@mhtx.net","username":"rackerhacker"},"change_message_id":"895fb23e7aa03e12a4e7c65ce3c98d375f8637cb","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* \u003cservice\u003e_install_python.yml"},{"line_number":78,"context_line":"* \u003cservice\u003e_configure.yml"},{"line_number":79,"context_line":"* \u003cservice\u003e_configure_ssl.yml"},{"line_number":80,"context_line":"* \u003cservice\u003e_configure_keys.yml"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The general idea with breaking out the task files is to implement conditional"},{"line_number":83,"context_line":"inclusions where appropriate to ensure that the tasks are not even evaluated"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_9911b9b2","line":80,"updated":"2016-07-23 00:37:34.000000000","message":"This will be really nice to have. I end up fumbling around in some of the more complex roles (neutron) to find the right task that needs fixing.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":77,"context_line":"* \u003cservice\u003e_install_python.yml"},{"line_number":78,"context_line":"* \u003cservice\u003e_configure.yml"},{"line_number":79,"context_line":"* \u003cservice\u003e_configure_ssl.yml"},{"line_number":80,"context_line":"* \u003cservice\u003e_configure_keys.yml"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":"The general idea with breaking out the task files is to implement conditional"},{"line_number":83,"context_line":"inclusions where appropriate to ensure that the tasks are not even evaluated"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_33a178f9","line":80,"in_reply_to":"dada55a8_9911b9b2","updated":"2016-07-26 05:33:01.000000000","message":"I\u0027d even like to see tests enforcing this.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":10881,"name":"Neill Cox","email":"neill@ingenious.com.au","username":"neillc"},"change_message_id":"147cd5348869ff3de6e25ce1aaba1057b885267a","unresolved":false,"context_lines":[{"line_number":88,"context_line":""},{"line_number":89,"context_line":"Some examples:"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"#. If ``developer_mode`` is ``false``, do not include all developer mode tasks"},{"line_number":92,"context_line":"   for evaluation."},{"line_number":93,"context_line":"#. If ``ansible_pkg_mgr \u003d\u003d \u0027apt\u0027``, do not evaluate any tasks related to"},{"line_number":94,"context_line":"   yum."}],"source_content_type":"text/x-rst","patch_set":1,"id":"ffe62b97_37b65cfc","line":91,"updated":"2017-03-27 04:12:14.000000000","message":"s/all/any","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"c03110645f5c1feab9a928f08a63dfc279a4e365","unresolved":false,"context_lines":[{"line_number":134,"context_line":"implementing upgrades, where upgrades are considered part of the default"},{"line_number":135,"context_line":"process (because a fresh install is really a special case of an upgrade)."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"Being able to make use of pre-build artifacts for an environment will mean"},{"line_number":138,"context_line":"that an upgrade process should be able to more easily roll back to a"},{"line_number":139,"context_line":"previous state if need be."},{"line_number":140,"context_line":""}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_42d6d34f","line":137,"updated":"2016-07-26 06:29:55.000000000","message":"s/build/built/","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":538,"name":"Major Hayden","email":"major@mhtx.net","username":"rackerhacker"},"change_message_id":"895fb23e7aa03e12a4e7c65ce3c98d375f8637cb","unresolved":false,"context_lines":[{"line_number":141,"context_line":"Security impact"},{"line_number":142,"context_line":"---------------"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"At this time the security impact is not yet known."},{"line_number":145,"context_line":""},{"line_number":146,"context_line":"Performance impact"},{"line_number":147,"context_line":"------------------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_f93b9536","line":144,"updated":"2016-07-23 00:37:34.000000000","message":"This should actually be a security improvement, since we could verify the integrity of (certain parts of) a deployment a little easier.\n\nInitially, I wondered about handling vulnerabilities in pre-built wheels/venvs, but it should be fine since we would need to adjust the SHAs on those projects and rebuild the artifacts anyway. ;)","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"9cc51ced0b82691fe71e13c2a26bd61ddef8d0f2","unresolved":false,"context_lines":[{"line_number":183,"context_line":"  jesse-pretorius (odyssey4me)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"Other contributors:"},{"line_number":186,"context_line":"  \u003claunchpad-id or None\u003e"},{"line_number":187,"context_line":""},{"line_number":188,"context_line":"Work items"},{"line_number":189,"context_line":"----------"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_8d5faf74","line":186,"range":{"start_line":186,"start_character":0,"end_line":186,"end_character":24},"updated":"2016-07-23 07:38:29.000000000","message":"@Major was that you signing up as an additional contributor?","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":18784,"name":"Michael Carden","email":"mike.carden@gmail.com","username":"mcarden"},"change_message_id":"c03110645f5c1feab9a928f08a63dfc279a4e365","unresolved":false,"context_lines":[{"line_number":194,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"It may be possible for us to make use of pre-built artifacts for gate testing"},{"line_number":197,"context_line":"in order to reduce the time take for integrated tests. The option of"},{"line_number":198,"context_line":"publishing the last successful build\u0027s artifacts for each branch on OpenStack"},{"line_number":199,"context_line":"Infrastructure will be explored. These artifacts will be for development tests"},{"line_number":200,"context_line":"only and not useful for production environments."}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_22e59f37","line":197,"updated":"2016-07-26 06:29:55.000000000","message":"s/take/taken/","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":538,"name":"Major Hayden","email":"major@mhtx.net","username":"rackerhacker"},"change_message_id":"895fb23e7aa03e12a4e7c65ce3c98d375f8637cb","unresolved":false,"context_lines":[{"line_number":197,"context_line":"in order to reduce the time take for integrated tests. The option of"},{"line_number":198,"context_line":"publishing the last successful build\u0027s artifacts for each branch on OpenStack"},{"line_number":199,"context_line":"Infrastructure will be explored. These artifacts will be for development tests"},{"line_number":200,"context_line":"only and not useful for production environments."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Documentation impact"},{"line_number":203,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_791685a8","line":200,"updated":"2016-07-23 00:37:34.000000000","message":"We should probably take into consideration some way to sign/hash the artifacts.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":197,"context_line":"in order to reduce the time take for integrated tests. The option of"},{"line_number":198,"context_line":"publishing the last successful build\u0027s artifacts for each branch on OpenStack"},{"line_number":199,"context_line":"Infrastructure will be explored. These artifacts will be for development tests"},{"line_number":200,"context_line":"only and not useful for production environments."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Documentation impact"},{"line_number":203,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_9355c4c3","line":200,"in_reply_to":"dada55a8_4d777702","updated":"2016-07-26 05:33:01.000000000","message":"Do we not want to consider prebuilt artifacts for even production environments? That would be a great benefit for deployment performance, if we are able to provide a respository of artefacts to use.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"9cc51ced0b82691fe71e13c2a26bd61ddef8d0f2","unresolved":false,"context_lines":[{"line_number":197,"context_line":"in order to reduce the time take for integrated tests. The option of"},{"line_number":198,"context_line":"publishing the last successful build\u0027s artifacts for each branch on OpenStack"},{"line_number":199,"context_line":"Infrastructure will be explored. These artifacts will be for development tests"},{"line_number":200,"context_line":"only and not useful for production environments."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Documentation impact"},{"line_number":203,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_4d777702","line":200,"in_reply_to":"dada55a8_791685a8","updated":"2016-07-23 07:38:29.000000000","message":"Agreed, that is something I do consider to be part of the implementation details which must be met.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"56735c874db8b67de2df00dd3ae87b14dd714195","unresolved":false,"context_lines":[{"line_number":197,"context_line":"in order to reduce the time take for integrated tests. The option of"},{"line_number":198,"context_line":"publishing the last successful build\u0027s artifacts for each branch on OpenStack"},{"line_number":199,"context_line":"Infrastructure will be explored. These artifacts will be for development tests"},{"line_number":200,"context_line":"only and not useful for production environments."},{"line_number":201,"context_line":""},{"line_number":202,"context_line":"Documentation impact"},{"line_number":203,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_a206af19","line":200,"in_reply_to":"dada55a8_9355c4c3","updated":"2016-07-26 06:22:04.000000000","message":"@Michael It would be rather nice, but based on previous discussions with OpenStack-Infra they do not really have the space to hold artifacts for every tagged version we release. The intent here is to empower deployers (such as RPC) to setup their own CI to build artifacts which may be used in deployments for production usage.","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"0063818c89758d44812b891ba88bc1ee38c4553c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"Documentation impact"},{"line_number":203,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"There will likely be some updates to the documentation - they will be"},{"line_number":206,"context_line":"submitted with all patches, where appropriate."},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"References"}],"source_content_type":"text/x-rst","patch_set":1,"id":"dada55a8_b370c873","line":205,"range":{"start_line":205,"start_character":11,"end_line":205,"end_character":17},"updated":"2016-07-26 05:33:01.000000000","message":"The word \"likely\" here is a certainty :)","commit_id":"af6a3d9580939f911a2bce70df98985e8f8421a8"}],"specs/queens/deployment-stages.rst":[{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"56ae1c371c44feb33410c01b54f11e9e77d29d0a","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The stages proposed are as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. Build: This stage prepares artifacts which are general purpose. This stage"},{"line_number":57,"context_line":"   is not required to be executed per deployment - but would typically be"},{"line_number":58,"context_line":"   executed by a CI process in order to prepare the appropriate artifacts to"},{"line_number":59,"context_line":"   be used by an organisation. Artifact examples include distribution software"},{"line_number":60,"context_line":"   packages, container rootfs tarballs, python venvs, etc. The build process"},{"line_number":61,"context_line":"   should be executed on any designated host and produce artifacts which can"},{"line_number":62,"context_line":"   be copied to a web server. There must be a well defined manifest detailing"},{"line_number":63,"context_line":"   the artifacts produced which can easily be used for a staging process to"},{"line_number":64,"context_line":"   understand which items to fetch."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":67,"context_line":"   needed for the role/playbook to execute are in-place before effecting any"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_f16f92f9","line":64,"range":{"start_line":56,"start_character":3,"end_line":64,"end_character":35},"updated":"2017-09-14 22:41:45.000000000","message":"I thought the build was something we could run in all the environments, but that an organisation that has a CI could run it independently, in order to store the build artifacts, where a small organisation would instead just build and use directly (like the developer mode).","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f543eaffb698080c055a3fdddcd482a35ad8b2d5","unresolved":false,"context_lines":[{"line_number":53,"context_line":""},{"line_number":54,"context_line":"The stages proposed are as follows:"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"#. Build: This stage prepares artifacts which are general purpose. This stage"},{"line_number":57,"context_line":"   is not required to be executed per deployment - but would typically be"},{"line_number":58,"context_line":"   executed by a CI process in order to prepare the appropriate artifacts to"},{"line_number":59,"context_line":"   be used by an organisation. Artifact examples include distribution software"},{"line_number":60,"context_line":"   packages, container rootfs tarballs, python venvs, etc. The build process"},{"line_number":61,"context_line":"   should be executed on any designated host and produce artifacts which can"},{"line_number":62,"context_line":"   be copied to a web server. There must be a well defined manifest detailing"},{"line_number":63,"context_line":"   the artifacts produced which can easily be used for a staging process to"},{"line_number":64,"context_line":"   understand which items to fetch."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":67,"context_line":"   needed for the role/playbook to execute are in-place before effecting any"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_27dcaae2","line":64,"range":{"start_line":56,"start_character":3,"end_line":64,"end_character":35},"in_reply_to":"5f2577a7_f16f92f9","updated":"2017-09-21 13:16:02.000000000","message":"Done","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"56ae1c371c44feb33410c01b54f11e9e77d29d0a","unresolved":false,"context_lines":[{"line_number":63,"context_line":"   the artifacts produced which can easily be used for a staging process to"},{"line_number":64,"context_line":"   understand which items to fetch."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":67,"context_line":"   needed for the role/playbook to execute are in-place before effecting any"},{"line_number":68,"context_line":"   changes. This stage also pre-stages all artifacts from the Build stage using"},{"line_number":69,"context_line":"   the manifest produced."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Install: This stage executes the code path which actually uses the pre-staged"},{"line_number":72,"context_line":"   artifacts and the prepared OSA configuration to create containers and install"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_f1a1d247","line":69,"range":{"start_line":66,"start_character":3,"end_line":69,"end_character":25},"updated":"2017-09-14 22:41:45.000000000","message":"Do you mean that each role would have a prepare stage, that is caring about staging all artifacts needed for the role?\n\nThis would lead to a lot of code duplication, no?\n\nIf we think of having a playbook to stage things instead, the prepare stage of a role can be completely skipped: When running the \"build\" part of a role in the standard process, the code would be skipped because the artifact would already present (conditional skipping).\n\nThat also allows drop in replacement of different staging mechanisms.","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f543eaffb698080c055a3fdddcd482a35ad8b2d5","unresolved":false,"context_lines":[{"line_number":63,"context_line":"   the artifacts produced which can easily be used for a staging process to"},{"line_number":64,"context_line":"   understand which items to fetch."},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"#. Prepare: This stage executes pre-requisite checks to ensure that everything"},{"line_number":67,"context_line":"   needed for the role/playbook to execute are in-place before effecting any"},{"line_number":68,"context_line":"   changes. This stage also pre-stages all artifacts from the Build stage using"},{"line_number":69,"context_line":"   the manifest produced."},{"line_number":70,"context_line":""},{"line_number":71,"context_line":"#. Install: This stage executes the code path which actually uses the pre-staged"},{"line_number":72,"context_line":"   artifacts and the prepared OSA configuration to create containers and install"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_0a02d33d","line":69,"range":{"start_line":66,"start_character":3,"end_line":69,"end_character":25},"in_reply_to":"5f2577a7_f1a1d247","updated":"2017-09-21 13:16:02.000000000","message":"Done","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"56ae1c371c44feb33410c01b54f11e9e77d29d0a","unresolved":false,"context_lines":[{"line_number":100,"context_line":""},{"line_number":101,"context_line":"Some examples:"},{"line_number":102,"context_line":""},{"line_number":103,"context_line":"#. If ``developer_mode`` is ``false``, do not include any developer mode tasks"},{"line_number":104,"context_line":"   for evaluation."},{"line_number":105,"context_line":"#. If ``ansible_pkg_mgr \u003d\u003d \u0027apt\u0027``, do not evaluate any tasks related to"},{"line_number":106,"context_line":"   yum."},{"line_number":107,"context_line":"#. If there is no repo server in the environment, do not try to download"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_d43da4c4","line":104,"range":{"start_line":103,"start_character":0,"end_line":104,"end_character":18},"updated":"2017-09-14 22:41:45.000000000","message":"If we implement \"build\" as a thing that always runs when not staged (independently run in CI or not), we could even remove this variable...","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"56ae1c371c44feb33410c01b54f11e9e77d29d0a","unresolved":false,"context_lines":[{"line_number":104,"context_line":"   for evaluation."},{"line_number":105,"context_line":"#. If ``ansible_pkg_mgr \u003d\u003d \u0027apt\u0027``, do not evaluate any tasks related to"},{"line_number":106,"context_line":"   yum."},{"line_number":107,"context_line":"#. If there is no repo server in the environment, do not try to download"},{"line_number":108,"context_line":"   any python venvs or other artifacts."},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"As part of this solution, the build and install stages should drop local facts"},{"line_number":111,"context_line":"on to target hosts when the stage completes. The local fact will prevent that"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_3406281f","line":108,"range":{"start_line":107,"start_character":0,"end_line":108,"end_character":39},"updated":"2017-09-14 22:41:45.000000000","message":"I guess this would be part of the prepare step?","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":14805,"name":"Jimmy McCrory","email":"jimmy.mccrory@gmail.com","username":"jimmy-mccrory"},"change_message_id":"6684a3df47aed3a175c046208cc003519ac14eff","unresolved":false,"context_lines":[{"line_number":112,"context_line":"stage being executed again through a conditional include. This provides a"},{"line_number":113,"context_line":"checkpoint restart mechanism so that if a deployer executes \u0027setup-everything\u0027"},{"line_number":114,"context_line":"the execution will be much faster because it will skip whole stages and"},{"line_number":115,"context_line":"continue from where it left off. This also means that if pre-built artifacts"},{"line_number":116,"context_line":"are used, these stages will be skipped and the deployment in an environment"},{"line_number":117,"context_line":"will be much, much quicker."},{"line_number":118,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_f4866013","line":115,"updated":"2017-09-14 22:46:48.000000000","message":"How would these facts be reset to make way for new artifacts?","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"56ae1c371c44feb33410c01b54f11e9e77d29d0a","unresolved":false,"context_lines":[{"line_number":116,"context_line":"are used, these stages will be skipped and the deployment in an environment"},{"line_number":117,"context_line":"will be much, much quicker."},{"line_number":118,"context_line":""},{"line_number":119,"context_line":"Finally, the solution will endeavour to implement the local caching of any"},{"line_number":120,"context_line":"online artifacts on the repo server in order to decrease the requirement for"},{"line_number":121,"context_line":"online access and improve install time."},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"Alternatives"},{"line_number":124,"context_line":"------------"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f2577a7_347d087f","line":121,"range":{"start_line":119,"start_character":0,"end_line":121,"end_character":39},"updated":"2017-09-14 22:41:45.000000000","message":"Shouldn\u0027t this be part of a different work item? Maybe reduce the scope of the spec is good.","commit_id":"b5cefefcc7fb81480955314d12bbc26c781ed587"},{"author":{"_account_id":23163,"name":"Markos Chandras (hwoarang)","email":"markos@chandras.me","username":"mchandras"},"change_message_id":"f0654c5937a7acf7d4f65a2c61027f46193dd488","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_e845a744","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"updated":"2017-09-25 15:00:43.000000000","message":"I am not quite sure what the \u0027stage\u0027 step actually does. Does it move the files built in the \u0027Build\u0027 step somewhere else? Is it going to be a no-op unless you do offline builds?","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":23163,"name":"Markos Chandras (hwoarang)","email":"markos@chandras.me","username":"mchandras"},"change_message_id":"edcdab50fef2b465f2adeb03eeec17b56fc16c77","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_5b858b59","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_58291188","updated":"2017-09-26 09:11:32.000000000","message":"OK I think I am finally getting this. So for online installations you will basically have two options. A) either build everything from the beginning and stage them OR B) do the JIT thing. Is that correct?","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":23163,"name":"Markos Chandras (hwoarang)","email":"markos@chandras.me","username":"mchandras"},"change_message_id":"d8c523a78dc17187762eaa12a5ee92cfc431cdba","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_19edd824","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_5b858b59","updated":"2017-09-26 12:33:48.000000000","message":"OK thank you for the explanation","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"3ce0c024e94e022dd5142b6664bd81784ae3565e","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_678b041f","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_5b858b59","updated":"2017-09-26 12:15:02.000000000","message":"Yes, exactly.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"feac503a4079c2c4fc0fe13957c3197722e26622","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_f5f8df49","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_638678de","updated":"2017-09-25 16:12:18.000000000","message":"Yes, if you\u0027re not using the playbook which does all the build stuff then the deployment will be forced to build them JIT.\n\nWhen doing the JIT installs later on, there will not be any wheels of venvs unless they exist in pypi so the installation will take longer for large environments as the install will be from pypi or from tarball.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":23163,"name":"Markos Chandras (hwoarang)","email":"markos@chandras.me","username":"mchandras"},"change_message_id":"57d3dc8de874127ee3016e043f947dad6d372866","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_638678de","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_886d1306","updated":"2017-09-25 15:38:24.000000000","message":"Maybe I am confused but we still need to build the artifacts whether we do an offline or a regular deployment right? I mean we still need to build wheel packages even on regular installations right? My understanding is that the propose change makes it possible to execute the build phase as a standalone phase to ease offline installations. As such, the \u0027Build\u0027 phase will always be executed but for different reasons/outcome depending on the type of installation.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"2adcad2f722184ee4e1abe36dffbf3d3f9127b80","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_58291188","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_d2dba0ea","updated":"2017-09-26 08:31:26.000000000","message":"The \u0027Stage\u0027 step may be used online or offline. In both cases it pulls from a source which contains all the pre-build artifacts produced in the \u0027Build\u0027 stage. This may be done to optimise local deployment time, or for offline install purposes.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"6cb949332c34803d1285ea77edd738d1c31bb908","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_886d1306","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_e845a744","updated":"2017-09-25 15:19:02.000000000","message":"Indeed, that\u0027s what I understand with \"The stage is optional and will only be executed if the Build stage was executed to build all artifacts.\"","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":23163,"name":"Markos Chandras (hwoarang)","email":"markos@chandras.me","username":"mchandras"},"change_message_id":"956dce06db262635ed9acb425da1162725afe916","unresolved":false,"context_lines":[{"line_number":64,"context_line":"   manifest detailing the artifacts produced which can easily be used for a"},{"line_number":65,"context_line":"   staging process to understand which items to fetch."},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"#. Stage: This stages all artifacts from the Build stage using the manifest"},{"line_number":68,"context_line":"   produced. The stage is optional and will only be executed if the Build"},{"line_number":69,"context_line":"   stage was executed to build all artifacts. The stage will most likely only"},{"line_number":70,"context_line":"   be a playbook rather than something in the role, making it easy to allow"},{"line_number":71,"context_line":"   deployers to implement alternative staging mechanisms if they choose to."},{"line_number":72,"context_line":"   This stage will be executed in parallel across all hosts/containers to"},{"line_number":73,"context_line":"   ensure that it executes quickly."},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"#. Install: This stage executes the code path which uses the staged or built"},{"line_number":76,"context_line":"   artifacts and the prepared OSA configuration to create containers and"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_d2dba0ea","line":73,"range":{"start_line":67,"start_character":0,"end_line":73,"end_character":35},"in_reply_to":"7f515b1d_f5f8df49","updated":"2017-09-26 07:49:10.000000000","message":"Right so there will be some \u0027Build\u0027 step in both offline and online installations. What is this \u0027Stage\u0027 step for? Does it only concern the offline installation? As in, go fetch the artifacts from somewhere and put them somewhere? So this \u0027Stage\u0027 playbook is left to the deployers to implement it? And if that\u0027s the case, then the \u0027Stage\u0027 step is not conditional to the \u0027Build\u0027 step but rather \u0027Build+offline\u0027","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":17799,"name":"Logan V","email":"logan2211@gmail.com","username":"Logan2211"},"change_message_id":"e044d8052b9541976f7a12b10bb24e1799165ed4","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* \u003cservice\u003e_configure_ssl.yml"},{"line_number":96,"context_line":"* \u003cservice\u003e_configure_keys.yml"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The general idea with breaking out the task files is to implement conditional"},{"line_number":99,"context_line":"and/or dynamic inclusions where appropriate to ensure that the tasks are not"},{"line_number":100,"context_line":"even evaluated unless a broad condition is met. This is different to having a"},{"line_number":101,"context_line":"bunch of tasks in a single file which all have conditions because Ansible will"},{"line_number":102,"context_line":"not have to evaluate each task in turn, but instead evaluate whether a block of"},{"line_number":103,"context_line":"tasks should be evaluated. This reduces execution time."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Some examples:"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f5c4f37_ad0497c7","line":103,"range":{"start_line":98,"start_character":0,"end_line":103,"end_character":55},"updated":"2017-09-21 12:30:30.000000000","message":"Am I understanding correctly the concept is similar to these patterns?\n\nhttps://github.com/openstack/ansible-role-zuul/blob/master/defaults/main.yaml#L15-L20\nand\nhttps://review.openstack.org/#/c/429779/","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":6816,"name":"Jesse Pretorius","email":"jesse@odyssey4.me","username":"jesse-pretorius"},"change_message_id":"f543eaffb698080c055a3fdddcd482a35ad8b2d5","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* \u003cservice\u003e_configure_ssl.yml"},{"line_number":96,"context_line":"* \u003cservice\u003e_configure_keys.yml"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The general idea with breaking out the task files is to implement conditional"},{"line_number":99,"context_line":"and/or dynamic inclusions where appropriate to ensure that the tasks are not"},{"line_number":100,"context_line":"even evaluated unless a broad condition is met. This is different to having a"},{"line_number":101,"context_line":"bunch of tasks in a single file which all have conditions because Ansible will"},{"line_number":102,"context_line":"not have to evaluate each task in turn, but instead evaluate whether a block of"},{"line_number":103,"context_line":"tasks should be evaluated. This reduces execution time."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Some examples:"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"9f5c4f37_b3a076a7","line":103,"range":{"start_line":98,"start_character":0,"end_line":103,"end_character":55},"in_reply_to":"9f5c4f37_ad0497c7","updated":"2017-09-21 13:16:02.000000000","message":"I was thinking more along the lines of:\n\nhttps://github.com/openstack/openstack-ansible-repo_build/blob/f7ade4a80d4b3ad58dd5b30a5cf3f4bce87bee69/tasks/repo_build_prepare.yml#L68-L80\nhttps://github.com/openstack/openstack-ansible-repo_build/blob/f7ade4a80d4b3ad58dd5b30a5cf3f4bce87bee69/tasks/main.yml#L42-L46\n\nExcept with the include being dynamic so that the tasks are skipped.\n\nThat would mean that the fact is easy to override, but will be skipped when appropriate.\n\nThat said I\u0027m not opposed to what you\u0027re referencing when appropriate. My only concern is the increased complexity... but we\u0027ll have to see how it goes on a case-by-case basis.\n\nI\u0027ve kept the spec fairly vague to allow us to figure out the pattern. We can always circle back and update the spec once we\u0027ve worked out what we think is best and record why.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"},{"author":{"_account_id":17068,"name":"Jean-Philippe Evrard","email":"openstack@a.spamming.party","username":"evrardjp"},"change_message_id":"162841af78520c81a5f0192a68f7c978d3a59627","unresolved":false,"context_lines":[{"line_number":95,"context_line":"* \u003cservice\u003e_configure_ssl.yml"},{"line_number":96,"context_line":"* \u003cservice\u003e_configure_keys.yml"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"The general idea with breaking out the task files is to implement conditional"},{"line_number":99,"context_line":"and/or dynamic inclusions where appropriate to ensure that the tasks are not"},{"line_number":100,"context_line":"even evaluated unless a broad condition is met. This is different to having a"},{"line_number":101,"context_line":"bunch of tasks in a single file which all have conditions because Ansible will"},{"line_number":102,"context_line":"not have to evaluate each task in turn, but instead evaluate whether a block of"},{"line_number":103,"context_line":"tasks should be evaluated. This reduces execution time."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"Some examples:"},{"line_number":106,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7f515b1d_28ff3f35","line":103,"range":{"start_line":98,"start_character":0,"end_line":103,"end_character":55},"in_reply_to":"9f5c4f37_b3a076a7","updated":"2017-09-25 15:17:09.000000000","message":"I doubt this would be technically true, but whatever the technology, the cleanup seems more and more necessary.","commit_id":"55106360c819470e96a2fbb7afe12c9be0074818"}]}
