)]}'
{"doc/source/validated.rst":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":3,"context_line":"\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d"},{"line_number":4,"context_line":""},{"line_number":5,"context_line":"We are in the process of validating the *cinderlib* support of more *Cinder*"},{"line_number":6,"context_line":"drivers and adding more automated testing of drivers on *Cinder*\u0027s gates."},{"line_number":7,"context_line":""},{"line_number":8,"context_line":"For now we have 2 backends, LVM and Ceph, that are tested on every *Cinder* and"},{"line_number":9,"context_line":"*cinderlib* patch that is submitted and merged."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_bfe39933","line":6,"range":{"start_line":6,"start_character":67,"end_line":6,"end_character":72},"updated":"2019-08-06 18:06:35.000000000","message":"gate","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - If we don\u0027t define the ``keyring`` configuration parameter (must use an"},{"line_number":69,"context_line":"    absolute path) in our ``rbd_ceph_conf`` to point to our"},{"line_number":70,"context_line":"    ``rbd_keyring_conf``file, we\u0027ll need the `r`bd_keyring_conf`` to be in"},{"line_number":71,"context_line":"    ``/etc/ceph/``."},{"line_number":72,"context_line":"  - ``rbd_keyring_confg`` must always be present and must follow the naming"},{"line_number":73,"context_line":"     convention of ``$cluster.client.$rbd_user.conf``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_7fd44120","line":70,"range":{"start_line":70,"start_character":45,"end_line":70,"end_character":50},"updated":"2019-08-06 18:06:35.000000000","message":"``rbd","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"  - If we don\u0027t define the ``keyring`` configuration parameter (must use an"},{"line_number":69,"context_line":"    absolute path) in our ``rbd_ceph_conf`` to point to our"},{"line_number":70,"context_line":"    ``rbd_keyring_conf``file, we\u0027ll need the `r`bd_keyring_conf`` to be in"},{"line_number":71,"context_line":"    ``/etc/ceph/``."},{"line_number":72,"context_line":"  - ``rbd_keyring_confg`` must always be present and must follow the naming"},{"line_number":73,"context_line":"     convention of ``$cluster.client.$rbd_user.conf``."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_5f286531","line":70,"range":{"start_line":70,"start_character":22,"end_line":70,"end_character":25},"updated":"2019-08-06 18:06:35.000000000","message":"space required","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":71,"context_line":"    ``/etc/ceph/``."},{"line_number":72,"context_line":"  - ``rbd_keyring_confg`` must always be present and must follow the naming"},{"line_number":73,"context_line":"     convention of ``$cluster.client.$rbd_user.conf``."},{"line_number":74,"context_line":"  - Current driver cannot delete a snapshot if there\u0027s a dependent (a volume"},{"line_number":75,"context_line":"    created from it exists)."},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"*Configuration*:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_7fa201b0","line":74,"range":{"start_line":74,"start_character":66,"end_line":74,"end_character":67},"updated":"2019-08-06 18:06:35.000000000","message":"volume (the bracket part is read separately and this line ends at dependent)","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"}],"doc/source/validating.rst":[{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":31,"context_line":"backend.  The result will look like this::"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"  [[local|localrc]]"},{"line_number":34,"context_line":"  enable_plugin cinderlib https://git.openstack.org/openstack/cinderlib"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"After adding this we can proceed to run the ``stack.sh`` script."},{"line_number":37,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_ff3fd121","line":34,"range":{"start_line":34,"start_character":26,"end_line":34,"end_character":71},"updated":"2019-08-06 18:06:35.000000000","message":"how about avoiding the redirection?\nhttps://opendev.org/openstack/cinderlib","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":56,"context_line":"   $ cat /etc/cinder/cinderlib.py"},{"line_number":57,"context_line":"   import cinderlib as cl"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"   lvmdriver_1 \u003d cl.Backend(volume_clear\u003d\"zero\", lvm_type\u003d\"auto\", volume_backend_name\u003d\"lvmdriver-1\", target_helper\u003d\"lioadm\", volume_driver\u003d\"cinder.volume.drivers.lvm.LVMVolumeDriver\", image_volume_cache_enabled\u003dTrue, volume_group\u003d\"stack-volumes-lvmdriver-1\")"},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"To confirm that this automatically generated configuration is correct we can"},{"line_number":62,"context_line":"do:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_9f357df9","line":59,"range":{"start_line":59,"start_character":3,"end_line":59,"end_character":258},"updated":"2019-08-06 18:06:35.000000000","message":"can we span this in multiple lines?","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":121,"context_line":"backends.  Test methods have meaningful names ending in the backend name as per"},{"line_number":122,"context_line":"the ``volume_backend_name`` values in the configuration file."},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"The functional tests are quite fast, as they usually take about 1 minute to"},{"line_number":125,"context_line":"run:"},{"line_number":126,"context_line":""},{"line_number":127,"context_line":".. code-block:: shell"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_ca47b14b","line":124,"range":{"start_line":124,"start_character":64,"end_line":124,"end_character":72},"updated":"2019-08-06 18:06:35.000000000","message":"will need to be modified after adding more test coverage, just saying :)","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":178,"context_line":""},{"line_number":179,"context_line":"There are multiples ways we can accomplish this:"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"1. Create a 3rd party CI job listening to *cinderlib* patches"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"2. Create an additional 3rd party CI job in *Cinder*, similar to the one we"},{"line_number":184,"context_line":"   already have."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_6a5a3df2","line":181,"range":{"start_line":181,"start_character":3,"end_line":181,"end_character":61},"updated":"2019-08-06 18:06:35.000000000","message":"on cinderlib gate?","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":277,"context_line":""},{"line_number":278,"context_line":"As an example here\u0027s the Ceph job in the *cinderlib* project that takes"},{"line_number":279,"context_line":"approximately 8 minutes to run at the gate.  In the ``pre-run`` phase it starts"},{"line_number":280,"context_line":"a the Ceph demo container to run a Ceph toy cluster as the backend.  Then"},{"line_number":281,"context_line":"provides a custom configuration YAML file with the backend configuration::"},{"line_number":282,"context_line":""},{"line_number":283,"context_line":"   - job:"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_aa8ef52a","line":280,"range":{"start_line":280,"start_character":0,"end_line":280,"end_character":5},"updated":"2019-08-06 18:06:35.000000000","message":"a or the ? :)","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":306,"context_line":"Use existing job"},{"line_number":307,"context_line":"^^^^^^^^^^^^^^^^"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"The easiest way to run the *cinderlib* functional tests is is to reuse an"},{"line_number":310,"context_line":"existing *Cinder* CI job, since we don\u0027t need to setup anything.  We just need"},{"line_number":311,"context_line":"to modify our job to run an additional command at the end."},{"line_number":312,"context_line":""}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_8a90d944","line":309,"range":{"start_line":309,"start_character":56,"end_line":309,"end_character":61},"updated":"2019-08-06 18:06:35.000000000","message":"doubles","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":339,"context_line":"allow CI jobs to run the functional tests and ignore the results so that"},{"line_number":340,"context_line":"*cinderlib* failures won\u0027t block patches.  You can think of it as running the"},{"line_number":341,"context_line":"*cinderlib* tests as non voting.  We don\u0027t recommend setting it, as it would"},{"line_number":342,"context_line":"defeat the purpose of running the jobs at the gate and the *cinderlib* tests a"},{"line_number":343,"context_line":"very consistent and reliable and don\u0027t raise false failures."},{"line_number":344,"context_line":""},{"line_number":345,"context_line":"Which one of these 2 playbook to use depends on how we are defining our CI job."}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_aabcb5ba","line":342,"range":{"start_line":342,"start_character":77,"end_line":342,"end_character":78},"updated":"2019-08-06 18:06:35.000000000","message":"are","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"},{"author":{"_account_id":27615,"name":"Rajat Dhasmana","email":"rajatdhasmana@gmail.com","username":"whoami-rajat"},"change_message_id":"c768b0b029435a780ae6fc26d317bb031d9eda07","unresolved":false,"context_lines":[{"line_number":366,"context_line":""},{"line_number":367,"context_line":"*Cinderlib* supports these features, but since they are driver specific, there"},{"line_number":368,"context_line":"is no automated testing in *cinderlib*\u0027s functional tests; but we can test them"},{"line_number":369,"context_line":"them manually ourselves using the ``extra_specs``, ``qos_specs``, and"},{"line_number":370,"context_line":"``pool_name`` parameters in the ``create_volume`` and ``clone`` methods."},{"line_number":371,"context_line":""},{"line_number":372,"context_line":"We can see the list of available pools in multi-pool drivers on the"}],"source_content_type":"text/x-rst","patch_set":4,"id":"7faddb67_6ae79de4","line":369,"range":{"start_line":369,"start_character":64,"end_line":369,"end_character":65},"updated":"2019-08-06 18:06:35.000000000","message":"not required","commit_id":"bee4135ee9778e1ed380f02cbfc86842d842b37a"}]}
