)]}'
{"Engine/storlet_daemon_factory/daemon_factory.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":87,"context_line":"                  - A list of the JVM arguments"},{"line_number":88,"context_line":"        \"\"\""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        str_library_path \u003d \"/opt/storlets\""},{"line_number":91,"context_line":"        str_prfx \u003d \"/opt/storlets/\""},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        # TODO(takashi): refactor this with using \u0027:\u0027.join"},{"line_number":94,"context_line":"        str_dmn_clspth \u003d str_prfx + \u0027:\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_6f92374d","line":91,"range":{"start_line":90,"start_character":8,"end_line":91,"end_character":35},"updated":"2016-06-16 03:22:24.000000000","message":"(Can be done in another patch)\nCan we merge these to into one?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":94,"context_line":"        str_dmn_clspth \u003d str_prfx + \u0027:\u0027"},{"line_number":95,"context_line":"        str_dmn_clspth \u003d str_dmn_clspth + str_prfx + \\"},{"line_number":96,"context_line":"            \u0027logback-classic-1.1.2.jar:\u0027"},{"line_number":97,"context_line":"        str_dmn_clspth \u003d str_dmn_clspth + str_prfx + \u0027logback-core-1.1.2.jar:\u0027"},{"line_number":98,"context_line":"        str_dmn_clspth \u003d str_dmn_clspth + str_prfx + \u0027slf4j-api-1.7.7.jar:\u0027"},{"line_number":99,"context_line":"        str_dmn_clspth \u003d str_dmn_clspth + str_prfx + \u0027json_simple-1.1.jar:\u0027"},{"line_number":100,"context_line":"        str_dmn_clspth \u003d str_dmn_clspth + str_prfx + \u0027SBusJavaFacade.jar:\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_cf97eb38","line":97,"range":{"start_line":97,"start_character":42,"end_line":97,"end_character":78},"updated":"2016-06-16 03:22:24.000000000","message":"(Can be done in another patch)\nWe had better use os.path.join","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"build.xml":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":33,"context_line":"\t    \tdest\u003d\"Engine/dependencies/slf4j-api-1.7.7.jar\" "},{"line_number":34,"context_line":"\t    \tverbose\u003d\"true\""},{"line_number":35,"context_line":"\t    \tusetimestamp\u003d\"true\"/\u003e"},{"line_number":36,"context_line":"                \u003ccopy"},{"line_number":37,"context_line":"                file\u003d\"install/storlets/roles/docker_base_jre_image/files/logback.xml\""},{"line_number":38,"context_line":"                tofile\u003d\"Engine/dependencies/logback.xml\"/\u003e"},{"line_number":39,"context_line":"\t\u003c/target\u003e"},{"line_number":40,"context_line":"\t"},{"line_number":41,"context_line":"\t\u003c!-- Storlets Engine build --\u003e"}],"source_content_type":"application/xml","patch_set":9,"id":"7aa08908_2fc02f2a","line":38,"range":{"start_line":36,"start_character":0,"end_line":38,"end_character":58},"updated":"2016-06-16 03:22:24.000000000","message":"Why don\u0027t we use tab only for these lines?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"doc/source/api/overview_api.rst":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"List All Storlets"},{"line_number":15,"context_line":"-----------------"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"::"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":" [GET] /v1/{account}/storlet"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"The body of the response contains a list of the names of the uploaded storlets."},{"line_number":22,"context_line":"The Content-type of the response is (text/plain)."},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"::"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"            storlet1.jar"},{"line_number":27,"context_line":"            storlet2.jar"},{"line_number":28,"context_line":"            storlet3.jar"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"Upload a New Storlet"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_354a40ad","line":28,"range":{"start_line":17,"start_character":0,"end_line":28,"end_character":24},"updated":"2016-06-16 05:11:38.000000000","message":"I\u0027d like to add some description to say that Storlet API is a extension of Swift API.\n(ex. this is just object listing in container, which we do with normal swift)\n\nI think we can add a note about it at the top of this document.","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":96,"context_line":"Once the storlet and its dependencies are deployed the storlet is ready for invocation."},{"line_number":97,"context_line":"Storlets can be invoked in 3 ways:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Invocation upon GET."},{"line_number":100,"context_line":"\tIn this case the user gets a transformation of the object residing in the store (as opposed to the actual object)."},{"line_number":101,"context_line":"\tOne use case for GET is anonymization, where the user might not have access to certain data unless it is"},{"line_number":102,"context_line":"\tbeing anonymized by some storlet."}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_f58438b2","line":99,"range":{"start_line":99,"start_character":3,"end_line":99,"end_character":22},"updated":"2016-06-16 05:11:38.000000000","message":"We had better use this for coming sections.","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":97,"context_line":"Storlets can be invoked in 3 ways:"},{"line_number":98,"context_line":""},{"line_number":99,"context_line":"#. Invocation upon GET."},{"line_number":100,"context_line":"\tIn this case the user gets a transformation of the object residing in the store (as opposed to the actual object)."},{"line_number":101,"context_line":"\tOne use case for GET is anonymization, where the user might not have access to certain data unless it is"},{"line_number":102,"context_line":"\tbeing anonymized by some storlet."},{"line_number":103,"context_line":"\t"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_55926cf7","line":100,"range":{"start_line":100,"start_character":0,"end_line":100,"end_character":1},"updated":"2016-06-16 05:11:38.000000000","message":"tab or space?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":119,"context_line":""},{"line_number":120,"context_line":"::"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":" [GET] /v1/{account}/{container}/{object}"},{"line_number":123,"context_line":""},{"line_number":124,"context_line":"An additional header (\u0027X-Run-Storlet\u0027) must be provided to inform the system to run a storlet."},{"line_number":125,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_55054c12","line":122,"range":{"start_line":122,"start_character":1,"end_line":122,"end_character":41},"updated":"2016-06-16 05:11:38.000000000","message":"Do we have to mention that SLO is also allowed as the target?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":139,"context_line":"        \u0027X-Storlet-Parameter-1\u0027: \u0027param1:val1\u0027"},{"line_number":140,"context_line":"        \u0027X-Storlet-Parameter-2\u0027: \u0027param2:val2\u0027"},{"line_number":141,"context_line":""},{"line_number":142,"context_line":"Parameters that start with \u0027storlet\\_\u0027 are not allowed. The \u0027storlet\\_\u0027 prefix is reserved for internal system use."},{"line_number":143,"context_line":""},{"line_number":144,"context_line":"To invoke a storlet on a range of an object use the \u0027X-Storlet-Range\u0027 header. For instance:"},{"line_number":145,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_35a6c053","line":142,"range":{"start_line":142,"start_character":0,"end_line":142,"end_character":115},"updated":"2016-06-16 05:11:38.000000000","message":"just a question. Is it validated today? If not, I\u0027ll add that validation later.","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"        \u0027X-Storlet-Range\u0027: \u0027bytes\u003d1-6\u0027"},{"line_number":149,"context_line":""},{"line_number":150,"context_line":"\u0027X-Storlet-Range\u0027 can take any value that Swift can take for the HTTP \u0027Range\u0027 header as described in \u003chttp://developer.openstack.org/api-ref-objectstorage-v1.html\u003e."},{"line_number":151,"context_line":"Specifying HTTP \u0027Range\u0027 header together with \u0027X-Run-Storlet\u0027 is not allowed, and results in \u0027400 Bad Request\u0027"},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"Invoke a storlet upon object upload"},{"line_number":154,"context_line":"-----------------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_155d8448","line":151,"range":{"start_line":151,"start_character":0,"end_line":151,"end_character":75},"updated":"2016-06-16 05:11:38.000000000","message":"Now adding only HTTP \u0027Range\u0027 is also prohibited, right?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":190,"context_line":"In the PUT case the storlet acts upon the object appearing in the \u0027X-Copy-From\u0027 header, creating the object appearing in the request path."},{"line_number":191,"context_line":"In the COPY case the storlet acts upon the object appeairng in the requets path, crating the object appearing in the \u0027Destination\u0027 header."},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"Specifying any of the headers below while invoking a storlet upon copy will result in \u0027400 Bad Request\u0027"},{"line_number":194,"context_line":" - \u0027X-Copy-From-Account\u0027"},{"line_number":195,"context_line":" - \u0027Destination-Account\u0027"},{"line_number":196,"context_line":" - \u0027X-Fresh-Metadata\u0027"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_8724a7b2","line":193,"range":{"start_line":193,"start_character":71,"end_line":193,"end_character":103},"updated":"2016-06-16 05:11:38.000000000","message":"I\u0027d like to say that they are \u0027currently\u0027 prohibited, because we didn\u0027t decide we don\u0027t support them at all.","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"402a4aeef71146c492b44bcfb307ac77e0d54375","unresolved":false,"context_lines":[{"line_number":99,"context_line":"Once the storlet and its dependencies are deployed the storlet is ready for invocation."},{"line_number":100,"context_line":"Storlets can be invoked in 3 ways:"},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"#. Invocation upon GET."},{"line_number":103,"context_line":"        In this case the user gets a transformation of the object residing in the store (as opposed to the actual object)."},{"line_number":104,"context_line":"\tOne use case for GET is anonymization, where the user might not have access to certain data unless it is"},{"line_number":105,"context_line":"\tbeing anonymized by some storlet."}],"source_content_type":"text/x-rst","patch_set":14,"id":"7aa08908_9e65cde2","line":102,"range":{"start_line":102,"start_character":0,"end_line":102,"end_character":23},"updated":"2016-06-17 09:14:10.000000000","message":"I think we had better use same expression as L120. Regarding other section titles, \"object download\" instead of \"GET\" seems better to me.","commit_id":"377b55a574a5198fa8bb9e25927a319f97753ec6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"402a4aeef71146c492b44bcfb307ac77e0d54375","unresolved":false,"context_lines":[{"line_number":104,"context_line":"\tOne use case for GET is anonymization, where the user might not have access to certain data unless it is"},{"line_number":105,"context_line":"\tbeing anonymized by some storlet."},{"line_number":106,"context_line":""},{"line_number":107,"context_line":"#. Invocation upon PUT."},{"line_number":108,"context_line":"\tIn this case the data kept in the object store is a transformation of the object uploaded by the user"},{"line_number":109,"context_line":"\t(as opposed to the original data or metadata)."},{"line_number":110,"context_line":"\tA typical use case is metadata enrichment, where a Storlet extracts format specific metadata from the uploaded data"}],"source_content_type":"text/x-rst","patch_set":14,"id":"7aa08908_de5bd520","line":107,"range":{"start_line":107,"start_character":0,"end_line":107,"end_character":23},"updated":"2016-06-17 09:14:10.000000000","message":"ditto. This should correspond to L160.","commit_id":"377b55a574a5198fa8bb9e25927a319f97753ec6"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"402a4aeef71146c492b44bcfb307ac77e0d54375","unresolved":false,"context_lines":[{"line_number":110,"context_line":"\tA typical use case is metadata enrichment, where a Storlet extracts format specific metadata from the uploaded data"},{"line_number":111,"context_line":"\tand adds it as Swift metadata."},{"line_number":112,"context_line":""},{"line_number":113,"context_line":"#. Invocation upon COPY."},{"line_number":114,"context_line":"        In this case the storlet acts on data that is in the object store, generating a new object. A typical use case is"},{"line_number":115,"context_line":"        thumbnail extraction from an existing jpg."},{"line_number":116,"context_line":""}],"source_content_type":"text/x-rst","patch_set":14,"id":"7aa08908_beafe9e1","line":113,"range":{"start_line":113,"start_character":0,"end_line":113,"end_character":24},"updated":"2016-06-17 09:14:10.000000000","message":"ditto. This should correspond to L177.","commit_id":"377b55a574a5198fa8bb9e25927a319f97753ec6"}],"doc/source/archive/invoking_storlets.rst":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":9,"context_line":"2. Invocation upon PUT. In this case the data kept in the store is a transformation of the object uploaded by the user (as opposed to the actual uploaded data or metadata). A typical use case is metadata enrichment, where a Storlet extracts format specific metadata from the uploaded data and adds it as Swift metadata."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Invocation involves adding an extra header to the Swift original"},{"line_number":12,"context_line":"PUT/GET requests. Following our Identity Storlet example given in \u003chttps://github.com/openstack/storlets/blob/master/doc/source/writing_and_deploying_storlets.rst\u003e, here are invocation examples. This time the examples make use of the python swift client."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Invocation on GET"},{"line_number":15,"context_line":"\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":9,"id":"7aa08908_c7c86fab","line":12,"range":{"start_line":12,"start_character":67,"end_line":12,"end_character":162},"updated":"2016-06-16 05:11:38.000000000","message":"Can we use a relative path instead of absolute path?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"doc/source/deployer_installation.rst":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":4,"context_line":"This guide describes how to install the storlet engine over an existing Swift with Keystone"},{"line_number":5,"context_line":"cluster. This guide follows an example where the Swift cluster has one proxy and 3 object nodes."},{"line_number":6,"context_line":"In addition the guide assume a management machine form which the installation takes place."},{"line_number":7,"context_line":"The management machine iin the example also acts as a Keystone server as well as a Docker"},{"line_number":8,"context_line":"repository for the Docker images created during the deployment."},{"line_number":9,"context_line":""},{"line_number":10,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_2fee6fb4","line":7,"range":{"start_line":7,"start_character":23,"end_line":7,"end_character":26},"updated":"2016-06-16 03:22:24.000000000","message":"in","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":45,"context_line":"    object2\t\t\t\t\t192.168.56.230"},{"line_number":46,"context_line":"    object3\t\t\t\t\t192.168.56.240"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":".. note:: "},{"line_number":49,"context_line":"  The Ansible installation scripts used throughout the deployment assume that the user root."},{"line_number":50,"context_line":"  can ssh from the management machine to the rest of the machines without a password."},{"line_number":51,"context_line":""}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_cffc0b75","line":48,"range":{"start_line":48,"start_character":9,"end_line":48,"end_character":10},"updated":"2016-06-16 03:22:24.000000000","message":"Can you remove these unneccesory spaces at the last?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":46,"context_line":"    object3\t\t\t\t\t192.168.56.240"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":".. note:: "},{"line_number":49,"context_line":"  The Ansible installation scripts used throughout the deployment assume that the user root."},{"line_number":50,"context_line":"  can ssh from the management machine to the rest of the machines without a password."},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"-----------------------------"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_8f77a307","line":49,"range":{"start_line":49,"start_character":91,"end_line":49,"end_character":92},"updated":"2016-06-16 03:22:24.000000000","message":"remove this","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"  - \"lxc-device\". A directory within each swift host (proxy or storage) where the storlet run time stuff is to be"},{"line_number":164,"context_line":"    placed. This includes the docker images, the storlets code being downloaded locally, the storlets logs, etc."},{"line_number":165,"context_line":"    it might be a good idea to dedicate a device for this. Note that all hosts must use the same location."},{"line_number":166,"context_line":"    The value of this entry is an Ansible variable, which is specified in TODO: ADD var files name"},{"line_number":167,"context_line":"  - \"storlet_source_dir\". A full path of the directory where the storlets repository is checked out."},{"line_number":168,"context_line":"  - \"python_dist_packages_dir\". The destination where to install the storlet generated python packages. This serves"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_a771e3aa","line":165,"range":{"start_line":165,"start_character":4,"end_line":165,"end_character":6},"updated":"2016-06-16 05:11:38.000000000","message":"It","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"doc/source/engine_dev_installation.rst":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"6c82fce537f1a5526a7bc4ef42c96b13785db79a","unresolved":false,"context_lines":[{"line_number":9,"context_line":""},{"line_number":10,"context_line":"The guide assumes that you already have installed SAIO as described"},{"line_number":11,"context_line":"in http://docs.openstack.org/developer/swift/development_saio.html"},{"line_number":12,"context_line":"it further assumes that you used a partition for storage that is"},{"line_number":13,"context_line":"mounted on /mnt/sdb1, and that the proxy port is 8080."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":".. note::"}],"source_content_type":"text/x-rst","patch_set":9,"id":"7aa08908_e7aacbd1","line":12,"range":{"start_line":12,"start_character":0,"end_line":12,"end_character":2},"updated":"2016-06-16 05:11:38.000000000","message":"It","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"install/storlets/roles/deploy_default_tenant/tasks/main.yml":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":51,"context_line":"  shell: docker ps | grep \"tenant_{{ tenant_id.stdout_lines[0] }}\" | wc -l"},{"line_number":52,"context_line":"  register: tenant_container_running"},{"line_number":53,"context_line":"  "},{"line_number":54,"context_line":"- name: Test if the default tenant container exusts"},{"line_number":55,"context_line":"  shell: docker ps -a | grep \"tenant_{{ tenant_id.stdout_lines[0] }}\" | wc -l"},{"line_number":56,"context_line":"  register: tenant_container_exists"},{"line_number":57,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7aa08908_2fe14f9b","line":54,"range":{"start_line":54,"start_character":44,"end_line":54,"end_character":51},"updated":"2016-06-16 03:22:24.000000000","message":"exists","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":55,"context_line":"  shell: docker ps -a | grep \"tenant_{{ tenant_id.stdout_lines[0] }}\" | wc -l"},{"line_number":56,"context_line":"  register: tenant_container_exists"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"- name: Test if the default tenant image exists"},{"line_number":59,"context_line":"  shell: docker images | grep \"{{ inventory_hostname }}:{{ docker_registry_port }}/{{ tenant_id.stdout_lines[0] }}\" | wc -l"},{"line_number":60,"context_line":"  register: tenant_image"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-yaml","patch_set":9,"id":"7aa08908_afeb7f77","line":58,"range":{"start_line":58,"start_character":35,"end_line":58,"end_character":40},"updated":"2016-06-16 03:22:24.000000000","message":"container image is better, accoding to line 70","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}],"install/storlets/storlets_dynamic_inventory.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"82f93038f36bfa7181c53d399a3b0405761a98d6","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#! /usr/bin/python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright (c) 2010-2012 OpenStack Foundation"},{"line_number":4,"context_line":"#"},{"line_number":5,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\");"},{"line_number":6,"context_line":"# you may not use this file except in compliance with the License."}],"source_content_type":"text/x-python","patch_set":9,"id":"7aa08908_8f616314","line":3,"range":{"start_line":3,"start_character":24,"end_line":3,"end_character":25},"updated":"2016-06-16 03:22:24.000000000","message":"6?","commit_id":"4d6ac649ef089731a367237ae9500c541cad0464"}]}
